Give a try on below formula-

```
=INDEX(SPLIT(FLATTEN(SPLIT(JOIN("",INDEX(REPT(BYROW(A2:D3,LAMBDA(x,TEXTJOIN("|",0,x)))&"@",E2:E3))),"@")),"|"))
```

To make it dynamic spill array, use-

```
=INDEX(SPLIT(FLATTEN(SPLIT(JOIN("",INDEX(REPT(BYROW(A2:INDEX(D2:D,MATCH("zzz",D2:D)),LAMBDA(x,TEXTJOIN("|",0,x)))&"@",E2:INDEX(E2:E,MATCH(9^9,E2:E))))),"@")),"|"))
```