From de5809b45aa9b6705e04a80f1d3eeec600510759 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Fri, 6 Sep 2024 21:00:55 -0700 Subject: [PATCH] windows: fix sometimes crash when FDImpl.uv() is called on stdio (#13719) Co-authored-by: Jarred Sumner Co-authored-by: Dave Caruso Co-authored-by: nektro --- src/fd.zig | 31 ++++++++++++++++++------- test/bun.lockb | Bin 355914 -> 362226 bytes test/js/third_party/pino/pino.test.js | 32 ++++++++++++++++++++++++++ test/package.json | 2 ++ 4 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 test/js/third_party/pino/pino.test.js diff --git a/src/fd.zig b/src/fd.zig index b8c7fec50e34d8..319b49ea04bae6 100644 --- a/src/fd.zig +++ b/src/fd.zig @@ -170,14 +170,29 @@ pub const FDImpl = packed struct { return switch (env.os) { else => numberToHandle(this.value.as_system), .windows => switch (this.kind) { - .system => std.debug.panic( - \\Cast {} -> FDImpl.UV makes closing impossible! - \\ - \\The supplier of this FileDescriptor should call 'bun.toLibUVOwnedFD' - \\or 'FDImpl.makeLibUVOwned', probably where open() was called. - , - .{this}, - ), + .system => { + const w = std.os.windows; + + const S = struct { + fn is_stdio_handle(id: w.DWORD, handle: w.HANDLE) bool { + const h = w.GetStdHandle(id) catch return false; + return handle == h; + } + }; + const handle = this.encode().cast(); + if (S.is_stdio_handle(w.STD_INPUT_HANDLE, handle)) return 0; + if (S.is_stdio_handle(w.STD_OUTPUT_HANDLE, handle)) return 1; + if (S.is_stdio_handle(w.STD_ERROR_HANDLE, handle)) return 2; + + std.debug.panic( + \\Cast {} -> FDImpl.UV makes closing impossible! + \\ + \\The supplier of this FileDescriptor should call 'bun.toLibUVOwnedFD' + \\or 'FDImpl.makeLibUVOwned', probably where open() was called. + , + .{this}, + ); + }, .uv => this.value.as_uv, }, }; diff --git a/test/bun.lockb b/test/bun.lockb index af76b575e14d54450927cc4d35870d76bf326b31..175deff005569938023ff11344ef8b0d7fcfd263 100755 GIT binary patch delta 60585 zcmeF4cVHFe+U@t=$%YIa0Vzta0Rn_#0)cFLM|x2K2_ZlrA(dVdM4BLoBMwM!N>Ef( z1nj6Fc2QBWgNlHnfMP+#`&%>bj+}G(&OPV5-@Si1y0V^Uy}iymyYb4$70%y&^&L&3 zFTOGK`k!WA{X+EK_p6_b9+x(D{M0wwJ@NiEId{}tfBy#^?jF4$=+kxYilNo>maU0! z9iJ~ZB_~(r^rY-@IdFr3&sW0d%by+_KS}y#zvmYvK{50`hR+hOBK}u!akwH}7LI~T z!znq*Noh%AQj*hBC#RB6O-i@W$H2w&Fm_^;gnx&X@hcRhjHafH&P+<4=-UzH^Hs&a z1FiypN$PU&n{WkqCW(}8AO6*_pTx@VZv5KtRJb}^f%I3w?P-~G7)uLAo-wt1kUjWyFlZdbIq~wfjbxm)4RU|hhJ0~TZO3-{2w2FqPVw3UJpyNfn zmaBVI(ZywaU44}?E)rV>e*r7w*@l0onaX%)8K18_d>?<5(OJXK7xji@iQPI-J+CQw zDpmzp{Zs_j08A$fRcAA~D0Ms9S_&SYloK;HEoodVz6QD;tnl_!Nq%dZrG9>cQfPVp zyXfNj=*lk$lVyHxQfAWVw3IyG1|lkhpI{aI8+{`_iLU}bG8sJ%tAJ1%TG^DPl*{b+P4%z8O}4DG9_hFE_1pz zzA~7anl>gmDSHg9&!vvO(>1&T?yKpAPfVROCMIL7Zxy~8keZV*dO}KaZaLDc#n~yz z<1y%V)EBUdBSK;kVy#jJl$GP#3qbr{bSQUO7RIF`PQ`b!qYOwB<0Xmj}uQ7*$G>Ov2{((O-;-3ZIysu@;Z+*W76oPT;BqG z74W#J&L=Vu9{6xN=r-Srk6Bf3bV%N8`alq zYj`8g?&HPl)z8akBV5Yov-d>R%zL-LH^*LumDlrzcN={@Ox*ll1HC*`C{unjQ+Bux zDbq69MRI%zgS~hS;j+Z50;?@0V5R$WkXPOhFl(V${(~6mt~GX&Rnhv|lk@l4bFFTb zKQi9rNtvly5pNp*Mf;dl(Lc=o)vBJ?Ww@6Tra{Z=Sf%% zEn~Q-;nzoc74LYnH_T7sYod(H$Q+}bo1mA+-%1@c%U>Af=2IpA3D3w+PstshF(${C zl$@NB$u9kXy{lOD4&xbPC2PnmQnhlDy=shsHMad=g?BK1EUf;jY4|F;Z1IZyzohY+ z)~~?2CH5d!`PUh)ZTQx4KKDla1FU!%>;~G>ax&9WbDR5oALFak$@cW()uUTX@VX); z)hqKye2rNOvDCyR6TLbgwf7gV7#+^5eY%(G4p=P;=UHo#*WvSQe~F5D@1}XH;#s%? zvF?Y}&U;{$aXYMGnG2VIr@$JXaM@*Pk-9&;+IDAob-W)|-9{&8PtVMqkaLE4sCciy z%6Az|3-j_1F&`w<&h-*JgRg`slae#Wq)r-FjscOs&4g!8_A<)NZh0NU?dwBEs!&(f zlqwiLtF*;;D=?kA1MxZ$PyXFgy>6MBkv(Q=cB7=s^wddgt~t4_O@y`6ya>7Dvoj`- z8}AFRplWu9lGT$I&+v+wZ8$TB4&e$<>q+PuxiPSc>kn%Nq~_%0a(_whjIaK@4%Rx$ z$r+!?@cCYu?d7}Q-e0o1Kh8c@vVM%4xpXEB8*jN9pPv!lf@pRp>NW14?_{&EUT}$8THW&9txVg3{IVeqHLd zExb>K_sVx~_i_!NZ5L4ot-C*#d3+eY7XOU#19y1S!u*$S_A^ul72i1+1l43s%Rqy~oQXHzzH1G_i}Jb5zcs zwaVwK0iT7dz&FBrJop&al1+rw6$fF}ss_wSHveJc2aLZKCVpQ23CBzDGF+92JK*Z@ zN>~+|16PD|V9mSajI@kwD)hicZ+`p&Yo7Job~zYneq zuYs%idT~R;E!(|* z%go5h9mh>>46#)0B?aCR3~yO8@YTZIIwpC4Zh!_UmfNb~);Q~5^v^1t3`e|S}s!0V6L z#mXh-ReQwCw&iZG8ns~+Qvp`CMGa4Q-1D^&s$v%(^QxJhlAAr9>ZD|6$FLWtoH6=0 zd%S#dI9O?Q-Llu44%1-uQ?Y$6=jBhx89j+`UwCT|Z}lIMf!1(%t$#_z>S%^DIVLS* zTyhfsjZg9QdeV#67S_IY3Rb(DKjrc3G|=_Y-2sY8Ptu51e_HW5(C1-jv(1GSF()TG zRTUbSmN8nq^BGTfV6B+&cDM{*6*}>(SAnCj@(I6`5Z=5ob1F$kqpPrMI*4*d2?FDbQnhtAdn!o5(C=*}t#u=_}m#t7eZ~8%R8QctO z1Ly^7e#OJe{hgP*@cr;r_-`HX`sHU>{a2rOD&=a!D_-`hJ&;(dJ(SLQQs84+L>^tvyJ=frUdcfX!b?v-fA9z!tBdjKeA0jIs_4H&|O%6Xx zrsj;!$fe7Q(Gvy)yv<;9zjlQBt8j>$>hAs~zR%!<7Hz8JO0 zpcPyNt_oLz84`EU-Z5PAj5qCm_|}Ve)bMk#rr&*rm%~aw)$k~|B7RR;`_gr=rX#z9 zx3LvD@6GQM=R7`WxB#w7#M@!rFekvZ;a;$Aq>T-if~(=5JL|=NA67&5!O|b2Aoc8* zKY0r|{M4A7kufnfkFGjGfV!~KFJ6K_fA(7RD}Gt@lZHQrOW=P)xLS~&t=G(azO;*8 z#zWx>=v{vE!bA9#@PEQrx{kklx?UHdPQE|!N2-9VKfDTz&B%`7Wt;Jr@HGc+g4Jbf zE_p3FM*^*2g29lw}z|0lgZEBs*8IK z@Rd+SSmtLDRHM%gzYeRzo`N+1_Zz+eR>#_~MlK&#yh*S!j)0ZVcnZ=zbciXiK^ech z2Fk*k>z7J<>7Ibgk0ndSzFdXq)d}aKh;a5z&dkkm8>f-G2DM^&&TY|41JI|A( znCFs7lhb*f5?wp&1RlW@u>(*;V&Oy;d`ktdr6*u@{d=(VnnVy2*)1rUM>~#jK7U0o z{Or|_Hmv$x*}OkqiQM^U*)dUlcOIU4=Kad8VulVadDF@^&ptBl@jau{8|~=&$o}9h z_v}u3KH}T06{`I9_z%UW+*+gjuXjFn>i9jEs@41E(An?jw14U4sTKP+d9>3npTw@N z(7fWnZr$!qYq~8f#~M-XTSgc))$68P^xl^?*@%6(s|xIf%6InX z2b$S6-nOC;5)q>8tU+;B{Yam$CtkqLY7^(rvQyiJtUYM)Xc6|V&hb$=&E4qaW;G1@ zd~NWGDzQJqPHh*mozxb}ae!wo?;B{+H|m{zluU`1`XR z9SQ~GiurtpF(EhtYmloQ z#hTz+otRfW-O%z3a6i`?gVo)&9w@Ya#2VmgU70~6W%;+-(Vaqph%)wsPKo~O?1D}q z|Eu;X{x-0qJBR%Fc53I4^%N^b-RHM=wT<&%v`-Pz%8u?5^512r^0$Ir&?OWc&wA-; z?`)gkf5eXNs*y?M?@+sdzmM3bx`wRZ*gKU^(9Y@_XSHVLwa1IFv)aY^9lM}g$p5~5 zs#_@7iLI}to&I9mNQ`)UXJUf&5LQ1T`|Q~6alt?FhTCVlCiri%qkDw>o9tBner*@@ z2wA;YzMYB5ShtC@mg8w$Bi)gI2~R~b@`K_6MJwAodL}YZr+S9`x7*RZLe??vXWXD^ zX%;QL)-LE3^50;e;_o&)x_8L>j?LyeFN3ae{yKI6TJkjvAX>FpA%$yllgJ<%pEcnGhp^k5{LTpKq=B9=F!)jKonQ`d+5#qH?6AuETC zQ6YZKb^k+lLEn)7ynTwlo$cs;A^#FPmA{AVf_@?EPi~i*y8(5ZzqK9RpY%28T{N%X z@3RZgene9@5sw+)n7yGHUeMmfI1R^Bc}#1<9>dejk8n%>$v!n8WHqkk^+3Qr*DKD- z##3Hij2(8tK(~JUZDB_batCWrC{VPHy<+T$E#AnE%0SL72!@dt9adT z6Lt-WkHS&E(brw$q8`Q5d@}32O_cSA38!CK=`d(Mg#q&B!Gj$)HD#Q*%)qgf#QTyD0IBR6XaG_Zr#z+0-5b=4uuHmAhDm3!C zuCPY}LmSx*6A~?(05cI7#MklEB(}>1@llP<*gIJj{I2KicIvaqgvnzl25PRI8Xoe0 zXGf0+u~(#y2nEw)e7+ubO#1}?K$rKwbJogb z^R>27EEBDiqIPWmI4cEH75C=#y>@D{GAl?9S=Y2;vvrF;H#0s8$Llg}0PFC))@mHz zF=6iX4PH$Ei+xan)elRt+{qYRfte^h_$HRuiV|@?Uz}QDb;43y_OPyT!RdI-?3nHe z)*D#fgxC>M$7H{R=dC?$JMHc0@uA>i zy4vkQ>qRW}G4q$WKjASysEKY1F?Mun$V#Q@Dv9MWK8}640PQO@vz~8@k79fEcAs-e zasFI8bwVgOrkz$%`h4>W(J8E@cvf0lJ35oQ2A=j) zx_BVRkIvrHKl^uToHZEFOcxFf%kAi_kpF<4%HJRD0{%9!Pi2Ly@vISbEBBERan?pW z4KCAYc)VSZ9kL3#c?+(Xy4|Y7Wb93NF?&~HTrd+a-agYS!P<`1)77u|ImitnctxO!+14*iLaAF$?B|{A27>b3)ejgT3mLSXp{E&44O>@HAC|V2+&r~%u9ZzjzhOp4L*{O3w!S~SG z+v(ist{xViO`JQdL3mzVopzSuUFXi9=drY%aAW8e$9z9^OUSBsLwHkR9{LB^sq;eq zTkL{)A?uOCkk}q^!B6qpE0rOnc_6(E%EjxOC$Y0t{ogcEs z+~mb`H!f={o@$3jz8~W?cTcgU?9>GztKV=h7y6P7ahZJz?Ikp?9Qx2|IU;-uJIBhI zj%WIjF?tj4uO2KpGTei@8FVZ3$T>Jyp1qS+e2%5b$AseMdE?DI1b7}(@e#bMpOJEcI=|~$O)R~S`FD)+H>gf9&u3*;HjN|ZF#|o z-U@Y}Uah`(8VmP)9(3?nQ*4+#8`&ZMRd)1UA*)N8&&PR(lgYUSan@-(mZ}-A9_e0b zRJsRUgy+pw_3_7eUXSZU(`-_>30l#)cpb@w9bihF^*Ek4zc~3>C-BrTZm~7#S?&hNmNXPg#dzD@+j#7Fcv(y1f_1a$MEgv;1b@1nx|$mxzPE@~iDP)&v%Hl4 zhIaHlAuBV-n+slUNAa{NdR-oq>vee%d)G?l(V7rP-PARlDUI$ei*+mTUKrg|G-;Z&fDPOS@B z_oHiTX9~=X3!cD>cc(x#yI_6D8Zs@MM=Zm(4bM!j#5n6SJS}eSo=f7a3e&xqCEaP# zA5Sq^Zm-kIjUoSwcIw8EwPA)=ce?-H_$VBW4*T7_IIHwb&m+4LalyWLP3#zMkh8HG z6N`zS8W$|U>*_w>e2?YrBixg$Mzg#w_d0nxo`#6dY#SHcg~zinhuj~qyz|7e**;$j zVlV^e##!&-c{5k{%B$^DTS8Xp?%>eZ8&Bmh!-mIM3-C0~?h6anQ+RQBMQyd`hr+O3tcB=X!`uBiO1K$MmPF9t-*2xTpho>dwDr;{`kQ{*cvtzPB-W8+tCDhMv~H&n$W%WW9@`bVb~ayZnOi z0fXCaa5x^fHC`0D+m7BDvcAS|OI-SMaeUN5uT#9rjKOQ-Wz3!HPCNR+kpG~a`d}#d z8zJ1`=OtJPi^7AW#w^5BX71}0{uk`jheFmbXzC_rCMV&xi@g|8nse4#uZ#`T@}D4Y;6is^h2^*Ww9w{Qro$lE=|-B_$<#^d-) z`-kIca(a($_uzRoW-zT!@Vt#cEibps3!}!Q>w{+oVQrkX7*F>jCIR&?xjgJ;aef($ zH<+*pC$6JWj;!#sh zH85R4B3I#&h<3s&f%$dsXtG2JQhC{vTnZH(>V9giZytu7q<=;_N#cx%WH25 zC%iy)tY~kiJ{<}UU+tdyo=ymE$GYB5$NCA2r<+ngii8b5Uy^IB#q#QW8f$=Zw%Ts=`j+)HATBrquep7uO+s)l7N?!t609Pd zys>56nNNf5Q!j)p8%=Y85$O{jxy9$ZQLlUiZ^7bqa;y&vwU%2|lwKEEfHho+oO2QW z_(;4lZrrZh^cuKQZ7s9{_v&?JX(O?`(5JAx+{@pmbD=^fVDYlTngr`nEVIlQ*dOrP zQWh(lMb~t@HzeF|pO25iQQbK_Fn=Dw)7CD&`JvAEFnB$3OPuX&~XM6Y^ucI4L6-a!*+w9!qoizuqD`DQ2`66CFJZ~c`ztcOS(lf*3qi__& zjPD#5cw(nL;pIfD)`MQo#Gra(@Kjl^Cs*OAgSf}?qHD2-Xtw(RIS5P3mSx4m(E>ak z{W($`!t(CBB_8&sk+-<|;c2wIr-KD}8U)Jd9A~{~!We}9alwmt?(xKGyUVMWn?qpE zF8lOriPp=Atx3x3E$ki%kA$nCGjF=_+D|XkGni;aGQxv#vLu z_awT&c;1*igQqTV3ywN(!u}fFR*!iDLkBYyDR_mkt<`wFNXu&j)UW$)ufG`>x^@*_ zPp{eR@W=5wdmeM7-s7G}-SMUw&wKuV3QvQ;A%n0V@iY+_5=yvkkIy~1acbn?l8WaI zm!3H`;c0HsM)u0z@l<-0R(_!CUc2EtiPo~c-aPW2v);hd{IlFjl;0O#Q+k}~hu4fS z@0OQu!sr4T_7tA7=4Q(SWRWMl8xqx}d#=aRjfR)RsKjDCRf&19Ha-eRwe<@B4KEJw zDtBkP=}9uNV`jE3ilMpvSNH#jqS@ok_I6Ks9=B-@2s4f6J=pHU)6jSe?+l(dXEj-x zJniL6Olr9lPo3)J`39a!aA&<$;u-HWNDF3h3;)Yw-`R^7A|^BW<+xzkXWh-8ml9I2 z)K1IokqySOSv{0PV(0$5T3Q>$)HBuWjvDJk^t_PRtfBg!@Y;-L-hV31h5ydFCV@ z&+xn>*zQFyKkrC06VJ;*x8U8zV>&Wbzc(K52=d?&eSqBEhm{dnnoAs}m_4iUns{|! z1Xms`ES2ef46nNv#+XIFGGzE@&Hx!OMBu z5`xcS@jh?+gh23R?F4~NFWWngC0ZL^_G(W1sQFRjF%IP`N8OJ zUj|}cwHtnsXr;dzo>=F0$4B9GraHWJ!Am}0;I+pi{tIz|+OOFSzf6o8`I>j`@TT;} zfmRek7h*9ZSU+FlDUG-I>%8vu0E^`P_(+_Po!&OVx*to$@Zd~!zsGCmCedWm*gH-nS|#5M&yZb=`@FaKuoKBSY+lV_6E9nyp2?#Q^Ep$`A>vWI zNrhgww~goQszS1`=T79s@9;rbVls6ZxN~^d;d!UW$KLh%M&mK*s9*gfyw!x~b^JWM zfq35AZ|~u$UB%tkG|Ii_O%3 z&?B3`i!_)gdje@(Rdoe0m*b3BvYb;929YhvJ&6ZUDsR)6iyboXgA z@ZQ(#YnBF!y$_xi3i~{#(b;(2J&&*hc*%GiE%M`|zVX&i@7&jY(UuijUt;kf zg%sZR)(FH7(_?cM7jlVXYeb{C|1D z47~2{I|6&Kl!hY&2b7=jTHzIO&PDpUaq?+RRmgid9Ai9AQQW5XUhYMm#p_JW!kbU9 zWdOxJ-7LoHNf^Vy+e`1@#oIA_lA?HoR~YN5f1K45FEJd;T7>6q!K}lG7bE;mqtgD_ z5%nYe&ixqHR6fq>HB~3b=kT=AyE{SPVx+U944vF6=$tO&pA(!D^!qwEXUh0zTF+uC zTb6!ST;R8$)9@%?5;PYCYB9OaoMqx`;+o;eY7xM#lfms#8L`)>5q*?*bu zV-EAwrhG_!kZT5>D(37c&k$AR)0?UQxAPZxQ-TkN%JZHfdjEsBsL<2EyolGaFlLdG zUSD}9&d!CNrr#}i-c3j84&iAMdnJ@F<>kVSigVQvJky7qM(@UBO0-J|d|JvmU6KB) zQ`%`*3GPtFnE+cW`DAHd^3o$>d=!qi9#l-DvUIUqOzanNR@z@4_s^Yp33`LXI*FwW zyvoE~<#*Q}n=->c>o1QS_Two(iqeYWlcw_AL!;FRPt|4`o{f*f(VonSfryXdh43gK zD=t{NJUyYCkTn=fJHGo2A6$&br(HNSzJS%-OU<3&0$wjX_n|k?zJk-RDy_Epl&Y3d zlnznBAMx6`jp1Zys;Fh2ji*>w*|E#x0=utvCRAf$mE{wx+y;9j1iDppPNM`CS9BUy z_qWMo)HU+HqJVVnbvZ|%Fp4ZkciVBp>F$4iKVXw zD(D`dORS1*1Pb2@l+V3D*Oge|+ktoo(6z&BzbB}MJ6+jh75E?!KV)>V;ynVSKMGWV zJ;vV)>-u+C`BZ(9Kg#GSpzCt>JGa;LH+8DTABeZCj;hwERlT6e&W<+1WUXne6M z`wCFuuLE8Gik1G2@I1kAyYDTf;<}ub;XAJSk1U-B4!4m!M7Wn&8Gqop|G?6Z0;T)d zgn#UFKCI<0rmvd%J^^A*(e8CQtMQ)$g&zaD#PW{=g?|ZjiKTyK_=MrFVO^KAg@4xP zYv=}G6tXfnXZ*`K!dX|_U(u~EXBhXo5-T}J827poEBqIrdUNb>FR}dJJ=f)$*j0%v zy}A;4>`iV7(rTChu{yW5;d(~DoF&yax>&QO5v+7gj4qbh)c9g8>Nw-`0qW=L_^Tu# z`QnXsC00;t6E2q7#`t2D+0N*RMi&=F?;_u+P}g7GZEH6Zt-IkKa1mnkHGV%>m$*25 zlkvqWW~A{i=d00kjs7p#>+63Jfo%S*jQ*SPyz>8{rmFO0{%G)~n-+-G(pkp;Pq-fG zHj_?+yaQGi_Zxmdb6wN#L8*qdlRs+w{|+ntUQ@t6lh5TW=?SBckWmcbMI(qcMP7x~ z18>5b3r9@&eY2cDF~MS)pBi7R;=VHezr%`p!o(M=xYNeJ zoU5Z-0q&IwE2dulKd>??W#V0lOA>yK2^TBhYmI*;R(REbnPOE<#4E9SppFT@5|<#n znJF;V#1pH+t&A_0$*TkIB~}IEhhr#WTN5DG6zO36E3v}660VW&4J)HQhOal=7mje| zNBisNVflvW&;Nn7gl-_7CS0IA2MLIFBg_R zMSl!SpNX&hW*J=^aMm^SSL`p@ZLDGW`6k+xSexY%C5Lb4kBVPm;)^4kl8wv)x!cJ9 z4y#zl#J`-SuR_;Ovk{iR$;7)7tF`xPf#||;yXAgZX?F5Q89ZqGhmF6>@FPZl4Ayly zYd$||;yq=;uf(dr{(y5;WB*mowT=BzZr{FO5?qN@p%+cKxIF#`#uqF6C@kqCqyGo& z^@I{=W_=3l2=g_pj8B>j#WGJDU##$Nj4zh|t>H7UM*bYEe1C*>{qIcq3j4`K5G%p2 zurj=8^#2J~R==Bk|1kOf5uV$H0s#v9(?k%fLIM7$LJ_dWP~XbaC6;c%N>beDV)-SF zFIK!#hD#gHD`O&DiIu@sglqG-7FL(mF!99-uVs9(%(}+EoE5LW32z9iB8|Lwd12!p zSesz1$w(}-C4ZE#6|4;7B>oqyiYAzN?Mytedak4KJ!br6D8tUMmQgR`n_rvs4K)eG zs=zSgU(QN*vk4z%!o?~u#pq*=E>=F{#G3!(O~B=>3Qa&)P`U~KSF8*tnRsFy25&X~ z<*az~(Zvg3=h|le?y2&YnAl?ZOO1aeR`~5E-ZB$UtXkh;_)Zh9FO=#MmvpMe`YSq( zWBpP8`JY(jzS-nKH3<$I;cXM)KVfC`j!AbV*7E$s6l ztb&W1@REj0n|N1ZRXpz+A}HathN~K`W)g}OUfpmF!!==5q&BSUa#s90=<4EzCSGF` zPpt45PtWr;H34EJXa%d~@rDyj_?1`{XlKH#C%AzTG^HQdd__n7hjN8!r;Rb+63 z$>2uAH<^sYs(6y|#j04c@vp=RPf@sbI2k(1XTxgwWRvhptb|huSBs_@o^Ik_&I+Gl z^nb-F|6fMb-aXf3^xt7Eza^ws#cwyf+~f!ILkSVwoF_z6DmkTP6MjyY2S^wCoCqpp5S~5yeXQfZ?5nA2i{Yv*JBu!XGx_V&(UU z(H}LsSo-cf6Y#hRxSVyDdd=wnuQ>1jRmRF!8_Wl=+VC-dG*q9-`HS;hp)|sGCg5_` zko;g0{$#@c6{~<>O+2x>_&4KUnHm4f12l%elR&e!h)Vw-X7$KbCSR8||NcSvAM&;H zRiPmDNL9Ex+}0En^WVJx0yi-4X z{A;yZ3yUp3`PqlH{@CzdMA7pDSMDBDbo0i&haTMCz184NuihJY>G>V4E3V(Zs(Iz5 z`bwD`!1Ef1c%J)7iw%|%kc%vT8_@C)#IHRZ!W%L@#wa7 zANk^^sW<=Hq1W*(Er%9=Y|jlxhO~TeWaW=f9-sbf$Kv&m-JcTpE$_}QpN+dF`?|Y+ z%oylA?N)DFVz=Ve-Yj*b+nZm%a^8OF#pq#qU3MOy7H~amJ@dG`L=88 zv)43Svt(M;+>eG-J67k%&r1$i((9ugw++0kdg0IJyVYx2B>UpJx37M^?eKT~AWrFl=kI52gWgEkEcJe_TkH_*Xi=!`)sNIk7cjj^!N`;w$SW=xvd?2~7Ixc9Q^b-BEHQ%01!Ff94W=No12`{dbi zcO4&^e&n~I&3A0b|Fr0lSH@Nz`R3`kxjzn%t{nH?<2ld0S*g#kN8fDJs^j2Mv8TV! zT;NMyKHGU+)%)O&=(ksNeJyuinU{}EEnn-*<~|o|*PQWn?trp;r}S@C;^DeaJ!@5K z-lI?6^F1e7HwSa09~@Vu&kw~{ug$po-44C8nq5}CZkJbY-M%sz8=fBZOTTWR{nM@c zZ(LDlZIKjHq3`esqg_8ojae_J?P^xZ&d_10NeOIRCSSYwq20 z@nUenfM-^$h!|qJ?rFU)$4J2^}gQo%>&7y_&Tp{e>8t# zk4=M0502db$!|vzQl7T2-M=o_v+|&Cx~8rDqVmCmMM|uD?#CjPqAu0k@WAdqLq2T% z`+JX1>Uy;kQ;X{T{@SY2*QCGs@Mo1?D7vJP@8SOO+ix!Dknj5;e%YTn!@J!0)>l7n z{pICvj}>Wu>DIm#6F%PlVTHQ6C5OG$c&cw`Oph}9E?s!#_PV@!Ge2ol;p&zbk4*Wl z;ofD(AMG*kqXF&KZAtm5?wrWi>sNVy=Y=v=@2DGWSh@1U-<7?3+qVzzY_m4yo2r-A zUu@U%r{VXsu2tUogzELKax&>`*PGkcf9aPWD*B(fzro3a?Rz$Vr*ivRd7B^j{NRc1 z)st?X+o|Wlr1^HuQ&U5$?|pg3*3q3#JEbu!QY(5n9zi80^fgfiSEd!dDW8Io0RjB|ELSkxGyLVbi(C#gO{dN z4G>OBnA`v%-Ptc;RTG4|(Fhq%Ry0EQrU*wQWH~h(BK#s@enW&D=dgtB%@A5OLYVB# zZGC8u+!NuVO3{@x*>#zoU9N+_bv!W zB8ya9@jXa-p%Y1;b~-4>~u9UUGJc4mnnL=w&BK^op}j^r};~2T4y}PtwUfNcy_7U&5-s2z7fR zyy;~1MCjfR;fRF8PR(8jzet$h3*jB-u!QaX5nA;|IO5FhjWBEg!dDXBcVhb>L=8k( z*$3gMb4XP4-tV-18(IZ2|^&OXsMPT4`ww@#|)jI&?# zol|)*^u3cMI_tbFI_K0J0-blJi+*qpi+*&Xhe8*exuTz(qoSXk*kRBw&SKH8&N0zN zr}YicZ_WzQ@6IXFA5MoGp-awc(VxyaD8TpedfpTm67WYjo5g_$=b|_w!Wl3ej*M`2 zh=UPMU<6zw!nsjgG{SjA92Mad8wpzx&S=<)A44Y{7#ZjlC?4Tlbu-FIDU)wTDH-8B zFJ)BN@`MP(9}cQGI8ZsDWdpLeWl=sG+k@)W|720cz}|iejAoq9#t|iBMA~OVrGH zSrqHkOoN&`(?ubUM_^nJc=^IVy^CVkbfI&SFt(=NRPd&82I)WY9GU&Wa3# z@sklQNNDGD$V8|#1z}qzLdZEM;gE#ESqL4RO<4%jrXmEh5jr{jvk@9h3zTvm&kpqT zcX9kV2p>!%MoJDbx;eWfESio`As3;Claz}PKLg=_gkDbB$p|MUOrDI;$JsAo)l7uC zQxN((SyK?Y&q6pNp}$jeD#9-k=1)Z!=p2@?eKta?X$XUzxziAa%?XrnzMK~5t%JaH z1imm?!ntcY!VS(b348NM(q#roZgN)4Kp3Boa6!Tdr^8HyN^=pm%|y7_IVa(egu$~A zlAKMm=-ScFucBn9|7>WCQy@xl{BxkO`hB9Iy8p`??|G?CQXbv}XP;=IQYBxE@?Zy{y2GhLM992Vs|(et3m&Ro$H=cs6^6MHK( z%~>p(?i>@%a9YoYW;!b%XZ#Yfy)d6_XFDAhsKrYWwk<%&bIwUPBw_GEgt^Y9g$UDb zM+h!LnCJ9ggwS9a!fpxk9sgp44bXWnccUFrwIOjwgogQ~Wo19Ie z&Cai)Elz(M+UgXDw(arX6}ZoDy~2@}&pG6Gbat%_lnW;E`La@b<~o5qKmXoCq|@68 zLy#9J+qy_xQNO-NW&|2`N?UiO(x`c?}1;a%9jG2{Tl*b zyV;yv6WGp9vSMvup4FwU_b;s8u&3&}z|H=Wog2EJP|m*|E~8RDbCaZPpyWm|)J|F> zX%(iV=BDK2@(lyzV&*d&Kkj*YLmB}hkAmmVYOOB-hLc)Ks)y`a zPR%WWzHDw;TWD@-0{QPD(vxm;t?)l6zr*RjE%0o~{d5i=E6;zgi^=N;w*%5Aj!DhV zR0DVI4Rmt)Z3-N6tK4`yRj$MDD7ocsakbB-o$qIQ^`?NtJ-zP_bdRdqiBCAI6}_ht zYFaaSTpItD@`RiX&aOuTEuvbRC{CHZfm@x-#{yA-l{1_4hoshVC-6+8L{zsNw}{P@P6Nv{NUMEo^k zw4>P@fot7-N-pJBWHgK2`Qo)w)orWl2Hk%GcMo$h*$=V)4`Nq#6~1H4wh>V-FWv;{qn>q5P-~;< zs{u@Y_iAG_)qqLwUiuocieg^rw~^heEt-na$C=_i$=AWe(<|(4jMmZ9^4t%~u`t}L zlZnU#^*yd!xb)!$6{2q$?K4^zqp8jMCs%cKHCkEhCymz4X!@?h(?;uVv~pjrLu>cc(t*^-@hDTv^r>=O(7$VRu}CEwyy9u$?IXi zAE95-;~Hfm*2n(HL`*VT12h$=Ycwn~8fXq^f~GhfmNSp_&2t4c0vb(Ssj!;X7-%$g z>5J#mG_N)HHJ>LMP4ilFUssyZnqoIHn!cp2w9P*OGMqCG$8*Q?Qr-gTC__N7VOhm0b+eDmZ zG;UG8yNou&B-UzNX|$Opo)+WXMw@LkeSc=P(ZW-<9oibB<%h*Y#I;78YYGXWZ7|v` zMr)6@(P;BbAsx^*8BO2gSBo`2E&*K&jn+vH@wCM(MpKf!&ipB265nRTE@=FYqI)ed zn!f16&l$ScQloXl8|z7h9}en{-`{BZ`oEI&0O|={%h6Q9o}j(Pza+*ABlg19cc8S7 z*(Pys?60+Yxb8AqAMArhTWPfG(Oxpz-A2>5hh`YfF&cMy-#HeVR{yH-H{n&|^F~~4 zA`U=XZ&u_zMjMDW1+6x$Ta8*b2!uZmu@;U0_2aPacfldw1`}@xc0JP8g*O^)sP@rl zQ^+PG4nsSwT(~yF>aH8W_eR@l;@yaL-e}v5b`#nUM!VN&!_kf#?LMQ8K>GsQ-N&~Z zaU^12?1pfG(Qd}py-EAS4x^32){d_I;eMkfVJBj1FL=Ocqp@|X)n2gEXvx^+v18!} z^-Boq!ZE;)sOupUF$McoHJ$5WqiM3~x2CjqcNuLQ_FHILx{nxbJobGi?W0CZMcaX< z<@^|$f+wi`uaQ{m`Ee6*BKGS>+hepev;$~b<9m&kj(x~z`;0aTO~3J@+5UvlGO+b~ zKw9@t8Z8rBzmSxu{(lNl$A~O2LDk}V!9>i)<|PsR9;oj{qj7roJxRgs;R8m?#omI} z0X}H7$=Ld_q>k`QXuA1M0YlMr>GvVrue46Z>5bSK){jIed>Uws(FOhtjsJbqK`k`x z1)5OOW`GxfuCEZ3b|!cjXn#0iv{~4@fUd8NHe2&=jiJZyc(vbV-x%SsvE3iJaKy3QJHK6WWI zZ8+zQwg9^Xnl>CQKc!s=CYZEZe$p0!Of>BeKN@W@c9zjDNK?yh1NvbIT|XhJ)=NOZ zXup`mOVNJC)+JUUw*!5)IR(CGv}M?zC=;&VjJ6zGzagcS@jIG=?*MrZU}k?f;i4wqYU~_rb)|k6MDgwcO|jLJmeDk?nqliw9;)9s!Sn$G~o&$Avv$FVJIx9t-ps@D$L|{~7Qscn<6b`tJ35V1v8B zN^m!DfP9}$qelBK_k!@#DFHCDX0$`fM`$_ zlmdD>(Ye|aBf%)3-&Cpt>Vo>90niyZ-G~VjTd?{O#{=LXI0Rk>I(xqcUI%Z0H^E`>HaG&_1MdUVfTshU zP8d2b>nNvuxiU?hOY2zUf+1e<{kmV-OMGN99u zPD3eR97qKdKpIE~lRyk;0+BS_y^EgQ)kP=V5NRYcMgT?^t%FKJV*s8 zpcSwQyB4kr^vjkPz(?R?phM|V@F}hO3>*W;!5835u#qsGGati#9P9!5b?XseBjrtn zr)k&KFLB3#*5EM$sFQCl*ba7rS>Pvd4x9(az~|s7_z-*q-U07|Bj5pAJCPw61UgUw zeWFeuTT2A`Y+`$`n>brQUNinQ2Q5Jja4oo#)=mU9KqM#%z9Z51;4JtQd=8F*FM-aC zC&V;BXGQ%Q?!8oGI{pRtIQRm*4|bCO5Gpnlbk+FxByukhPe4sj3seQ?(e3~{Nc1JR zfdn^#o4{}|9*h7tgA;_0fs?@kP!7CH9=}ony4*$3KUCxUI{aZZf@*P?$2mxUXF#vmC? zLF=MZOg*6IyJKJ!NCsm-UnIQ|US0t!Gsphs^N&>J)cwSbUl`E+EI*lhTAg@TY3)M6tn=5 zK+nA7m*@L}I_U?J9|cOJx@BYM02TNo_z{E)Qykf?$waJ?Q30*+!xd2+{q*p1ps;Y- zudwrVg5?^fozmxQUKLR-Z!_j5unw#Ri@_o=6J&u*puMvVhyk@gO;84u1jT{w3VH?N z2g=mJPrJxMSUZaL(_YxR72ii3-LiE%-v-tO__eAL7{kH!pbzM_XK_KqZzc1_lZfra z-RFj4cgEJfXJdDShr`+nN5bu4?StA6$Khv!EFgP2Q2gFNyOMS%jk-R#nhPskcOYLI zx$?V7+t`f=s*tvuVW2Esg_Y!B+fH z@JMhoNC9Wjv}29IPS$NK31c*n80PW#OF%x*rkn@nfUd;Rw8;eNAPs2BPXJ0QD89C- zNnnA=Q`0RA=+ry|%mOn(t}>ROIXD@f3UtPs4yFO=;qWl4MQW`osCB0Tm9f^L)}tzQ z3z!R3Ifc&yTCcLzD~n*Q*Sy6>)HbHO#&Y8?gKr1QSc&uyawoh3+yz(*?oFE=%Dvf_ zgdG#6oB7??D}n5}gssNj3bugFU=!G=@z)GqkFySx!`=Wt4lvzA<@4ANfc@Y(@GN)+ z>;zAPhrolN0Bi^MfqQ|ruW!hs8?5w-uXy(Z#oGaP20~uoE}VzKQ-+^}JCXPacrQ?e zbgOy{JPOnrwfqsM!xItZ+U~*afV&S?vRC0(z{}tecnKT?2f%ya9q>BPh&%mv^0E52 zu-*Vl{U-c2I1Kb!&b#mt@BwIrKZF(y2C_dw`w(cQsFJcj1{( z3Y-MT!I$8R0Iz_5g>eFW4Nik^!1v$`_zo!XS#S>Mh^j{~9dC+&Akc9q0tA2_DtzEi z;$8xOfZxGy;G)z2$%t#52cC?$Hc%qMdF9E7T6uaH`Gf}PiMj@;4ypki9(9PU3@QOV zxac0NPSGUR!;BtkZp1DN>%sYISod|!PmNG1PyxRvtnJ|%>?#KGJF&02kNS-e8#*hV zil~00UIEZ)N3RCxPN@TJ_{`88I~FtpO+gbd8t9BM9NYx-)UR_!0*Iyz*&3j>5zhLD zBdP`3ML5rh`5@w_4@V^C-AMQiV3>*D8Ey|kKMW`j<|RXW92n0(#SrLBR>!AWE|3fzOg5-bM}xC<-;dAIY& z26}v00hWS0z->SoD1jm>Uii+TI7@)S!wCC|7q-J;|C~=aJ!Ry%wZ7YArrM6A6{>N# zw&B8+sqRSOxU!Y;D)iN$6aIR5qp>%@o541)6>I^E4)cfWRy}`m6>IB^eJ-Nfo<+|^ z6hy?PPRfwDxEl0MiQM^U*)dT8e{5`%=1rPAOnHxB-!?Q@+8i6;jdbC%EBM^@G+mG5X4 zS&0v&X1(NQxCAOxYdX(L9pjXZjVxcpO}E+kq*-CQ3X$Zr)7gJ*WMw`_{l9wq&VZ9v+pYV-S__Z{L`FMPghr0S5;SsGd4T}?61@rg*MR$LZaaf@t1!HJoQsk zH0*_jeKC#ETmbw|15gowx-n7DRyi-VmH~dOr<a~o;*?^`eFde0N{a3m)*|wd?N!e&b18^>E&gOl@x%9nF)jl*BqwoGtilcj+&%IHEPaJ+PpIKljSX3! z)7a|X0mZ|;zHjdQCN~Q@0_6jg4e>Du<~_6qe?*&67-Dbfnp2F zh}{cJI$Bp!>nR(l@_962Npt=}F^1am(-LyHfCl$LqgJT(rpEq#{Yvk3fM>8={zxP! zk#P^HYZ{926a~0iWkN5`qdyIxyvnGyHzMHbq63(lzg81`@rg$u@Lw7ewZBL(hvqX& zMS=~`uOnE+r-Fl6%u2SJbCl0KvdDzxo<|v6e5CqZD4qE(W2K%_K|%hP{Z(rH zhp712g9V~HX&PHx7QS#12MV4BYhb(VslRm{I#8;FA6PYz1>|)H!ulE%nhX27Uvyz> zHQ#beWh0T5Eg%|C1DTzTcD;q@)|FNDpEbN+*hQ95W|l{)OK5f+X)nR2XHjbuY9lME zm8Y@BxU68J2c=v>ICP=OK8P@0WPcei>rudE)M!9M@ua)!^Wb ze}BRo}) z90Gvj!r*#~W)8cYc^UvHlmTa8!yE>D7W9rex?HSqre;~VGLu+H5grHNm_f4x2(0U(QgJ9t-~ zGa)P$08F_YN$1n#8xV3O#os`G{pcwQb*Y+E=cdLR^JL;pc+#|+@Fe-~nx#DvM3HaD zDWsg6nr5Yba2HbpZB5tMQu|w)0jgGX@D^0{BPcu>e3)Z3*5d4#K)FwTJf>YJ9{_yj zV3L7C9v>S_@%8!1MYcz63@USf?dwbpyBayIiduy(!T*r4(WE=T&7*C%Q6$h&uC;+O zP-v4;t2}CD=LKhlRSzGiuXTb+!oe-0^nff-*oJL_%k`b=9LqD4 z7fcjtd_!F`F^0w-qB}jz+()%N_roQNug+jbo4{LZ3jo{jwmyG!OX~4ygC5{ace!y7 z0C*s#)R{Nsk$JgsdO#p3rl3@Cwl{B|Q20boX+>_gWpnDuy^W&r{G{~#E?s~oDC;&x zNaPq=-s@$xg?SuXW0QK^0=6yTkPxZvqVXis-bLeEs5L(&)4;oMi&J!wpW^8`3T-(|N<8GBPt@w_xT~$btVFr_ z8DxJCN-TL;6^UltgG3u>^*u1%OZ!m=-&zg3k8YN_ukpoafcGmQTFHeRU}fS$L)i++ zqgZ1}c3B!nRgV<-d}S4^srv(P>Pq7tfRnH^?G3CiIe^r>x_0=*!8h5Ig8asj8Rs z6kD2zs`xCcXC1+-0qx)y?dcpB18AG_egYM98}q;kaXqd^#cGJ$4_50rB`K6%R)wWa z?JeHvDSIjO5qO;^uK>};J(|of-cmdlCNxQT??7pIp{-p{WE4YstSP=We_umAr%=*l zV^r-@24`!G)mpn|Vm#LbSKQcrVd6ctijyWp4&+3ubHT||0Sr%Yuxs>WS}SA*n9q0) z3ZSD;&~{_W;3AaXKGFD0>I*pASf|W{mbt^8BMXbb8y<^EDA@yMw+^wcb$Zn`wQ2<3 zu($lCP*%Nh^l8_y_5gjI6`-&)_b>~&V1Mw;V11n}pkR`YYjd@fx3ll8Its-OuTmA# z$mt#KC7gNFPOUnGH{4JL1wYr=Ov=S02Z8|G^Fw#ks&1ffuUMgM>v;K4ohv7kI3ty_ zYJ&>RMV+!%#ydU^2wA1C;{*zu%!7Wz8jLE;E6~g6uTbtpxV9W~WSN^n!J;V+-?=@5 zDGUIDO~GPC12gNqwHwr`E_lPDPC&^ys8#N|hhB|V_ttZrPurep;_^l~)mIs4=HCl7>zS9I|Qc-m*W{ZeDIBnQ5?gzh$xY$z;8W9ygH zQV4Q;_NnKF9 z|Mj>-10{?d1-#G<4jvvV%-mj`)vfJ|7tv}JXNQPo1|^$i2|`eXe8iyGTumt|`%+`; z_Fu84A75(1@#!sVUaJZd9&!D8((w+P%Om+>6(dL)h%tc%-@nwSby^P$G+WEfnJz^^ zooANT$KD>)Jr83Y+(t0$c=&~3!kye|0PuIivlBRUH|`dH3!k7a{Zd1_UN@`gM=U^GOR>BKRO z1>O6gF`|Tz8e47CF2cupbzDDrd-hy}HzY^0X)LCTtegGx9EIArD;;Qo4G1%`FTh(H zYFMbTsN&5#1uk7hByKvc(enLAo0gNUg=059`(v>7fU_`w_+_cK!-noP5dcoW_S0(S zc7pa7V4U~UOMd!)*7|$n7qI`tK`}37=DcO49zlM20>((Y)38tfdv0|3lg3`#sJmEi zuPMKD->5nJ8_3*Xj4Y`vn`qid?zj9mE9h@h({F_cX@B+*7CrvWwSY;Rq9a(Ta#CP$ zT%kPP^ytUPoy(9^dASG3!A@4UmE_}#%;9~ZX0l(!-onTByxyL-Xus7f$f7KC96;g8 zYJlOVME|FwHi7arP2chv3U8=Xjj_qD?^9aWNe^g4_W{68(I+lOkYy3VXdboog~g`Q zU@jigjv~;Mm!hDeB8{#2wEoy%N4pP(@A+)hz3Vhg6;!hrj(n5SiZwQF-*H1_K75Uu zyjxK|W{ab7$AiCM`k{rznn0zdU*7>D-*xNIphCvdpfJJxm$G~PF=F@6^0>(i@({;3i*?BG=;qqZ;V~B2%4*PO zaW3k=AqN#YJ&OWSXup+1-kgFpjix9)4&NWo*PzxMI>@!Y4X^S-4uNSo<#Vk~WTFP{ z@DMT87UUE~zT0&4ETlx3V`sZU^%?MOXGimH000eWgc{OLrS)87QU>72-QVI#``ymV z+YpY_SR;jgk#-hs(n$Tan}!Kp*RA;0Xo~%(X_d1vil-Z)>VcbJKCCSFTTnjNK z4o_zfNKKkIN{wI8m?KHyVgHw$tc1xALq_wCA#5F@U_;5Kb;&}Nkf4FVnGqs&OX|~o z;+l}CA34bqnS~SWGK6A&CzX*DYW{8Hbf%t0l7lLmrW#3;Rds1gFw~t#_QoihQGl^j z6Pu2GjU|VF*`}0tZhSCDTm`)Jg0VvD2~@fiM(`8WD~&+cawCIsr!~3{pu`4mcgvM#0(~QVw&} zV)|SGOtL7k97eAyIh2>u@FNBJ<*^|y&7iWTlJ)m870{@7DQRsf3B{H)1+Y&F<_q)I6iTu6^y$=Ddy<-MS5w0p&w!)Rg$3bT(ZX_Qu)J{DD=cIq!$&ioYt!6 ziRDY|%2~gAJRGuDwktW;6kzRD0C;O-z=*BI1*V$@T72C?x=T)$(qygceBlJU&cr|W zSlHbT9Q=i4Dy@3bO-t#i_9So|+5arvEUe+EKlh^t-tKkWy}S)%)tOVCm1Lw%2Z|l% zdC-wW*Vuj7PegKwRRl*n7FgLN!VlOqt%U9t)3{2|PCab8^Ww7U@!q{JxV|2aT7E)1 z@^*ob_Qe8W2<^H*Tl!>IznQZ7xR#78hA#jQV(X=P}o6;zx}Ij_ptrdE}3W+~e;z6F`j@XEA_ zae-@uMeM37b@hBQ-CU3BM0Wx38wUWN!pxfcIU&WV!ZSS}9u&5S?1oiKy=~m&gr2gG z-0Z;n5&+mHkEnc)i^!iCG`XVTSVjSAo5e%hNnqu{}6Fz^j3#aos#kE3tx}k zzH@%aYe+=k{u_i=Dz$ds)%e40FK7izXkPaZ1En+?Ka=+|w!!JMV`R6J^Yan{?<6?- zfWAYb-G=rx*!?tXd6AvVb5v3`G6zMC>m3z|TXH6&r&Y1Quc?S56x10yFmm9~fg?sP zyS*s6?Tl-gnJ;wnIdW15^KOWRM$peRY)x7k}aF9-Ap>09)uq0#K@&2}C& zoU(jRPq`tP!da|M>lpNlneObLoYHG(&5bfs`7rxC8L6`4J_~hts%gFD;+Wj)HhwZs zIqeh4to78PBJ{bclA6Wr3E~9=PjQ~K3KJo(g#~WXX!M8!Y1-WNZ?2>t;tUy-Oi!f>DXgILM1c1 zvz2sJBx_xc!sAiciw&1n-p6iWEIYd|u265KHdWA?dMB*}Qf;!6_Ete!C=Rj>VRd#p zQ;ZxWf0g>e&XgcWNv+a8+$~%|+xAwQC(qWo$fGM~x0|W66HV&7@)T2DZ=72wWI45PLBQ^E%1#8 z__)l%iWXLtYOBZYrSssUp0by+t4iMLGW*EZ1&Wa|7Sz*4vKN2vQ3TL=i zCK&AeiPu*p^k%E2J^KTg|g!b+o$Q)*3E>A2%mglFxq$3-rDqx9Mr6$-=AJvjiw#$ECIr*ISR z6BJTQ>Zdz>Qm{T+G4O5okOk)e^u@LiSf`()ziL7J@20WH?{SM0by(T0!otiMy-X}&G+au$7N5w z0JX{=ST>{jD9upzn=${H_U%DzqI^+p>r{HfRmIl?dJILAbpbp#LGu3{el zevM3~^6ieAUI;#?Pf`yrEV*6eqjp_*8Wy?`xnN0)zzQeU9Tz(;Na+klrO{RZ{Z|7~ z3y6qzBQKnqn0{HpPM>UQ1{V~H&320|Cw3NL3Gs#UF^vjQSLc$BU0u|jzU$|3Ns8=Y~8?F`s1S_@Fm?GdC@QWM3(fkg=!?;l))Q9$(iqqj=v@EezH3rRWY^HL4^FBLUHj$ zYjsr^${OdV^L%hfg4S`O%l0hPqaJjX5_~XyMN^uO~&bNda&+4;i$AMdC z?=nIR=wO9%xK{kFz;OIPFOP+MO>X=xD(jCpIpY>JK&d+qB)dd-kDTIyc|DPafrp&x zHO`>l{4w&sWQZUqMR>QrV6^ch5Xx3wMg|>Y9;Y(JAeC8h|JF3)2Rw*HWcB%e-^-%fPpBLgd^OvC|9Q&i)B>G$jcDh&L zwJ zP1cogvDC-UVD4jTR1d}$@I)BO+T^JjTI_^Vvj zts+mRzkweIr3c;(On$i5e4!#DVzIdXt1JYlVUSc=efBB!2*UKFl-hrul4EJYp&oh{ zQODmuN12EN7Du z6!ZxHU5}WXL!R{!0M-M+@v^dQ;?qt0tJvugM-)nU*{9R{c8qDRr`*h;Sg!jT2wT+M z9e?x_dmK^SW_*%Dy~0kGi_+d7`d`sdZGF9o0Q0tlh+3NPgau z24G%3U+iSeUbE+iVLPVV>H)Pt;SICuy%r2|J*sJ@rv&Fy7}p&HgcA@oat2zMFD*4p zkC+3B4wNx{0v_b7z5h^8*^o~OsH-~#1kZs3EY9w-xU=q-9+90-=|HHBUeU7#STlvv z;D$)huD%o2bZ@$4liWD`5-@s#yA`mNhwo@rLxikvZ;2wmz_jIMP;%Xrl-!2W^#42o z=WFc$Uyi?hw0GYNlYTuf(y1VS7EYrfvb<2RrSUi)*OlC-=kIBIQ>dx0ZnU;pwje{aMO-|JU`uJ^?9+kCC^~*K2iBr zk~KYRF4?LZ6_Qa4WQXa6LcwOQrrs93U1aqxDYiGjxJCj?o_B~Oe@Jtvk`x6Y9$5N{%-0ar)*=@Dp^N;W+(qNFmvS# zNTjSaxUyTYR7rjQ7Bve-p4C93k`u(^{Y^rv_lmruZ2frQOD}P9xQ|W;!*ay|q7HZc ze5g2BS`rGoOHlw%{`l4O+BG8_9DTWmD+8?mMcyYL zXbQ7HV{#kgtpf`N{@lKwnJTEBmp}WHf*^GmOgF%Y?80CuKN_jz80wp}dq%VHNPju0 zaQDSBAqo^uu`kUoytUKS6RQIb8cdmOL_<(lw*d${AWByo*iu@(_qZN$+K5&$_eVf* zbPsR7A*}Jhv|v3#GFHivIs4S^xhb|shUzKK#`FSp)fy8j)f$U_?0=pk z3tK+sqv58sxh>QbYf44!P|h-?dwBL=jv6fHss5AhxcfCZfEt{FptX$(rPy&+^s;t2 zdu8#k$ie5brsNJD{;3M$^T5^1GxvUKth5HiEl?_gtJl`?PYaz_ZI$cF`BIK4P2l#6 zOsPsZ$_i$*ou8|jQEEF3+ZXvZno>@CsPRvwjqw?+y^>#+=Y0ddc7ryQjY?e!8#^WJu?KggK*Cyz%}%cX>4~5OM!IdHh*lf9nx=TWhPCspRacnfZ;|N8bY`19F^-xq1r*_N~s_0)M*bO#mGxN!Xe z&t=k;5BSoDl5d36sBNQ(Vzo9aHlqGQr{9N%;F&kEiWB~Fe>u-4zmq~g+;_W!(Yc3t zeH8kGdp&>K7u0XZa6Fd<{=xP32io+TJtUUSMo9H5j-M%BPpjj1UNyFSQFt2Jc9iTo zI9-;1LpAP> z3BOp#zk7pCjK8L1(**y@)E!kPsEQXwAJJH+tnVoGRhdNNYecu`;eAJr9G6nIvvhTR zNBs*AH;=!O-LNN%1&aH~{xN-ej_lhnYWUEeBm4CnG19GfRP?wJeS41@-q&r=h^R<6 z`KQZAj2u2NT0HlT8alLZUsp?OvOD8X7v5!O<0W00reafYq6^k_+xbtcsPKOvM2j$l?#VEi>i34R6I?G;ffh zOQo+p#QU#*yZKOljO1jaR|Kf~2RC18`$lr2&nKm__-0O(iN7nRN_KQK+|ZfA`7d>n zf7_(T586hNvGaaNz8$)DL zmNqF$dnzfdDup&f`}%vn&hxk?_x80nr z@LsiL&EnqcyQ<11zYHioGG)!0H|BqEQ?ukcbLaoi`J?vBZ|~LYxuI(x%?t;0-M0M7 zI{8m7iSdj;ATK>PPr;d~IpcES+Mz(8d>~LTGd^*$bQARLU(w5=cOs$q7 z4_ASI!@m-oo|~3BDRoSG+N6xB8RT;wr90?D;d1!|?j}$HE{2ui9ug{}>FJ}Vq^3;_ ztc#^G*bCtE;de+~72XF|gQt*4>9%5@2Y-*D{FY$XhbO^x;IgDY2W~^Fl;8buenSG8 zMAU%4CRHu?Fsv3mW%+ve0_?SLJ@^Xz6`z`xm7}gn!B$1`(sOdtbErJcS3yf@h$=P# zTMar~+Hd)HmHmp&sT}AQs7b^(c&p&IVP%|SxtL}uf~Qc4e*DCY$zz&kjSVctRs%9}vqn!yPs@uX zy;_`;o;E%!BPWoPo|`pkT6$nQ)2vQ=A~Ff6MI&L`#aYvtB1ISb8UJBtz!_LIzq5hg zW1qQIN>z6XFY&FlZhWaa`5)n1FS~Of|bXV)V%RcC#KKL!dCB( zu{?czM%sANW#p0r+^CV?nBQQfABLamIuKT8Wlc`cqyGYQVn$livH6pu)Abcw>BnJ> z`({`RJbm)CjLBoO0=Hso*5<>Sti>AzruGm_Y26)80YyPMpr&#U{&}zSiSmY z3%_FC#-QQMNl#77YnqX}0EcKx)so%V6-lrhR!bJP^zBJmQ>Q4td@I{S#H)bEuvK7g zdge5(&&)AxnvPGO5m?sRkDrt^CN-C?+KitnayRS{$JRA9FJn?}V6_D7P+Om;G@V2z zFVuvCHSfaW?Jf`z?k&(DNWO}CvCC%T3EAct*!nr*c%9UVCm+; zm)*IgtLJy>;P+`0SWDnM%K^(LnQhV!!Rqt9u$IIY%d0Ifu$*mqxaFRf+gPp#S0#NV zpBokYn&b;7EFXr|hx;vWx4hm>DN`p{)lDr^-RVI?)J+k0Zkg&mcd+}(x}m$jyM}uB zO`4RIHgRmmr1US*)r8aNnogg?>de(W{n5_NOU;{_o1VMGJzA!E@HO|RGM5Igb?e4f z&(9{M8vSiIzfO0<%3%ep@ymnN!Qc1wnQc0~>4e-sbo?(MUNxJUI%!e{H@(ye)0j1Z zz>xlao1+`)IMU0n;{ZROm2gEC;?CH*`OgpZ=h#!Qe0EyiWOWzDx1i(YexAc9Q+5Me zcC-%ZGp4YMt1UrT>AoH8mv$N?w4O@$>)^NYTim(>fZdm1P zgVoTmgzOA({fz@BJhjX<1`3CXcJifXKex#-~s9Gs??p-B#n>iHuaC zB-WHF7(J`RV|x{t$=w0JMEqngneKPX^sJmQ({mc9PRY!e%;uV#*UUOBpW!>?jnB!N zI&OR*x`L{@DHZCZ&Y9&GlVf>GE*-)Zoz`jS8o8mcit7ez24v*s=5c??Y=^D>Yz%9i z<>ro`!te$5%=Yu$;qI+aC)mV2TH(^3dpNBs52wJ7dmdX&z0l@SWv(Az4O>g&roi>jY1^*%iA7&v$oMtW)!+1^y`g^N#bnTU@bu+{KIh@*c2V zpF1smQXVt<9&D9!>0-a!g>KJEbyA|G&p}meCaeLaz20WweFY#yE5x1~Xo&2wF z^4k{Or=ol1^Gp3)qi5UM)Isa+^vym$3txc!v9*7=#h)IZ!}6Q1vFFOOb#JiTuiXW( zYP%n1JVFJJx;-n`srk=m)ybS@lsxFptz5n5^jrN*pK|@mZi3GvlTTLonJ!!D55Rk{ z25wT;ByRhGz_-N99+NS4taAIrJzBYXeuve52Q-AW^s2+^xcJ-sT=H@!WsJuAk5&Fo zmknP;{4w}^xIe7NgM+Y^Y%5q@@ffUHRf9Rn7Tjm;AB=A=$HqUu;9UeIcoMD+uY>Er zH^Qn=E?gZR4{P3~WlhS;p+f8L^5@4_u;y80y&s>GHEGh+DLCBY=lAK|e*VwF%6}_d z6J7>i80gKD0)cu6{b3c{!tyz=YJP@{r5}b>(Z}Ih@R*=K4pVZnGPQ+&;HI2YJ%80k zzu%^0<>rm!CN}^t^~)4CSzUVy{iQc$+>})AfPpFFn&!=%lAim(Ccocjl`}yQ@uAvoyHV^xw z(HJgEx+i?jFPM-!dNT2W=*}A5X>TTj$~Z=snjvE?1$r~B>7=Z2X{r1-K0WaJ4&Uz^ zSXMOyX4P#y5(-aC6~hLu-x373{_~{q^!~6QIGn1 zFIW>cx*Mfnt3s`5&Hfew58&7ujcp*aStqV-|U`NaOd*B{s~VC8

V0?y}#nc3aEQ=GA}Juf_SWYEcp9&X!-0Ha>OIMEWhd zNrn7~f>~rJ$J1n_fjtbX0?)!Ka5wSN*TAYs^o+L@TQkw_fhGBj%SoLwK6_H2ZO~6w z=A}TOxd!x|7XyK2BzORB3Kzgl;K7y~T8@P;LeI>aJT8mpDry8?m#?!k*O*xTOkoBvBs zUjO-nR}z!TeYr;c{O^wXeRK>~(~r??`lg`MCw`aAOwF8x6v)%NH1IE0Px;jEiZ8J> z4HK=NF>W#sOo71I+@|R>@^VtIBSYpp`&ZUvJ-DT%`uE_A@n=@#7la7Z!{PYH{z7~W zu7Uj?g=x^38y-J(+@E&$!&maD?mv48vA-KT zXiLk=nwXJKS1lq!UHIY|Kck0WwdjFw{pr8P@-1+A^tHsF3uor&Eh{SXy`OPeSaR&hLrBAN+LR!P51%1a%5L^kX0}LR-qkKlv3Ho0Zd)cTL6@VQUUlgwKQf{p`2s zUJ_`Fxdm21^I%ozLkg-2zhpW3__^YY+pE?k`NMznll8aU_;pT^z(Xdj+NOWW_Nq@bEc){5|Jv z-&FhSD%)$cs9Y}if*Y3<3C6h@yiRZndA;2|!E0$Zu6@Mm6B7uqofd@M`1T30i?HaP z0+Vu6sD=6Hf}j(Nl8h4TW)~$m7nBMFdSQj!?4*R?SU00X#CZTM5iQ0P)ea`cVzu=A z$Xe3#CZ^{la~h`pd}wrL1>n$m@mf z30}W+<2pvdO_<9qg0tL0>}}ZHJUhmXONoRdtiMsR!|MoL<%NDAlc5~{)FIJ5f!@fC>lO(vb~AV_>lSv4goiWh zdbwLVBn3CPaosgC8NBv!3whn(p6DKNPO$?im#~}NJ;7gakG;Xf;YK^JtD!E z+!MSex^X=t;Yn;iiSCw2l5;Pi0eA-7_?`*jZ?Ud%zv`Y89N@ zIGe#$RM}pV8aeX4rTWq}C8);;A zhlF4ix3Etn*v~z|>+Nn_--z=GJ9}F{gYF5znr3OT0@qrL9Fh~9Pq9=P zs=Yt46q`jSH#0fOnLtSOpcj%7!cSnemmdC!&}E)SD>j<;z6U*%<(}vt2?pG_0TE|B zTasden&-iL-NFHp;OFiMUfa2G10%r#H-pzF+`@qo=UcWh&DxN9E!fPB8$|kx0)f_O zexKjr7NVU%Q!nAiT(8TjY=ISaix{JUSSpVRO0(~x9_`oxfkGy7t{S|P8{C$UtF zCR>6NXi(COlmurumO79A?w%045la)wTj=gZNwLmp8&Bu5&|6;Ok600*r=hQVqw3s`)z9-% zHNM4CgJ|A$iLr5h3;ZsfhUIsdChS%$RVv0U8j|3AX{|DD@#P85<&B~RYhV_XSSnyA zR<~$zv1J?k#g+6*s83_JQTt?P5fOGqFq%(esa=e8hlKEtSczIyPKzeK7sbAu7;6p2 zVsL_UFII#k%4*p$M#hLpcy!Z1pr_k3B`LVsJuxB@`njpwXk@a}zj?G5iaI7Z z_hYH_fH%k=VcA}#0p~I0x_TMMv$U>uGe$+iE?SD)bYxQaD51{omR?ED#oScXLG1HP zhS6B;2O6uHR8OFrt$G6Pq-4n4qhI82qh^LT!j)8 zG-AK?_oL#`3Be3EV`3ycw1d`E=ES7%MnZkP(03)FPE^#_ZYc@9N2s^wcPX>8rx%*y zg}$27zEp`6V&m{5dzXZ6EeX9}61pTM>X${RyO-ULlF)A@p)T}`AG?H5SI_UYl2EnI zQEgZ>6x`~@Wpf|F)-ch*tf>pS_>baj=@Sy1URZX*aDtfc#^pqUkGdJWo^T6!t?!=5 zi8#YqE9zA4EF%(}l~@{DCerYP;M;CtZp2yJ-CufT)$LAAW~8QaS+^*X5KhNpsrN~8 z?j+R9)3uypdPa{$vif3aQux#VJ}f$jI%`@V!?J_gJ|SG2EI7|FoT-F-T?=S6mfGp( z@H`fsLmil^;cC4Zc-0}?lTb@d@ZbVBV|pZZC$>_R>|W02D7pzTtvV*q193AV!69x2 zuM6G684>3YO;hXG$a*D&>-J^(x?5%>g{Khe;)Nb2)X58l*_FF_rS*2>X6eqKF)QNi zKvl1o_U;;|u+*Ra0=%R@@0qxnU6P#fg#1mth!*U?8sOzr+C6b?B;0?1a&G!=`&a^u zB3*@>^BtC-Sus}Qfh8R@h7EK!hmH~j?_fo@5N*I9zd8Z0t8T<V7`mx?^s2%6Trb)pxxFs?6%II8GLq}t2 z?1^Hb-|l8y9|^yR*3r%Eo)j*36$#B(rGxEb3Hg3H{>;T{>&=~=gtV1#d+3qCY(FtC z;?x=%-B7s81-rW$^CQ9OZsGihv!Ns=o-uy|tD|xWRUPI|C`xv^4~tG$j&jaIEL&?% zP5a%r8zR9{ZpIA}XXw?wpSNQJuK`d2>Wpz!Wo3Stw?s^URxLc03cTX&g zIFDobOM-rL;)X}>V8z_JCu7;ZV_f!O`Q>Zh4~>X+TfCbXTVm+MIPFjCj2ETp#ysNg z*?%OD0=~uM+kn+alg~LrNXvy$+L~Buly~~)keN%!u9+bT!M$$Al8EyQnr3;xEuN4V zo9fR??>-rv=*Ha?aWcrU5(PDHa>uoJo_WT4sThCY;ah^j{ zcR1d(&rS22%*ktLVl0O4DE^V>2P_r^min#x7(b3)rf-&FX)bbKVgos3EiW!yJKbBl zG%k%$GrTw^(KE}f#l+*B%OlpZh?6vyX9PU_?aE;J3s+O_7#7bdY!J=IMMEnHUEyh= z@p|OST$&WVme3VmAAdwhJwg517|+d!wuXu7%)sj6m8ARQ*!5Uy=bxM0&nUf6yeC+v%S3-9ymNZ^CM=c_TO`j%w?=|x+_;qy z=dwwG0EZn;B*hC8oDZ>BoEj}|3CWp$Y1EjRyc|nIFoC|mO8=T)+%N36pG~!R2mk$6bq*~C&76H%O7B!O~X_ChEcJU zgkXQSa8)FB1)3^k4lavn;ho!GN6`|YQX>+=m9xDqk4>l#A(i8AaL-|}$6;kJO$eW# zLnpdlB_{<(yBW80&%^eYuWIoY7Pl!sWw4GLw3S$ z-P^J3yow|^Z(_A2C8w>M5}dL#ea{Ns4C#g?Pjcl>Q{cv}j|6wS8S5j?t+V`rW<4>` z`>-@P+$-iMIHj)jEplXFx?nYPn{qSEA=Ct~(mJ+;*J5?^o*q6W`C;DdK%f;KY-ZOdI4@%P(^j{}a_)(HBTlzDXXW9{ z!SXwug&o>D$8D689R3v1J25-;^8M!n=KUP+sp9@faEV)Zf5dr{m^NNPMXZ5p1<@YW zCOiY7b5b zr()6cu1U^4gj(ZI&oh>XvD$fMWz%<+=lScK&R|8SV5uB7@8Jo~wOATw7FEv#rwA(n ztBkAG950D0Vi{aGKf2EsQ^H^@l}G*9dlzA~#9|R|NQiwDOP%S@#k-zy+>8ez&ZP_d zErG)j&kY$^8g<&v@pPpdwO~xNX1z67;?JW>-pUz!A+ht^qn z8lec$oQIPWVxPuR$NqUk_{k~^I5)-yOZ|8j5)B`SrAg^OqTPb!SC?UQUdQsc0Ntr$ zZ}#J;F6la9`Q2Z1XM!^aOE)2gpJgAqC2D1JWa))9gg7>f7LjbaXv<~6&jonZ0lz1iZ}(!eT_VJQAw;MQhD9Z!f84QZbuG|tm5y(5})E}^SE z?G-{i(BOCBoq@nePn%81*Iq8snyihcok7S?`v#%mUWyj$0)bR7w49J%=MM=DQqE5N zU4GxPTRxu{i=ocvkn%%fDGbgyOOl*l2x+_+d1h2E_r$(PXwiDNQP1RX?Rx@&VQ$l& z?Mo5hjq#pI;a9Dc6pp)BrAWJ$&^2D@FrhJCDCs`E;Z3ZwS|P94;#(3+Vfe0>-)|kl zMTGp!oeeqyD$9|Cc<sv*%RSr1}FZsWXjVt5Odce{4J zQ7D>2D1M83@?f%a-4_4W#rq8`tFN*AkyRlVZH@MdZXtuPnvtB_#a)TKBXY8PvhzHe z?Tv1{RrO%BaoWM!S<8QGHXBQQ>Mfes`)u5wOaC~EmKa+w{aRz&S>8?`tlq@&cuXCC z!5V<&-`IK=MYnbBek-xmN&cw5V=eYV>eKk4Xq=`nhAPgTm#7U`e$S|Y6IeRTaE{_` ze!=!=qqLn5#?lVSs^tmhK`h-9qU!3FJiYo5(b7AiBS=$v@-H7{h2sWT-7WsG2Q`X`(#@(~oE`AZz)j-$E>nA@yCzJDN6*&y%iBjD6fs#xPN-7qB|w=pXBAJmFW0 zr(Zhr3M|bZZW=7l+ZE@2^?LhQ0_uNCnwA**q@RNECASe+{k$j*+XGk{3}!iTpJCa4 z8qO_fkAM6120y$8i-%c0Bs)bYnKb^LzS&dJ9CT|MZ!M-G)AVj@(J0R0?_u$<$|Gv! zz5Ybvj6ogxU}>FF2L`Uk(D-3_jyFI+pC*{fz(I<`2^M zSRFkN@(Q=z#}sw9+@BQAA;f!Tyl=B>pEiQf_xs#UpCvnk_WQM`jnw`oYtir16JwwC zqe|-|ol+S7QU87`d%YR@=vlYX@nq+s=c3z?R_7qBE>wbd@Og^A4NFxb!M=phThFRzWZ2W z-Gnu{#QOOktnsg$9oPQVKwvzcOkLiqx)-Z0mVdSy_gWw@8jGRj>F)?uXDrUoG^Opq zfcN;#Zo(e67)uQ+=e=qAELI;Z@9Z0U&g=eE`m-ZDp{P?BQchtjvF!S$>psWg?Yj|4 z&ZTeo>9{#C)vv_T6!h2q0&Dq`ZaY?|Xk575o8Bixqm!I|gw(;cy&M)xk6Ph(usXO~ zMkj?XJ>*U}o$QQ1!=cO(Q96o#V?S-W#`)}zOEam4v92~?_I=Z7L?~%OiuU&sH>5QcTDP`g>;#~$T zZRj+cN6I}|5qHbFB&W(der=hHJ9#k2@*ZQHS%frWd0g3$5PlKMduP-+|A^n^_><2l zEN`}k)*W#-{g51f3!$I8<%gv3#qa8Tr_hv=(Bmbc*!QBbg9)+q;J21g4=?mtNvPTT zQEggD=*f~$=?|i@{YpZ&m4rSZ#9R2P%ZJg>gp$y|^&NaeY4V z=eqZ>7Fzs?JK>LH=TXF#5HYE!k?^5u{7QN$ACAir$6?Uj`=fz zvDZAqYKLbzZ#UU#Q`kUn#I9gA@EuBwy!s9TVQF^@OS?iSZP?y0cPd9SeJVi z+hC~K=jLQ6m>kOg+%$@Tw|{OXz~T3gbN)4%F~Ov8(g_a0e$f3h_yxf$d^P1{Nzf1+ z?5kh=8H{|vS=?8b6CB_Nj}q+T1)Zi}`nP8856u5}zT%<5tD&sRzCPPp^AFaqSXY;L zUinQRFto(lhBdCls(y-xm=bH+KUjybhL^;(EIvEWrC39}xa?;WV=+n`L%mL$2@YLV zc$&S(WIDm5&=;r8NhGJ<8GjVLeLZ{yR(sDOe1f3&E^;{Xt=AExa-JaA%P)gXw#;|_ zD058VU9axe^6#7rvAW{v&z$)0OLh(BLpqkWTn4OU;z zQ#0ogEX^uBH}E+BqyIiBXO%7qp+P^IlNFd1&-`c_Ris_5ev0lIMWmdGr5T8CMndTE zpUg>o!at)9_8v3F|E#Ae9kKQiQoU)@9SI@l7jv=_xn1*1v}D~2@4(XL>>u(zJlhJ_ z`&Ao+-Z-B?NVVm3u_G}SqYXxBQ|tt}n_{Xy{u5U9-+YU6I=wnEYMJ=5!Nf9HUGOZq zA%#De;+=ci|6Vd0oK9}QN_3m@WrHUPsW8?QZ>#-=m5jxT<~)@2M|4-F?_;L_5ipI< z4bF}^LSQoirxD*r^!r$Espeu`Mq2Mi7TOXpo2t>r#{=eMwcwm^JYOM9F<(^+UhCu# zY>y+GK@M+d22G>t>R`TWIMy_+&e9we6AX;&C{ek{?i5@W659VDIau~cjS9e}ocRkDR=#iu34 zVnqD>a}vT&V{!E5{fOAgL3OBUB&Qvyy>e1+K ze3ep5C|0Mc@CK|7URypTWHzM!(!cX#J(m0TK=uC7>SEbHTU%Tg)WTVM zZ6*3AmUN-j#p=$wmM^wC?9X@!(i+$Zu_j6!tb|RhE>^IqwZ&SwZLEDZOVY2Obp2~C z_oqY9%#I7zX{Yj%NT;OjZF;e`#Lm_}nthw-pbvT

