XpTX3e3KU8}utdHG#uJQhbmMMIof?;Skr
z);M&*o(^9%9FNygwrt_CXAN;$mQ%M1n3!89K1mj95?o|?dWS5@o+89fK~w*}jQb21
zBlSK5Je`QhUziF_qCDU4^*UlO?&3wl`-`dQ`(Muu1r~1yj6A&r@qlyqvX8h_%=|^8
zp61~fsyWC0ybQp^Gt+Rj90g6dK=5}7-bL;Zgec;=LL_M@aP&|72rbBh{G91sem?UI
zyi56=v5*wBi&MiDybQi)VvK5~1b%+1|nJ@a(3_&{bR`P^rP`12?
zzmyaR3--T6W*}-1$^YxUge`?w7?`0@r_ubGFMPsz92hH(%M`!KxO|OF=fCa30^0_PWsJx3
zp#muolaD+92|h7-e=?r@+AX61sUfCal`D_mo1ecN6#bNj>AxB6;!~?1~%wng5JE
zDh*1$(2-X+CYDvYF9gi1UKn}QY|EeF^Z8_~{3C3vvIdH_{5&6jcTko~&@paYhkM+!
z&ew&IBM>$NR+_+v6ooZ<+Dd8`j4(bG1T{0oa=}Wal4sr`G^<95_adGsmzS!MbK$at
z_Vt7mHo2CrO>X5HkVlO+5Rx9`RX>cpJ{rW2u&((vZWWr4>uYtmirDq#cgPi$!no&%
z%f`_YQJ%svdnX`E`W~8yC!Y6tja4g;@t$%1L%y#ax`L1-@DMfuTENRfkn*t5t=tz-
zVFQR)1eo(uxR#qVheQx4b7~up%wX6KY%A~zuKP76w=p4&N=_jq$tkcX6Mlw}lqZ)`
zwFnKb$>Xg~Q17F8Uq@7vcuQHvTZ$!HiFy3|U0#XAO2>EO70)ND6>ArVn*6`s)BFu0
z;S_44`T%sKf)E_80&DkytqiRK;YJ#E;2}lg(#EFSwN!Rh0xoe*%6vb-)Ixzt2%d4B
zw+&ol!vtTOf~Q1~0Pj&AW0#F1SNsx33r;+s!VyMW)(Du;th>_(
zM8dgfC1Dd_B?(yH6@q8ozHK7`;AV?cf6#DKW{n|%PF&T{tdknPZte9I@lQ2_!b}bU
zg=TiUh)zwGdk~?#%9EQ$7Q)!dt~5}~9U7W@N<*ivX-I1@5|KhNXEog1(slv>4bW#t
z>q=4swJ#eWWweZ@2ZlntJb3Q@u?FZsU%-
zfu9iuCR>b4QmRQW9GOTJFoyb@4b*qPnpXW9M`tm{#~5qsKEm@)YxrU;8|Dn+14f*z
zTlgq!01rPKm4jDni5o$x1qV&KxYt$!5FD;ho83CTBLGPE+St2K^mOu?Y$UCv@!zYd
z{Vp}VyN>(xQi=>oz$Ki&pe@~p@-Gf{aY=BN>5+x
zFi?|i2Kso5f$Cw^*4e~_pZRb6KRkz@+XJr|hS$!*d#w3QO@}YVaZCC;8Y6!eK9fKD
zd0>Pvw}wzdsB9(xSd<6d$~VgA@oslvQy?XYU{FjeWU90_(Et#D8tW41{9OZC1z3Hi
zq(r`GB2LScm}oc>?Xdq^JK1e!8ir%6ws@%}xhDft%adw|#ha^a-3P
ztxVT|;U^FcRBU7jnrOipE#DMk3p|Kd=-XQg&Ab4Q+p@CG0z`E2s!Ue_wr_PB{u
z8x%SD{G2yn9A3(z7PzlTpwG5h-}sYP^ZIq$&{8U3mojgQ9D{O1vRv#lE)un7dRSiG
z{DT&u*UW1H1=RGrh2TleBf
zl#LnSd5wfK?&_#2C~_2J4BEL!MHiG$b(c3?TT=^ESrd<>OV(_G*%zSdV~E5Wb^)o+
zX$S!f!IaP@5`70(aXnl@D2+@b_CY+=*{H|Zt$RESSHsLhMYcc6+(eFqOUYWoF`$SW
zjKZNPyin(hvYrrh_(n^QvTXl^v`FSO{EWNZJJ){CQ$j$XYNYBy#4@no&|z
zOC<%4{e6X7wHBf7)mw=i4eu|f3D5ciy-=kZhW+ZUl>$S21NTf6h9o3r%1>i=Z)vQ8
zy*^n8dkw4Bj(PmXHKvbu|pX((LzJ&)o|g`|DC@*n+4Y7C9XbAZL(^Q@%1j
zsHy9SGVP17=B*+GudFcA`g5803gF{oD=<-^EeeN$#j0e&-=GalS+e>MUDhJ$6K^%u
zkJ7vQI1n@5wcN)ABu}66)*(ksw4@2of2uHq-n^Mm>X+!}fpb8s$X)}6!9w98SkJpc>x9iLVU
z3OE%i>+0QeQx?jh)9L$kTKDdTwdtTE1aWX(9oQ{hX!W)2|DU
z5BhlGxKq8r@#oi~@Z%=RzZ7c@+?s}A=RG<)b3;!?#0jzsutB(DDeRzzN-c-M$CIDa
zh>y@c!qM{m&6EiU_@){W4hfwL1!rce>=qo<0*VegIXIqmN{Vf}nPJOPG9I
zOMl!o7iZc8yw{_QjEhxjuVa-@p*g-gI&T;Hz;S0c0Qo
zP{hv~TKJ=mrr~cxkD%rs5yy`z4;Cu4t@0-EaIclR{hv^gC){u!W|Xh1OQDa}EWVvc|Ry>oG6
z}pw{Bt|3O4BccNTv7ic%~6}xeU?i+mZZ-OVs?g^g!
z*IraL@8zHIw;&Kd2hRoV3>tUtNa%t%ZI-m-GNUPI+}She8nz1Yl~w5XyAt1XIXaC*
zqtR9r^8mbHo-lz&VTk*KXP_m_L-3M$3Su5JubJndz4Le;FejkdJU^JLr*nq6!yNYA
zjk%O_in;BxbCR5EIp^qeG#1exZ<$?6iyX5+PX9`d&Q8MJ*9ny^PEMhvot%o4cM@JI
zNB7ztih=q2t#DvMi*t-!9XwR7p7q0A(Z|@0>4QFQo^|@VdDZRjh6^y=ygnN2=2dTi
zn^&EFZl3rbo&)OXDy<_`uWh~1(L-y60?xfikr$J^aVq|%vs2LuP6)F*IR+GU5}pCf
zi|685*5)MbdCno=8%fcd#}iE_XId)|g(K7FxmIzJPFMnzy2}eP-wd8}*DB{9WyLg_
zYfQtbDmNFD)7y~-N@_^>bzS!viXI+Wv#L07^e+*vuYTZ(Fz9n$iPr{|O*MS64K26k
z5qNwr6mza?REkKXf*o#eHWlu*Iur<=cIA-Oqk{|M9{99bQcu-mv-meS7p*8>x{6FOoRp6p_Ll@6*bTr+AX387T@f&=g0cGHP=;)hQ3iDqf2Jjnu=tnA{2J~{@WBDv
znsD8QqovM%`MqEVTvqk_rhh8y+YYafhsv|<9v-zjl=gV*t734+yi%@`Iz$3{_>g?5
zGL`t9kincI1<1k8=b4&COn@``_`0KJ&ei#)8p5sOroP`Lvu@LtaypU2yOU5cy+B_;p_M4pe+{2px~|*p^R=Id#3im?G@3
za$_o=wo8lR?tovC`{gIe3ndmgzf|2Fmse!}w&mgH893&bWhu9%kU4jML@T}g+*I2R
z>jCPV?F58S$HB_x5_7bB{ne-W>~iqe#ftzAz6gAN1)S79_tg3~1q?hab-M!sTEY&i
zcPASzyqk=98L|B1F#K-78gKR@jVbq&b<*dIre*>FQ$}2E_pNFZU~Awbwd*!g2yZNGba`z_Dyz2Ck6J+BX*oMq0OIdkTnGc)Ji
z>)jgxoV*+X^#%aU%|8ab3-~qd%>l$sLp@-T01?1`Vev%(U~gn!pif9h08m52KUn>?
zC&JxJ-2(yFh`1e~p{agB17Ktl5pdfB<`r_r-3tQs2g&nl8syJFJwfsgI@TAg11@>_
zK(9sxd0mgP`P?H4=3(F|Z(@ALC;}J(4}g1x+&&Wl_wx@1Mu6mh0uB`BUl(i0pZTdt
z2n;0u>FZI?I9h*p<`N>v>x_=NmYT-}P0cg9y6T$RI=Z@=s%I`<(7dQ|LHJKsO;a1F
zqYJ#KcjlKQFB~n%(;H}KdgYg~gug)Yzf3ATJX}3oOC1pe(asl!L4}KQ+s_o?5eoP6
z4>30d$qQ@LJ)xe!3m5f;RMgYHpm*_tuD+(G{snz4Qv=;A7j^aYOt0u&egot8`d+^L
zmn%9tm-H`R{PdEh=4G9~=v>yitb4`O^wY~1_4V{GyydY2qM@A5pd?xb=@-`S>N`6`oAtX|9XLbp0BA_5H!ro
z^GXl`e%1EIfz!G%x%&CD-pYX8OHqW%?KQ|(Xxa>Z2sm%g6=4AnG*$Y{J~kKeG%
zn<60(zRtd7e&LU|+sDgaxMzZdn`3VQAo>%_13bSMZbFeg4&Y0`y9Zw<;ooY*Rmse1Jn?w%3`|jcQ
z4!?i+@cW|gAAMg`TvV9EC4K@RaZ+4Nn8Z&WKXL5Xu@lE%cbAend-lxPvv2z=?|lyt
ze|I1G;3xY;E;Gs`%2bKrx=wAEcq5MU=)E8Y6
zX`hGOIR3b-^DjZfW0EHt-S0k8xPI?aleSg?EQG+s_n+0g
z7WmV*Sa#CR+cBr20Rc{s9X7R>J-R-Twbu`zL2D^7TL2@lWmc!Ji8Kp9cP~NvwZ*I)83QuYXC-+W)^n!ikvvxl8v?L;v8w
z|BC0Ip8r4E@sO53n{t$;SO(ujLP#Ddl>rGT<4tB34yn#qv~}7o*aOtW?*SgpZGos3
zbM|%a@+^8}g#hxU{n=T@lHZJ9D5;3u2K#)cNgS#O)-W1oH8xosS)Yg?0~i{@vwSbBueAsf%V;Yhbjg6*!X46R+iFDrvOi~
zboZmk^IG7p&KK?;Rhk+jvo)VmEf7n-&8FjxC|1@2{j>wR%rWvttVM{1@6rqq7*mR{
zy(bF?8mE@Q4Rinz{(mnW{{$0`L?Z(_|5!8D!<>MG%J0f)LV@)k_Df<3PlZF=j
z;Mj`56w0-x22|(9NZe7x9v~dD{-I!+H%^Z%84TM4;L$5LdPG@^%sqf0Eba^C5&Rxt
zVQvrbj;&do5|UawzXt%zO_e;CA^cj?1l|J-^zH7)pmwbU=t#~k*@W)!xuM&e^8EW0
zA*&O&4})a3vw5;BlpVh~OzE?*hBxIVZxD$x+|U{XO(8aW_W&T5&*tA^7%MfjyFgz&
zw;H|-sYP}S@ym9jsvom=e=b&Bp?$}TP|>4NW>p-gDDBSfMp_?G|02XDq5oEP*Tu2y
zmB+02H8r&)q?HUtWWho@iU=4!{3u$8cGg8mMKDWJEpiW_YMJMc=kW;^Ve@99YX;eC
z3hA>d(2<1f$@?|lE#}ihiYi8FK8c~1wpx?bPj?t~lMPvz%tRdZzT&nK*|d3)`dgdw
zZx?1CgRfDtIvC3A_T_eU&O}&qjaao?IS~f>^gTcZ!MVj<#W4YA_HM#>LP8|w+mRx5
zf=8=sbYGC`?#cYz?VhMmGE3S)(p!ICs;v@L**~PaqUaslaX!c1P`q;tGj~U?%L9IVS#yG7b^}$`dIID3P;PKRu&p7=u5Q1dz1dLNwcUAlL!k*}9Au*A_?!@q
zQb}_hPQFsd^6CcXPO`0oY=}t%C$pDBn1CrDFuEO=GSl{;~&BuP=b$8v{K1Xwjj*@AujH{5$CX
zbivkiNRtjuAm||93p-8TIX-azf=|HpgZc}029O5mRQ6&+oouFPyk)W(mS83-)pA~D
zdVwB`B$RVR-y6dP!2H`PUBBZ>*VLwIX`LL6Z84MzqO0D~JM(rHz?7*Hq^kfm)a;(*
ztBMJ+e=OBSG4lbWMmZQgBdwQ6f?>mV8hs~;aD!MDh#nh1?INh9-c%@=$gvy*m&
zfE#e8f9EUj4pC25rMG!wBJv~Sc(GwGhIyy`)j05OpP=TrVyBH7+u1<_D8kuUYq->+
ztr_YwnqTbEljoHN%OH`80@xuWNRrN0&v@4D7lULf(r)QRPd5GuGEF))DKp^h3j9^(
zs1_0bB0FquD-^rqVr<^(yji&%g?Zn!F82tV0|Eu_P%w(<7pYtbMah0u
z16;$V59}))2p=FqTJ)Gxctlf50E^>EnPY54rWUy?IOQpji>Rm#wPRGLI&6}>PNoaX
z#^Dzz@pO
zl*(G9KbWt^dclj>=i_8o7!AIVq`L19ewFZ7bN~5=jw^jf4y}7HeXj`)hOb2Gk2wR|5ti
z$DJ@frB|ny^7k)hw3YW+*%+YOEWh4}mno^mPbIC7nXg0)i=4l@4_(T1=d4EZtETQ7
z9n0l3H03BXX#HR{BSpWR!-V_bJ)E+;6f(S$c@Ld=;1uYB$Bi6?8P#Ev+CD_SuGNNe
z$}*c(E0{O(+CHxaY@@5zqfx}0A-KhMm^kPM!0qW@C;r=
zK=mUn0lJUN2Rn^^QFd&9!%f%nnL~Mle7EoCcOC(Bl~oT8@#R+xL9+;
z)Rcg5L;R+`N1F9BicZ8HfKj_OWQW8YOa|NcB-^|9WQ|Ekmuaes^vw_49@Kr7N|7D#x&oQ`CSOi-_5@Qu*XKtrTXqj1
z{sM-j#0GM1;2tsmcj)Vt3M(44IWtGMjq2gF~?`4X{v0EG3T+A{t1
zNOBZGf7TvA>-s6kZ)#?hc6JAIhrtt=jbzH834&Lpx$9kYk^Z(kzuS6ir%vyC3JtV!
z0#O?~G!*2q-EQUeYkBnY+80de^qj8V0D66qvDR*6h3so!-o|c2R(k-7T=ItYj(?3g
z1v>wnIZ-ODGeyE;Vl1de^r%yEPMa;6am>qH3AA~9O2|4kKNGXIyIS4uKT_Hsw7phy
zEn2W(J@vpWs;pg>_#iPq*g&B`yf8M~g^#$-fEs5i)+xDYCo<+(uEyvkfEhSN;kise
zQ?4k85ZZcjWh|lS=;f)e5RT(XgOHrgjcC<=zm|;N`7T13!8N@aRdB5TUCgS++zE8EJ
zj)aZDR&2m#+KYm+{t(0aE7ktwF+z`e06%Bq?rI!%m>eZBuiuaJpX4dd(t15|5kSEG=Y(?r
z+LbuGdzmCoc#aeo?@uu2+%9#ZSh^9hC*Za$kVhuu=C%7OTB&dxTc_(h)}#7I;XA(W
z7C#{7+;(Puf7pOO<2gCa1wFake7PX=fi)zjCu{2d?2=0XyaDuWV^tTZK4(ZTBd#hf
z2h!*-OY?{0RZwv2P?W5!scb2?ZG)oSRGAbK6qA*eqNFB3Zd-KY^n?7sV%#%cZR-ZwY%VzEP?d~`
zJJUPh@SSh`YCsBwsL*-a?#kZn#^V(pgZ3(f{hovqqiB4FSW)z;iar9CZcfdWZbw*}
z9Zp1z_40$CWs@FSdoOi0VlmFpf;7dkt=%;fjW3R8@sJ@fX%L15AuIURb+XCS#l(buziMhr&@n{QqXs@eFQ-z@EU~qm`_=)V4IuA*tgl1O*qftyQ
zo|u>OaF-nOn$*teX!rA48*bn*wq$a~P!AU?Z
zws|9~W-eGp<)!0zt=WC;3=vJ=HfE=$&v+KbJn;&(f$!iyq{&{x-C{N)t*sR@Al2nX?e}JKkbsq-kU~18l%8@)Rs~9z2v{r;Xs&
zZa0Y(x&y?>xz^8^zM3;3l~d||#Lhw$`o&e!oB$``nEgmHd&jBO$fFn6v@y3UAJycP
zHKrMVjv5ttwxkG7UTrlOvM%EbI==zzuUnJQbYDgMRk9UZCp+6Kj?umc7=rGm4xQP>
zAa=KGS2H$_eufYjxzuk`1P8bF0QBWOfUa_FXk2jbWIoj+ftr?@4F!E{MGZy=MXTd+
zp}S=um)f?#oC&JtAjZgql=j$P^NLZP)Do2N{*zh!gaC=KOqEwVp40K@Iuu$A4FN#
z(p7^jSNF+r?K?BgnW}8Ku|b9J{HcmnTwwM_-vr*>q~Ybs{`nG=d^Zbi-otwi98%&c
zF8KpBHC@xa6$%<h
zh19OkY{l-zDStH&bM7j0Hnk_A#2tl)W&WuaVs=W9tr6$JIghF#<`8IlAymRY-Mh3
zbr3N<^Y-%fhaR@}F{u%2*`fMVRhm(4vChC0gf~0Ml!IWhR0W!oxUN{qD7Wkn#x#jutx55@Sex#!n9H8#yzoFZv1dpkA7!O
zNJ2|$guF*{#d28TxS7J`$36bQ9H_PO5MWD%o_94b3WO#Z*woiKoyHVD)4&Mv_8*2Pks4hjMz@?E>CG%zU^^$fj
znY9viT@h}To-8zD_EZEWCN5Z6-dKy6YGD$Gz8q+1J6#(ro?DPpm*-L7KTch|rSK`&
z{0KJF*nflP^W&
z+&T2+w*aBNBkE`49yWb$>lbr}+Tu^<4&YmJ2l02!9iKz^l&SCmheg9U2;ivsx3Bfo
zKR4}L-M6x}`c4>ihu*}m%Fk{X-2U+`r8ZpQev7uMGYLu!Rb)y$QI4JPD<|jeM#&=
zRjZXNrB`Z8HVwDLpSd0+cVmY*O;g|
zR@EM0ruUw>xYUdktVzSZ6?xg6nR{8mf(x9H{`wu~o3(Z!x$7cDyuC=;2s*%s`9k20_7)Y-sq9&%;
zF@bqIk({XJO#e;8hTw$QZn0>Iy(y@a^{L#8lMk-RX
z|La5d1<&WUy2REmM%&|lL>jN&+dYymS)#fYTe4)CvJpSlKy|~3C|a$^#IA;Gq*KQ(
zdJ|bZv!IQev06&@Jdj`HcXP3>>*v?Vi=Vvn@eCJfxUyzTbbDEF-77C|V@tV@Fm|mN
zCxlj`t~Du!%7iNgRR5BkLA7fi#!||_fjLiKPa+2
zq^QY6q;^_RL3mB^IogN|6;W5M-7`X}oAbocr#u`dqLQ3F9C2-C=M2tVTvjXr+rxa4
z?S*cENOyN+>bJlhq9-RTE^l|=5sydAT-W{;nvr{%@tWb+b0P@|30(?T=Rt0Y%g%^Y
z2FzBvjeEw}i3E%>3heeS`UnGU^&zCFmWgWtO<^ExcVOTGI1CmNFuOQjv2yvM9b-fB
zM|UOVq);`m!`)6zx)k8z_wAcoJ?xqCIAAB^zAAa-`O{$gmG-noe_q^+F1e%rX`&70
zxtB5eqjdAay4bn!u{?sVeycfdY0ZG4dzuEH~6
zWOagUxDGSYum3nPMPG5qwB?DK1kMU3!T$Q-ssDzpedNyH-v5RJ#Nw^V8HjAcExPFON&Pz=nL}b(r!vN$GdJ-1SYYnQacB-7m&tc5!vz3t^~4q
z7Axs2JrwO0rJB)1!a2i$&TAv3by>Ku$UedXY&PTrKcNYQY9}Qq(&Y*bnH+xq;@I$J*=CUPq|t^v1jZs#Hx#%hqXdnhNoq3(cp
zZIJIOpHeJi80-4LgfLS_yMH*#lg%_%Mbcc23aEU=7@!V4CdLa(i3%>5fi+Y|Xvi
zhH2=h3t5rM^>IU?@v{!gH*)p>*5Puc!)qFwVsBetvJeYtY6Y$AZsAPq8d7nrO<3hl
z_@T16S8;C|OMQkck~Qb$3kGg)rf;WvH!xhN+)7aL?!C8dyY3BKShkJc1JrZHx(VYY
zI=eXwCN7P0ZmV){8sGm$b|yX*Ikh8jj4g~)bb7sxn+sy@dw|E=LqvF&0^4_WjS{4c
z6`x!6DmqksdmJM)_{K10UE=*{&htgTR;*xZ(}j3dE(+u`Cm
zStFW8LbC{~H1BgNrFnq^2Li#iN3Wcmq(Uc2aWz`~3kneSsyy7Bsen>O9p3@79#+=g
z>bF0S6k4R0;6^!NilcWfy9s$)?3Eau_v&zsoWMkkIa%+$2T0zvT?Hr`JnTVm*3xcw
z#fd*#+d#a$a4T^H#x~J53v(&NJKG~7lbB^%P>fH)RK|Ix%$Sm(YO;q7nRJhmin5&@
zOI)k3U7=kW(<>kxN-=V4f%Jgfc-dGip@8~y$fl$A#zF(0gR3F0Amb!3(EBkR!edon
zbA-Y`)WTEAj0$#WMH?N?9&15Mx@Q$1!-c6xUE)1u&aN7G=%PW3o@gc&iiX4++RUQC
z%2A20xRnlWsJf5Y1`28(7$8@m%1sQ~+mUm-0Y~@z%
z7|lvAXRvn3$Y3Pd=Al-rRNdIq!Bwin)4@&`2nA@g2XLxhLi^XPp8niH_jx@_9Xdfp
z#au-*E07;_@Hv=3YR9M}1$OlE|G?9~T(+hJ=I^gXpk2$^PZ
z9;6Oj)UU7ZWxy&ETckW_5}LAB)D&?x;OghKRJV|8&wDR=Cyd1?&SZdGB~0`Xt^TUn
zRR~9g>lLs?`j_3$CGLjv`N(|SZ}@~Pr#HAc~?z_
zTbG=P=ik0~%lkG7E$Vuca;QCkOze02)3w?{w>sPE9poOg=Fr{hq-hg@>uuTKT7JWQ
z88ofofH8CMUBDF=5CY;F+qwo@@Ama05(y@rTRPjmIyxEjo^Y?1(Tz)txmiFeR#p%1
z5|UCb;E?N4)?SepCo#^W`AG2r%6NPrGjBA^r9d4kz1Z!!2e7o=3fn;}Hd~dIII}7S
zS9D3(6uc2p3)E*i0Lh6-3b0zDpVO#LD>+}u3d8_E$IUp?CGmYizZ9>81=HDp=u$u{
zgUBj1t)@m9x)b$4bQ}H1V)c(qQUcyxULi^0t_-=831WG-Ix)O+ZzZm={nB))n!`J8
zM|A4)!x#wXBT@5u=fLc7s?lmK@;OZuY1|RI)>H-I%$v;22Cj1DhNydhm5b@5cAr{1
zh%@J2&gXUEJ?rIgUR9xcmF7-yRtoUO9Jl=?;}gfqrKKLC8i*yYHIl4mv}-$4P51;^f?PMh3dvJQQ@3J0$|m?_QmX4F;aVfvaq`bMG$NUd
zl4{QU1^CRdrmMIx2+!7N%`CD!v?Qc2$o_n4@Qi#+eeSt7R=hwdrfps3WDDH4gOsPp
zQUMNi}MmY!Oziq4V4c$<;Uu~tjy_E4X&9U1Z
zZRhTuxfap$82{b)YS!oghHiL|dz4VUP<|UF)y#FuSL(k2=uP;s=F`qAxiP!)WiP60
zZ?u|_+*ao|RKz~&G_-7#xQFN#K!sdhN&T6o;0mOByX7&Lw?e<*=s!V%3
ztrPvNNa3xX8spViqk7vUzO721pkQfYIojblc$okB%I)t%^Qr!z!aJuw=!5vw$5PjP
zBUq8j`1up`-raUvDc-qfbS|QUS4|iW+wA~IF+Ta*y2R@ie@DQb^iJBP(;4#xo#1|N
znq%vh_&j0PF;iqH^dg_igdf1S>$bYN_7WVo%lRmIgd^sB#U-2BwIYtr%$S4By!4V&
zmfsDWy*w!)saa^9^hx;aW_<|Yu;%eZe8B_TbImJO7j{-Io%ZM9IvrB8%B?)m3t-Om
zZQ{`u6rag&Wx}IbIm$ASrkkJRb{$Ozn?qDUS>!za9)K2J;UC0U;K*4-a(xmOY2P|C
zSrv9=FPT{hsOf?4&lT=tH$8c&7&^L@Gw~qqWNO
z$Hrv(c3@E}KTf^Z}o2`!%qrdl5N1NdUS%}s|77b*6NWBBVbxi+w`>jde_
zJ`b0&Y7SFeePEyKQHVwLBw`}(9F)BSi2WiqHueka-aSCodMrg}MQ__}Iqq8#gSN_C
zY_3lIC5=Q?#TtK%A9LeK{kiYHIm%11frgr>Mb%OB-1gr&TYU!Lp9?D5vbno9Mb14!
zzYlfLY3z$`r^MunEzC}-myA-ijRSL;<16zcG7!g&Fd5ohU$j%0KN078yT86Yvn4}g
z6rAHq9&9*KLHH`+PEpJ;z(GMl#gO^k6}n$YHlKS$yms1TF=WtEF8Oectf4@9s%=nd
z2(t&c{`EV-nQ^B|7%i!3wBtCc*pUk-rr$?qFPfNq%d4LXpA8vOUGk5k?tZ&p*@Ewa
z+5A-Yl5&ghTmfv$J0BHyJiu;IdX_&S$==Ug$ygD{BlTCUvowqRE8Oi#M0
zpkI1EADF_Ub^ik?{ebXRN?-mrQaS?DRm*v@yfSL34UH*`q+FhuYR>S%4Q$R##>2Z!
zHrBVfdw|d00d|M)SXQub?8B(J@kIWT%PYgdqD|{>cS?2_coB78M$?N0yn2bixu7^J
z@+T+6Fh}+P71QJFDcT-@?IR|_4zFTw8|(q*wf*a?w=k0Vc5&0g+i{)VQSadU0m3+s
zcUD}>MiX|Tom5N?74D=!AM(YztWD;;mJ~}>!(yLD&jb!>M#E#$qjdomcD3P9$;3YG
zwS||@%eXd159*4;(37erzSxE3i#^^vCSBXm=G*o6Hr9lG5K=5X=B?)z`HSZ^WBn)3
ztqkO6&uz1=16$))&+X+mp4*RuH#sXc3nl9^4a7SKpT2s_?th&5#$;DXgc|70%H&mIFTq=Ul+s~+Hv&S3E@xOE*0bFHD3l=tp+(XnNK*6&~HAJ27-xl
zjZLBG8>_Vv5;usdj8n_JY0PiqY3ip;3==2JGRkh#e~d
z*>W9j
zCm4>)FzFjp6W8{KHu=nwdDdf)#>_(MwfhRki|PjRJmM|4ul=}?b)Q-f(^d2Itsr*c
z>q`A}1$u;H=L5_~~|)l~V=BpTsb8Ra+1eJA+0U{0w9?zs{YUrzR~8$~?iW
zyOD{==nJ%m-)HD1Ca@k81}Lypmmdzl_cjPZgo)T9gK}YXd@Z%ZG~|MP99XfgEzVDn
z|8kybUEp1az3~iBG}FzOZYj6gZ3~XtKIP^JY%Ce#yMc0dj83kVAIC4-!|oGtZHpm$fDM9rZE4ZZ{^aa2E#v2BaAD8STzmo`
zywac(UYT=#J{QD7emNH?Rb@(qu6R>^5N?n!DR5SM&d}M+=8O-%s9P#-SI17|J5;We
z45xo^Da7~8QHIxw?!cO#NlnS4;kkNmPJMg4AT&7h#*#;loL)OOC~|EP^;XhldUJu)
z$)5$F`>tYDAs5bFLRzdlCfvt*^jL1<_wHvJ$^t7i>4vp@2+)u$Xq
zk2$*sxF?i)T($h?3$zD+Z2$`X$pB~*lQzd%de(CsYo`&vpvAn*a~6C;tY!Hfb1SJuaG0f4Gg@hStyG7Ye9#I{f(gejcfyL
znamsZ&&LW6-)lK~u0=ca_vpnYs{yel(?sJBZq%fIaHwcj?rBb3FKyKFrf1AwR?}>^
zPDPu;l4bIr=L2tsx4E5m^KzU0?j5^_A4J**g6BN{?sE~RzHM4cewRi#vT8;WiL9&dNeg5c`@EGf~{Zlw)+0pd1q!4}5o
zMTy0b=c}zt%&m{39$JNyltg0!j6>tP3>}jAcI2!x$YM?LCuB_d8yuxfeQ?Shn-du<)Y?ujn
z8FiheA(1S-*sd}dueDJ+#qSrMp5nUVbozH|@@Ej6H!sY9Gi)!Te;`Cj(N$|LB7gn_s
zZqhZhn%^F7QaZH>-pxD$w4X@p^jQ9fMz`FkAFK2vm?;r-N{p8LGPAbJN8>Fbe;MYp
zlgQTu6WKhx!QVV==phigPMDLwFX!}P{sTGp^?to8fWK4B#r~|&{fA=i&U=u~JAk*M
z?eCCsLe2DNDR=xADM$TD$~_Y~zyP^H>c8FtG^UM`!mjo4o|-KFs?g>CR-xPdS)sei
z+}s2FqR}PIPvN&O%*DE_pZeL%JlwQU52xIiZYhBAR
zAraRo4Tme&3`~l^XWoyeAB_7|f%|PtH|akI&L;Q~D%^evoK0qhy^(egKcD*5leCYs2D_Wt
zADWYh(rvk4L0F%E8EuvjHAoL#?c&)pJTa0?k4GWd0zM`$PWhznig-rOav76EBA-sc
z%3X3Dw;^vzJ$oOrU+5L;cJG>5o(<*{Bp-#RuJKhI#}qUrw8X`6!gz7ffq?7Q)v%D>
zv9B&n(NJZB_{p-3M|zwa&&VY=@^8diLRzEAsGWJ;{Eqcv2r6VEMnT&7ydy>0UOsZ`
z%n{I?*ZbiQlkhVee=`|xf@DkFo)u-9CG`=7Q!9)!+I%>K93T>-W8NDd;OpknRfidi
z38+ri=KCsqIYWT*A!_TpmX|iS
z5BKCh=gb5}7Yzls(p)zi1hTXrXdAGdwmYyrz!yLw9~`4@`%UcrS$YqAwaWO~LZks~
zXxA!stS|CZgIZkG*GJmBxRT=Yb%J?UC-w^ySRH4fM7J@5{3x)+XDTrcV07-z
zYvZ*o9be$jwQnVKjnRQ^!00sbm8@XTQbYTJ-jPU@@ky&bc9~vcR!YcNaKpvhtx@yy
z7S5ecwa)H3jKWUF_Y3j+HYQsI8JROn+XZiPPdm~hJ?bZ84k8#06Pb*+`mWAkS!e--
z0grkVp%Xy@K3L}^A6L~YwE;J?QmQ44FnROgL7SUfeZ9a^wS3ZYWEhzuy^=KvBd)g?_|$JrudeC~VaEIbsC|LLNJEMP;48
zMeNP6d#7;q1HftKy*gw
zYq%Y{`Td8V6ExoH^olT-xYeIE{TpE`%-xe=ZtB}dw!jf*L{5eLM!VOnf9B7Q$&D<+
zI=sB#S@@kW*h%&Q_{)|`vsk=c%^KCWr68zl5#uHEg24if)>}}3m=Hq2*jPrrHjjsXlml1~e-xfk~7-6$y|meFc!s
zedd}96<)Q_NK^|<;=2VmRv?_={#bOInMJmefp=L{d(=(Ce&_b^c@#g{;mwlRmg(BE
zoy$<}-twVAZWo4W@Bs~H=blG_Qq3@_=8o^?%zjr6U|!3Cr@yeME3yKud28#2NqBlj
zoxn}7Qv)t+Bu@uBT#K4`&==%^Nmr4?mq^Z-ooidILBCTvU}fXf6*?Rb>5kx`Jsew|
zaP4?a2`QU2Ho(XEwRK4Lr?`Hw@vNL<*nm>JQeSDii|*A{15LMct59E|AtVHws-$E{
z@Y-JS+@e{ouJ7704sfSSnxw_Cr@!J_*ZT}k<(tK*MOIjuwh6;4nybdX__ZlGwwLQv
zvEb|~PBYT-$Zz-VNRNKTdmMFS2pdOJ<^8I))N#Y+v4i2cvmuWl2Z0WvhHU{emm}IZ
zUkc`bm`;x@QdTU|clR0$jZs5G?q(+9pFG6bN{ex2Ek}jX8F=kh^JKfFR!!llFnb!zcq;!9#YH!}Orx(*+UtJ-jx|7hZ
zPS~5k5f>(rJWteok~o&Dy=>!@IG%u-@W{{18|O>a**_lu*+*y3OEYOm*SPkJ>$MXD
z&P$!R5ch};@S4o!WO%BUS3_Z41gxi-tbTIu*?FIli^WH!5m|C@&2DL4l{>2dU
zdwxos`5%k~5^|D*2IVsiCAPr(Nk+fYt7|$ZM50@R72z
zrzcT)QbOOPmr8pVrHaO-pA)cE?$yq~@a)iPF!f~X{UsT0h&Rl*f;34z@w9n`3WPZL
z6UhBztxm()Ny584Mt-WF+HLORVjDAW8q$K94FJAYs4M#m9Rx{G8u|UTC&4
zAAw)-pXUwa?+-uwD0H8tih-
zS;W;kZ(<*Uy?~&!TlG!}<4J<3-o%dWZ3Dv$j5ZQQFn0^Sr)za>xUfj5``$2pnTA!E
zPOoq-^BJu$rG}cG{6h;VSE%sE{}d2ZF5I4H(PxFnr>{_q*WShLrlp}V0uzv07#Z8J
zX^{Ej*iyENv(Q9ckR4rWaw=7Yf}t!nm2ZR(L)e_g_s%@1z6SU+9>A%$%lsc@WLTe*
zbh`Lx1TAvJsa1b{!r?JQliZYK%h>cH_f49awrLPcE*`DA
z*&c~F_LPl$G!x@Ss-Fr*OL{mml^Cs8$1);>8i=wmQ0v-FncJm?wqm0f##`LPNUcj!
zw0F9E%cn_>p%KajnFqM3X+yZB2{^}izG$%GB%ci(uLx*Gqt!HIXEPR+=Xf%wu-?j!
zlR
zt)1cSpL
z+Lr5+Em~mCR7rPv!#h7&R^F25ZRV%LIrVFyiqiDa+=4#;E@W_K*=kD%J@3nv!TyyU
z(qeh%jdpT{!rs3)J883fGcHfaZn3{%H^95J@7_ZH6Ei{N9jX&)7FP0V;*k@q^`$|P
zA*mwRN?VOk5p&SjKDYEVbXgEIiozK176sRaC%irUjabxC`k`}6XA!^}cuiOE^?9@X
zuC>Q`Ye;-fUC?ZM!2|ze{Fzh}ki$~Eef=V~v7yytUwFOeGHkV^0S-5D(1>kd_w4~r
zhQfI7MW5bI`?Z+}FWV?*M|mEPot@yZw!kK1qWG8*+k0`Tu@`1pgU8nOHdJqcR+Q7+
zp6-w;c5c=QO&l=D_U#@*?fFH-vh7P5=dBm{2loJq4-Wk_U_P0gUy|A2Ht)9wcmN~`
zzA`?#Yrfu8;udjzcxb%rj-U-=9hhY}{A)sClHPGC8?6iWS<6=RjR?&~baZR0+f#JLTF&A)4a62AIDm+G;@xd0
zR5c|l_>^-^ba{ai#r1c0|lQXlfNRUm!8^NIy+1U$i-*!f4)N-LcFjC+ATE+CO
zrw*pYyGM&&Hzm
z17vQvixpH`cv^)fQr^uXN@`xx#bd&9
zx?7C;N;IP)lzPURSfQRw_mHeC4CmzXSgT{bA(M}3hZM@Ji>x-@)5Yp&Z${ZzRVk@h
z*z32o3C=`iCnRR)$?JQ2&DUskIkN}+$sWScq??+c?Ti_ELYIq)eVAh}85d<4@MtYR
zubXXvRjhe9h%>!Z>3r)cLk4CP9Xt>Kf>xDIMP{lgJ98z4@p3D!N0GI+jy}_nV;egb
zQR7d9t3P?zROdX%*m+RKLs~H}6Q@HYG0t`y1UZVP#d_+Z#XvVV1L=IJa#l6ihCtO4
zOfq>L4~GF}&UgMjt^To+Ge0~5{Mip4{LD~ed55sR-81rx6;Kg4Rr--Yd{-lM&ghVR
z7!rZ3mpRwG-4fT+O)o~(F70XrbIH|A63)I%+*uewD7-sh$@XAE&aLU6?TBuvo9?Os
z+8*6y+Ug3eNA$zKOn#1QnJ-)4nJ6s`hfNdHs|-DHi{%`2U9uuuIRjz~lG=X%a><-2
z=%Z|3`~Kqzm~g%Lz})?--;I+E=2jurkz?hHJ#%zKa$tRpHlsUvjjDFF;5n~$+lgM2ho&EZAVeEr<#AIlU*m2+()hc8duOf-^8NPN<
zw)>M~f5P*RvCtp3mgN!Q{%FwxrvjQ!5%$`vM_T?i-&`;3dK$hFu?W?mr&lmLecM`|
z2vw7F%}u>?1CRZsJ}N!hk^gc8b+wgRkfYGlj&RGY&!+U-lak!-*__{155{li>iUrf
z;8R%Lgc&=C`IaWOFTc206pi49HC8rX0l5T>=WjZrSLdnSYlF-fXm}_I;YdcreateMock(Connection::class);
- $connection->method('fetchAllAssociative')->willReturn([
- [
- 'content_plain' => 'My content',
- 'content_html' => 'My content
',
- 'subject' => 'Test template',
- 'technical_name' => 'test_template',
- 'locale' => 'en',
- ],
- ]);
-
- $command = new ExportCommand($connection);
-
- $tester = new CommandTester($command);
- $tester->execute(['directory' => sys_get_temp_dir()]);
-
- $htmlFile = sys_get_temp_dir() . '/en/test_template/html.twig';
- $plainFile = sys_get_temp_dir() . '/en/test_template/plain.twig';
- $subjectFile = sys_get_temp_dir() . '/en/test_template/subject.twig';
-
- static::assertFileExists($htmlFile);
- static::assertFileExists($plainFile);
- static::assertFileExists($subjectFile);
-
- static::assertEquals('My content
', file_get_contents($htmlFile));
- static::assertEquals('My content', file_get_contents($plainFile));
- static::assertEquals('Test template', file_get_contents($subjectFile));
-
- static::assertSame(0, $tester->getStatusCode());
- static::assertStringContainsString('Files has been exported', $tester->getDisplay());
- }
-}
diff --git a/tests/Extension/MailTemplateExtensionTest.php b/tests/Extension/MailTemplateExtensionTest.php
deleted file mode 100644
index 60a57a7..0000000
--- a/tests/Extension/MailTemplateExtensionTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-getMockBuilder(FieldCollection::class)
- ->disableOriginalConstructor()
- ->onlyMethods(['add'])
- ->getMock();
-
- $collection
- ->expects(static::once())
- ->method('add')
- ->with((new StringField('frosh_template_mail', 'froshTemplateMail'))->addFlags(new Runtime()));
-
- (new MailTemplateExtension())->extendFields($collection);
- }
-
- public function testGetDefinitionClassReturnsMailTemplateDefinitionClass(): void
- {
- static::assertSame(
- MailTemplateDefinition::class,
- (new MailTemplateExtension())->getDefinitionClass(),
- );
- }
-}
diff --git a/tests/Integration/OrderTest.php b/tests/Integration/OrderTest.php
deleted file mode 100644
index 2372a4d..0000000
--- a/tests/Integration/OrderTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-orderService = $this->getContainer()->get(OrderService::class);
-
- $this->addCountriesToSalesChannel();
-
- $contextFactory = $this->getContainer()->get(SalesChannelContextFactory::class);
- $this->salesChannelContext = $contextFactory->create(
- '',
- TestDefaults::SALES_CHANNEL,
- [SalesChannelContextService::CUSTOMER_ID => $this->createCustomer('Jon', 'Doe')],
- );
- }
-
- public function testOrderConfirmationMail(): void
- {
- $eventDispatcher = $this->getContainer()->get('event_dispatcher');
- $mailSentEvent = null;
-
- $eventDispatcher->addListener(MailSentEvent::class, function (MailSentEvent $e) use (&$mailSentEvent): void {
- $mailSentEvent = $e;
- });
-
- $this->performOrder();
-
- static::assertNotNull($mailSentEvent, 'Mail did not sent');
-
- static::assertSame(
- [
- 'text/html' => 'HTML CONFIRM',
- 'text/plain' => 'TEXT CONFIRM',
- ],
- $mailSentEvent->getContents(),
- );
- static::assertSame('SUBJECT CONFIRM', $mailSentEvent->getSubject());
- }
-
- private function fillCart(string $contextToken): void
- {
- $cart = $this->getContainer()->get(CartService::class)->createNew($contextToken);
-
- $productId = $this->createProduct();
- $cart->add(new LineItem('lineItem1', LineItem::PRODUCT_LINE_ITEM_TYPE, $productId));
- $cart->setTransactions($this->createTransaction());
- }
-
- private function createProduct(): string
- {
- $productId = Uuid::randomHex();
-
- $product = [
- 'id' => $productId,
- 'name' => 'Test product',
- 'productNumber' => '123456789',
- 'stock' => 1,
- 'price' => [
- ['currencyId' => Defaults::CURRENCY, 'gross' => 19.99, 'net' => 10, 'linked' => false],
- ],
- 'manufacturer' => ['id' => $productId, 'name' => 'shopware AG'],
- 'tax' => ['id' => $this->getValidTaxId(), 'name' => 'testTaxRate', 'taxRate' => 15],
- 'categories' => [
- ['id' => $productId, 'name' => 'Test category'],
- ],
- 'visibilities' => [
- [
- 'id' => $productId,
- 'salesChannelId' => TestDefaults::SALES_CHANNEL,
- 'visibility' => ProductVisibilityDefinition::VISIBILITY_ALL,
- ],
- ],
- ];
-
- $this->getContainer()->get('product.repository')->create([$product], Context::createDefaultContext());
-
- return $productId;
- }
-
- private function createTransaction(): TransactionCollection
- {
- return new TransactionCollection([
- new Transaction(
- new CalculatedPrice(
- 13.37,
- 13.37,
- new CalculatedTaxCollection(),
- new TaxRuleCollection(),
- ),
- $this->getValidPaymentMethodId(),
- ),
- ]);
- }
-
- private function performOrder(): string
- {
- $data = new RequestDataBag(['tos' => true]);
- $this->fillCart($this->salesChannelContext->getToken());
-
- return $this->orderService->createOrder($data, $this->salesChannelContext);
- }
-
- /**
- * @param array $options
- */
- private function createCustomer(string $firstName, string $lastName, array $options = []): string
- {
- $customerId = Uuid::randomHex();
- $salutationId = $this->getValidSalutationId();
- $paymentMethodId = $this->getValidPaymentMethodId();
-
- $customer = [
- 'id' => $customerId,
- 'salesChannelId' => TestDefaults::SALES_CHANNEL,
- 'defaultShippingAddress' => [
- 'id' => $customerId,
- 'firstName' => $firstName,
- 'lastName' => $lastName,
- 'city' => 'Schöppingen',
- 'street' => 'Ebbinghoff 10',
- 'zipcode' => '48624',
- 'salutationId' => $salutationId,
- 'countryId' => $this->getValidCountryId(),
- ],
- 'defaultBillingAddressId' => $customerId,
- 'defaultPaymentMethodId' => $paymentMethodId,
- 'groupId' => TestDefaults::FALLBACK_CUSTOMER_GROUP,
- 'email' => Uuid::randomHex() . '@example.com',
- 'password' => 'nott1234',
- 'firstName' => $firstName,
- 'lastName' => $lastName,
- 'salutationId' => $salutationId,
- 'customerNumber' => '12345',
- ];
-
- $customer = array_merge_recursive($customer, $options);
-
- $this->getContainer()->get('customer.repository')->create([$customer], Context::createDefaultContext());
-
- return $customerId;
- }
-}
diff --git a/tests/Integration/SetupExampleTemplatesTrait.php b/tests/Integration/SetupExampleTemplatesTrait.php
deleted file mode 100644
index 197cc7e..0000000
--- a/tests/Integration/SetupExampleTemplatesTrait.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- */
- private array $tplFiles = [
- 'global/order_confirmation_mail/html.twig' => 'HTML CONFIRM',
- 'global/order_confirmation_mail/plain.twig' => 'TEXT CONFIRM',
- 'global/order_confirmation_mail/subject.twig' => 'SUBJECT CONFIRM',
- ];
-
- /**
- * @before
- */
- public function setupTemplates(): void
- {
- $fs = new Filesystem();
-
- $resources = $this->getResourcesFolder();
- foreach ($this->tplFiles as $tplFile => $content) {
- $file = $resources . '/' . $tplFile;
- $folder = \dirname($file);
- $fs->mkdir($folder);
-
- $fs->dumpFile($file, $content);
- }
- }
-
- /**
- * @after
- */
- public function removeTemplates(): void
- {
- $fs = new Filesystem();
-
- $resources = $this->getResourcesFolder();
- foreach ($this->tplFiles as $tplFile => $content) {
- $file = $resources . '/' . $tplFile;
- $fs->remove($file);
- }
- }
-
- private function getResourcesFolder(): string
- {
- return \dirname(__DIR__, 2) . '/src/Resources/views/email/';
- }
-}
diff --git a/tests/Services/MailLoader/CachedMailFinderServiceTest.php b/tests/Services/MailLoader/CachedMailFinderServiceTest.php
deleted file mode 100644
index 815daf8..0000000
--- a/tests/Services/MailLoader/CachedMailFinderServiceTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-createMock(MailFinderService::class);
- $mailFinder->method('findTemplateByTechnicalName')->willReturnCallback(fn() => (string) microtime(true));
-
- $cachedMailFinder = new CachedMailFinderService($mailFinder, new ArrayAdapter());
- $context = new TemplateMailContext('1234', Context::createDefaultContext());
-
- $time = $cachedMailFinder->findTemplateByTechnicalName('', '', $context);
- static::assertSame($time, $cachedMailFinder->findTemplateByTechnicalName('', '', $context));
- }
-}
diff --git a/tests/Services/MailLoader/MjmlLoaderTest.php b/tests/Services/MailLoader/MjmlLoaderTest.php
deleted file mode 100644
index 55f357c..0000000
--- a/tests/Services/MailLoader/MjmlLoaderTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-supportedExtensions());
-
- $text = $loader->load(__DIR__ . '/_fixtures/test.mjml');
- static::assertStringContainsString('', $text);
- static::assertStringContainsString('', $text);
- }
-
- public function testApiIsNotAvailable(): void
- {
- $mock = new MockHandler([
- new ServerException('Error Communicating with Server', new Request('GET', 'test'), new Response(500)),
- ]);
-
- $handlerStack = HandlerStack::create($mock);
- $client = new Client(['handler' => $handlerStack]);
-
- $loader = new MjmlLoader('https://mjml.shyim.de', new NullLogger(), $client);
-
- static::assertSame('', $loader->load(__DIR__ . '/_fixtures/test.mjml'));
- }
-
- public function testApiRespondsErrors(): void
- {
- $mock = new MockHandler([
- new Response(200, ['Content-Type' => 'application/json'], json_encode(['errors' => ['some error happend']], JSON_THROW_ON_ERROR)),
- ]);
-
- $handlerStack = HandlerStack::create($mock);
- $client = new Client(['handler' => $handlerStack]);
-
- $loader = new MjmlLoader('https://mjml.shyim.de', new NullLogger(), $client);
-
- static::expectException(MjmlCompileError::class);
- $loader->load(__DIR__ . '/_fixtures/test.mjml');
- }
-}
diff --git a/tests/Services/MailLoader/TwigLoaderTest.php b/tests/Services/MailLoader/TwigLoaderTest.php
deleted file mode 100644
index e7f2c8c..0000000
--- a/tests/Services/MailLoader/TwigLoaderTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-supportedExtensions());
- static::assertNotEmpty($loader->load($storefront->getPath() . '/Resources/views/storefront/base.html.twig'));
- }
-}
diff --git a/tests/Services/MailLoader/_fixtures/test.inky b/tests/Services/MailLoader/_fixtures/test.inky
deleted file mode 100644
index e514481..0000000
--- a/tests/Services/MailLoader/_fixtures/test.inky
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Put content in me!
-
-
diff --git a/tests/Services/MailLoader/_fixtures/test.mjml b/tests/Services/MailLoader/_fixtures/test.mjml
deleted file mode 100644
index 004b668..0000000
--- a/tests/Services/MailLoader/_fixtures/test.mjml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
- Hello World
-
-
-
-
diff --git a/tests/Services/SearchPathProviderTest.php b/tests/Services/SearchPathProviderTest.php
deleted file mode 100644
index 5c85e7a..0000000
--- a/tests/Services/SearchPathProviderTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
- $expectedPaths
- * @dataProvider eventProvider
- */
- public function testPaths(TemplateMailContext $event, array $expectedPaths): void
- {
- $language = new LanguageEntity();
- $language->setId(Defaults::LANGUAGE_SYSTEM);
- $locale = new LocaleEntity();
- $locale->setCode('en-GB');
- $language->setLocale($locale);
- $repository = new StaticEntityRepository([new LanguageCollection([$language])]);
-
- // @phpstan-ignore-next-line
- $provider = new SearchPathProvider($repository);
- static::assertSame($expectedPaths, $provider->buildPaths($event));
- }
-
- public static function eventProvider(): \Generator
- {
- // Without sales channel source
-
- yield [
- self::createEvent(),
- [
- '98432def39fc4624b33213a56b8c944d/en-GB', // Sales channel and language combo
- '98432def39fc4624b33213a56b8c944d', // Sales channel
- 'en-GB', // Language code
- '2fbb5fe2e29a4d70aa5854ce7ce3e20b', // Language id
- 'global', // Global
- ],
- ];
-
- // With sales channel source
-
- yield [
- self::createEvent(true),
- [
- '98432def39fc4624b33213a56b8c944d/en-GB', // Sales channel and language combo
- '98432def39fc4624b33213a56b8c944d', // Sales channel
- 'en-GB', // Language code
- '2fbb5fe2e29a4d70aa5854ce7ce3e20b', // Language id
- 'global', // Global
- ],
- ];
- }
-
- private static function createEvent(bool $salesChannelSource = false): TemplateMailContext
- {
- $context = new Context(
- $salesChannelSource ? new SalesChannelApiSource(TestDefaults::SALES_CHANNEL) : new SystemSource(),
- );
-
- return new TemplateMailContext(TestDefaults::SALES_CHANNEL, $context);
- }
-}
diff --git a/tests/Services/StringTemplateRendererTest.php b/tests/Services/StringTemplateRendererTest.php
deleted file mode 100644
index 687f825..0000000
--- a/tests/Services/StringTemplateRendererTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-render('{{ text }}', ['text' => 'foo'], Context::createDefaultContext()));
- }
-
- public function testInvalidString(): void
- {
- $renderer = new StringTemplateRenderer(new Environment(new ArrayLoader()));
-
- static::expectException(StringTemplateRenderingException::class);
-
- $renderer->render('{{ text() }}', [], Context::createDefaultContext());
- }
-}
diff --git a/tests/Subscriber/FlowSubscriberTest.php b/tests/Subscriber/FlowSubscriberTest.php
deleted file mode 100644
index 1e30146..0000000
--- a/tests/Subscriber/FlowSubscriberTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
- 'onFlowSendMailActionEvent',
- ], FlowSubscriber::getSubscribedEvents());
- }
-
- public function testEmptyMailDoesNothing(): void
- {
- $mailTemplateTypeRepository = $this->createMock(EntityRepository::class);
- $mailTemplateTypeRepository->expects(static::never())->method('search');
-
- $subscriber = new FlowSubscriber(
- $mailTemplateTypeRepository,
- $this->createMock(MailFinderServiceInterface::class),
- $this->createMock(AbstractTranslator::class),
- $this->createMock(EntityRepository::class),
- $this->createMock(SystemConfigService::class),
- $this->createMock(EntityRepository::class),
- );
-
- $subscriber->onFlowSendMailActionEvent(new FlowSendMailActionEvent(new DataBag([]), new MailTemplateEntity(), new StorableFlow('test', Context::createDefaultContext())));
- }
-}
diff --git a/tests/TestBootstraper.php b/tests/TestBootstraper.php
deleted file mode 100644
index d589430..0000000
--- a/tests/TestBootstraper.php
+++ /dev/null
@@ -1,48 +0,0 @@
-setLoadEnvFile(true)
- ->setForceInstallPlugins(true)
- ->addActivePlugins('FroshPlatformTemplateMail')
- ->bootstrap()
- ->getClassLoader();
-}
-
-$paths = [
- '../../../../src/Core/TestBootstrapper.php',
- '../vendor/shopware/core/TestBootstrapper.php',
- '../../../../vendor/shopware/core/TestBootstrapper.php',
-];
-
-foreach ($paths as $path) {
- $path = realpath(__DIR__ . '/' . $path);
-
- if (!\is_string($path)) {
- continue;
- }
-
- if (!\is_file($path)) {
- continue;
- }
-
- require $path;
-
- return (new TestBootstrapper())
- ->setPlatformEmbedded(false)
- ->setLoadEnvFile(true)
- ->setForceInstallPlugins(true)
- ->addActivePlugins('FroshPlatformTemplateMail')
- ->bootstrap()
- ->getClassLoader();
-}