From 27b1e19ebec31eca1d29c4b8f18408b02c172578 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sun, 24 May 2020 19:46:47 -0700 Subject: [PATCH] 6392 - 'length' instruction done in all complexity --- apps/factorial.mu | 4 +- apps/mu | Bin 239529 -> 254216 bytes apps/mu.subx | 321 +++++++++++++++++++++++++++++++++++++++++++++- mu_instructions | 2 +- 4 files changed, 322 insertions(+), 5 deletions(-) diff --git a/apps/factorial.mu b/apps/factorial.mu index 55bee98e..e498cae1 100644 --- a/apps/factorial.mu +++ b/apps/factorial.mu @@ -35,8 +35,8 @@ fn main args: (addr array string) -> exit-status/ebx: int { var a/eax: (addr array string) <- copy args var tmp/ecx: int <- length a $main-body: { - # if (len(args) <= 4) factorial(5) - compare tmp, 4 + # if (len(args) <= 1) factorial(5) + compare tmp, 1 { break-if-> var tmp/eax: int <- factorial 5 diff --git a/apps/mu b/apps/mu index dc3f5ab28084b93e1bb9e1779ef8829be9df05f4..330342709a9cdc23538def9799deb532e25f90c2 100755 GIT binary patch literal 254216 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

2ILO$wKPH#vPt+tsW9uV1vu*lnDiH)+ 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∾?Im2 ze$#%VfA`@T;=jXh^pDyf{ORnU{TJK*SvvnP^&9(_5kKNRevBOaMqiD}z;E)u$r<=( zWZ=&lp>&&>fq!8Jev|**nSnpMPx|(o{O`#O{G&4PoBZ#!4E!@<_)Wi?--W~<^Pz`Cb1t{G(#{jsF<^ztH-V3Mu|G!{ImjNBtN4 zs1HA;4W|Bu4*%79{xbUSx`%4pp&9hg?q}P7dm8)gn`!*V@Gsciju(uPV~HPnn>L^w z_yKN44F3la{_(`m3{;r*<2(2l#_+F2?FJq{py?H3KZDEepW6PY{WI~8a`>On^Ov!| z>Hjk_&HoNR_8*{^`vd*|L2=oIna|vQhadY324{YQW>ea4G2h+az-8}f+mHPl7mv@N zIV%JID2E^WJ8}H)X5gRU@MHfZj(-I0w?yIi&h2;ju|E@~1I;}d__KGi?Z^I89DmM` zR5<7$dz8bE{iQhmnhg9i9DeLy#qqzAfq$XHkNvSY{yg%(C>-CRfA#>|{+H6!zmYQ@ zT{+x-hadZ8E*_sj^GXK)o#F6fKP--a_YD5C(Ba2^V;uj@8Thkzw(ZA$WE}r*8Tdyz z{Mhe{?g+Yzm|c2p~H{;(m4L24E~e7i)}ylL*w|b%)md&;m3Y!9RGJ2 z_-8o$*w2mQKQe>=E_C?6P1F9JGx%@zuD1PV{}=PO(F6XA{aN!Jzs)?x{_pUc{oN=( z_K(x?&v5w7{&|!i`{U{O7drfAe?7{N{rGhJ*#m9+&HiR;&aoAZh&eTAhTa}cT<0Fp6>0@0*eLcS7#GJn7Hq;7T z4b$ORvZSUw_spsWKB&eqdud%o$#~FV!0?ycs><9w0NKEUj7T9$h3uKawkH#LlK#RV z`n!*|Iw;Ro=A=O5iMgT_VpSQeQC2%)Vo6;E)WI2TS?$Eh_^eP9Cu`HtpI*u;uPCdl zm{3vE06YLyH4XsG)wQ*JWdKNg7W=?r0$@E|k`w^z?D8meU5GLb{c#YHE0%%1Ol1sY z`B74?BTB03LFZ3stZt~9Sk1P;y0Es+Sf#d3yaI&vjin8BC1q?B)M38oR@T){01v!x zl41uveH4BeA-^EcdLaBUzX$+uLR|h}jn37#IADbQ;ygzRd^5k4AmBlZ^2-g{Fl`2C zWnx%i-f4{!xLd?piFj0k9XzkRs(xZoAq3+^^D!b4u(U&lb9|5$c{M4!{v{1ArLIIe z!boLsYg9H!D&wxkU5*GirHXA+X(GaLLjh6-i*V(0ca^IHd;DDK1S!y6Kg2 zk*<8p^ok2lk#BVHh|*M0ArQcs^^7w+g& z;=&z$N?o|4PlXG2^r>{=N+0;ku!2NBI*tOlGxHF%Ktt`+Lcl?WRCx|;Ptd^{YFq`~ zqGb=!DBahaDu$sN>f|4o$c7c?sXpZ|rFp8;;UB}$!IY37Nb2+r6_gHB;D%abN`}H~ zID5&hP=;h^iG?aNG8EpVX_XNfT4ABegbb~;P-Q@$6!Eb#=9MiK?1JSx`|nKDVl-p+2|b z^v05E2-*!)gXrG@iQGg(MSVlAnM7(DtE+RzSJc&1ROi+=)K%4tTO5TN5K9FHS^U<5rV+hGNNBL9{jFsw?2H`=ZznuksgL zD3X$i6Dw-U>j}Y5AHga+Rg)&F4pm}wLA5$kHJ(0xHUCDVOAG>l;eyXl$MtRMb@{9dfHHDjRZZ zD=U?hL%PhLH?fW@s%ogB@mE<=Roz&pOfjkJN?}!AT3r$(Q0(aHR#P#lfen&7p`?Mr zPW@iFHMQzg+S#0EiG&R#jJ5 zlp|54u~1PmAyIoqMO|fe?U{VgKC;wvOHn&hyo0!x;GdYH7F3%j;>7pQ(U0zYCMR?(i4W|sDy50=>S{fWB4P@9e zF+?I#NLZn(KnJDd7GjG?Ys2?a=rgn;dAS{t$3r$=r8SU5HD`I_DNS=qs?RK$T+ic> zY*UGOV*lDoaC>uUr?~S9`x3v?@wBa|B2!&OLt|Y{eJ*C+NmUIUBvT=$k1La$oI(}H z;^7G;HE~8sbz=q6Z>ia#QZj7Z_5v=`Rn^n9P|{FQ*;ozYefLu=-gsw1(};X-28GPp zN{W%yI-aMhSvr}9TWMouB?VKXw36K~MOmL#?*~-u)D9g@H%1BVjO2Xdf?e8StE)iV zsMorolCe5A@UR}9Ky*BUs17RL=yn-($EY@1lY0@)qt}534EyefVYxpN z#o-ChKNN>=AUhk6T!+|7D6xr*x;QRl*4)bK#(J6(P@`fUhv=rX$wf`W6Sa*EiQ39U z{Y0Al>2kQ^Tn?F&6^z8tr*Z2=YpsOu0-6w&6FoX?geyM6!-*9o%oTMLD$1+KO_lQ0 zN8E<;1Y+>sT@lb&V??0E^>~6#29Vpvpkfj_D8Iz(_lcB_H?Xb5#T6Bolf2=mXowC@R$N?CqG&z;aA-wvDpS!Qti(lK8p5O{))g>r(V&vP@z~secFn3ON2;!9 zAd7PDS2XB!Z>U>YYOz7NT@}q5<7fsdse|~_iw1cUR+OQdLX@HRqK!ky6Fa8A{7FS6 z>7*HD^C#s}?o?Sd2@JW^Ixl=UQVl~*#ki7&sxvB(h~%OMEU{vYCFU>;M69dA==Is? zGm|1NZ)>l_aW}I7IHLl8--<$u^GV*X#eA*O)y!~krEbDiH*Ig8k#t($`d4=*5xG>cAW?eQw>j`qLS+B+A@keW>(1dvI~RFtt&Y* zx4yBgjJErRC+aI2>JyC0r3z@>uRL?G+x!fi6H6vn*OoYpLp#XmR;h(_fK|5Y>Jxv( zs=-Lvqy1VNCsO#W&~2qLS6h=Puc$AptD4wQTZc_Z+9Vv`I8jfi^pK&`{|aS{=B*Vp ziuXTE)`2f^{CXvYm|#s>F^*I*J%;Jqpy-_6QNcjf7D3v6^L8p?c~W`|ODys9SQZ9q z_t5M`?K5G|CxHb4yh^iWtSepT#(OdEDGg6#?AFKz1Gc%LRa)zLF->iYJM<}*^I~TT zd5qP(-brPMvsl_X(pk$}Ah~s9w3HX85P)+jt3obCs~&8{(1Mk$hR$rLtxZ&y)Qzji z-rw~Bmrjp^L|J299bIflOswUs2uYguFMsrTn^mqL4o+NaSuKewYp9;whbrY1AIn2Y zJBBClRp~~%Vf_AvlG5z5axWcBKZHj9Rbb-6tc3Uy1v58Ib2q{h{M}V zx#LI=tUDWMcF3ir45nJji1jaT>eBq!^#hvHW=$2R1Mdy84oEAIV{2kB(R4)8q*|Mc z4Nqh}v59eeu+LBeZd#51tvO%|AWm`+EBzx-(mz)VPX=pXM zZC)%=)Mm>M8@Os&#hET$ld0fzm+S|%cA|d~?Ojf#oZ67p6)OE=+`#3NB^fdht~0VB z>kZ>njVTgT(N?8bv8um3ky&HRo2D*SwX9DE7;+0SBGnp=weeSqy6K+pI>Z{Se|hfc zP)PvNbm(H$a!USGOZ{5i-6!fUZzUID#E3{FN=m(P!<#$}wc{%&W#G>7B)C`_rCttV zao9aF!aWyuNN~+6S6hwi>FZiN4Ix$ObxbUotv!+G40TDVx2WaaRd`~(+9{@G99*NM z)XUCdsAzAwrh=QFT~g`~73}ExB58Y_Hez{a0Xq9G#%2Yp9@xnWN z@uCxJsEDwI*ry~>+9z-FS*gZWG`UsdYHI0DM=rZ>y(hPCN(*9nl)@+V;d;E>-O)wr zq19B$#0tNnRHu$qq?tA#h4K@9N_1VRZl~GKtgRbQNf@Hjgeuyp<;>Kxs~4(0HML{A zw(}MUam3O%Wkk;)sqSOirfU*r-AIf<^ncpciLcc+=yMPXsoBJ}%K&2A8E%uRu}VYB zs%vS_hxSM+YP_Dt^+KBrU~Ht&qft~rqI75Srrq18muAH{R_ahpsV>517m01QL>{mG-X=tv`lXxv5!SAy|yOES)FBruTV1$m_) zE%Ex*BUK|Yx29wQZ>5*y(d|R9lzB6q$0Du+ji9(NmG`4>5;WtPST}fU(IBr1asu9~ zWmUApsUrbYfi3<)-Y&RLZ-#+$iU5v;tB=ni8|<)CUVf1`K7CSmF-I!dV*olP@%$tM zTP@xB;(?7Wglb-(P0uJi^rGtFp05*6bqQ^{?=>9#fL0KRx2mxeY;Q9d^DkyS@Frl4 z;fZk-6u`z;OioZLp5XgY!&$qs+Hwvah$PS!-#4b;Vr62?%LfJ&DVPHEHA^>Z+YZ*@ z<>6F^Vz)J=!56?+K~B#VRn^p2)KRM%N=mC~OT0coml&$~rL$;+*F7FbUVa8#K?Yo* zF_8J4fwm|EZcql?U?ba@JOk~J47i~gaKnu3eo`z%A+CmGs4iF8TdlrGVGM)6+mB~*ToFkhaZa>Y>;v@1ipqg~3P zb}0t6OOetC?Q#rhmtttU6w(2pQ~`}b43-jU!zShdnm){c^(Gx{Xz=IdJA??LX$cE3 z9-Ux{AeT`CQ?;(Zn|Gms+W*v2^71jI)K`o{GRwCRN%{1;7}@5x7mz2EOfId+r7H6B z)4&VTz{Qs!7uHBaS7honzrFld>NnFyMr=VwY>Gx1sf#cH)zkG|@(VicZlJ>}KKaHW zUOlZ9tL;gdH(4?Z=fpTf!w1glkyWT?S2d_$hyfK0L4V~>qKCXDOc<7+&oU?D8G%N+ z4RvN!c|$NfVQ6rLVGyVb{Gb#e*Caw+ROrR0IO?K8q!i>Y`~>YVFCUE13lX*t%$I^8 zUXqoDrC^B5Q&iXyo+7@XJZP|&HAmzR8k`tVQ=2fE+|FLMEcq!PWTTn+^q5&;BEN|9 zBP=tA6Hsh#S8zP8@L)!sJ_y#EXMC_ot44jkiin+kbEb>tsx7~_PPGqJT zwA*e&Pev{L)Yb6BM7rxboYp+*E^7kMb9na!6rMEmu2d>0RPtJ*z*d)ZNLB*l*(iY| zg4SID#R^sd_jlMR-sCqCWOTehZ*=f3k1(86^c4p&G<51AnvT@NWU3zTv<^{|cDwbH zO!ll@UGecw$6`qBgG?Mqy*&jX=Ocf{*T>4ED<=+#db)y~lAct;^jMH6OcZ%Zj=I6f z0&y3d{G6Xa@+OWL8r4K^RUJolS|jbv*i$DS;Lssalt_5nJ8{f(nXazH;r3mh9|cr; zbBm>U7<+gQ&}$|=qePFkH0YkGs-elB$oSnRl{K`QuT7lI*VCuan=GBl#;{d3)|Bys zNA=??=<;uEjap_C-|!C77a*6xj_GcRiFLKrwc{EqI>=eb5jrt=a2`faZbj+D4l))Y zHBBV=IqO7!;-d$;>xv5V=@oeLwQD;hkrVagxppN%fM>%gEp+ zofj74C!H6P!BILdEY4FpFD2?KJt>;#nT4)J(X=XYCUflNq=Bxo+UU|j`WScVAZMzN zbdWKFV{}kLj5lxsqCPb_D+fFUjqc(G;wEsxk znBy9&@K`7<_QtiB9E$y7IAg|br)y6gxSbY}VdQpNmKnO8W=ubJJ1weHgSTwwPRlo= zx6_OnhHs~3#f;zBR3@YUWf;Jn7Zx{yJ1-?Vgt7GzKZJAl)Ehu~^lmsas>&eNUZiW%&k;!hpuonp^0$U7y+4De1d zr61g#5+eh97~Ub5NSTJ|a7R!3`PhQ!lamk}^zB?44pNPCu(hHvZJk zRyw~d$lsXT;Lhot6Ht(TFQ;>Y3S(yT&PgcRfZHNFJK$dPIDl)AIQO8-j-a z23{P?OfsRP(?U(~=rm)7@R2z;k8$O=0MdCO8A3?sg~bJt&P$1g5uC?Tt}&s6j-H)W zh7BCJ6yv55<@Bx<$|Q;sgPctSlAz&{y@yzlX%;SVvB>OHc#p)TBrIjP<{a(CynGy< zqG7|k!W|Qmx*{euDs@FlhQQPnaV9o(g_pOe`>|PN38Hr%yCQA~jua3=23W`1xhsOq zPDNLEhr!8H+N3rcyCN@U!=jLCNWbcici>E$j$M)$w{6iSLD8LyE(s~ZO+(e|!@DHF zIcG7q54t30@J8%|&Rv8qi5cRrDBYV0U6Q9g`s^+-55sQJ9aVFX~W#L?*iJK@a9iQ@UOWKNFNlOzDz_{Hlu>yQ*N(C6PrNbEDm@ zj4sI;d%1bU6cv7uT^2Af7k<0;MZf9-^|rL}JJ= zz6wTXki6y4676NL>1$_y<*xE>8YI;)h~C5^*i^w}2!Clc;F|^dD4lrvmC9RHuot`~NZH zHB;FAqpEPmu!+Qfl;{k>`H!k1E?)mpvNMKoyp=LRFT1gtLq3W?hAIPS)9pAIwe!%=!L}>B=_6}br17)yh;x)8 znm_D@ClF}Qx@=Nc1P;Xm91vLQ{mHfj{jEK`r==?*hspVT2}H*Q>vfg!iD!lDnQ>3dH>^CxL4!C?+VbsmRm- zxuy~$&f{+Ut*K}eIM-B8`XIWdk~0R>H5J}Ya9vaJ!_vfVy?kF&@x|%l_@3?Oof(H$ zL4JmyzQ)4M{^%MD;>0pO*srndm`&3)mYHD#b&X}mZKkfV(2N_ac-YlTeeDj0+!oE( zdl{1aCU!B~twY=QQ5*Zq>90BAFFMtfRg~LJ*RG3*3Hx0amKyN8E-OQ*@48SE%#4A(>tfS|biM7{b-}~7*NJ%i<}ao9U6-9HiT2(N5uYoi87KuNm0kl884~I> zkQ$R#uYt74pmCGyHIN#YVy}U?t|!_ii0Zc)xEsRW8>5YHn71BKeos%>(BFDcYY6qi z5gR?bz#9`byC5YsUUor9q|e=)xC_!ugzN%q`q0<~VHsm$7v!}Q47(t4SYI6l>3k~k zC+d00Z+36HAUabJjNO^Y?C28xy26_w>~%$4OuXxgn26K6fvzj!;v!sEHqIn!I6&tpL*bb0mi#u0H4&A5qF58Dot`fK zPkYz?yv^?5`mEb*1~)>( zeW-A;JKlc*9ukb^-CO6Eb|W0DZZ*QO95y2yR9cL11iQTma3eTj_*_1J`C{Gq`LQLMaOM)>P1-#G0zqRaH|B zheB$qD%DO?IlFRcs_E1uO_gn~SD`POs*mI{`@X5<*y{fHWy4TN`n{>Hk)pNWPVg3KB#i-GdcSdbq*t>nDp9J8_RWqrxtSm(-qpsKO%$gqrW ztTc8l*s0agkJ&3T#=e%4Obb@Fn17L1Ra8ScgNACTQCCn66&(7hp{7(%4aMx*siC4% zIW^R6&`k}s3)R$6(5{(EI;}nc(*7@$Vlu_iHdSZ0gSqrt697Af$pH)+r>XW(>h6c8 zl7@w&^o2H6z4)o|FVS83IiG zK^zgK{$QpMQhyX@%xIzhz;!1xjTXnHim!dOV<{6HSBtax4GS4%Za$lC^sHyljGhQ} zz32(x(2AZ&QYU&=vui|8AcsE8j-FVBHXQZD!RamxFnLPK6OAP|LHcJRpPpD_NoCC| z>{6P(=7F2Cdk?W`RodqZlsagjFV?_{l^uPtMg)(if z_+nJ|Q}BI>46u+vP1{Df7wJ*hvYjP-9*U5x`wsGA9C?k7NXN?G%B^8j25y(KcqjE0 zq9|z4#7)?B)!S6Vp=+C}O6A&A&aO?HY8EQbcrdi7da;UcDrsNFmmE%}m(;M1Z>-(!rlQ-3IEy^3~npWk_l`6|} zhmLFDnLl8Pu26w@A{zCHzH;GbE~b2g1;dW+aAUco!&;U%sIrzd>l&?PMTcT*i6He` z%i?x5*An2;O`}?(T%oQ*8z!&!n;wg#N-5^3Z3!fk$hIu*NFDpM-JmihjBQ)hktVh+ zgef^}+q%`1uo(6&$cIWF{T_QS_bMcu?Yea5H{F+?b$%k=8OCejN0=z-g(|5BkK^_# zzFjO?i6n24ieR$MR#Uu+rtU%us%@CpK{)kU9t7i<^Fer00|ZsJ>w_S;A~Z0lx;=tC z2u_`mfjpBp$!OO5^I^$G?#s^-Hn7=k=EFe{_!y@h4ss4YP~dD@u%R#DTSTkZhkV+{ z^(}*UN2`n5K}Kg`V$u(kn0(BhA-?H@Zwt(aur{$7QVx5O3@!{%Op(CmIJTq1nq%0b z4g+#*T!#UgcC*8fs$1M9V^a=Im!~~6lapX{X-7IWN_K~Tg{U}3S{k2H1d%+ZDFY7q z@l1Ut8spd_Fbsw$0wscygmfgHvw5K$Vg!0L9R6$n@utUv(!$|?|WgqJ$t_=P)-10f9l>>_$BvTZJK-f^V{8ynrzVt#cbR zDaQ(l3~{fbr&!w8ND2X5`ghQzvUL%Jg#cW|?qHu(xC;UN5F-eAcf;y`*hBRuFPj#` zWu)D@#4ejA5PR-RX$WLq6mR{30M5WEB+(&2SNHK65_e}u0s$(%grYAD`=`<~AK%o0 zOp{0e<;WXGfNn@5Mu1wej(Uz60(4W7F#_1woMW1|-?){`*_}L8>*M^);I#_$n(? zAniZ-mPP_#OMI$!tzVRO#AAe{z9v6LSjlA~H?YeTO&F+vO^s^z>28ylMr)*~okJ-` z*o9vD2k5P*}{V!~Hb!BN+|=k!hwdfHHCT9B>*u%HU_7&G+;53hp^U>|M7q zgw$mx6krA_K>=Im6cnfqazOzvSq24`oo-N|D-Cx~fo3Nl6zFy)LV>PRlHU+auJ+u7 zM4C5AA(1-xMB`sJwt~7xkQEZ4I%^>T^rkN)QayPLiA*)!A4uRF%!UMCQXCR62iKv% zH<2C^TnGCh!8g$$65voiR0_6lW8o&u2s zd6b<9&Jg(`y#PcK3gyu_S@lJqazWZ}T*3 z?@FK%=j}_N5$nD6K_gaoC(s~z`x9uydO8$ngkCx+8jXxA6-G;gXNX{x1dT?(_+4&m zNziymYkB`j(lZ(Xn&FlC(`kSi6E1Qh=m8)!0)~9=fnG|1lKe4X*M`&V~7@3 z8)uvCda-_e$Y}-CnI0{^gYwY|lH89L)lLFw4c2Q8oEzs_F`#J{IpwF|P;bck@`9d{+E$!nD z(jtbC_+1VR9$XnAPy7%=zhE|E>E~);MGSoL9hlu>E?*O4U%tyU2lYEQ>}AVU7V!g& z>d|q;64+L^dEG@TY1lU`z=%bp@3Z$k9rm{Q{;*xqt;G0yKyAfVV%9a7T+mg|O!_=% zc?+7a{A}TP#JGlK7qNu;x{FwVW8pvqkF=;V*9qTV@Nv;JLwXBj)zRk`*bpwXanf6B|-Hy~!H{cxe12gIHL$ccPGKE^C ze%_NB+j01lTGW*vx1|7n5 zi6nRieh^7jGx>oC(BOfSVHrdc+zG{5&*##@8YmR4fI5|;#dlCDT0xRp(W2TZ7OfnmpzmpMbx$BI zvYl+v%F#(zxQo#=WgX;;Sdfc^5sUIBW5n{keSpOB&t)b~bORPHz`(8TX1$;44nX2( zarpm;C3(94h@}_aKVsmL^N$u=`TmGu9j-rONe0g!v4o24*ByVvl1zR-Vi8WaAHO9= z)U%&U*YYUOlu*xhzl-7oX)8t#kS=ey$a!RcAJfRRjTtHL~w;&!fS zZ@yd(2jS4;Q_*(UreZ2G=eEc+XBp|KOu-oe;ZUCus0LLTfmRvyx>}4tHL1V|IH$Vf zD{oYHaIOOMT<0kpAo#(ACqF;Mi|FvHv*blL!9Vid4wmTeK*5I&UgKHQhN4iR@SLR# zI?Y+WuC|=TEAL3xOwM{z`8W&N^^3FG<=={FsAf2y*v?8bjz}c0X_!cXfo2S*x%}&(u&m`(i((mmK6Ua9N=Yf)^d3MB@RO_%v`)#yP|D5-U z8!CO5HR8ct$`Dy9qYT{@hxMRAcLnBlHpc+ED_$5v`rI`x-)E1mBJ^;%B<^8_xy+}n z;xA{(eTVmYZE9;}V1lzt;xlnMJeHl7?m$@NtJnM6WFn?Nn!?(9=4HBTxY`xzQ=tZ0 zl{Tn@R`u#?p;a}9dT3Q&s)<&G?dqac^-GrqXoa9whoeca`%=w+b@^vOU|8n%R+uBX zP8XOk{X<|>9Q`!y?QZ8c`{Y6>m6tD>PANbKs2SL;tc_!@xXWi$*HXV~GkR00V%n8< zsG4>F29?vUqC@qx12Czeb~UT2s1z*B&4i#Bq>aJJa z-9DSXDb$T$HG|&q1E?z?zxobM$k|{HiCxkNt5|1Bc`g*(7*MJ71*w={Se0J>R(<56(q7r9Ja@Z;0;Oh*& zE-xtOt66?b0Qz|X0D@K;tqv;*zBI@;P~nyBiW?MsyNY$i-macQp|=B&io9KEy8>@l z-^ni9L0sX25p}=$DyDWI4&^*Owu2a}c8vLg7jslhkI9fPDW8~>aBX;{Dc(+nPh(g% z1IPU&0mv6G`qDW!fKSe=`o5*8p>-`iJ+_26w?brXAuir!5B$(lqG3}@s@IkXSM}v} z%bF~ijCq~i5@BpuaJQ>E=)ceUNv*s~bhprVprv$;XH=iXn!HIn4uo#(w;8;0afjqHUP}2b_4JlbZ`LT=(0f%Div6BAO=Wt zxfN6Yv9GowLh3s9AVS~_n-3u{m3g4=I)uQPwi`llocjzsUzs44$N}|@)xr(HI3$up z;Rs+HauCEJjg+`*eGZ`x>|Kus^d&S5uSy%zF({W_(( z1`F11v0g%{8?FElhrJ3wlV&QQs@*yTfD!n0N?lFj*C`=7%+B-}@WjPh#^`l#=Tj)P zFzw68waamDd06b{o5dX{C~)N~pOXj^D?Uhj+u_TAJIcM{ZK?vN)VA?`(#&i~qw+IauxY2kt?^kTY z+HqBViW?koF(3x376Vr|Z!u^NI~M~h4PFd}-SWktI!#~HZ!y5HZ+4JP69p`~KetW??u?WRThW*_pPxjCf{3A&Oli+{caa!>XeDl!h z!OvO%_6;1g-p^r20@LgwRCku&%vW>#tXQ!6S2b96e~`L8_s4KpaepvryZvk0Ew(?F z(@y)tc^)$G7vNmD`op=rq%6)$tu^&<#%eYSVAw~cRsND#>o$qhE z{E#pR;Tv&>UB2Z;A?FsNFbfo5217vsTQ?mPs19R70WZx91(x05P@vmR#8O~iS(bDZ z*rQhKg%OWCrVuDEIs6U5yi5DI?_>7Vk>G1{QC@LKg6p{9kObd!!66B7^?pOlnun_Z zVA~Z{{2llvNp99_b<`f+pkl=UoE!=IJMhT^qv@?V`%9=|SJ%^QvEWKN+u|-$*PyFW z=*@LBjy5#pt%T8-bsZfI=}^$o*it)316`nkdvbHFcxuXT>x%}qY2|2On@Wxb9%0xL z_`{M@oH}(+Sml%H*;%y6RykGr!UW)vlBoHo;+f--QoIwjJZxBMfd zzSEW+qb+^IwqrDYjl5*XPZXyE-y@J0{gZPF@?woc$&S%F_Q(JiLu>KBEVpfZgm9)FfZ}M%vn&!Peciqr}8vHo40_q%z z7QeEp)E5`Df~32L7S-nap_O8D1kp;dd4*`DIChV-Bdw^h3|}^65SeU%+lix>dWaTF zy!U(3iJ$g)2(9pnVS>&xVhOIZpTweC9SxQKHe%WG{AJzCPQM=T+&Ir)eMR5ti@qf9JG%;)&iaZpe{hr=S2hy`9rfspcArkK_^H3T#g3mjS9A>^XuMn3Hm3=LcQ z@;X0aNgDH)oBPBPDq29_@FA9D+VCe9QQi7?#bIF{GQMiHM(sj$Z&1)K#;eqpln^hB z2XR!O);yamV7(~qlSdtGP)OV3QM6vi;)|#W<8eMrZ#A#X7fliW+)!pX_w;R8w^#v z0FfmvNiI@x9%O0`EB2ZULW=>t);XWezd()Eg{Oh=Lzb+O zK-Bqz4xfN1%0ps?oZ_i59805cbh&9SV6=T89F@B3g%{z9L$OqH44boP<=g4)F_G zN9grJ;76f#2yCZy(QZJ5e?(db@Km%8p&WM-$18Yzb%_25v<_ka(rDeJ ziPnvPch-(}wAunG_*?{rfyhOm)frp_SY`a_)GY#4a<&KvJ6VeWb+WVw+y;6Uf$ZRA zlVb#~iI5pDa%ne9j7%&BPwX?49Ck5ygGNtX4Epc`P%sJnXWY7sK~~JF!8aEp&$@0Q8Ghw#;89f1Iz@hyCuqlRtJ}Ch!|vItzc? zpCsL`l>Q?fZN7pM$;k)s*-0|ZRtP)E5jlegcs<`i%S{!|ScTmwZ9;G@#DlANfNia6WOq+CNVwykDlWdzvxDJ*RmWa79n-5ph~s&!d* z9adL#UR3Qgs`eo4sZ$&%lQ79?)KiPvfln=J2R`)xpL!bh)Pty}7PSMPTGSrk)kvsJ z%9H1LB4!ULKaq0}rdD!?0dsO%l@6mARYGZQu-nOmBGso@$&v2~qffVg^_y;`=9Kjo z8B$7yG>GpdK0V`GB&RAF5TNo z7Jh7C@iJe%W_Z^U467fnv8%zDehB|4YKg`3E;NkOb!-K*ktpT(tEQ5CxVI~owktOH zYn05c9uVy<9eOjgml;$!oQlQ|8X8}&ChMb2h-fb{_ePn#8v^Q-R~_x-4EW2$g)J^R zoKm;hd;x=@JH5@e87zFae2u|gE@r;44g*6)*+b5LHPqvs6I3e=t5u93*-4){o>e{< z8xMQK1K|8*J@$DFiWDOTScx!HUc4-7Z4vL%c!)F}LX5@^bWM>P`&|w>cKgp8VWiG{X{Kx=MVBB|dkR_#8|8!Byf9SmIUY zXvZro@yEsz|C9X_l(Y2CB%8k3&!=w?>OMQM7n~lpi@WXw^lRQ-Z}JsZc*sim)5`s> zSC}r=JJzpV*PFV%+kk0D9dwUB9#DsX$;QL9C*T-_lVv9lCz4r!?{5v>yZtVKOfd-!gCX!KUvzPiA?G8yO<68M@H+nQVZP0GNd})S<}+Y5g)4Et zhCktkaQNcOyxOq80X*(p?34yBpWe#@BPwvmcyFJ*{s_vdcULQbj7BQ%6>=|kQTY&0 z8cT9z(z0CIvfKbO$gcQ(OX%)+(FMQs<}T^88{+Fthvw>CQA#1Dxi zPFQ1cUasgsylBte3Q(_Ml`qZC|X{Z;-YhHnQmV zplFf*cEz?FR=n~!rU+!^A{Db{loD1L85pk!(f}}aOR_OA_p$LaClhyNN$eV%7 z4|8R{j9{B8*dp`H!}jV0v2i%{g&_0ztX9%niPKD}AGHVa8dg(yDK+S!+5GifslRVS zX|RBc8B?a{#D{(cTC&LZIa@a+pkkPk0!4a)g*w>p)4S<{?W^Em)r#yosEXEK=()3cc3+|6YQ)c*{!6zvi`igyuoBr@0-&TT7eZ?x^XyoK{dIHI5-#`y<_P5sw+Ijvl{^V0;eRH$R_t&MSK!4<~OP~mS-N9~v z*|oto=HuR<56ex0fA?nd-DWtz!N6|9#M1X2^{4tp*2nK3SdIsI887aEL$c~iaT*%$ zKun%uJ$Uxy1U>V(pqI98mfURD%OorBtg-#K#T=Xgr473dzIoYN)f7Bkd(9dv8sEX` z$x@BW4`gdq9qjlm>~!KXA4tk-3SG)h>6UPGarnNk@dJs85Tha~Hyp`Mo}z9Xr7BT3 z+^z$szaiESM<%}jyAxOq-_t3(Pjc1$GT*M@VEG=n1a|)!>y}FhIl!*2h>{=og?L;A z@=zb_3pNGuxpAT&_FxLx5EA+x|AAFMs@#j>lpdR;;2C5e7vb3a;~D?BNJ_vz&W?D^ zwlQd?gA=C`^rAgO0^c^At(PLOmWVoGlUqd#%ckLjmJZMJFQ!NKg&qVVA=wvtEJue4 zne<>E<{5V2DctV)2@VbBfMROuzk~~Khu`Blv<}jkY1-S}&Tsa~g_svFUnWoSW#D@m zbrx6zU0|z|eFDqv)ozi2+GW!MwWP)sKTUS|biJA-r|j*W!FRaT&8AEadL8!A7xT)* zK{5;sID>D%-H|Oie~y;N+-jxS$(w*;a5C>vCLc~6)S&hIUvPLqA|xEbFJ53*@T^E| zNLzXmwO$ut4Duxg7Vzp4eS6|3`H?LB3Ov*NZYVhtv`kK z*t&L?FCZeQt9tk^t?jO!ueQC*4&a3Jd}-mJ79Hw^qDD9eyDD$E!<;WTt$^pGVuXo5 zSyUXDO#Bpd2huv#^YAw!VmcT22Ngp z2y_ctg8qf*DEt8WX?V^_PJudQFQg?ZbU!ZtYW$5|@glMH{zu%R<6RAg&cS7Q1={om zOmbjA@e!0AQSl;I%eHyR6(m0E;#} z3duNDhDZo__sXxeaaiilVkkB}qUui}=p*wZJ_UuM3B#uW6N_X2<|+J83Z`P1R7lS> zTP%>7p5Cb5Qg`v4$=AW)Fea%LT&aIBcn|ps;A8imF?Jxe=vdlB%^q=sG$O~Nq(3Mx%00)iAl#L#;c zkX{9)h#P_w5fCZ)&Aay5>pdrl_ulXG|KI1i6XyNQtXVU&X7=ooIKF<92LAs3e$M|= z`K9(l?%)8wv{f9@{H)?v$S;*A4?fiXe_Hc1?emTPe)xYH@JxPEf8Y=PeglL2(&7JM z_x=6w|3D9qhk>K-$ETJbd*TB;KT-ea`+MS14nKoEKht@Bmhk*+Z~xq4e)xH8wTk^M zA~LFlyHl{cX-Ld2Sai1vacA+^u7#qZAHraV_U+on-s!YwOQOkmYP;Te-7lRB-Ic`3 zV*VAgH^ijL+GydfAMEZF5_Ud1r>g^MVNk5GiHV6ZdtpAIg1c#^NLzhZRTqZA7Nb;5 zOcQO?4z@d1`fvUH-1(ufOQuJy+qlODOIO^{Au;>Wu}$Xxe(^}eyRZ{uvrP+{RzUhV zG`I0Adw9bJ3D&eAQKEyyUP2nF(WSHLKf3Sg3g;)9=B!WDBUcZIn4JhKqo^2zJ+Ap$ z)~icPAi|3X>)K0n-!A(L??nbY&xobIPLs_;EMBDB(ud*$)>~&Ew*seA# z+u5t^G%foB%g$ig%3fvnX<0YR9%b1;ud?t;T#LOL=|ZGiIgMgZyxaePStNdbv3odw z5r~%9G#{GL*fJF}Ye%k$pV-u?4XGQ@L1NL$xF&_kH&Y)S>>eB9&KMRdlNX&iF*+nM zI@rpft#;`wvuVOVGD^#bhGiU6+K!c&1Be*^r$tg(-(GH6z&pFjqA-|5YO9WW!)$^ zu1Rpn0W{)wpf(21FJ>pAI_%((!2N!HwG$rOixo9Y1y30gbEK8{!r2hq zX`sZWS!mLjTd)?}D41sKC0+{@vmNSg6WltkW6qEkaUDZLT3F@Ho@lQudwCb~4|0df zZsJuaSPS_F$pROT605>!{3>nTI%vA&x`W+00Tt4hIij5Bwg*8-ARG2r#JmHc@tvYiW+1f3`=+2lpEFi2|z}Q-* zZfom=30m8vXV-0QoirDMn7y!Pr}pZ~(c0RiAYuFT1_82?Wzi-d){^Fm=!!t+uS)z# z=UXE`h{M_ugJCb4K2QJac%C+`yGFvqM>IJe`EkroM&91=rAarN2>S0$3_=r|VWKQe z?nHizPK9ef^4~Cj1WlO1GTX#gfB)BBWJD8zwT+2`vZBSy5R>8Z& zR4?Jm8+P8_o^zYa?v+YA&4m{sCjl@t>1B5w{Mc#Mq!lMq8f;3szIL38us(a@48|VU zNiExrWzVu~U$3%$;f~#^EE@>X9^^N@%2w2}X<0T5q8(OQSyr|+bFOL{92Xhl_K(Y# z${ijM7m_M=ci4p?p><4W{iU-*Q->$~VM@hD1~>;S*J<=}i?kr~)!FeT9>iTcAi`Sl zn7y@7{6iKWkK#BI#)C-lQ7q2&UP~4&TJS9INO%2AZfxZNk#UUzB0al6dQ%`~ueoOX z@rr3qS2A;+BUW@KchhWUhBKJS%`&aP)Pl9mW%3@6OpD-=i9|mu?h*XP+-<>-@roZa z7Gm&_te#eTXu*UsazJew?9S|N7i@4`$K2TEGn-w$q4XNp27iAYzULT^uCn}O_`XN$ zBF^HhZGjlx-M9dPJ+`&9XrINTbbgvRttKLA;)05=Q@jGPZapu%FaOf1l7(WQHUi^X z2AX3jnlmSru%PHX_KCwRjYDB)hh#P9jnJ@z(E)PaFopcgITRz-rL%qBFsAH24VTp@ z9sOG!viA#FB8e)FqnCkojF)!Ic2V~{QDB=bM6<5b-ujExeH3Pt3Mc@i^P+MziZ4I)lkelAP=oX>lH6CTU^4DtXR&%>vAzS2~G( zsAk5od8gIO7-Fx+Of_?wY{#4d=58Qsc%6i+;WcxPv2QG5n+52-K$1ClD9cNFHBCEE zlD(R(;s_4be2DfOT>3Lfuk7KTPqW9>!g1NhWw0)(=yf!_2GO2_NhzDHPqVq|I#WB6 zW{atKSO?WrR>kirR)%PIAy>+6U64g3BlC`0$iTMVQ_;Q+k$y$1_!iq5!?spENO8FO zv#r%?A&3^%(Lx`!;7ZVdMS$&@7aR~IUq3%^EDgjLum zZCz#SnVG;2n>aAQ`tZIpKK52CXEz+(ikSlTAXnct&LpORfUNz>ig z^g%7TBBhcwSn?=J-d1jB>5P9Zig{$^tSzBW=XrAAKay6_sF?GzuQx*0qZ$JhUG zh6jOeZW+vtT(jVs%>u@hk85B~IrC&WVN5C=ib$+xjZiDj6B-koi3w@VX{uhvOo^WP(oTD}vkn#Pp((_6%oHZwAsU$4_8ye*T7=mm z%o91R#Q(TO%#&^0Ym4AkDo^!{fpG!u9I}+(2r2!K?~_VA;gO9+kAuI!Svh=WO2E*f zcix9jdz356N|jL@lhy=6A?DLHFa|_yDXvMhAaB=9BhxBkCX}p*M1rdmZwGAQ$GdQV zjcj4Qnl^GzPEJW0S;&=JQ%mkkspK%0tc{Z0)SY88xpKh8W#wH1%xT&huU5=;48nUV z$nz3N9Vj{1h1zBpbT)69*yaH>n}>|a-^MB}la5}-H8hL(tSla6D;+WmwSLIddZC#T z8wPZ7ZYOYw43-;?idMX?aQg~rkJ~3|!d}V~nMV}b@i~O^Ao03b@-oe#$|y+8E#xSqYG|w!Mk3@VnL}s#aZhCyWc`r1fdS^8 zFC-(@W}6UqmjH7gS266=m_o5#0@_%ebkWOPrqd=XT{3P5POVokQ{4s$M@(5hKeL^CjSu3|G=QyDQT#mCB<~bM-zmy|?X;r#-Phfce&HKPyM08$|48_6=V} ztJm+&M(bJ(hQO9x4@aoC6z-{&)`0PWX)2l@d(yN)Y9`P;#thkI1r!f8dFz5{MxKoo z(Qq)>X4@QQKMzOz$cAS3V$*Hi5%B2478lU#oA4}EBa_G+rk5DhIrR3SmD5gNJzc90 zVGe7q%*%(W^g%|lIP>C@%v2nGl6*a}Br_EZ_e!ac@5)I*eT>|c4;_2Oa2zKy%Vh_n z5cAX|eq%})FHc$aSj{xUC*ycg{fxPVHWE&HZwHfZ>7cEgGu1O_Gw5Iy_|iljIx83J zqz<+BICP&)C3ncraVUoz*Tn4<9C|3Ll(BxDd2vui?0q^Y`BY+3Ds_dgG3sz}ABW9C zHFpl~$N+a*`vKaCAx+HVv)nPy%A1ji_7Ar+2+!y&;bA9+l(vNtHZ?-7Y5oybX48^= z?XjP{28SoykoyhKdo2^w@zae9_5+|a@GCOHysq)Q&JaIm!$qu<2&>c$XZ3h40`aR- zs{FciS}K3X$_dw#R=${0sXYq#rcw@sO`fIWh zh?(s`1ZEtDPV=|Un#jD0I%wx}(m!^i_&{R(@#h!QW!w`mlrPRl+jHIXNBetdp zYthxDqg%Fd3c*m6l`9+WYHZ#YL|8qNRemR>$~QSReNh=NDto#!yafR z^Az{zkgmqg$K2h8E2j&G?vBo7v-nZR=we zYm8#{;<)yUGY&4aZ1rQQE-bZGOYL#JhGO+uY$)5D?NtmeTLoBbCat}v#a!s1^*6_9 z8A~c{TUxv9-ZG)3+{{wEH8%#*C|w&)7|(h z=zg$)5w3w5&0WVzS+dwJ+eWzhL1}D`*>({-e?-nfvZ3zDrfh+J>s!naLUV~szr@wn>FYJbkt!fGaK2OUlv6p&cS@;df6HVww?Mm$GF zSf`{-luPEgw_)4JD>As423JpbZT?|4o*8Pw(_^oSH(T58&b#b%%?n<27qH!JZDFgl zqcFCBSBYy;vT9pfjg-5lnU>A;8IP2!H5`R=p4D*0+&$T&?ecHt zSq+D&RWX`f^i}IS%Do}udYCvQz?w&WA#|@*@;=cSAiT}AS4l4=cCcXw^Tdo97xT3T?Yh21 zFKbbrQ1IsFop09br&5Q`a8VOiKP`RD&xWGKWX=?Oo9RK)(jz36H!-s!G*r z)nl)EcF#jx;9+RQv{Bt`9&64y9d%~Q9BVUGI{Bn$NX$Q`j9+wE?Cvzuhv;l_H~INf zr-r+JHs`7m8xb5~y(S}$-KV{ML);7v$+h|VSyaNHBw01^BgqzPI z=}we%2eIL<8{q118ZtZHRcQsz$|mgEi1zW6B5`1_wO672{@v-X^Tk>-`N%D2%{IYf zo8X~&33+JVOO`wOWIr^od(-KNy=7!Ihj#O{d}_U%A>no8t!MPM*k-}8Iq_=Q9))W< z3YX6~mAyy7ei-pWdM!s0d2a9r^YY5zGV{Tard#p^BeR|b?6(7QE9~_OIWtODL?Sjm z)Z0wYdx@zuDvgd{UMjelucnR8|HbKrSEK87e|Ei&lEbvorFyiNCp|jccxmj$aEHd> z8K-%3oKwcqJkiv#44rKD!$kA0*n2$3z_dhF+-b*?W<=39+D zvcB-G#-HX}jnvc9;aiQmb<*1So^&w(Nx_1DOIT=53u%nt zu@IKbLPZ0U4oP*fkbxFz(ZZ9TlKL|FKg-~8SzMa{~yW`uMESDkx2E6av1R1 zOH=SyUiv)ndg& z0PnB^lD{dJEiuv-eHp18N}FPb@K!m8yK_M7h0-T{&+PN>Ibr8@X1Dk9GO@uirO-x1 zizxqHkuf{v-&S5ZU*eqB78|&IB6=SV$b9{HLXxW0uS_M%=Uj-YtV-drZt)1l{696VELZM|ij zw!_P8J#pqcx7Z-jmz#ShU){Ws?aX@?najMg>SY>C1J0q>bp%dGfx3D~j&v152~me> zM_i{-G@~JI{}>A}!n*sTGb64)LFGgo9^l}g6ni>k+nga|kkl3LR{hv&#@6PpT%I(< zB(-MZzm2)+#WSO^*`nmOu8*l^Y?oj>AtCK zpH9#xS0z(iV#Xa>_F$y-_^|f7JqY^ZZXN)1Ns-fM!#u<7G0n!TYSK|@A_j&~7KTD2 zt&fu$ieLUe`23q}bz*RB5`*DM4a)u@-{}On3*biX!q^P{{X}Myaq4lBWC*HXY%@p%2Eq(^aJhK--?SxYu zOS;T6)VOyCFJt=`)A-v?x<_ke8iHSKJ-JJ_q;u#Zb41|*jDNqu$1<;HEVFvXGQB;P=&>`FU3{DN z9m`&5)#>Ykz20MKHfY>{M+V2W%p4MBJ{ypq))iCQzTTHUSYFP9;Q_p~x!Rj&3065- z>#_vDKm#In)$^(A8>g@FAoxtCh&F8(9wP%I7LKE^{1%E+_|YE6Pvu9A+7Y6O2tVy>H8o@xo*~kW=ynQcXObtz6tE2g0J{1X1u)<>xdfiDrHb%XUG$zWvm%)^gPu;<^2xk%7 z)sr?BU(8_Nx+7V)BI-Iz>e;R&j>dOQR<{=G_V=#4BU#-qlGXKke6b95jmzTm#H4lq zWpQ9B{kO#tDr;M&?ljtvfT=521{thtPQw}lX|#2_u-D?q($QG(SsdqgCK)2T&Ky}_ z(rQ)Ikyek&p-ft>0}pwX?DEDiS$V(c7P_#$sqU$tgQHUeRXb_@bxG?NWPKSDY2_@Bp50OPW34|Z zY5iYhX^H>lGm1ppsZUw|b5z}>^(!T<|0U}`*7~hk{{X7`buo$Ef1cBE^e{&Nc@pjU zvL}Q6WzTr8cg*(JJLU%8xi<@fEeutJ_4Zb%m|@S?J1bbM9E#!S5n&b6V)oZN6IrSm zOTFAeWAgP*M;05%HqWt`>3~^ConY$Vi<7mSJtVR^AFMe~zLpGRbGoK-Cta>-0!UbCmO4w<~zGz;* zFdIMAc<6IgFt6d?H(G0}GiNUr-LM0^?j~54)3W_0Dt>ti7S@V|e6+9u7K}S)iTEe8 za4H207sbLw&fPDxup>UH4*}hh_acMQT3esfLKY)ngbRqtSq{A>jrOI7dc_}N8PFDG+lqwfx<#Vk3MzYG!QmX9rm1wH&I`;m_Dpxkp zHwI0gy}l9+W97XYllHk!N|n975*>`n_MCl?w6eUHeJj9BQFvl4Y{c?<$@6y>ocFWw zU!>H6*#OKskSSS4_lj!^@w-y0HI=mv(yx2w2E%7f;fbRBHjMd(uT>`VM)kzlVlCQO z`S{Sgka4z+^@*OfcO{sQ*U$4nA;*~kveLvyIYM<|9*f!a4H7vL*?wVF+xd}Rk9Xi_ zx9)}f;$ahi6`;1dyT?8@1<|gw^F-E$v@5r5Rm|VOvh5a<{{k^_ZTBeiH$8Y$1bG-BLOw0mOj z3T&hy8|e)DLb)WHuf!g%Ql$*Y~0rS9KpU`~#$p75*zUR&i+P%KSM@Ey;>i638OFe#jdM#fq z2FEos??U6UWi}6hs@pHY0`y&rSt23Uh4p9wtIA$$Y2w0z6Vjw^nknIk=Z}k+@4xLE zv@2_!qORR&7qep>QqfqmrHv|i{lUIPDth1DnQbBF4&GO~Br*Tc_lo#rTs}T@{cIYG zw9=a9>Xl?G!_p^)hb z=Jdfg>f-|F*aJ)tFRGk4C|}~BTvj9-+=OyxOcG%=)CM&o^r~bUuw$!Vt%^@JIq*nhY8kw$=P9=$Rz?j zOKFE02;U^6dVTG*_`iiz{AZ?W(#=^fr)GyPz$p3>tvGYoO&XH%-UVF-y^_^fWzQV$ z(qp&lI?AQ#jS>7omn}B{)0ll+mBpXIl+(ukTCUSo0lKHL%PM;sYstnUQErGd)>s>h zA8myH)Z2=Tmx(ao#LEzE$+Z-^CtfqYIe&C|7G7 z=kgj^CfZd*3haA{0&?^#1LOqa`K8bi5uS?mwBp-R@k3Lwoo%|ks|6rd3VwBNfmV&# zTh3_m=dS+kEd00JzhGo!Zi4j)=e3qonwvv%*hW29f73YTW}`};xmj>l=gd?W&ceX5xSu)`eF9k#m*@G+wS8Tp&Z(jj8F+ZN&SBxp^@U>;J=&^ijOfu(v297 zn~Okuj#w;u;Y7~8MNU6l%b}yV8L{&!dq%AJK9rLY+lO-3O%h?%*R>v>V1$2Z`-*Hb zGJ+3L*B-%WZNf8x=EN!XL${IdBlRxq*i`M=dA9xXDKd!Kc+<6>~XU4A9#!{s9`c0=7 z(tG)2T{>ey9HTekH zPpw5?qPooVDwN90Qa?y3nSs$PbrGfPzm6`pev?x8r`3w3g8Q3NKS>lxsq7~2X|V!J zy@pa=kM0{uDQPh+OTC9u6KQLVl#&*&f1%zlMk)TaCD+$d3fFUMo0ekS$^&!r=aw4> zxU={luC&uU?8zx3V*b=i8*7>6*bPtk&Fc$h`$1iO*-4~d@-VO}^Zuz)+rO@eU+a`lqRr;UrQdr0K@-&GAWbu-yJ+%5VEY>Mx2+cl445J%<{_n-@K5ia4GaiCm;k#mgszTTBjC+f&nAiXdJ^#Rm#bVdsFks~2iQ=~0; zEw6z0OexgWFI@62aK_tJ2he%<3sdG^YrfLnpt!ckyI&h$QS2EvyTLDI*GT5#N3b9+ z9$4ngjK@W<-+B2ArF_0G8lkPY5|X>vp0v~eQ&nFK+b-5r?Bn8d3G$>adc1iik5FYl zdIu&=r=1tWcjh?*;$v=gisoEjqPFz-jBLnWlkyqc_!gz`Jt}_D!1j8wHsiVribJQ@ zxc5@*<3-7oy(lx#@uGQBFEZ1M>L}&wMdDniv#wE~*?qnERk6p52(Ld4mkrM!>V<~H z1YwZ7c)l>-0yDD9yeXA2Ajz*RU1Zmg$?4YpogVg;!_1>|Q9TDMe<6`;$~uWAY^0vA z>kFn-za#7S?Dek8uG)~|bJ#0B$T8ZHM$JAhf9KELD8T%I@!$idA#=&u3Exxrk3`tN z@rhqJmoFaW@POa_+$c?%w_F=gTOQ1=)U$z|FD_52P}X~9a4|EIz2De9L)Ls) zQpfy=v_8<0Z0kA++c04M_Q~h$o(0+N-cm0)5i*QKSRZ-G`34)=s74;HvZs6U4nO7% z&~bTUUO`jlci8G>3_f7~57qO>RKs9HI=N3e1!m`K%j4aD?Ihf>JBcEgz9~9=uFkM( zJAC;wc5fIR-tQ&5A=|xPt8xnc$l}gu|G_x)!{h%V^*>D#|KFEKQ2z)2KcfHp>3{xY z9?73p+)x}2ySEm{qH^a5%NbqO`#&usFS_%Yzek1r`=K%MuiJv+n>lrHn5>>wSy_Rs=A*Mb|C*HT}CaaGxdS&miEum}1 zQc9}r*xi@#00ZHw0mB~0ZqH8Yn3%v+{Evob({MX4k7p(|jIRsKF=T_xLfl7a!JWgL zn9Oh64yhpzhGYPH$x~A4&Mrd=kaUv!C!5&6_MNadaYJ!j#1kKyf1q#H+RaXXWa#3y zqn$Rfzq=>d1;0f;v7$99-WiU#sgS~Q4r$>uRo%KOk13_8AVb1P&eOdQ#MBcjLf+yb z6YKB!?{*1_4N6#Hk2rtb)Mwu@-#n!>Usn?!yQX3!@rb~(|9T!=N!%z6R$C~`KR4skL!eW~zBNh$#3YKYo$kdNJ!_`q3PEp!4m8}8>UWw`;Jmc#y&FGB;T=EQ#~LqguUE=0)_piNR~ zmaNlh>Fhr`Iy9h8?Swz=FU`#*84>UKQ)TZl(82}SxF!%Kc~1R(xxiVw zu3sPqMLRvYL6RF{xRS#pQ4mKd`IclB#H~s`B{>H1v63+)nT8os1Bnbucapau4pGub ziO*cWAzK6I`W5EIU;*Z3lru6v0k&n7>&U56MtQo5l(yt!yVF+qy)saN?s%B4RM~5LL}cq{9Q>P$y11BN0>xB z;H|8yKE&ZlPU`KYYZ}C@O5#a=g!od)7bJlr4GBXc?Mxzh8{#-6eMqK5+^r;nHWKk>o2+*^-ZX+ZQppk$ zH^i+d-6y`2U-k?2X&-7nK_cGl)VoPnBE(8D4p~N07h<%M z4@ss#j8`(4+Lt9^!f>TS<;UOjNR%B+Dd2>LZbMrYiB7{BhHCpyibG9`jPIGxIX}&6sZq+cNnR zX6WoqRIxwBxhl4$xIx9bULwzbkJP4Y2f5|yDHnpxsA(Y)7uU#cBFpDK!~&BYGK-`l z#Lh}akqm&iKuK4UA0YmwqyfnthBCc^(4h1wo>vr$pDB8m5d`<5AnK^9waXyzVe|-#OuZ+;SdKasi?#!R!W$s zwB9F*9L$TsK;|V@9#7WtF|aMMQbw*c5-Z=Tn4RJQ75yk)Rx!ct6BhP;<%Rn`qP0sd ziV`c=Q8Rm-)92Q*Ey;Z3huB=n>m=PEexjrZ$yX51DhVdJ53$HcCXu1ID@Rsor!>S4 zN=}mug}6+~W|Gqo1E)LI7Lt^P*g?q@lI{>^Dd|VD2I5sEQ6vu`mY87@@wx^{ZHPmZ z6d;)bag&k&B|fq8&qSSjxdz>4UYfedyu`|3<`2TQ#LCN9o!46`-l7;V(XKZ-TFWI^LTvzQeuYGOm|$Lzdrp9>Azo8*g5)oV zr9XD+{6O*=!~secki+j(B~?l0Ks=@-FUc*4 z1!g(c{7EW8?4{&)S;Ddm-iNqR$x)I+5EGSrN0M>2A@z`m*K0Z@63yWTSse#c~wetC*8wKNV9^qsCbj&a}`fe4E@5XzLg@QXr<*F zMIXy0Orj_|YIZ^*E|!$juFPRih^v)kAlU&i=u4;0L-VfQv+w7E*j32|l2H(ME7?JE z2x8`ij8wV?_+ev zm#est;(is~6fdbbj3T3`$4#{m5OC4?olxZ#q%oqQ)JNHyRHpM(4CXZ zj|ANn)GWBd8Hj$e^GVQ^gy>QdMKTKF79}-EjzG+?(y>;6q$EU_k^qtc5WiJ&dx8eT zA&BX|ajYFDDFN|aB^ya5L)@=qKFJM;#aB7jCXm#EI9`d1WG=*?l{6!{4zc)Z$66JV zHzCF-$wTr9#4}3#NbW(bw8pV^Q+5uSg?bRDC^@3UCmeSV^9{%K%u6^fW?sVaW9DbW zwuIyUF&ZU{Ra{5$po;S;UQ+P`ij2JIt7=msuM-~xT}91&Yn?v-DW^f{b1{frl$<9S z1aXy;?IhbE{;lLIk}TgE(iDjd#Wa$Z5T`2{Nb)tr>q=UaBtm>`on!5FlC}^(QBs6t z1H^kuf=SY?H>3d)@$IfGUKxX?5Mz~`CRqaU7bTlX9zZPronvhwNkfPel}sV|6yixG z{gn8`SNEa5@fF3qI9`W&iLc7cUxjUnuU?}x7VfGTNio9)r{wDt3#nL=BI7IjFKScb z>xEooWM?ZOHIaymACE&x8Qbmw4C&a&$d`%MigCX^hh_#PM-iG+TlA$DX zA^xPKJ;_ywIpQ5_wMi;M?5U&#$q0z6m4qnqiLX?HedFuTL7ErGuQ4z2b&~n5ur2Ww zI6`CLkctn6t9U}ipDEr@@c_lYRa{TeZzuAD-Jd<1cylG7w-A!gX@Sldie5@Kg13rTuHoUddG$@dWNDCtM?2x7S{ zCK0crNa{lzqofAOY=}pc6d-vHvC3A*S^!CRh;x#EcBt;;$SJI56Kg6XoNm0j_vQCn3q9K$GpV# zKksSz4bpV5`TpsZXpO90D(0s6lZpWpuc>%X_F}mgeyrj}iZ4~%N0D)D|2Oiay2SN7 zxq3-l2kbCo5RODTQ&G;iGIMW1oT4NL$>$KyD0wbxR_fe@Sahdj?HWlfh@+GoB#D8z zUCA1fa}cxba;(iF$q%u;l2Ifsh)b1pCD{(~nUV%1Wp^9W8;OiTIg-yHo>7v8|k(F1)aEh;~SdJnCGtW6)7801LiCG|<%5DzFRtHdW@3it61n9R(}F!(bs0rQ}@mOl&I5-`OF>Wp7kF%!j9hn>Q4WAF#W(4!_156+O3f!IXJ7Lpbaqm?Wo znGSKCk`GAsK>STff09Iqg^!s;JZM2u1!8L@VM=@=zQVg2!LmgbWL^x0GA|LI*h|az zgl&oVSNm(s4OX!L#hEImr8q~$zhv8$Ww2SrUnuTY@i4`6Dt=Fq%V5a~bxD?iTdr%e z3@)SQ3nbFRLUKr#=}hyJ5sM=c5=c@VVjCrQWHn127sRPbPLeE!xLZj)$svfhlzc&w z>bN0AkcbD9NZx?hSxFy~F%ah~i6B`Dai5ZEBv&9ND#=HZ|AZlLAQ2Bzk#vSQUWp~U zkBq^5h})DLBiRq}cO@H0{7)KE1c|gWm*h2w9hAIJG7REpN_vre0da?tCL|Xi{-dNa zNysTf$|DgEa*;HI=u+}hj=R#+(Gce=xuL{oQC)mT7l|yY!^}%lo0*qIwUYU7U|SZ| z6}h&^s)$$d5XEyUZlL&B#V;wQKke9@Mv+Tp#4+Ec(p9dFvQ#poW?dxW_aj-oG7xV= z9INCK$#jUjl+5_2bWDH6{?4aZvNq2~|m24wf3-OwgB_w}AEP37};&m)Z zIK-h!29SIJakG+EN_@ic?QXu|Sd)2asx0#oj(M3s1ltmh&E-NM;doZX*C;+xu{gzS z7o6&uD3(_7nOsc7Cd2X8kG|n}LM~hqjulX|3lj0WS6`HrsdyLSXG)rotblkyNoA7T z5c6DgtmPu90ApWBy8;SpALnZWXk?94aX3Y{ zirp!GqGD5u8&s@8ajS|&DV|UX^RfsK>)Ff_Aw`jh2bW30A$C`?hompW z50$JSSqkxhlIbMBK@7TT5@{!zq$I?*lyo5J1#zm9aFUr2zf)3@{v1e6(L3`xj@nn;zvq$kSv6_Tgg(ApCP_f;wH&_-H=z2hzEm|_$-ijJNPb; zHq1-4hRn+Xsm^>I*p>y-S2ljxk2|T@n&KE0!zq5GVmXS8@I3o{BRrK{StY_}q2^X3 z;^JpLHNy8oyrX0+$xDbOZa8(`A*l|ri;}lUMnYVqqyov;5RWU#PI3!k=HE;rzCDx0 zEAw6fVjCq_Nk%|isN?|2a)>`ESxs^aVwRgGk#;^IDF(5rl943uLY$$b3&|3QN0ii8 z;u9-1+xf;yS?0xwyv$3iq-XvTY)h=X*+u8|o{D8CK2b3{#q_^B)%_?IRxv?#ZHd3C zDxRfSN5x$f8>_gABI9rF9`#dp*a>opllY53%_&Hv+d1VFE_3`5#Jx&hbl1o{3o*oU z>Rczu53z-kLnQqnE>W_UWF^F3mCPo23bDd1lZbDlNoqiRPf0hD4Z$OMzvX5js#QjRXAvp>$;ErQ$CP@K^ zt&|KWc^BdrN;;9mL%gS?E=j6C3<*ObBU)OC&)O*1+IMY)GB4El<{k^>~GAX-XRlcc(5$Qwvxct0Vj4>3l`NRqh_ z&noFc@(aYg_Z@5XNlHWPsiZ8)Oo&I7WF~nAvBm?(+7sDcWDHyomnykTvKwNel078B ze;QIBiS%>@NlS<`l}so39O4-z(IodEmV4+}>p=1b#L-H^NoGSlsiY*yZxD<883B0Y_UxJJn(l0y(v{q0!WMN$P~eNAtb{A?p>0CBvM zB}#l&+MMRPvSg*jGA{;4GA}EwH}fCCwyd-Ta%qy4wphif6j!P^gyN4XcBXhn#kVNl zRe_=>7Bw{TKi3{R4O8%BzLfTmm@sW}%BpF{C5{X2t?Imdsaeg1SJIK>5X20A{+>E@NJ>ELqofqcWQd29WF&bGv9`Zs?XNbN z1sQ{Z5H~2fNU{TB>Qqjhoh11oc2ly9WE{lZNV?7n=E@7vXc-q20CO3Ng;?GmBfYpVB-yeX(jJLeYe3Qu;(8_JNRB|vlEbN!g`_ydzDoXO>kxYenT*;dxw;@)}?^r8NQXgWRlJrV^ zg5AH4Z?HcI*SrM#RpuqwPcT0pwk6op$OT94%T}m(zoCZPIu$Qb+^gb#isw~aNAZq| z^C>=6@dJwf1ssGowgu}WODf;dmf9+K4%A1YZv z5>U{P#z@54bdnwrS1O4nSqJfnk`5%93K`NGiC7CK=>l=7l9D9bAqEt7>SQ3v5Ahu( z4`r*6p1ue1dnFf0E<-F<#Id%6q$R|8N|uuR2r)}hr;eK>Kg1qN29eBycu7eclC;GP zi9jM_P>ZBL#0^S{l5B$*P~54LmZSj0o=Wb$g}9J0=m+sTC1*&ELd;gev9^Vz1jPPI z7Lj}a@tBeiNUlOGRnoE6Uy0A^eCG{ajdCe!!MqGZUFKzVzRG-c*p}7#u3VpFb=Ffc ziehsWYf{F__ek! zi@PtMAe}|c;-#Fy_LJ>Orn@}EF-mUAt|8BtNcuzEs-!W=0f;%uI&~_NRDd{6Ne+@&h!>PRZ=fOnC&W7C9BbD| zIze2mng@lNJtP`_nfwxos3?}BaFl1{&=YxS6lJ1AaIaV5n&D$b_(SjG1#rmyNW z)R$s@6iHn)|0G;_(I9&B*9^Zv_m5O8Amc0;vOYENUlJv@S0PnF-aGQ-zup{@+-tjHJv&+ zNLoPrO38CM$4XDvLiBsxsdJ4a55&Go4wB4)cw5ODl7|rM)pD%OB8h;wNXaOYuOU8F z(v>9Z8;0~iBIDM8WEjK)O3IO3g;@Dbr%o1<`Vc==@^@`#|MOYlcdPoY@GH!V6UUgh z?|+$J3fuPmZ%thf>s7o=akGjCDIQhvJBsI2{DR^g6=NwrS8*uCEVUh%x=_rgVq=QM zRIEyoE4=7J?UAhT^m1*L6;U73(_Ij+49vafXtOB=aC%S2CaE zImCMP9BUIux$_HAqF>c>Wm{P0E5y94)=bQwhHY7`^=fErUsbUJ#XBnIp_r&*8j5M(a%|qOt~Lv(c!^>K z757uDui`q2%~hOFv5kr!P~>Wjp0BOTYV9P~JXx)sP;(U$8K6I9u}j=r8cM@bEm&mme$3XnX27#`_Z3m|CCuBaw;)LtIKlAC`SkJ=`d=hY3X!tiR=Y3SQ#KTQW8tj9^z~z z14x!ZysD%X$uo%6TA4(8U6Z61#1Tpglgxy8L`e|IpAgHpcC7s&dx&`56yj7Rr${zH zysu;v$rFgLwsEX|NzxQztdhwj^B|s6(wF1`#PV$&Ymp?iA&yZ}U5QV?lrQHSF!`C6 zq07L$1k8)FTHX!Y5-^qIIw4PuK36dx#T6!4iHB#O?X z=3^w{Vy9{-Df96XV!n0`sY~(-#3o8glXQYOT1hC$Y>3|}c_e37X=gLU^GYs}Jb)P5 z-X!ANE|L-u>nT}I(iP%3C2=GhA)Zz;gybH?j2%oO?X)9#4PrYbZ<2I{I9^F{k~t9L zm82&*4Dptd2eRO03{rPAqzDr6;2cR+h%J?DQ{oeO-<8I+ajROwycqn1d5OG<%)bNM z5_vyV&?uRt;$n*5su)M{go-05a{uZzOKr;j)l4ph;^;Zle1Sw1hjyqm=wYG8^JnCHqMBK)kKw8+TrBp%`~O6n@{iM+6qzL8g&d2u2)^AdS!nZFC$5_z@CYm_`wu@uD|-JFtHDOOkU zrR=M+Wis;a%v75ad8g$XB#~DOHTxkE7kkT=Df2ND;u0mzNxp}8LrGPVM-Yp3cdX?l zc>`j9CH^EsAudt!dqs`?tq>EG93{#8jv=*?h}YkdbcHxw$sCezAYN25o+P-3AvKVQ zwVos{h@UHYo8&u)*OgQv3GHdfn@Gf3PLc)?hbeg>n}m$@42V0GTqijRF;y?e+98sB z5Su7jOVS16bS1Nu_(ZF_m~XU>W?mfc%e+Ku2j;(kZHdYPa z6idD9*sMvBAzXU8HY6dOSuUp%!mpraDw)C zB?)yIQVof;V;^~?omvokC@ID|Vfq#AQlalB|Y!M#*a=_aNr%YZCFg5J_o>kxBwd z`a=9f$sO6dWDJ%;Jf`HN5}y!0SlBm&hLQXZG4FdO5#KtJREOACNga|{h})EuB6$L_>;T7FMv?{) zM=SYD7QBqX1c*N+D?*O5SuDlM)EGi`AR+{Sqt%olEF%R;>%UgH@@03 zF9Xzwd5NzY%s+%}iLZXeb?5RM=NI z5R-^+zn4NU#Dk^~$0|8WvH;>yCEtLK{z^U|`2gZxCH+Z$gcv;1vDSj5FvQME z!bm1T+@+)-$yJC2Mmg5fkh}(QxRL}}))EoxAl_4Qf+XE&LmDBG(fNU7D8%(j7LaU$ z_(aJ>lFVZaX^up!^(N^C@k=GmNj5=zqNFNGy0L~dLL%1kD)EWQ%z1oc(w}*$_8_-% ziOH+Xw}EYm$?SzRetM|rNAY776J%GGi}80Vo~3wK#a$HhjdL1WMUl}vcapX)(K|sd zZW6skP_s1>=}b;JHp`rLhWN3P7e!%1$X5{0E4fZ`3u6B9j3WF3E2Y z^GtHAl~&>t@da~gM9VjHq0EaDi8+)@#NT7SG;B-67tOCRS53u?6nm)nR5o#m_~9zv zptxSepD6yS;%17B_^)HMb&2>Ha$S>%zloYfCp%+MTu#|Cr)43!l%yva1@Q+Z4`ks= zor4h5OmVE8BPj^6qmpeT??7CrWC_V8h>w-Tl4SY7kmg8a3I>q$hqzKnE0SFhUn;3d zl4q(RZIOtz!XyhIUQ!Z7k|oxV2qaSH57}sB4EjP`q2v_F8Hib@IdwLXyaKVGk}pYy zKwPI}GRcn+)4CmNeM#~{Y^NlWWC+A{N~)9Wg_!C?$69_RK5HRsHjQ;z3#plxVR)ET zxvYij%x8veSqnMkk|7aZM#WSVo2&STTs)-Y2o=v$T%_V2ipy18Lve$Ob13doaT3L2 zDh{B?rPOJh?^3ESmq}Slr%^K~&KbgsvbrTCLLt^svXi7G#1E7#Bl#TSk4ioy`3+*O zk4z$CKA5B+#3&_gN%}(kLdhE>n<4(8q!>xw>4r2zBJHFj=>u_rlKZmfNKel}Oh3b^ zbC#q&#F0w2lFWj5P|0GF>kxC!bgWG!DF87_$$KRIATCtWl4L!^n@V0I@%z}2DoCWK zg-9Ag9IYf!iO;flo=L-AmcW#K2+6$$pwR7{YIiHOToJWFwv zin}OoQgIc<{VIM&@sx@aC^Fawj`j`qwsM7(V84Kx1wL_x>_l$`FSunM^Vc;vOY^Nq&Y{c(!9LlB5R2u}Z3w%z}79Nq&+vpBmB_ ziOgkcl1PZ3DY+&4g^a;Eh)Wx zgYaGErKvW|OAt0>J|}ET5RR4&UE-~XioGaSQZbTZEfrsc|mXkz7{6R?^$uWqT<~i1ekd%bjTS+^Txe$L= z@+L{}d_&$wB4bdTBnskeCFx04L%gr#fovTz2B{VpQXh#}J4ez5;$kJ+NWO>ow~{3! zL0=fs7>QVmC5eJKTgd>Dem!iNilGd(@+nJAu2Yfm|MlyD3(yMIK@|0%tVo^_2p0ui}VPhbu+IHQy6NF zMj``b?^F_XF%b7C=_Xr?kTVc-E_UiPBq;^4kCO5vlOXO_Vjp?M+EIw1OB`!YWxEkl z0-{UFFC>#7?pLypA57LEJwAU;-diR2~3@a2xRT_i0aeyU_S$#RIdmBf(* zd~HZWB;wl;l6Da1D``iv5#m!NZ<2(pFr+yWu~uA(&uYyZq+uwlH9hlE?OC95S*;1o zcZO|Qtpzinki>Rx71L21q2i+uE%~L2zf$~0#UClIQ*k53!zwPKcwfa2DW+cO_&J8l*Rs3E-|tvRzuCnNMwBNol2IP8{$PJLuD5c zatC6~Z=5>qNt!^Mr=&K?_YebCIdw{qq=(pENeIaxh&z@18H!$r2j?J`SnXIlPf`ow zhf21Sd=2r5lCMZAtTALf5*dSOBr_piRWgv|Im9MwojR>aMnF8MZl@1e45xcuUD$IZMhIq+Vx83nb$8X_8(LH!9govJYbR^-i6IB>5rsS2BfUJj9=r z^dtEdV#V(qYf&VPA4Uz@nc>F=)S*l*$RJUJ_~HiR+ueVSAIbi6J=AC{qYqQZ&Pfo;u(q^RoqFj zw~F6T9H!!@6ep_q|JZvI_^65`U_7{@h^z5F)@$U@fDXAKLBYk_b=L*&TPMkc7YRvB zCITuh!Jx*NU9a^%*9&hDRJ=tIymh_STftRdhzFnxy6VnXRoz|P{pP(lSN#2dzyJ5K zYiFjrs=B(Wy1Kf$-bn2G*SosmRoTgjWV&#xWp&;HS>XvG(jC0Fq-EuZn za?6goWeHZU;+FMvOVMM{augQSk4rHs&43oHyq;TL)h#bz zfA}B6ABeQc&i5S1c77~ZZmTP2apiit@;t8mdVNN}j4R*Ol{azav%2zLuDnlIYLmXM zfoamB+er%>ne+n0T!96RaQlrAlGM2pE4P1AwIpf!Qp+A#c|5m#u3M&HaZuTV`VAJ={{OTmFreTRyF*9im%CVdY8OQmk9* zu<~+l*;=>Uhm{|5%TMGlNCvC0GO`#7;(EDm8H<&tamzB@G7~HB<(7N7#WKQMerBVh zxbrgoow_<#e~&%9*XyY=S@5jFIaRl8j+GO+ zgRmgpexNx^ywzgmKe**%-SR$GZvULZS)yAi zu(FL??$Rx1V&$XUacrjOQqAU02${)zFlDQtjm7nR#KXc`) zy7EM>d_-4Xz?HY^$~(F8Z@ThdTzRIh)aL5cG4tdz#ez!a`VnFlKCeXh`ES@~Zi|(N zaLY@&>aW zxTRRP{Psm?8IJ|^v$bwH9xE^6mY--|lkwk$l^=1-a@`Vn30jW8f~YOiElpT?Gq>EU zTOP;CZ@J|%-Le)dN4%`4&Co6TVdWXza*A%b04pEkmIHLl+gLg16-8|i-LeB#9>y)3 zbBml76DJ*h#L>red{wYsL4hL*cn6#V{}psCr$6HJil?^PtY9#}fiXLxK#%j1tv*&Uko+#W3fNl+e2PecD&%;c+F8|hZ_u@2_jyRF>wF@p z$hI-ro<$L87Gv!F;D5k-t>C?xMr-iif=r-L{;`EZNUm`{1n%8?SWJ_Q(JcoNuX3Yf z8G1hPQ0o4N#z})(rIfHaNJwxY%Hw(u17>3)1TO=RfG$Be;Vm2`?XSJH7Fg}y)uud~rgV>|#S z#Z#hjfw!>;8=n)6S9lvYhQ{Q&Xi)A=M=2vo3RqdMUrF8z%TZDb;Qm4u!24nt6DdKC-AVc1 z3Ll+ML}R(PaV|D~E*iJ-Hg-d!DS-C|rwHKL%@xCj06IsI0B}U$4IbVK|2|CLECIY; zt_0A#2aHLX)UaK!8U@_31d&eR>9rF06xMqb1tvI1@%?pLl}IVl*W9z3{i&#Nz?cf$ zR!Tk)V%e*T+J+u#vzeMX3!N%Pc!&2geL?tc1Kk#^=G4GQ^+X^le~dkn|LrE9rZWMFQsqdW>Wb$m4oN{0&gfUDzo-~x!i zNk5^r(S%YidtXXH5?_n4qdq9WxsRd#1*9ku#NCRaS(*d5s_U8L1035!E$F zb(hzO>hf=JR7CFqQ4-ZBHS{n5bin!xk|pjgeG1w+ma9pL?)tjvB5cBeCg&kZw|Aw& zvSRMLsB2`;c^WZD9v^>?u*gG-KyTNc>8n|YMFo7Y1p3?mrU-O3?Yxkt^C@<;)$26$ zFTPf6CFj%7=Oc*wEJGX8yH8g>%Z7Y4S2{ZYN#}4u_ph4n0;0Qs=uXkl#~`#6>C3%} z3+L}#EkrtBH@%5XI8-UpE4V3Xs%=B=!{B`lpG$OU-aq0>XY+po?Sr8JBYWd3#ZA)W z{eBJoCxn)~Z^m3W-CQkr|BtH(IWJ(7!TbB%Wbu9|_hIlpT32e`cjZcF!#9BTcqoAP zZTxxvPKOx#A++TENan)n;A+8pwQhO}n+)D}<|fOOKOy5MQ~m`p$dtESgCaoPr-<-rR@5`|i3@^S%XFI=3S2 zFQEXLZ0OJXzbWHKBmIh*EO8HDE}YSC+q{p|O|!7c;JuKWEZ%2v9|rGJbfxC~Xs&c# zMB1CYL%bi#6U&l&k%ry^0F~UkK4;;c$kjsbO}goJY%+L1f}4`_DV~{6@!ArOstw-n z*Oi+0Yq-)`g|sXFMZEuwr$}M&Kf-nqV*3xFOi~k(q5|TW)lM-ssBP@MbZ|`}uZZB)Cg$$lF|5TA!4`|!AEuCF zj5~uiWF+8aHaQA)+~YOL)$aWiaUdoI`R%{!IiEHXu=f_5i(h!h&Kr@1VoOIG`o9CF zU_PvVKcJL}T|vt|h-S1=BZBNrIL>pnd0$cchlkouOwAKO z!Ui;1*$JCywJG{QPh{Xl?MG=3go1SMhR9xS0(XS&Ae#Im2V`;&R1Z_aiHOExZ{s1@ zI9xPt;ceU#8%K)9|8T${$rfT`iD-P++xR)~CWnx$d>6u9wZR!mp)}dR<-!J3*xAk@ zd)G5grJy^@rrZ8!7+(Qr^@)+hc2IXbA2)T)Mve5wp;)#aa0vTlkqxI&X1I<*Ye#b5$x zea?iXGmK}nH-Ju33_}fN?k{R6B8`@4ffky3mRc^Nt)ZVC*idAm)nm;F zv*t+nqF9;v2i;o)>JwwfZGwNw$3ae@Ah9RWD(u`9z7UbZ&Ta4`GFI3Ld6NRk+&#dY zps9vIqdVnfkwF95cQ_9s!7go-4>mcJ8@uXZ%q8{vzb8ZMS5Zr02fO9!t3AjV5$F zgJSP{v+H@x7D~d48ekH159+yS5H=3PV$wuN7*jy}$fwHNI?Xs&sPb!axX8L8h82+Q z#8z+uV}4X7$6MK5c{gt?+`r{Y=L{r%Eflau51>AAP}bW2u|5L138BfSl(_qR$gA!$ zt`@8AFx~VGHUUMo8QX}PloYo9AXo|uK4B^B0$@T4Us5m@EQQh^Qlzj055bVa23+av zhQyDB0;KTM$7)>32Ph_cfMT+D$-z>uCn5A@0{RsLT1XB-+`BaNH3%(bwlQR~g->u^ z?3A=CRP*kLT=kJ^OjL{X+jSoh7{1s_n1&0R|^5Xrki&CNcAC- zCJVVq3FsJr2oliA#4HIYhJ;8!mr^tsET9knlOmv{v-`A*y?~x>KpRGNl&1X?LQ9!F^e)S6{Ku+V$n09()PYTgQO)8eC9@>}5hSyb z#1YBtMI=NrJ9&k&5F$)Pm*I})exD+HijC(yfCU~ z|D}d(8C3-nf&gk9odGF6``d-;|%RwkJS)2$@HuH2X0C}KrsYm zl-$SY2%IR-6D5kuy_Kt-R}A_CnTYcXR||!$d`At;iGHfaER6g$ZjuUvGhd+PWkWQNV1}=gx>bI*Fodo@- znggsd9kATV8-KOPBS~$QTkPd;QD+c^eKds&4GLestp=}5^8O$S;5`%%4;mEiPNDG6 zAPSFZ3jZ=FG^9}YE{MVmP2op_!tN;)wq70}$uXM34gjMh`T1L3IgAOS@E;0pX#Z-AQAHc8rUI_xy2Gpq12K&-(3Ee=~vYzv4t-zfcvf-}c{a#X>LdtFX*lLs& z;>cq;SwBSAuXd|xHltzb)5fdWU8)NS|ADzrXYadx$28Ztn^EwCxN@URVZZN%gi#=B zxR7uShf88ddn&k@9e#r{B+~{;R?JUQwl}QT(o~`b@}$X<4ox%G! z<)Y(V?T!oQ422PO)1LTX_MRg3a{|iZ!VLL=F>OQqleRn@od*G>unx)5MZmmMB{=#U z2S!2^2azRG(WQ4hAfIcAKB?S8e>X4vJ&}Hx5LdfD!)8f7ddR zmVrbNxm%eCIv)v$F`i-!@^HLLgH7gOjn6Bz(*FH5k8h1sB}FLEB`4zOEi<_Wh}hwj>;5-K8no@1OaUGd2IA6ze35cE2@}%Y zrIc-KE%+Nk|BQkil7l)gIGaxQkz&_UXGiRawj86~4_?Hf30M*!VYq+P@Qah`D#RGB zbjBfxS|~uod%mhjI1W}L%gOm@4DL)#-8|I)hR)<^e3v2y#rJUUgrS{BxmxU6Dsd0gpCLlU<_ z0cyDIW$ti3WtD^qW^3p>5&C@rJs+ z9XXN0&Q}3Qd!6@P_HV1*CA4(&@>MwJAIMV^j0L7wEycyyg&;I%4tyl8y9aReHWKRE zH%tzAlvr5pKC?=hj_mzR0HAwr=m3?Af-AY?o3O6ud>S<@(#eO#vOwRh+id@Wu%crL zYPPow!XrgSdb)M)RA{k09baoppkBz4okN*B9F96MsbhERT*P3m7>@$NcdzGCw-}e-y^Q(@|ohD#0vsBmkRO!o5LcwEQ8SpQP_bgfQAMV zh@rlx5dUg{e=Fll^*sQM9X~-)kf@M*6WY1BCvfOQkcn;Jf-+v>olR25ZhPT2VH(x1 z1rABYtKD|61)&YzG=XlZQEZi@XBNxjPjvH>bPI@I^luAWhkD{&H&5NL25qEE;Nlx8yczEXL zO2wd{I=%!*k|pHAIaNTym_kG0t7z$jJKP1%6H@;iT?nmQM`D;L1}TVP|mGz2V1DJZ%oIJLjb+q3o?iHHfSY% zTLCtHfUd{GAHkVCeR7^<$$w9h)>><(Xx>Ni6BRdBWaHu}1XHk;Kx^qhi54UVii_g! za7W$TkrbPl(v9rcoUa)66owT*?~~2=F@;A~_96Ne_denX-&p5#*sqV)-sBKO7{vC_8IHdDH(eWapNpJ!QKx+y zcl2S0y_djr()Z`r@K6(a_ar8l81YfOk8`&DLV3-D8CC#^+_0ZmK*Z#@ZC$-YnFEqZ zC$$S*wd1X9368uRxP#*@WRgBfR4`fbYDbH!MZN=cRqyaTHNs?pcW*iaric! z8+qFr*H!BH-EHBBMu>O^wZni7$%bk(f`dP$FJj$q+m4BKE$-`}*~}Xi5q=%GM7bts zCzLM5WM@+Rh63;naL4ba7E=euLq*pL<1?fzoG4PGizkohJ78x56dF)sP*Olv(e^%t(T{z^2LxD16g#v*x_nfCx=#qRu_vC)7H@OoL zx)};sYX1FS=FA{j5Of-+oDoIAO7dHWX3C(5#5zsa0EWm9s67 zbM_ZBH)NW;NWlcA*}pnjIoG(o6Q^Az2~KUio}^=QY!a z2m-j{*>#I$uM?fH^e_?z{vb(rI)^H9DdFKA$o+OL?&%=Gt+KBgEuu(KFe^$Txd|gK zD?k;Pxf$mW6bpqa-%>t|=nA$)_3P|`oYNWhS%wur<2iTa2~{SVvC3kO8iiFJNb3i2 zDnm6XVDPeY>)x6se62{$h?3*Ht0!B;~2ISaGc14N}DF}A2BuRv@E6!Gs zU2g~k10w69os=5gM$93onwr(rIe|m|W%zs{8yeXc8yl)h8=Im5Hi0Jzs*_tOs3fKp z^w(Cu4TY4w!tbULMHKOV23#HfQEuZGjOmSe1Jd5pnCvgcPv8g@n2$laqD01+J`Vm z-v^Sd?!vAM5W4$sI61p6z)nGgNU^IBK41@B)MjS#a8MCwfqYjbct;lJQ54TxgSwBy z_O8WhPy^JU=-wE7K>>AjkZBkrbUY)hWm177{5^xf2y+=4M&rnT4~1qB%sqtCk#|`+ z1d^J^CU+Z}g(xR|xOFsePK_r)wbO0=1uH&;*74yAb2vY4}VcbC)1x;6vPSXlsv z1kUe)fN(b>$x|Wo-J5q^jBIsZLd;!^oOf@sBba5^1=PMtgg&E9gH2G2G@MNZyLwP!n{IG3VAR`oUrcl9O60BYC9{{q z&7}XABsP+Rl->~5H}_D(J#;PWcnX2>U*VkBpfpr~QRXyUjL0b+!7i@nN}}%xadxB& zV#uttMPujhuHv0|*E2nIzY{E%Zi))xb$oflx_a^mqlsl?8QBf&O$(OILiOOkWwX=( zmd(Q6@!zu9C@jnvbzd&_N_4EywO%(JDTv#qN?*$U@eEo`0VFOalUvC=fD*9-;#k-b zSSX1C62kOY45?~q2X2B3+PA~!y*EQ^Bl&gkO%Csa+Nbb@C*gB~2}x&gv~6hY3*$3B z0RO_n7}cT4P)vZMa!0W9R_Dztu^pfFe&{U@OV_wJ(ZoPp5lztp@Xjm@?bf*aaIhmA z&qErRK7tdu*O3Y`KM4|mYm)2S8+kLxyWdYp8psgL5J)j6#qyEtq%Yl@LbOK@1jt~o zW06uaT+1hggZ-=#g8i9q+4aH|(d05xHS`Ef41;A|q?Dxd#0SdfaC}wE+py#q_YmMk z%1S-~x<5BNw=qt!uB3SGE>6gJVlwHy#4T~W&@1dshQcaa0~UuP>+akD|C}sala=Tn zl9lK!+=YBHLb6Wm22LC^36j})Wa{L8-7W_0d()!P!VQ|nv*Z}aI7}J`Feu!tWe?5w zGdiABnkekK6uF@9AnjyfCqCP}>^yA8@0gT?6%TbR);)J6A4R|#zIjgFS+6><3iAehUrD|e$ zv^GgPY>SsN?if-G)yQu9_DMQC5RtOGxd9-n@P4-7Pu)zmf?nxqgf>cH-mG$8qSS#QHvosnZ=?n~VA+0scj^o-#`*XP4|&bI=dVb# zdmF9ry)7ZXLYo`%2v=cQeI3n=#3oX^uVR=ZW;2?l^E@l}I#MPLSUwYRE+vhz#`%W9 z+8IpPz$(tncx(XEkAzDTe7pzk5k|9S*rv?B(CMMhcii(&&!M$xl4ocVtK4D0rO#A; z@}CN)?>=6kOnF)}>tcrPTI~G99na>DlcU9;8}vk2&sBTU6Bx|dkSh=5N_B1$)wnGi z!m>u<*@eNx_iLV2Gt1eEY5kW5Od2W`V9S@O;W?Vtn+zs^4%4)DWm@+!keF!#^b$XM z=Q5}O`kzh#MVa2o3?!zs0G;4Rube>z(0xoV#hVqLTMA){Q_bD1qp^?;?9Y`exH2i_ z@`ARuNeuRw2BR4*dcQ$~9?hT^dq9(=Zi0^6N%(SMo5DcO$&7h4SE@H4jME)x9ThW} z;NmVy@}N(0>Y3JH1~O&(wKkP@2K|I&NZiqJxuE)t20fEO7kWSiZTE6Ii#NyDsj)TV zXE3(tV)fH(s26h=lNd<7_@zqIx}CvBYB1U@35uI&(7PElN%A4?)W+(wSCs85No&Iw z&SPt5J`;G72^cfwPF+c}a2OB9@~JbpC+8t1IF)h5j!rN?QQNkb*}e=afS!1YW%dHo z+lhfhl0bkKXnLPA=o(^E2m==y0s1yui}N{yF7trO*ACo4XZWVFuhiI@@h-*|U98WH zlYk35r$c1u^l@*;F+3c)$~Oaz*MyS{Si*oJlojN+)S&D4Dz7@w1DY&%d*N6_ECfpP z@3AEb&F}8aVAr~Ym^R1y0M{6{aJ{Z1TiEVNR?=W*W;z2U7ih_!z`Yyv{=}eSaL+%% z^oBFNA_ht>z}P^5ZtO?z7vcwpA%Lc9dJ~x5y9^|r))t_Tv1vI+GU&YqC?EUV@w{Rke5d0QG-R>OU_m%lZttXf?M5uT!rkZP(4crb=IxtNNmJQqyKEVe_MY;zZt|nm8yovS$ zhXjxaLDF~aig3sdd^wSkK#sthnbm_(|CmQ5_xQ(J*KcOBeCB-s4@O5nUC(x1MjN;9 z+=cX(Clt(pXDm`j8>IRc@V#=8m!)TPky*O_)$u?01dkpc2xR!J4BHs^ax(Hw5xyL= zFrr4?QH`Q2oP)R3z(;*T_e_v2X#`tAJ(?W$GYDbKNq3iyDdMP?RqolhC{0QHn*g)p z5o8(v70x*gN-#T66qpE2Y-wN9K&Vm?su{)X9y$^0@uM>p`;g#Oi&RJC;#KvoT;2O; z;I^dTe3KKl5BZ?j$*z*|6 zwtrN@cAhd+xc)+=LTgR-Y0=3-BGhFRA$ZIvB5~be-{8|k;aH-#Gxn7)Q zJ8uD_A`m@^J5hVyL%GKJh`~ndN{VOa&qtO~7~b?5hKy(eR!sB_hr_Iq4^pe1*HtJR z(=7H*H49XYd(9tM_&coB4*UEEltgt*(WdLnW#tI&)Y%;=ta6XMULlj_6Wcl^2I)PS zjIfJsoqdhgO}UkC4d@t}{DTOeKB8?9RzS+`2qduD{qQ=g-}Wt>6GX$a+@RvsiSp#Y ziZHvFrc(!q4#{to69KDr|ImxHsmAhj$HT#g^b{&Vu`iR+vKvF{Ms}U)#%Lp4twJ$M zMoSCm9?*ktErt#jBc?oztA4d`_P6krV~96sD@3Arw)!$;vG5|iy)Hk`c^HAeb62gw zfD!iN06@oM+J9Y+ z0>K;EH2uDF8^MPQKP@G8Is#Y{JK-Rf*d4|g4!&RYX6=-VmeT^n$9UrT!v zsIPRjrM|@RHY0Bw$c#K@F!I!W%m{nSTiNKGHx1Cs8B|Igf-`*)Rz|c+=mUB#H!QRI z#lqP&C~fuDsC_u#H(psek}H*OTIK%tD#f1^@eUrHT#O>ehtH%=-oKp*M}4L%)`lVE^w5gjfVH3()sqk#wxUBj{;Z-2kg6Fe|0zGu%9%BG?B%u|efSnL%9bBy0`AQ{SQdL5} z(P1+=oC_gI*ljLH*QB0h~2h>tO8xZO_rz96{ zfF=Wfpe%5=<({hPlFZrT^*gKEw}ig;qC5qn450loi1nNQB0EH7t-GAR^j-y==yz7Z zI^ws)-OdrX9mc`x`TAGN!E`+{VrvZ5;Jyu%T^;1K&8P8BWh%hpz04wwv9R-T;I?BW zF=+Y9;(d8;Zf)54j&~{X(mY4ay93zvojncE)ps(eMfvRsOu5Vee@26=$5-7u?olM1 z@doIX4BEGk*g&5%#`Y|y>pl)K5Km@AG336*<_#te<%B(>Ox&ToHG#M~l$kcVEnq|_o%XJ&wUK5a<|6_-b6wm{uC z1JqZ+Ws7;!dz>{KoPzEfzf-L=h#{kOLu)>W&}Lq5h@RL>tLyuvcZ9-Vf+YV$g2y?~Z^~ zfP`vIm|NkFl@OlOg$k7tzvOl$Cmj~S)jIPvuyKyh^#XQ0qxBu$@fdmw{FgY;x!j;# z$w1=BL-n~0Pax-d1AGGpcm82ie|wwa(76Mu9ceFUQO;HPD;NLx2m$arylq1cYr$Mb zT4>O^g=w9@(YHP4XM!rEn4T~YPh&*S6rIEkbPlEZAIsHHL&kp^O$}jg3ThM00kRT zs&^ts!i=`Aa(=_Xxp+Wjm3uSzL?H*cWXwjJH{TBUDC6jX+|Suj=L2IPS8+A?!e78c zu`itWh4O{4)Gy%6N}A%)Y}~zq12UQi$jenR2l9cmIX~cgTFlpxZOtGKL>jr-1hfs$PW2x)bCm=(XQTS3QCnoYy-`wTX>(`-UUwxIVWxYNmYjAkJdb6;}w z!gl@PPd?_=ydaGkX$<&jlNXU>LS z>q$9*u{jo{Nhw~#@H=J^M5vM{19jzMYX*FEx8j6h-{UHK_RvpKnLn#Aj{()}spaTF z&YndmWOMeM%{W?nr{Ab}aE2PgJf5o|lzWO&>e3QgKQm@eJD=8QirewTb4C~x2QkHN zioQKov_hLp%A8xm;k24_o$#6&YtG%wAZpGXxwX=t6i3ROo60zv`I;M893=+xhjMi< zK0I$}aW^KT=G=R*;#kvt2H}tZ%iOgb9l)IXf@~C9z+hIpN5LodQ-fA0Nv~V+8$X%d z$F}HJrGVA$l`IgjU-QPpX3Q`T z?H7)Jbw;4DvkSFwh0)C?*C-yX48~K8t);z?L7nRi3fFVB-cZbD+jDL)KwBBK7fuZd zoI8!Sqq*%j^r(#{R;h_CFc5|_0vvOhdj5^(UCp#r9Aj9ce2=T0M}V?5)2{hvs-Ev= z!*Z4yoLqaglA+$Zg9{LrMw3IlZN~`v&BwKlU@okuxb`-xwb8o6x!QV)OZF$c??tdR zE;x9oU_n%=Yd3Uv`!yUa1>T=trC1l=Pq-4lqlYvDZ_KNK6(Se7%)t*w;D+>^4Sv74 zcR=47btJ+=HkRmV9H(1PFrI2ulcO$i|HM_@^rR*~`=B1>v+l<4qM_+bS3DwS-O2u$ z0}{C;&B2)1+Qoic%u{cbq0g5{2qbee32-+PR2QS*cJCEjsV7P|<2!2&vI(x1hu3t? zU+w5-e4#WU2P$`ZF{56vgaUJS*8R$JI!-`8{SkUfvO7uRXQDxZmNhGNjnA3*(ormz z0pI9oYysyn`LfHE9DeBGU&LU}h6Z*!SDQ&jFe@?_OD_j<|5gfjq)%tNFjckPoF4)C zs9oJG_{_2(k<1@vH2;kgAB1whO2HVXAn-+I$7A5{|ba2(D+d<=%9CpM{rIjZYBaUAeg&|YG-ujD|% znv8F9b>HxDczoRMxsA9wh`9mi3~f8S zlAd+4gt~|W8)oh{uCkcBl9Wlv?1;|gI#?RWPR)(`iA)I6*yEA;)$R#1mHf$P!@>VS z#;D4fo-;|n?~ww3oB{tE4PRqae|3rK#1M|XFg!OxO-W~}f%yPqs+i2Y$I#7jiq_98 z#;|7MsSGN{8PynjgVjiHVCH^CF-G6ZPOHJw&fJ4B8g;hKe)?OET)LKaJc*MV|0Ry- zcm(x=|Jo07rW<6JU95y;o%r3sbTr4;F=#K|6fnpS*W}?926!-z2I5|YP~srsJVM}{ zp#g+HQY3+503@D?lNXtGWiG_UVrVaDA8*;?hRhTn;`MPvt$F|SZ)%w4qQoJ`T6e}9 zYTE&ezIpa}JyYviNH= zevEhj6-5eXeS7~?u|MGX>cunv;QY-X_1Rz5;Pu6|=h>W`YYfmu4BD|6~6&= zC7atUj?IJ2Epd=@qe1^zrf&(kis@*%L>aXAdEmq_H`|(TGsyqg!y`3y_#OxDn*6H_ z+S@?n**H(K4D5D>bM7{J`Wsg#>Ft}!=3Cevod*r@QyE;#Q-#{%ZCZt$=psl#xLmo_ z$P`T;;X2mudcJRHa()#8&4;~wf%_XCRoCKPyd_TNsiJi845NH4!sQ}EZ+fxkct-$_ zqpGv~dAf2L9nGIRO$n5^Xdg^{^xlH2iW!nj(}+NgR$!6YJy|y_6BnD?w^0`W&?yLd zN1zj+YXPc<3D|>r)5`Wt1oXGo9fi?ZXQtweBw6vT+rJL1&`<;CPgDU5usB@ zglmK~qRkl1Gop1IymT$=Jr!*M`Ju;L)Z;DmjIgi=p1)6Pw59Uh8CHKc>Go$W37*dl z!2fsdk2e2>o$q7CQ`I-mKfN3 zHdI*t;|C7KA)#d6JNZO6EUtbpv5$N~=Xm)ByV1_0I7#7s^afWF+1J@etV` zh0~f2ev%{z@iR^72rp%1r|S##wjO6GQ$8_>vL+@z(SYpEslnS7{`R)>Ce#0!3>G=> zITy_mhV>~oe!`97u@fW@2C&vyh{8SLW3|r~-*-8Wh5rMR*y&p+NG%J`!4~X9PC8M2 zR~sXcwyx3Nu_t4MA=)BHY)_}HgODA170MtUR!_%{fC*zhj2ruCW~5W4SE?Rf4OJe+ zlrIUQEY4JD+3?zhFq|HG%_gu}!^HMyVm;@|F-+mc-MLZoB{}w5q6RQN;U-vr4IV4m zQVVxGk2biLEzRV{%ec|cmI^<#ZRyQ(*);x+B%Z~BY{@y>*OpE`oe{{E4%6SsLUhp| zw)80v>v7s?(wLPkeaVeCa-)_eeX`s_uzbld3|sn!DIX9-Idfb3iHZF{k+#sAw59b| zsmbyIH|jC`8nz_-@R#ZZ)y_uD!Eww%&-s$QZMbo7Zal_2cRVWBU-^?)@?_7WnD(c% z7qIMkFK&F68~yBgpZ9Eg{!Is)=MhNaFIbR0Up2$mp8wj!2xQOa=) zIp&~?cCaL3WzTPLVJM6Ueox%nO2p37-Pr$DQ4HJI`^ zEXbapKf~9apPXXb^L_gJuVBx|BRjO#@5saAwLZp;N!oqln6)jW+H;B(Yld;|8UEQ} z%C|9PElu&Pnhc(He%lu43R>1kpzTQIax6%o)7pInI`uSLpeO0?nm_u~9}Z$JkL;z3 z6gw=?dE9s(H+lq`ZW^ypKUwWO%*0|$tY^0L`%iJ>{@m#4>2R?O&|Ln)(`GKaU+Ok7 z(~kD8A0Fi{<-VWqRw4*c?u0jOK zP?CGP$ateQzz)rpZ!T0L)6x;2P#7Y!;T01}TI+9fCU!FuWBqNGT)jz6WvN0s8BptReXY+UXoXYcx&Hkx1nLEJ%OvQ<#~ezt`(+{XMO}XRbej zM7gKaUmK5XRF~2pPtLQradU1oL_P@UXFfS+GqEKXsGbaB$Z@LvG=QnYtmof_-1ouU zcYyvDzh=+BIn!7jmmrmUups^Yu0;*Qntz+c8G+_sf&PwT)FUF%iGt>VnMWYVO!W6J z9$C}*iXGP9huk=c8;$-oJJ^#5I#zhwu}SJh!+YlKXWUOO?c;q`#a~Ueecbm{?mIxW zU%X7-0UqO4Td1U{kt+}7}P;nW> zJU=qAdzl!=JOjRmfs+fkm>WH__*c{4AntoB?mIw#JwLro@DFqW&J&K{ShR}JzdNb=aG$_rOb)f%&FYC6E_+n=P90%auZDK^}nc|3}VRf zucp7Vx$h&n?*RS1veee!B|2erK2n)W1s;;@HdzhBntwZ~km-O__ZsA8%{#F#TOCjy{EGkK5B}?~lk1`LxG59nZ7xNN&858-ESe zp1}Q#3F_xpQ*ABx{TS`-Q6B-St$5Z}?GLp4k!qWe%4JxPW9^|(G)1-N9&4+%O@IFt zRQn*0Z26hWXj!#SaN`ng{54d&g!?%$sGna=wJ&qupK@wGK()s$wpF`R18eGENabfN zNVN~dlq@ZuJNIZtpqS?>{XKKlW_(^fWG%2mvvva>nMZr(4n2$W>Jd!&p6P0!hRkp* z>eP7n)3(fdX*HthFbb(0g9XX#oKqDkOJ<3qY?;;R?;e@aSG|6i>l8Po^K>mdvNtG+ zfU~oIWHy~CPiM+nW^hQ4JSwSu`y@&YuX>2}VS!F4%|tp6v(yfzu-R}T>P<~_QR$rD zInM&9x|Ow@gg*$#9^Chdx@qmaU_d;@5YC52^;}*3jZu9GS1Xlmv`+Wd#;wkdM)irh zdW=zhfUZ8&s2;`D*oAw-#Q!DT*;w3(#p_tC!(!)2P#l28pAU!P3@on4VhI-89|6UH zBcV7Di)*pC3=GL#j>SGO4c+UpXgdaqYp__1g^R@>!2h}lEdFvF6i;Ar0xY-gy;vl% zc>M$@hCl%2Cb0Mbi+v#;c7Jy=6z717-0!hK6Ln<*D1}JQeIAPhM8$3s#Q5&$4k#YS;`gvqb#KRFB^LFtX?7pM;?IzP za9_b90%;Jp4U3H+-{hW+#RFIroe#x1SS-Y1B^IYbw$WXR#TZDSx^uDE{z543!eTiV z+jT?nXDlAWV$X}9xE_n4Jy0Bv#U)t$7mJPI6wW;miw-Ov$6_58$6gG@nOHo7#mSdI z@d*~EUJAuXIPrHUV{t1M%dyxQ?o_xpWAPpqoBth(L$K(;;t?#ixdMvkvDo8EDDcr7 zw-1YVuY%&RtD#te#n@}0n1{t~*Fv%Xbx_=KJrrBs2*pk}LowwRC~m$DimE%HxMD68 z3+{wsm%E{ua1Rvc-3vwMeNYU!ABv~37(5S(ZY(CvhvFhEHhchz53zWB0Tj~~Lb2I{ zP#lOw2NrK*QTi|xw_));7W*xNV)sX&sCo>FN3i(a6Hv521;sm0L-Fb}P%K>n#n(%r z*y;r+_Ie45?_PzX;-65ozX`?bZ$okXyHGs%J`|gM1jT2cK=IHDDBk)KieY_F-1jvU zjjNzo_#Y@<`T>d+KS6O&5{km#B$Mup4WRf8e*4FL>9v& zP#pV5DE9g@6pu~9Pe(#=+{sYfb_x_zYM^MJ3dI>sSl0~2;ua`Yoesr++n^YefFgm# zd@R1fVvlwx94v0bVg(kvoB_p&SX_<86X!s&`79`I>VjfeHx!-kLJ@r*iUi!>argNI ziox(4v3oQ;w(X9Br}*7oc>RHUEByGod*(_gCVmCQM&CfOq--cT9>|G`x~x*jX5tv|S|sekG-{++Nd{14tw zs{W}q{H{I|+=K}e2E%^}PF=KA-_5@Y&#c4GX8q6bW_{HTk2iV$;UNDn|A)Vct3;qB zgs~wChjg;l>Hq!ve-ikA68OJX0=S7(gV)|f)yz^K{y+TtB3z?Z z-D?i<$yN2w^lj$nf`U`Y2|g_W@h=__))fkh__-NAqo2gjXToQsi=XGfXIww=^TqHP zT_t|L7Cz%EJn-}F@EJM6&-39kzFG)BKMtSa4}D$=pB4Sr;j^OuK73a6{|%oN{cqs2 zqW=SYR`l0{pJPz;5icH_j$P5mTK%z3f2`3T+gcd5Mt^K;;MzL+h`hxbu@XPk@~1lf zRKuTQbc#-J{HcyV)i^*P@E__3;{?1)AA$dh;6ME5tse$;*tRG9R|5axgG+nEfA|mO zh5L8)7oW7j&*pc$4~72}U4&76n)T*qgu#D7v~W>90e0H;@ZVJUuO0q72mZSN{<{qR zyAl2q6#oBTDp@OCs@MKeSrM_j%?pq;;Zkw%l5ZQ z1^&LWU41`NwkIY3Q)RpQKF-tMF|u9tf0}GRP12t&+tv5Sp z&y)BchTyvf{@nrc|2_o2Xlp%wFTRrhZ^s1d&k4a-@*ft0KQ{zl$$#$VFG~@09_38B>$ov^!OG3Uir@qk-y`E@0I`kA@ZMV;4A*U z@<;q2`MU=G+yMJOGQ|HB?Wo7E@Ri)v-^vjG;~4l41lT{~2g!e~fv@`a%KxAc|Ks}L zd*y#ki2RFo(&JbBd*zS#LGpJD{4WCJKX`Po|C#H9ujH=&_J-NNfxkLH{)itW|Dv7s z_!a+N`Trbd|33I$`F|QB|G5Uf;@>NO#1E3cYv5lj*MHT&^8XX6Qss~IaQ!ISMUUT$ zuj0RBLhzjsd=>vq4Z)uqg0JGgb3^dqMP#&A<5;}>tN8Eg5d5M@Fusca?hnCteDIas zs=u27zIXjp@}FzqUnlkFT|W`uYrhKLHSpE=z4p74#5dPZg%3@h^?vz{mW8*{)z#h2XmeKIU)y@Q;OjhqqqQ zE*hrCkNF)h9P;>32)<+BWB$Yse+S6dcyjo-k>{EQb4Va^Z1cMW{ZKl$N*9fDsp zT#p~~OMdu&tVpd#IONSS@G*bohktJf{#*ke^J9Man}Gd!>+w7G?;7}b2jKUC{|Le_ z+D(ri^JQK*?Bm`L`*RF@%!m2mZy#bma}E5T1LS{p2)=9JV?NTa{|`d&i+0!J$9$h3 z{{A8M;~4muPxQmTKLmfSfsgr8Km5%@?8i0mF(2xOe|iXhQIQ@$=3D*n-w45X41CPz z`r(&`*za5e|CNCLH#F7*lRnwMfv@tv82>3agu(o*`i_6qI)-gUBlP%He%FhS`Qspb z$G}(lb1y#T$Aj?a8u%)|?#0J^d=S2C;H&(#7a#N6LHI=@_4rkO+>4L-?;w1~z*qTy zFFxkygYf4X_$t5e#mDo5Abi)rSLX*_d^}$W!Y|rGk6)cnc=6YU;5!CB`d_puFaC!f z|7+UcTmxU7S9tNm?AJB$)p>*$Kg@oM_SEA?|LezpnEg5izB&)`_8(@ya}9iT-r~g% zvtQT1SLZoi{4o11it6#J^C~ZXnEg5izB-Tc;)mJqTmv8dub=$G?AJB$(f|74huLqD zv{}SM|LcbzWWQ=oAr9`XVs&-+5s$^;V{5#v4Zq@vIed*Kni;N%;P6;7)>Idr){vls zYCLAIX^qFGARJCu`VwuZkM4~%@RM{#&A1ex)SB@rXyXaUqO>bj!4JV{;>bL8S(sAm z4@@1U0E^C08nw++TVkzoWCzb^YnxkU;Ahd)GDC`HBdDs2*S5x|#+wq@juj0}Mg<}_ zHaF9i0c^z2EFY8@R}h~jNJ<6qY~l!Z%^D#Z_#qIc%aTEPsm`d9=zBq_4=_dHz*0(lKMI5xg=>i?$;UnXt5K2mm zwFRO*mXu=!Vj{VcO4%Hhw>VG;CDp|S6|~Kg8mK`W98pP~YF0>FVr_k-s;v05_Nk;6 zmR7{SDMAKbT-VUnQeK9H@ul)UBqAtj0}Rjc5v<(mNyv5AfVPyrB0+$j&d{u}vkLBv zRE>8zJk=>(?2roMA&xf`kV+*J7dD4)81>etkXJ02$U&kS%^hfKRig5?rF0aL+@t_{ zMx!iXjMW)U0!6~pl+u;5056=UC#95H?uq=Bl88~A(t}cp3FD!zv{J{^g>5OVnDr_2 z6%Q6rKnHQ|U~e)i)qzJXbdVb~ac7R|N1OHHsvOmiG3&*>IjXNJ=C#z~r`oJH_=%bI20t}s zy}?i1tT*_nH|qsIXfIWzkrGrKIC5jUs--FhVgkRbfB1PVBq4C4r#5@oX5!&zm0-rtJIQ3fNK!W}$+&=(4v(Egi_{BPepCJ22{zqbk`iGx)+gqP#n85fMnKog~ z&)!b(<}c#le~)H?hqr_k-kL1%@J6x18|ldsh4G2Ej}=}`7I?QCc-LfsH{ZZ}BLr_# zLk}kZUcO;J3Jdzl?{4R zbCVB=Vm}goog?2y=XJF?U_xK;P?yh;!#hOTPN*r(5V6f^ZcW5n1+Td013}f5WQg3@ z+%#F?0t)>rf-*%(LK(REmO>Spl8QmRJ=36ReORcH0{)nNYNwP)ZA)mt+B*DPTen95c-xeQmbNGoZ;Q4!B^nx| z_08=~gfyW>lbKL6+J`{Awi#kc>b5NrYlXQv&55_h1rO22czq(;TwgD!9GWwJaZ4+8 z)R1U^`BxunXl!p4qL`jLQ@AUyX^c4$EOs+_Yl=@#kU*kSV+n9OZTm!l>S=(Lwu!8q1KUwKgQu7_tD7hAbzP{DVI$srjVdqII!EOgM52whlK)!LZRX39Wq6 z@NjUPrcqisFw+H2Y;aw?UXrlf83|4ZLa1I%`ev9Mu>=Tq8cq=p6(Ck-GLRvaXc?x6 zBsX*~1wJEJKrfmJJ({xqEagE7dM>c$Q^0UyjniT?+GrkvZ0d2HIH0*6v8}Z+F)6TCF1q%jR?Ho{sP6C?*ym@Q9{E2m)TqoKC)5z^Her#X25i-X|Jyb zXR4SMw1=fIYs1QXKz#Q!aIoAcCZsWf@lA%aG_Ndd@~v_78*P#|?Bo>b8)#aOji7gq z*F_S|5vs=zI8f>=EeIc)|vN z7K6aXGwb}YlvtznjqPo)Bw&vMbuxN4!A%r<8XIYDPehvQBW*3P_z%Wp4jY#NW<&)O zaO%UnwY;@t!Zra3h@AsGDr}rd-h)Gd6$H%j)~WHj1~5~>Jm`qVP!~ZT{QF!8v^Oad zIN~;Zg3fo0PJB8ls3d0Ty#>PY1j&j`TtHDd-I|U97U0XvC?!6<2gVc-(?6)4>Dir7&9)~Ewnvqp%K8siC&D8+u|6{lNMUDFbq4T$X; zVAYrmD^RQz$)8?cVJ%o*ghp^t3f}TI1|Ti$xcrq&FOLOLQ_Pl3k3#HJ-!L5!qA)tk zeHc^~LQ{NlEYWaA90QRk_JCU~A7QaL6aoOtu5k9+XmIk>7FS{xDZ{qL29AuQbq$jn zl=!XnFA$NYqrj7*sIcPOKtzkn5=(o5IA_LNo5|eDE$ML%qA@=*zLoVUjKqjcJtp=Vnqc8NzoW?vDngmQK(XyheR(=kAyj&2yO__sw7%yUqQbS@Nr;>i^;+8uq-qn5GloE?6yoFdki(9#5&SB6gKQYRzadsLxVFv;2UGFTcg85| zQVWl48}lF)G>TQQ3u|bCoFa8DvNy05Ln^g(xDGH{AVcWRdA2dQ$%mzJhRCRUCM=eF zk;h83w#V&^0L22Lu|C$=7Pn#!6BRDvP?{+^8Ti0`X98A-C~ReLsfCDG{;`%WiH})7 zY=*E|LizDPxk2Iq!wQVCC9oA}8YE#+ZH{8X6QdsAK;8>Xsnv8WkT6gQ6KbHKTNz$i z6016QieOeWX!a{)tAPb&YrkQF6Cf@cl1&<$<%|S8S^&(uHd>aSC@qe#qAD z@Slf!6H_oJ60)*G!Jm&An0UM;!w7`>^dw}hX`IS2c!CBBax4mFE6h?W2GMPpJyOIi6E;BbnpIRvjrtjCN<07%y0jGI z3#NOIM6!X7)mWQa%C4d%wuwwJY~#>0Vl`HD<^u(}<)%0de{ihEo+_BpwMjyH9TKsW zSwIcPY9bL+4hH$A<^(f>prANQwgI5TjbMCO29z=26^snF{ex!RWW-?KSK$Uzl;Fm_ za6^;OyI{)NfrWuvVznYyKP)X)?oY~hL?%*DJW4^^jw?VE3dfMRwbB}FS|VgTE&7T~ zc=Q<}9)S#r)zl7wokxADoeF$<=bz7Ms$rP1#u+1V3ONoDiZVkW}+gW0O5GvK%DNLDYZX=-AfU z67n1bT}^>Z?ZIv*9&zpfO8`S9tQ;-L~2HWHSLui zo`>aQSgBJnr8^J0&^-5VB_2p4sRVqDz!sAoi}((kJ&!ehD+v+MKdZ@}VFQ(-G8qHY zFjb8P0*bD)mV6m*=wmzug{!BTgN4gV4O3%{o`AzzHGRMb0F`RX8TkN3aZ8AhC6@j9 zL2{T#S;jV8MoLSprO*#crQ;AhT5Sn13_R-T4HtxHX^Ax)$hu0&hy4XVwHxMKCuHbhg%9kNz}PQ`|6hYIzy5N*^o>c482u#S<|)gU0Qs zu;Aiav?zOvZh_Lqkm7>k8U&45dbL2sOpG?grcx?BRt&cf5vA5z=`0jB9pnfZXQaAe z@Qt0OKN9hV)>>X+bpb{|xmsdH8k{&1z%DSwUtwjzZFn^ej8g=}h?xA?7@S~7ITe?b zTl3QfH8*p>l0F82V-m|wLeQGw&KFH=R3WlvIoe=E#(@`AkF{(aa2jKfbl+zz>H$Xq zAl9x%Ly*v|1wKBtAwee{azBjcW0sXL0IM58ic9e<5(HaX7O@;8gHsNyB~~XOA@DCL z34l~O6OeGP6#h?!QL+v6!Dd91o7$(=#9NC?ahT;L1Qsm|216$6<46!cMazooo12FO z5EVyYYMN}vXqGcAbx$un={<4$- zvA6_V5F(|e6m?D1)!sJ4KCCz#`Vi>4r-1fSv{eL$=ZYGd+TyJ+szj`&5mMr95xB(A zNH3kmL0IasFp5h;+Db#(%9McA-w@dHkhY4Dwn{}?i97^$bV%EnkhUsCdze?4@=!EL zrdH@{$y6d1m!ti{etYQkEJ zjubTF7nc}-=tKhnOL0CL&J>+oCDXA2f;F8i7pNzpQ-9iNBgLzT3 z)nCgYPmRr}iASM};*x;+(tvulC8Uee2!JbB{i?rK{LB5TWh1n;G_*B^qfqE_T!7l( z`YzZ7oOUPR@QO~p@er>K_KJ=Aq|90@358-}JVe6}6xCx?A)Z~8Ri&dg!rDUwcC%!kY@ zHo|E{E2em8FPAYZUTn|}nvTl1PTwcfF-bz=WK*PjB`@RhA^{9x1SnEna9O~U!?H3b z3?$D$(dFXyVYtbG0K%;vAJK8HNbObd{;fs17VZP$8WyXa0x@NCi{)CaM!J(=_Gh)? zLUBULs8Qu7MZ#e!MvWSC681t*U5$;jz+Km|u;&qXStIy7hjm{-v;$|>l}b^IELo!w z)tZ-}Mq&czvtj~+2-tTy;46p)yuU+2u@=7;1cT!Rc%y@Ld4%eLMVoO1Mh=aB049@u z2u$>2oz|h(glxBbl1ZPniz`0X>6j0wevpYAsg+Y;a60m*_BLO7aOK1R5l>fuQNoi- zxIC6d$|B`fkRxs|5<$ER4t7pYAXy8C4~!V1wX61nI;|aYGy2qtCOGmCDUU>~^o}1g zT&8P{8Q8Yz)1!cbZyGTV59b~}2WSlwo>78FTM|+;4Nb840~o#Aq`nDu^Uaa7=z99h z!NZ`M7aN6E-`-S94<5BmiNodJ<|eVt2E4Hu!k1z!gBjCNk(Sox#^%ZG@eDD`$U{de zD~oaVMB_Cr86uWrXc~#obJmgJfCmqBx0aU`!`X3$6e={+@s@^cn69+@Zfk+Z#;Na& zxgT9f+*j5W!|cU-tC0=C8(?~UotVx6zNY=D`OeJd?Ax4umEkEkk1T=+We@J7YDBi=$A|&W%oeW-V=eCh>7{O2kFZ);Ek>y- z;PYKHL+rJbju>^=X@-7T(<&__iCaNn)`hJ=9J2g;Fn#82*1e}r+^k82%-pPLsi~VaV({F}np9Skw{}F< z^wsRm8Zl)0W=+dy{`!V8q4pOtfwL#(H-odM;+?{n`tYB^(eW|?R1EKiQ?nXVQxRDo z**hA+N01`1!D5dp@;F${(_T(`boVJcLKdC6;w13(I-M1k&t%UEKXsyKg&s1=v!bIW zcveWklRGOiJh7|r9dePBWf%^3ay;+8aPOdm&)HH}nPku`}BXOT56z@b8US=RLF0vkFF`whH! zEHhoXj;x6)=aDsHi2DeS&3#PS&w*r5B*cYePt4DWWKYHGM({iqVvVUWIC?gA8QO8+ zr5H1esDpQ{KqOHfsW6fVKta}fau2>F12!&xzDQ*%tViNf0+w35=IqsCaS0xt;=sn{ zg6-pyav_uIm2#mH;+S$Fr+iZ`xRjzEMq=eHh|E0ZLT)r3DWD4}(uOr67eXpikqd4W z8hOf?M6xj#dOit@GUy?A*X?h>VM)iF==r5Baw6o-T;xQg9Bt&h!#fN{>EZXe`C zr*adrLE|n$PGm;gJ4*9rLQeFgMW2-uauw!-he_%3L@g6X1UXTx#*IGC)U+813MO*t zqpSqCzSxKO5gBjV10Kxfq2%5PJrfj(%*=^Hdew!GT!pj9iDdbvG-xxGkrSN?+y2ZW zik#?G77}09F-1;d??`e%&N>3{=ONn&z@JLa5r99r%pw4P+~5sLE>a#XqQOXHbQN6%gEL4)12rT zQ$U@Z=0t~{y!1ak&52%l)~+c)U=?AmNu5Xsj7QyLzMoOfM z+8=BqILPy`Kwt3&EWVUJnwZfNPw`s)M9LAEZ_7nLrn2$ui=J_ok4#C)KDhJ(99cSfG`>9XmV-M(``5NYS`>P9M4l7UGU!+5v zbANT==db&VcBl)-w^BynW%v+X7Q+u|iKBCMR$flOI~0jb_d6!fcI|GB8|P%XAR8K1 zUOE>tsV+GeDk1(i7jnwk=7JmSS#zOA&&H#lgAh^uup2&s06FX0>A4UbgAZ^Z!5Zr) z+amB=d-$G~Tu4^&`Ml=`{&FE!EfTm8eCg|b@azGNH`~|?ZM>8oTTZ)u_5?eyA0uSS zi1$x`O7zOI-8%>H<+1n7_s#+ID*7Qnr2$rk1*mDfn{J+w>ijCC^PA!4{H$jTQ_}4; z<~H#QN%$Ug-g39WOMytwd=i*1As?rhFUeE~nJ-0;@tBFfd`TziP=}f? z@ifjgU-DG}zFThJ^Ce#$FcZSo8>5wN zsJ9+Kd=F39z;8W>J%o7Si1wa2;QF}D9H^xF%N&S!bZ*APIZ#s`G6&RP*O&vbP@k9s zy)@1+2Z~igr5A+rDbG*T)0SUlZ*w3W<^+8+6XAx=-Y*y25Vw~LIUj$Q3mK2mn~p9Q za(*5z7doM?ZGEzrvt%GB14hb|4&F?fl8z3i(`z&#`6Ca!$^jzd124z{)xb(PMZ37% z(0#mIZiG@DU2b$dYBzmdZUmLP%MCl&aAX~+?s zw&nh5gd8bWre=+Eq~y8tXL|e`DUR{U9Op=?DlB(An2dfHzQqMz;vqWC()(9uIS=ri z@$mi!dkx5kh|fxp54qI!ARlTWt3p0x)!L8`jo=j`AF6tt$cM@pG)yu}dYeT)q=FZU ze5hufi#~Sry>qc1Ooy3+tz2BJaawE!{Ct)ZtAk&JhTlVlA9lyzzkm!0-sWw?i*f2n zaJ_rTorKT2kvp-}RU>y=A!|nNMAeFsJB8r&B8N0WXbvTJ9)r&EQCH0Jpce8fvplH!z1}Pja^6>-Sx+XU@nb4+qK+N# zl9}&43jwH7CJ3%mCXLNC@G~{=vstk^__1BMN}=6bIzS&MmJTJ=Ri(oSaY*SmuVZu!&Vj0t|ADlKl6&o(|SQgzsd zy}#Yj=A<&;yRX(ure##t*l!Q-Y`FN-_7^w~_4MK>2N`tA~QyQ>f@012H)H$WW zP2-!=U~AWu1~Aw&Sw1b*07^@K$BxPG9&I{w`gO1{zm|>wJ%uR<_;{Rj*yYN1&rApD zvvE|p&~&JkTS*aBcrNj#LmVCAOVi=1hv3t}g}j|F9jec>?P*ZTLSDU>4%P38^|Uy7 zcv0rw&PNppuN0ew7iI@+nOHyuWZuT6)loNGF`U~ifZQ@cFh z2Sd}L>s@?0$lz_fm2mP?Qks2yTKu#d`Lqo)*_=CS(PwP6GUi+582fsdgebUQW zd?lPtU7`*3(edL3Zy|Mt_qDJJUzD^rLzzp@;Qp4#hu>D0zYbD0BDZcz zx94u+)ij3uSuYzXY0k`zCz>JlwHFn^;}$g3!$KWGJq8~s6@J=|ISK`l4{=@06`kw||~ zH$#$r`(bir9-H(_Z&?Q^{nBgM9!C5X6s@4|k-L0ox5mEnipkku_p%xq!^$&e^lxOu1z2L~Gf9MCtM*TzIxM`Wm z@5k@oFLScAWP1)TRB&Mg6aCbQe$!k(5%hVRhdNW}rykU!?EOT}=jMyb0`yZ4J`cY4 z6XlTS;rpovzsKbJiM03W`AjngYEevg)?lrq|EIlceQq2_?#b>Z+0)+TE|1E)63p(* z+McmiqU49H%uQxfsXXc~U-I#`QX874ZQV$eLQy;NxctAT8xImB0f->_a;elzP1zO& z{2Bm(excF$jISlN@z6oSm$A^oZQybskf0f4CJAm^WRk!-Bqj;I5||`lc6mtxUx`Z+ zIJ>kYfwv1w5_sK{&_VhhUS{202{h!qeF-#Vy|+GS$m;F{8boh@0u5PDhXM`J3#W=k zL*udxqou(!M6fCajfTM0r$W|}pox&y`u>qp&u9o}f>-5Frvc`gaFr854*;PdFco_z z=QpDb9N{n4!}NMXgM8LV`cYHO#O`%$xqs+DSni*eHjSpfvAE1eP(S=Bnt^d{X!%&f zcYgt(2eyN;T{2>X zA3LIlh$)}xC$PF5j3REq`ER`i7pyk=%Doqh6IXJ(khs^E`gD3C2A}Ce+ARu-xCPq% zZoiF5H5rTSXSkRcQ!iBW*V1-(5>+vT#P4!q@ZhQldE!n?{eszush^dG6*2Jn=dilv zTAmYQUwq0r2lYEQ>}4w}i?{=`c61yu1-{j7w!3I4O~(cUjF?391%Kbkbd;yXF3;#J zG4URdTX9RwYJ(|*u6btCr=#^PXkq!;!tsc44Q3ZHg|^*AOu%7y5mQo@7cs2e^dcry z*M`lCcpdf^H6@n;Mop{clkc+gPu+m&Dd+ykq`N7# z)D1Yp{J@+#{7_nL-Ath-sh{_x#&#V3q$YLgr`uAKug-~5BVXy-Eirg`W|SJ&ae$PX zl;JcfHHn5opzkbDlQNw%rKZvM(5cc)Eg3+5T(T~%a9Xw)6i8FO?XZ#3K`@qk2{dp9 zWtIlGt;5pbHfE}Rj+KUh(pYKG?20N4ex;w%;Mqe(Xz=a2DGk1^l6ps#8O=zCCQ3xW zrGOHV@YXwt=<2~BM39E)O65!>qTm_$K}5A&$xlRp1`nJH%OIkl&XW+qIZl+&P%xb- zAwqVXDj}j^I#)sj?L1i$6rAysQe(o63vZ90&u(#DcS3U3^SQLJ1{I2yKwFif#doMw zw1kvuMT=@zv1sX(4Em84SN8JooZ;u4J@Wt)`Ry&{xN@?XFG5NM_FMkZH~`(<7CFGXTQD zJ_AqGCgRrS>iM@!nZ;hBs@V77ce7;w9kx%1wNWjm*tSGjp>O_3FMa|Ow!3S{ zHw5Q_*o!pYV@#@bT14Y6TxfhI#>5R3eaaj0%YAGvr=Gq=JrmQGi9esOj!PXV9Gf9BpPk+7q39IET~(}CM&813kxwJRgAht zC1#GskxfjF3RvhN0QRkq_w7`&LH zBH6R4Fe#s#m~d-)MG@Xkg}pJD&7kAHVgUL2^;kLQCh+8}$?rRonp$n?WZx0u%nA{A zg*g9|clfCzMZ>0+Vy_($F5BjH$C^BujM>iah;U^vxVu%IjKARHR9fCOb+_Voz@>DK zXJnt1O@4?wP9$#}cbUB668hz$Nb`7EX~aG18n|W;lr{_P0pj4NJcADG5E(03jBz?rri z`rtVC8AQG^sZ^p4sBf%RZUC-BqLL^b0bGZi^wJ@XDsfZD8@vXd^$h&c6QRu;Jpmf? zLEqu90FqC`XO*_5fFmrkOv{KN;rgI*d;{>YDcjVLgJtd2?2Ksln~%6 zhvv@3LCO4En)^Ipi8(jjf`B6*Cvy;`iS&g8f$)`R&LJCwd)D@w1mT_k8CM%-S0nJ- zzDRY8A_(`w;A05_yrlEIG>ne6li`gLk`4HB%Iv0g)I3$7j@4tdoBO^K-x%7oJ>2Pkq|LrHNVU^?|!+3%for{G79S z$Dj|~%pltO;9Sv3G|?gySl~tz(Y*i5GOU}fsxNVa11=ztKwR?Gn2 z8_*24$H`5PIYUpu9PrfWT@>JDtw@8eUp*N*c*9KXHbgET@h zlA(Cmq^y9J;0MN}CLumN2({u9_~vOaf}gDb>{~c!T`XWn0@Lgw)bJ*~U1SSj(yl*f6Mwx%A=%gs!q zmF!#sQRMK+)~V?ma($`U?Lv!*?{2(HX!RHiC8~NTnZE*j&$kJ(d4g0HPb zb;ThGuH%M75`5DIha|ww`wcN`9$EpQZ8uo)=kN_tL z(>v?zZ=i~uT_^E!DVTJe<1W+Cz^jqy?K~Jqn;Pm?!eGocj}C@(Fz8@x#hrtJ&XK`A zznzzQY9wy!3kJ4vwEoI? z=5VA4??kOn8=l&D9u94YbPfk?tVKOaAspNk1s#ssjEN3My!Z@W8q95im!ugziUo(a zZ}t=QxxL8XMa1I7HCHoBrb>#UC2REho4M%Ne_tjJr#$PG75-lFd zv2+%4rmK$ae^giwDN`R67MXd3OkuI_w8i^iNq=D5F&Mw4yu|xgrA`OFM^Ik$CubDO zi!}}<-UsuPkGhH}qB49~Kk6!YiGBDue$-Vq>1gu*OIK;QQ7~TsW2m~+(iw`))GC=_ z^tCxS%DZ+YHs22|6`Lc7mWs_QL`%i7 zdmQg+NnNS%WkUv$>ka63^5~@=qQw*M{gQOyM`IB}E4^Zvp!0;7g6r%jF{w^RLzTac zn6^4ON(_5u^TZL;F`POjrr0lMZ03^(gu^yU_8vH04Ie%202d%9-KVD`%RsXC!ReG#Kp7N1 zz$%A;PaQss>xzR)s^|k_$PnOD-H{N$2gY>%-=}`_xWBfe2v;0n2-I(oQ@(Oc#VSfV zzuTdMuVR*d)eQX751`F5{pvforXP@EoPM?JyweZIafBh+`$1hEa@wfNn6z_soOk(= zajBYqNJ^7D^_sA*;7?B^Z4xU@&=bL->3JfVG&xTQlcv@=z%rCY{k_ji6tSA`vi19n zpS7yEP#BE%LX{R52H56OVR#O%6$Y%hSQv_(tA*h@xm*}@Z>|?c*2M+GkQG;a9kifa zTrv<@TV#rB1|mARXdtqQs|G>_aoHciOO>(k`n^`hjN975+27E01>cya7|(EPjG^CF zY}&h~Hfa=R_Qq&4V{Zrt|MkXFEZ4iDoy&SdIT&la_eMJqC+3akw938F4y0)^o}YD1 zX5V`frluT9{#0EjTm8{o2V4Eo)VWswnvP?w{$N^ww~{daAdW+={$Qpvt==fDBdt8H zB|~o|s_B0Vzjs->-=s;A-mqf587|Ww(j{C-vsyt`f;szLC^5id7#Or=*}7nPnk?hR z3d+Z~aA^Vq;c|qqM*}SUh<^^>;Ga*2KK~OGQtknEpT;+Uh7=ZX%xj&m*bzX#&f-=2 zhJCll*1KZ+pX@uhix2*ST!Qf7@rVtFiu%uVv_%Fb*wJ6Yvm=(o8Nyzth#W%)?iO2U zxv2uWT#ndkw`~`Pe1#eO-xm3fr)^Mlaf1(oxigW9{c-R$JShFfs((Y#zw*e~2>XSJ zGofnD&tt8?M_@k2LCtE1n-A3(;j5mHd(??~)S3K^91n3z?kT$#b0b%Yb;x*z2zsMoS~&tA*gJ$pUD zUMKx}JqhZytlhKMvi1ZsULZ56FP>8-R}U~h8A^$_K0J(4nY|9&yEPl*@ciaUXCx!l zmsl-S*b_!yZvX7JRBO$VIP!InAw^_Jlkiaz%QL)1YN?VT5sZ>r!r`MNmUDRD)Y2wH zA{ZsL)rB(-N!$qQuRmm81^keb3H=6TUr=U{CBuj zfj^!qQ{x0bA7iSwnmO|>&Di^U_^|=w1+sy2ytx9y>iankH3-vZ@T*iUv3NR!h6!~Y zTft={QrUlXsHB+g-HJusicNkWDf1Jhvb{B5hM~P&psMLqHGXoS@%3t|KGK9p=$ht! zkfs=h9(C$gM>jeX@iNh{g_n8iq?*TzC8mZ??&CZL!#5W;27kG@p=q54hKg#0oa1V! zCkCfit*BqEY6hu6`njX8s$YCQ6owAq`s5?_Z3v1YBPUo*VQ9Q~Rn*!dF{I%T{4P`5 z9O%{xIU5HsG}VzOyy?IOi?<`JcQOrRwOU<^yk14MtG0jJ7{PiCFz-(rbhxk~&BOT3L8?RbkNzB^drzv91xa+bba$H}{5k-S5w$N0!z zFxlnHhv7BwSGe+HlV(`qDXxXZ)yG}0kSy0*KCVO8o4SA4fM`b^^oT#6kcWWCMjz=B zI0n}_J9;`&ng#g&*5JJ>whRIQ7_k2o98=&SyaT_W=DmE5Nb}wh*vr>LG&0nBM7Jpq z5e2W~fA1D~x@9puTP|*DuEb&uA0hE8eDNV|HtY`oPdFF(72@Tq5zBkE8 z-Iq|-UH~;3#ke!nz1&4rC!QZHDVRyea#6=}6FeA@i8LDeC6{BK__y73Xs$jKwaB1y ztn@;t5-wqWa(8mg32Q7a%2fl1`IFqOkTujeN-1}^VX~eWRlnkqUvVy}UJvn5)gqJg zvSfy8WnjA@?pe%kcTrL1r%)kXZHk9-`ak<)c(luS{7v~#;Uk}2#Y^=0!>+=%045{U z_T_s04%PPEMiu=r6s?XmWPHmZ`zv_Zei7SZRp65NYx}pj7Jj57;!cMJNpo&x=<>(Y z%R^YV*(sZfW}x|Dt}M(5zNvyOGOs*ruU-%vhf7})GSAOuCB2on%u4oC?t$EaHHEoG zfe+m*?iMBc`#mTP5^#CLnJGH)VVprNS*8W#xCRS|RoSW85f&QYxF-+ElJBcDifjkS ziq=1*`R#K3UfEuY>=v$<&x-tE_=aCFD>j%ugQCOXaDWqSaWm)O_+EH>w(Kp#4~)If z;g;?>`<#EsVZTWIy#=m0XE<1lhdx;N1+V%q-y9}{*;M-Vp|CY^)0V}vt8_UF`V+U5U}!_6i&jcT$=b;tZ1D1dd;6{ zl^DYpE?Xji)d?Gcdktp}-oZ=Q6!&wcjxvd_#F7zLYt3s-f$>Q1YM=-`AK);+>e^r% z)2q?1cdHG<&!d~gb~ByeWZ((Tu=L}g{8;{>>f`rMJiDUGvG_;u1kNB`jJCULz{Av5 z>;=|?zOy6r%%efCWZezB&DSdy*LT+V{@Zc^&Vbs6-2mUbYHit+KZJ*K-dNfA0WME| zf=oS7tu5=|z~`{jiDo`1DOmzTia4x>qm#q;J;w(M6Cq~RS*y)@!(Je7oJHmND@d9k zu86~#De{^QdRD{tbj;I)Wy23?zJ_!K1?Unu{3m=^E@on=8>H0Zu_TXH;4;nbihCRj zK2fpXxX`QH*(AS5sM+-h_8eYf;bTZp_6moAJ6rgY{154_+T!?xLa*Os6b{tWN z<-phV`ZW%P2<+gm&oYv@!rMUb4oVyi^hC@A3l#D??befOidf3?IeIhVf=4C(z^1-D zu93ukh$NA&exR+jS-%I<3X-Hw{$b9t^e!%NZD+gHb(%}&fsGQUK4q>}Tx()k&-tuU z>ItS>#nV@KO9I1%jq^^;E{${HBT-*p{hS0J0Kw>RJ|FYubF%CO@8Qd1d@d$C7M9sD z`Q*pK>?QxnC$$)Xa$USc0NBB+sTH*k$RtdMG@rrqQhi8Qi(&{IbU)-0ev>cY0SwyL zmddh)TABpe4*UhKyIKoywchMjs|RfL%i34A#?_n`w#GpM6%kp1VHc(@0ym8Jv<>Uj z`eSI1ZD_aY5~5#*@YrAXYn{6LX`nJBNB$oAQNiDcTMfLc!7w;zf;ON{ zZ@@$cCX|>#@g5m3>LqcW*8Fwy*%03Xzcc}-6qKFfRhqmwYAjq^DKi4>h zAn8Likrbzi#F6H;q6xPFccrPuQzKU6{i+vb2jz4?w-gNPrPQiqF(cXL&}!YpH+hIM z%rVhTNg3zL6cqw7yy|Oh9@fUQnu>=AmE$Q1eQEBZyv9`Z3VQ=07U%x$3;0non1)~~ z!&fj_J8GuKx8-P+>4Z+y>)>!0f71!BHa-}rhWZNN>UGPQeu4-lG-S(pYrF11!LzoBd|m`wM6 uaSXw!hMfnFlcP$&BbRZJ-$Urbuffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + # + (write _test-input-stream "type t {\n") # size = 12, which is not a power of 2 + (write _test-input-stream " x: int\n") + (write _test-input-stream " y: int\n") + (write _test-input-stream " z: int\n") + (write _test-input-stream "}\n") + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var arr/eax: (addr array t) <- copy 0\n") + (write _test-input-stream " var x/eax: (addr t) <- length arr\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file) + (flush _test-output-buffered-file) +#? # dump _test-output-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-output-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-output-stream) +#? # }}} + # check output + (check-next-stream-line-equal _test-output-stream "foo:" "F - test-convert-length-of-array-of-user-defined-types-to-eax/0") + (check-next-stream-line-equal _test-output-stream " # . prologue" "F - test-convert-length-of-array-of-user-defined-types-to-eax/1") + (check-next-stream-line-equal _test-output-stream " 55/push-ebp" "F - test-convert-length-of-array-of-user-defined-types-to-eax/2") + (check-next-stream-line-equal _test-output-stream " 89/<- %ebp 4/r32/esp" "F - test-convert-length-of-array-of-user-defined-types-to-eax/3") + (check-next-stream-line-equal _test-output-stream " {" "F - test-convert-length-of-array-of-user-defined-types-to-eax/4") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:loop:" "F - test-convert-length-of-array-of-user-defined-types-to-eax/5") + # var arr + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %eax" "F - test-convert-length-of-array-of-user-defined-types-to-eax/6") + (check-next-stream-line-equal _test-output-stream " b8/copy-to-eax 0/imm32" "F - test-convert-length-of-array-of-user-defined-types-to-eax/7") + # length instruction + (check-next-stream-line-equal _test-output-stream " 51/push-ecx" "F - test-convert-length-of-array-of-user-defined-types-to-eax/8") + (check-next-stream-line-equal _test-output-stream " 52/push-edx" "F - test-convert-length-of-array-of-user-defined-types-to-eax/9") + (check-next-stream-line-equal _test-output-stream " 8b/-> *eax 0x00000000/r32" "F - test-convert-length-of-array-of-user-defined-types-to-eax/10") + (check-next-stream-line-equal _test-output-stream " 31/xor %edx 2/r32/edx" "F - test-convert-length-of-array-of-user-defined-types-to-eax/11") + (check-next-stream-line-equal _test-output-stream " b9/copy-to-ecx 0x0000000c/imm32" "F - test-convert-length-of-array-of-user-defined-types-to-eax/12") + (check-next-stream-line-equal _test-output-stream " f7 7/subop/idiv-eax-edx-by %ecx" "F - test-convert-length-of-array-of-user-defined-types-to-eax/13") + (check-next-stream-line-equal _test-output-stream " 5a/pop-to-edx" "F - test-convert-length-of-array-of-user-defined-types-to-eax/14") + (check-next-stream-line-equal _test-output-stream " 59/pop-to-ecx" "F - test-convert-length-of-array-of-user-defined-types-to-eax/15") + # reclaim arr + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %eax" "F - test-convert-length-of-array-of-user-defined-types-to-eax/16") + # + (check-next-stream-line-equal _test-output-stream " }" "F - test-convert-length-of-array-of-user-defined-types-to-eax/17") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:break:" "F - test-convert-length-of-array-of-user-defined-types-to-eax/18") + (check-next-stream-line-equal _test-output-stream " # . epilogue" "F - test-convert-length-of-array-of-user-defined-types-to-eax/19") + (check-next-stream-line-equal _test-output-stream " 89/<- %esp 5/r32/ebp" "F - test-convert-length-of-array-of-user-defined-types-to-eax/20") + (check-next-stream-line-equal _test-output-stream " 5d/pop-to-ebp" "F - test-convert-length-of-array-of-user-defined-types-to-eax/21") + (check-next-stream-line-equal _test-output-stream " c3/return" "F - test-convert-length-of-array-of-user-defined-types-to-eax/22") + # . epilogue + 89/<- %esp 5/r32/ebp + 5d/pop-to-ebp + c3/return + +test-convert-length-of-array-of-user-defined-types-to-ecx: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + # + (write _test-input-stream "type t {\n") # size = 12, which is not a power of 2 + (write _test-input-stream " x: int\n") + (write _test-input-stream " y: int\n") + (write _test-input-stream " z: int\n") + (write _test-input-stream "}\n") + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var arr/eax: (addr array t) <- copy 0\n") + (write _test-input-stream " var x/ecx: (addr t) <- length arr\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file) + (flush _test-output-buffered-file) +#? # dump _test-output-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-output-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-output-stream) +#? # }}} + # check output + (check-next-stream-line-equal _test-output-stream "foo:" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/0") + (check-next-stream-line-equal _test-output-stream " # . prologue" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/1") + (check-next-stream-line-equal _test-output-stream " 55/push-ebp" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/2") + (check-next-stream-line-equal _test-output-stream " 89/<- %ebp 4/r32/esp" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/3") + (check-next-stream-line-equal _test-output-stream " {" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/4") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:loop:" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/5") + # var a + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %eax" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/6") + (check-next-stream-line-equal _test-output-stream " b8/copy-to-eax 0/imm32" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/7") + # var x + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %ecx" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/8") + # length instruction + (check-next-stream-line-equal _test-output-stream " 50/push-eax" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/9") + (check-next-stream-line-equal _test-output-stream " 52/push-edx" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/10") + (check-next-stream-line-equal _test-output-stream " 8b/-> *eax 0x00000000/r32" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/11") + (check-next-stream-line-equal _test-output-stream " 31/xor %edx 2/r32/edx" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/12") + (check-next-stream-line-equal _test-output-stream " b9/copy-to-ecx 0x0000000c/imm32" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/13") + (check-next-stream-line-equal _test-output-stream " f7 7/subop/idiv-eax-edx-by %ecx" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/14") + (check-next-stream-line-equal _test-output-stream " 89/<- %ecx 0/r32/eax" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/15") + (check-next-stream-line-equal _test-output-stream " 5a/pop-to-edx" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/16") + (check-next-stream-line-equal _test-output-stream " 58/pop-to-eax" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/17") + # reclaim x + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %ecx" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/18") + # reclaim a + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %eax" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/19") + # + (check-next-stream-line-equal _test-output-stream " }" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/20") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:break:" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/21") + (check-next-stream-line-equal _test-output-stream " # . epilogue" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/22") + (check-next-stream-line-equal _test-output-stream " 89/<- %esp 5/r32/ebp" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/23") + (check-next-stream-line-equal _test-output-stream " 5d/pop-to-ebp" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/24") + (check-next-stream-line-equal _test-output-stream " c3/return" "F - test-convert-length-of-array-of-user-defined-types-to-ecx/25") + # . epilogue + 89/<- %esp 5/r32/ebp + 5d/pop-to-ebp + c3/return + +test-convert-length-of-array-of-user-defined-types-to-edx: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + # + (write _test-input-stream "type t {\n") # size = 12, which is not a power of 2 + (write _test-input-stream " x: int\n") + (write _test-input-stream " y: int\n") + (write _test-input-stream " z: int\n") + (write _test-input-stream "}\n") + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var arr/eax: (addr array t) <- copy 0\n") + (write _test-input-stream " var x/edx: (addr t) <- length arr\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file) + (flush _test-output-buffered-file) +#? # dump _test-output-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-output-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-output-stream) +#? # }}} + # check output + (check-next-stream-line-equal _test-output-stream "foo:" "F - test-convert-length-of-array-of-user-defined-types-to-edx/0") + (check-next-stream-line-equal _test-output-stream " # . prologue" "F - test-convert-length-of-array-of-user-defined-types-to-edx/1") + (check-next-stream-line-equal _test-output-stream " 55/push-ebp" "F - test-convert-length-of-array-of-user-defined-types-to-edx/2") + (check-next-stream-line-equal _test-output-stream " 89/<- %ebp 4/r32/esp" "F - test-convert-length-of-array-of-user-defined-types-to-edx/3") + (check-next-stream-line-equal _test-output-stream " {" "F - test-convert-length-of-array-of-user-defined-types-to-edx/4") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:loop:" "F - test-convert-length-of-array-of-user-defined-types-to-edx/5") + # var a + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %eax" "F - test-convert-length-of-array-of-user-defined-types-to-edx/6") + (check-next-stream-line-equal _test-output-stream " b8/copy-to-eax 0/imm32" "F - test-convert-length-of-array-of-user-defined-types-to-edx/7") + # var x + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %edx" "F - test-convert-length-of-array-of-user-defined-types-to-edx/8") + # length instruction + (check-next-stream-line-equal _test-output-stream " 50/push-eax" "F - test-convert-length-of-array-of-user-defined-types-to-edx/9") + (check-next-stream-line-equal _test-output-stream " 51/push-ecx" "F - test-convert-length-of-array-of-user-defined-types-to-edx/10") + (check-next-stream-line-equal _test-output-stream " 8b/-> *eax 0x00000000/r32" "F - test-convert-length-of-array-of-user-defined-types-to-edx/11") + (check-next-stream-line-equal _test-output-stream " 31/xor %edx 2/r32/edx" "F - test-convert-length-of-array-of-user-defined-types-to-edx/12") + (check-next-stream-line-equal _test-output-stream " b9/copy-to-ecx 0x0000000c/imm32" "F - test-convert-length-of-array-of-user-defined-types-to-edx/13") + (check-next-stream-line-equal _test-output-stream " f7 7/subop/idiv-eax-edx-by %ecx" "F - test-convert-length-of-array-of-user-defined-types-to-edx/14") + (check-next-stream-line-equal _test-output-stream " 89/<- %edx 0/r32/eax" "F - test-convert-length-of-array-of-user-defined-types-to-edx/15") + (check-next-stream-line-equal _test-output-stream " 59/pop-to-ecx" "F - test-convert-length-of-array-of-user-defined-types-to-edx/16") + (check-next-stream-line-equal _test-output-stream " 58/pop-to-eax" "F - test-convert-length-of-array-of-user-defined-types-to-edx/17") + # reclaim x + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %edx" "F - test-convert-length-of-array-of-user-defined-types-to-edx/18") + # reclaim a + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %eax" "F - test-convert-length-of-array-of-user-defined-types-to-edx/19") + # + (check-next-stream-line-equal _test-output-stream " }" "F - test-convert-length-of-array-of-user-defined-types-to-edx/20") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:break:" "F - test-convert-length-of-array-of-user-defined-types-to-edx/21") + (check-next-stream-line-equal _test-output-stream " # . epilogue" "F - test-convert-length-of-array-of-user-defined-types-to-edx/22") + (check-next-stream-line-equal _test-output-stream " 89/<- %esp 5/r32/ebp" "F - test-convert-length-of-array-of-user-defined-types-to-edx/23") + (check-next-stream-line-equal _test-output-stream " 5d/pop-to-ebp" "F - test-convert-length-of-array-of-user-defined-types-to-edx/24") + (check-next-stream-line-equal _test-output-stream " c3/return" "F - test-convert-length-of-array-of-user-defined-types-to-edx/25") + # . epilogue + 89/<- %esp 5/r32/ebp + 5d/pop-to-ebp + c3/return + +test-convert-length-of-array-of-user-defined-types: + # . prologue + 55/push-ebp + 89/<- %ebp 4/r32/esp + # setup + (clear-stream _test-input-stream) + (clear-stream $_test-input-buffered-file->buffer) + (clear-stream _test-output-stream) + (clear-stream $_test-output-buffered-file->buffer) + # + (write _test-input-stream "type t {\n") # each t is 8 bytes, which is a power of 2 + (write _test-input-stream " x: int\n") + (write _test-input-stream " y: int\n") + (write _test-input-stream " z: int\n") + (write _test-input-stream "}\n") + (write _test-input-stream "fn foo {\n") + (write _test-input-stream " var arr/eax: (addr array t) <- copy 0\n") + (write _test-input-stream " var x/ebx: (addr t) <- length arr\n") + (write _test-input-stream "}\n") + # convert + (convert-mu _test-input-buffered-file _test-output-buffered-file) + (flush _test-output-buffered-file) +#? # dump _test-output-stream {{{ +#? (write 2 "^") +#? (write-stream 2 _test-output-stream) +#? (write 2 "$\n") +#? (rewind-stream _test-output-stream) +#? # }}} + # check output + (check-next-stream-line-equal _test-output-stream "foo:" "F - test-convert-length-of-array-of-user-defined-types/0") + (check-next-stream-line-equal _test-output-stream " # . prologue" "F - test-convert-length-of-array-of-user-defined-types/1") + (check-next-stream-line-equal _test-output-stream " 55/push-ebp" "F - test-convert-length-of-array-of-user-defined-types/2") + (check-next-stream-line-equal _test-output-stream " 89/<- %ebp 4/r32/esp" "F - test-convert-length-of-array-of-user-defined-types/3") + (check-next-stream-line-equal _test-output-stream " {" "F - test-convert-length-of-array-of-user-defined-types/4") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:loop:" "F - test-convert-length-of-array-of-user-defined-types/5") + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %eax" "F - test-convert-length-of-array-of-user-defined-types/6") + (check-next-stream-line-equal _test-output-stream " b8/copy-to-eax 0/imm32" "F - test-convert-length-of-array-of-user-defined-types/7") + (check-next-stream-line-equal _test-output-stream " ff 6/subop/push %ebx" "F - test-convert-length-of-array-of-user-defined-types/8") + (check-next-stream-line-equal _test-output-stream " 50/push-eax" "F - test-convert-length-of-array-of-user-defined-types/9") + (check-next-stream-line-equal _test-output-stream " 51/push-ecx" "F - test-convert-length-of-array-of-user-defined-types/10") + (check-next-stream-line-equal _test-output-stream " 52/push-edx" "F - test-convert-length-of-array-of-user-defined-types/11") + (check-next-stream-line-equal _test-output-stream " 8b/-> *eax 0x00000000/r32" "F - test-convert-length-of-array-of-user-defined-types/12") + (check-next-stream-line-equal _test-output-stream " 31/xor %edx 2/r32/edx" "F - test-convert-length-of-array-of-user-defined-types/13") + (check-next-stream-line-equal _test-output-stream " b9/copy-to-ecx 0x0000000c/imm32" "F - test-convert-length-of-array-of-user-defined-types/14") + (check-next-stream-line-equal _test-output-stream " f7 7/subop/idiv-eax-edx-by %ecx" "F - test-convert-length-of-array-of-user-defined-types/15") + (check-next-stream-line-equal _test-output-stream " 89/<- %ebx 0/r32/eax" "F - test-convert-length-of-array-of-user-defined-types/16") + (check-next-stream-line-equal _test-output-stream " 5a/pop-to-edx" "F - test-convert-length-of-array-of-user-defined-types/17") + (check-next-stream-line-equal _test-output-stream " 59/pop-to-ecx" "F - test-convert-length-of-array-of-user-defined-types/18") + (check-next-stream-line-equal _test-output-stream " 58/pop-to-eax" "F - test-convert-length-of-array-of-user-defined-types/19") + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %ebx" "F - test-convert-length-of-array-of-user-defined-types/20") + (check-next-stream-line-equal _test-output-stream " 8f 0/subop/pop %eax" "F - test-convert-length-of-array-of-user-defined-types/21") + (check-next-stream-line-equal _test-output-stream " }" "F - test-convert-length-of-array-of-user-defined-types/22") + (check-next-stream-line-equal _test-output-stream "$foo:0x00000001:break:" "F - test-convert-length-of-array-of-user-defined-types/23") + (check-next-stream-line-equal _test-output-stream " # . epilogue" "F - test-convert-length-of-array-of-user-defined-types/24") + (check-next-stream-line-equal _test-output-stream " 89/<- %esp 5/r32/ebp" "F - test-convert-length-of-array-of-user-defined-types/25") + (check-next-stream-line-equal _test-output-stream " 5d/pop-to-ebp" "F - test-convert-length-of-array-of-user-defined-types/26") + (check-next-stream-line-equal _test-output-stream " c3/return" "F - test-convert-length-of-array-of-user-defined-types/27") + # . epilogue + 89/<- %esp 5/r32/ebp + 5d/pop-to-ebp + c3/return + ####################################################### # Parsing ####################################################### @@ -8836,7 +9091,6 @@ $emit-subx-stmt:end: 5d/pop-to-ebp c3/return -# TODO: actually return the length in array elements, rather than the size in bytes translate-mu-length-stmt: # out: (addr buffered-file), stmt: (addr stmt) # . prologue 55/push-ebp @@ -8881,6 +9135,69 @@ translate-mu-length-stmt: # out: (addr buffered-file), stmt: (addr stmt) e9/jump $translate-mu-length-stmt:end/disp32 } # otherwise, the complex case + # . emit register spills + { + (string-equal? %edx "eax") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "50/push-eax\n") + } + { + (string-equal? %edx "ecx") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "51/push-ecx\n") + } + { + (string-equal? %edx "edx") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "52/push-edx\n") + } + # . + (emit-save-size-to *(ebp+8) %ebx "eax") + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "31/xor %edx 2/r32/edx\n") + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "b9/copy-to-ecx ") + (print-int32-buffered *(ebp+8) %ecx) + (write-buffered *(ebp+8) "/imm32\n") + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "f7 7/subop/idiv-eax-edx-by %ecx\n") + { + (string-equal? %edx "eax") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "89/<- %") + (write-buffered *(ebp+8) %edx) + (write-buffered *(ebp+8) " 0/r32/eax\n") + } + # . emit register restores + { + (string-equal? %edx "edx") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "5a/pop-to-edx\n") + } + { + (string-equal? %edx "ecx") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "59/pop-to-ecx\n") + } + { + (string-equal? %edx "eax") # => eax + 3d/compare-eax-and 0/imm32/false + 75/break-if-!= break/disp8 + (emit-indent *(ebp+8) *Curr-block-depth) + (write-buffered *(ebp+8) "58/pop-to-eax\n") + } $translate-mu-length-stmt:end: # . restore registers 5e/pop-to-esi @@ -8936,7 +9253,7 @@ $emit-save-size-to:end: 5d/pop-to-ebp c3/return -emit-divide-by-shift-right: # out: (addr buffered-file), reg: (addr array byte), n: int +emit-divide-by-shift-right: # out: (addr buffered-file), reg: (addr array byte), size: int # . prologue 55/push-ebp 89/<- %ebp 4/r32/esp diff --git a/mu_instructions b/mu_instructions index 754f51bb..865572eb 100644 --- a/mu_instructions +++ b/mu_instructions @@ -191,7 +191,7 @@ var/reg <- length arr/reg2: (addr array T) | if size-of(T) is 4 or 8 or 16 or 32 or 64 or 128 => "8b/-> *" reg2 " " reg "/r32" "c1/shift 5/subop/logic-right %" reg " " log2(size-of(T)) "/imm8" - | otherwise (TODO) + | otherwise x86 has no instruction to divide by a literal, so we need up to 3 extra registers! eax/edx for division and say ecx => if reg is not eax