-bl!#@}n>#j*=wNt=05K@V7atF<4ryv^zl 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 okxFmq_(rjuq7xrS { + const proc = Bun.spawnSync({ + cmd: [ + bunExe(), + "-e", + ` + const pino = require("pino"); + const logger = pino({ + transport: { + target: "pino-pretty", + options: { colorize: true }, + }, + }); + logger.info("hi"); + `, + ], + env: bunEnv, + stdio: ["inherit", "pipe", "pipe"], + cwd: import.meta.dir, + }); + + const err = proc.stderr.toString("utf8"); + const out = proc.stdout.toString("utf8"); + + expect(err).toBeEmpty(); + expect(out).toContain("\u001B[32mINFO\u001B[39m"); + expect(out).toContain("\u001B[36mhi\u001B[39m\n"); + expect(proc.exitCode).toBe(0); +}); diff --git a/test/package.json b/test/package.json index 5488a036fa1293..dce165a4d70aed 100644 --- a/test/package.json +++ b/test/package.json @@ -39,6 +39,8 @@ "nodemailer": "6.9.3", "pg": "8.11.1", "pg-connection-string": "2.6.1", + "pino": "9.4.0", + "pino-pretty": "11.2.2", "postgres": "3.3.5", "prisma": "5.1.1", "prompts": "2.4.2",