)+l@)#Zbt?yzdVVxW{I#?ZJU-hn>drq5LNp0rc1L3VUF)zP*!Qda% zN-y7&qsd4yYh^h#tX#7#Q5&I6+9|yG(2b^TbQ7O7iFK!O;8h2{R{ouY^-_|tG7pEG z#yUun;FXPaMy)cpJ}{mKpSdAn#)q~o@51iQylc6+ciZm!gCEk+_ZMCIAq#l-tSWf? zro@PC!(du-C$VTFSs&qDbqI=F3f>*PC*S%t-B{jIf*Jw3+za`i)ya=n4Lf`c2QT1B zf*>t!!bXKY?7nh$6p8`{XAL!OXX77}sDP5rb;|{kg;fRBDmEakWCEGz1fH9HufQxO zJ6`gr;AO7Ew&UVHL2my9Ct(+t-x{9Pp7@xlt&!0|x@9Z}z4^}WE}RSBO{zi?uq+Jv z=& >oW(2J+0Ub+=%`oHjxPH|A2U75jxF0NFl#B$4lsu( z1-;70N6qF54A@Y$0iq5zo*XA|v}ZcO#TL~!|7wQ+C^Qj(+N`m%It7(WBcvS ko5i12p#6xlZwnZh#6;5IR%x(3REMEn3Rk1U3huSA)M8ZAa5|d}Ok6QEmQ9Pw| z(u}374V9swOrt#@bSG^}{trbR=;{aVUaR8f?um|V_&cY7bfnw*XU@iM)J_NU3p>BB z$M;0UTl!Lvdf3mIb_08afZ4_^|NQo#UO41%1yi0XzWIr4Wle;zLM>Mg$Fl33bOgi(4b*l^8au~s@Ix$SaK_^3tUph<^@<`C9HVNU*haJhi zPaM=9Fz^=w!C+up=XlvIYSIzKc_3!qOVWVM3p!n2>DATst3rabNI%ej{AdE%i<0pU zylftn;1JmCQaae|di}2U0K3_k#5zp-fL(DjuVYin_Pc`cRMh3(7s!TuYA%E(#|@ml z+w`l`xp;bHVDH# 1DTIkk21^#lPxD-!)jq6PwH@amsp+CBv0QBMjep1Ag&RBJ7bKkV z$#ZHrYavFp-77(H>mx`z-{~9`zwY~hzy;Y-I9vO+m!4h Kf-ewucgQLN*Z0Dn9qu9}^en M&AX(a!aO-$DZi?MHtf|) zAL$Qv_irL~gJrJX0Df(d9?lVQ{VAJuHqSiiqyfpo_qC56^CL3Cb_0Y9px8xz5roFO zS0OMj#(F0}v+4*WEZ4f?QT?X;MaF;(?F+AiKW@YgIJ1pkV*ZYDm#x4ishlaW6>^zJ zlnd|#7i2ynIUu*7YpUBX^TJ;RjSPH(d{Owfi8Xa4hAi%6RC+_edDwubsYj$SiR>%l zSwZGK;x&w)E27pvZb1Xk9FAR$%df?pi@x2m&?=Zl;Jsro^6?=b!fG_%I0H(yKQ?F> z3xpap8-9@tKGVL7o(y5V#n6I94SR `MZ|cO_DqQB+0!cG$;C%5t z+N{HSt=gi)JJvRY$PRwr#FzF_Hr>h~n%3!p@5^M%A6ezjYM=FfihL(?D{Pa$DFI}b z_4{QqsBLx6*4(e(&K={ dG1IoiqoAAlb}#oM z5wjuZNktn_g+qeOzZsU+9WbIbuE;F~K~)sJ=o?eNo0nOB@M*>*9|yi!)?MyKd%Q4| zoJKO={x!iM8(r85>q%6@McGB3Vh?#-255gy_C1p#a*2jXF8QC~?=Ex(9t;d7uSbAI zIl>@D)SWatO<8m)5Xi|&GDKvFg9)3(jb$)joC!|pMD{%^la#l^@+~OR=e> rTz
r+)9Lr`;$*P{G8XPD#->LdVp`sBArgm$PP+U3;x$$f`aDOiyN_6FD2aO z<|P{0x%^amj>6c7>WTGRP-A4wu+G`d$ruF++=BzAS@u1 w%*5#O}ghj(Fblf%1`F8bs5eH49$Tf=c9yipQS-M_TJOr~=7;_YJ UEN~8iG~EPRpQeV1D~OH`8oi zd|2Jc;8DvT# A4yZT_A6Ryu^y}?D GCm@{^_0UeL#XvwiEP6j&!=Ub;-aq;Qo zf`ApaGJ|i8+Fo@5GqpDvOm`6&M_O6cGF*%=&TrUmq5+hmpIW)xn88DkTBh-Oxq6GH zx@AJ=lWFpALq`JaEu(FRijQ(;H>&xC%P-6GNxmR!?E{kJNDI)A_F|*Bu>%!=i@mUs zf9B8*i!N5)?oItH7W@&*z$<*9sbf_v(x6M;R%|9V{^*A4_Ie2=zkAxzh|j5LrYno? zkU{5cmGut=sY%};QbX!4vW3UYJ~1XlKLSR#0r;}^6M66sv8aDz7;2xAf}P$dyaUNg zt<6S~he8b_Ui;)$ox~8N6K!({GKsc4#ajXE)pp;odDqf;RvHdz@}xTJ`K2QFRf3~4 z7>WXe4r6}zJ7*-$k*C#S{J=ad8dO>gKEJQ=Vk+AY$$5pSyc>6U87g|u=sSHlDH&xv znEF@Iwxk@?tzxo6Kx%ZFp c2pH}k0MP$~x+dG6X17)HD JL QL=4D$_~cXWg{Pe}tpL<4drR}M{={5&_6F$CGXs!AIR>`!a9@ l=6PrCS> zN-J0LH?iK~MWez`xRu?nZqcO3p6S%Lf3*) Q?93rxN?vd(HGidT+|UHK3{+9q)DL#dY$DK0wP^ zqs_H_;miJr7n!Y8*Q48( 7ETHhk|~Sh3&>p1Y3LdKK>Xu|_4V0W;fK@0dhUSKQaq82?@T)?V+v4CoGM z97(dn{egaPrA_x6??(W{vozwF)nZqlRO4IMeGk@WWIFUs5buPtQDT_6w=xM=@T1b$ zr0Vn6K(Y{{6X$VHs|L^F##K5{t_;X#`De~Xt0WQ!^ZPRX8Q|4faK2IBdLo{Djj4Wq z^scz&T !iN)VY?R#bt{3lA|H+xG*&YIq`-qDXWsg2iO z^S?U32yMaznpS&R93?h>iYg_Sez^c=YY|)5cI&;Xs=SeLbP-8+s16%jYEmo9yy+GV z`9hnhE+hN}P8GrXF#1IuzsScS8-zdFtrp#xH0Lws8L$TPP*K*IYR{S9PQ^4<4XbTG zgp_3EJ8U@RY-UT_Z=x@%w+Hl@!NsXsH1$cEypHAN@~w&8^TC7HaLi~P-%X7Y>u{p& zX~ZJpv=we{N@M6ek`0&Bw)HYbL^C1XigfvDuC+V}ll}m8DJO+zU!oF7mIe>VE)dQm z$pLS%eOK*SAtCN9R{3N-$oF!-`|FB#^L2&4_grX~faY?lmyVGBGLzF{;Hiwn!_pd& zg<8TNno8>fd~ujju=J1vlv|Oh?_H;=bO6^!`uGUvEvdU~EEip)4!wcPATP+pX{hgN zO3KR4c+b)JLzC&k!_+-*wZ9aIvNaDN!K}2}#UA?9Ze)o=?zAT?9WF Be-USt0)K6 TQZA^H`Q^ zLe2376#s#3dAZ}pF1;@GeIo)V%`Ia`#dY<>)ws+ulP4!nR`R~U+b@|X9U9Ghv>DUD zt_&Rv9+@$LZ%hHn`D<0njkUcZBK4WjcutVp=9ln^;Yau%d5(U1IPm7w4j 9_S?A98YH3#*%tJJW@2-WMjgi+=qGrYU5 z{QT$D@pL7Aa$&yAeB>dW)ON%1TB=s0Hsbp|kaEXv4+4c4GW*4v!J!YSW0vTVH&+ z`r -M}z!&~FNBTOZ?{BaRYgMwhOs-gs zc~U%^QoQPeXi={F5>4}S5dm=bVw?NT;NpcYvKEEdi h<572VQF_Gh>Hzo-Y33h04xu8ulVmODC3t z6a%;X2-2c6o4@B7>q9qM`s_Nd$6c5yvZb%+Ef2{cq#t!SDC)}RCtPQlaOgPHP4@Z1 z!j|e{`K~iyI%6@4{4^7CDExG52yk1~`>NaSu}2c#bGd$%#Rh!l^LKs6R1zr_`VrpK zQ0u8!p*FTGjB=n(WC3imh#CeoXoJihzIF};g;NT>)z#zXf~Oe6yDv@0XO~~x%dY!d zY1?p}hR!`AOZCrgYt3P1eZ%7UK+12jy1=^oIC-UJt~8%#m>8BF5d0qPmMM<>6U-X5 z6Uzh3U!20E`qEQ=N*37HC?XSvgrkL|+`)6-cG7)GC@e{cOS3{nz$%_r%Kd8Yu41g` z4HfRTa4asUE2i2Sv%oFpQ!W-!&gu1L#4e|6O8d_b)pli4Z%5X1`b0NACGaQRE3TsE zNyg$S)nUjkBdeK2b-s4sSpN-oE=9&TZ^vSfla89>z$+`evn@5L9`lwN=_f`75z z;JC4gL BG{3NU~qP6QzMU;A0VC|n~R-}%dhI3 z@%RAY5UyuxNkh4%L!1v0^#T4{5lj0=BM1DZ?yUM=tPub{(65(QSxyh}E Rw4a%g;gFI_|opRVUTo^kxS5cBijm^HJCS^fBUrkFxcNU;`4=2os6#tKZx zeVeXPS(u^TRaVx<#^^;iv&~i3f7o>UkC5(hmGAQJ>J76FDv<<3%4pfjJD!Pruv*mE zJYJnAQqF^ +_m(V$RX((6QkuY5cSJm)))Yn1vk_%o`qoL+`YNEk?ynHb^h)`kvnSOhGhfU_V!T z5p~N#5|xPD=}8gnIs>F@UUA!m>DtzfKU;H{P&?b%nZN31xENOQSg(YE7A+kx;qjFf zXWmsm $iDBDyQr4+1fn~u4aMlgI<#uJE(JF7uwxc&0lD_x9L6$ft z9PD7SezAwFJr!FC68z^%$-8}+o$~l}zWifVLFW*|dE(mMhFz{okKYl z0!TUufq2Q;`$REcynN;AqUa_GNc-P^LZrswh?}4!`Ta3Xa^IAWa@D#jn$(Gf7i*&7 zPws9OaZ8$E73be^f*sf%wokf$ -}|BIn@FqDmWXugefcnu5VjOR^#_|W)-+te(!sw+ZM zo mfIf&vR;jOgHI#~MT=oy1IrGa*YvtwNvPRdjT6;L zO0s^%4x~5Zntta)^xv5T>DCb@XO)LCLg&ll@!^^$8KZ@i-YYu%r*11do((ZEaXDXO zKy5<}Ifbh#S36Z#3@a9Vox4>TJw0XD?BDJTd(Q5EQ~IT(4RQjdqX*ESy}bn`T)*=3 zcK#cuAC%>t1Uc{|$$y~b>t!`8pe-eC*=ueuHKP(?H>v;OlW$|y^PyY0Djr*+6{lsP zg55_C_2wXRe*JIgH7XN@nVD?~ljYLG&AgBrIaCprIjaa_rKD^9xFNcxPP=mD#uj$% z!aIGe%n-d~+b~&bmB`~k1k>HzfG+EB*|mLw1TD3J^CPE9NvT{{^i%Y=MxMr;4e%P6 zbJ#8TT5wv+I;|)-GNLt>-15+!3p&T3u$Xdm)=sBscRN1MB5I`};d 8LDFC>Ki&12#mJ7M3Zkj=02^l~0?rN3ljuNqzH;s)JbFg} mIlbTG8 zyV=K@KP6uGMl61l^b5Q`G5$bJ{;NIcedj+k0$y!Vf;9K(>=UtMzm8`3XJSn_IG0as zd#)SC_1`(RTi(d8@#FUj!UhM&{R>q!C@RIfsAJn;bl1*Q;)>;$=T#JIYraxdf5) n?=Jt*UdJ7_i)znEfZhJ`Xw>@9zAd;+VNsd=oVoNE;QzyL#$ zGt|;Dj7yE6tHk$n3^4afF?d=zlv-MrD0avoU>Kj6Mtj7>LVxxhv$V0G#KgK5ku4&O z|0TUVnmnv@%>c5*U9qC4SR8Bi#*9Rn`?)mTNsfC2nDfn9qoDz8^N0jMD3C`pxC(@L z3#_`>&9sJvvxb0TyK|=s5+}4Bx6~A8z%2y3r1j}-K^~=l^dDn>(UyPuO^_DO^Pu+r z2>B<>-zRrj;TO#3%>j#iegO@HR_?HwkyQ|HGl^k9+)nUb8r@EN(s*W^^|1Ngec1Lh z!ypy7IB+wMj6C|SVI)%=`RkQ!_uR3N8_0x5mOD$hY5Y7RH8{5p#;@E*ih&QTaIu)X zzKT4f_wa}k_DE0wMpep((c|o6b0pQPmcM%;92$?C-a0-)bXEkZs`u@y1U{6>8o;~A zG!F26TJfV@QHSmkMx`DGkBTS(Ws({AkNbvMnTw)n1Ak#P;KSAo|3qPM+?AAH(7!oh z3Emr0^7*!J&f
JKQdU#G->*P&n>HJW4 z_r{W!^p8F78_brA-xS`n-sTmQq4hlN9r`Ts*dq{VN9Yj;oOqR|=jX}MDvAT}yjyk1 zHUHd2KcmgFd;ypU@e0QUsjAYD9OY$CA jyH1*%#zRq##`|Psuy{3%BeX3#&?6Z-mao#71wa zy)+67#_<+24az4eMv^k$u2gnoGdEf~8UeH&S;iD*mI3^yA6E{qP!XBn6At-faNq(` zk?64%fhHx+;#y$~^MpS!tGA$Bp=lA**!j5pM?k|&$dtz7lf_%11~xg6DYnIxE3d)> z30!3%uJ;e#Mdbvv$QPRSKV69zQ=?&PbA;MLO!c&7qtn+MQ)QrGIz;Z6&o6li1W!8j z#0O(xi?VEKB*5o>?!Q?iqkpqV(9o<19Q+c8dG)<}wQmxEI2vI|MPNr>t9~dF*h>-M zHJ4nC3T-4o0b|&l35QBhqTKOk7SR2A|8m3X*Z3$>fQ tM z1X0rnA)V|$L7nee_P%Qn3R#om|K6aTQh8YE7Rm{1oSf2^_crm)fbC)@>|;!LzQ3Ym z1I>~(f{5gwF0L_S3USw3l^dC@YOV}Vs`ZXv9xmEAjX!(DADPPs9gB~4(Y%=zfOpkv zVtJWfLj!;OA|_T3)xg)7x1qnLpAGu}b46>Rby#X<=DK{^-iID6wcw)rV`y`%)c?*Y zNowvmTw!X;N8y@(ApXaS9H;e5@B`{3p1-_QhUri_15UHDU(VcBoQekF!SBeUdFbZCX3pCtlqAg#CCTm9DVH8zIW3jDk@+2m zmddEuxa@grk-vMGlP{4GO}2A1kxiIPPB8)VHATPO?f5TyL5n3!ht~nuq9yf =K6b;@C*whL$SSObK>T<)aZ-Apf4%{)CVCm?|SU1c1X_1j&m?x z%hcJbVl2`-*hyeYOjAe=Q)g2x6whoGh (FU}!ZCu^s+Z$gu(t+1 zxMaKs!Z0dl&)UD4b_*~-O5}%t!l&`Fv6-h?U&|g0Y2ZU!WNZ**SN7~}0$pTN#WB}Q z27pCynk1Hi7!Y^33D24?L2qVin5a$|04)Wr$ps(d4h|$2qm(` p zGDo`GZv;4SM5!Lu4l{#3R*y`mDIbr908hDaxb$`oDY5*2ozxMtw{I<6>S3bdFUCNN z-7O*>9t$|-M-&>6$Sc7O8Y^d=gT-Bs{y6>xtca0ecbwB$VPRUpN?niEYp;&s8>fZ9 zt^>?oc5v)<8lJyg*6p 0X61{PnS+5ti=|p#$eHkW=8* zCXpaOa{qb}XOBr3RlsU%R)AGQ9y--W1ZA`A)pXGj(cJ<92rMztI^Y+=3|ncf gE;})HI4N@emaN_RPJG2kzNwM}QGin_jr=MOR&@_T#%@bDlc2BPoa{%BM zaIHB0J$`(mzyH8)m&1qZ-&88083`)vQ#ImeF-;0eG-bcuR;Se@ygWTDp4p-@PU&W# z`Fw8I54^A=Js$iu-d*njkhy9^WW89HB*Fk56bott{SIBARH%eRjoJhN0y1I$PbXIz zmGrj7F- Ex($kHuH z)+;R1P69tS!murF%Tydeb)Pz6^ !K;W=`jr}e~Y)ep0P9kBvy}qQhfHxI#I3!6xNf5h$@l5;B zkcW^nc(zUUZZpMdPktJ+Phin6cw2sR#^91KMsrNnvB6xP?oq1o=yTnC#EcX<|0@4%;QQ)%LA!~ILVT-Y6jh!m5uZ-dcTx!D4n+=zl+~!}(KE4U-XWWp z>{TorPQShTv2W*bqIl!7veAT=#la;lO!H70HEDJO)`ET$+RrQIn9#F%8JCq7DpQO? z)mm eH(gIOPEIeb;yw$Ajs8^c3x89> zo|w7x3*-g<@|48`Nw4NvFEy^+O7U0M^XFs)k0n5Mi2HaA1m&5X`a9UfSS{a4P)(G! zVTEC9wA2GRl0IgpHR1@GTUf;nPV49&m#R1J>+k8cckF%L0}lO^jflM+sjjA*NugX9 z69_U0znW>L>qCI^WJPA`5VBo*j_M9%{zpwIG_InvX<$o?1>Nqi?HZ`-h|P9ne|bIf zI-|Fn>r}cQujuram3q=IQM-&+S9P`0`% {&llmp=U0ntcIWKD z4#K8MPjasPAI=(#%3DW-oP+}<0ZC!DPyH^s4kN_l+LZD0T-WT(oK2oNidob_uWt(( zSlppU2NGrcbDx@Mm#vYVxR43z^YEiCzD)9{ORR5Q4)7CLkAf3wu^`aK)9ZZ!{5XlU zwMoL=TMo0TDMJZj4ydSJgnokWLx}?pE2fsVPN)Pu0Iwai0@cTThXGgUVaSE3C=f$6 zx-UHH5f$$Dl<}^K;&BG8ew%T;rD~uegxy-b`LzrDoL4IUrI@RKZ;e!kfsoVGJ-K^L z8GgE^kjhi04p*aOPYhbq-w$D0OzzLcm%J@vO%;1wv4 XtC8yGY$GXwIZvYt`1r5|jw^f)1m z2z_6Pvt?>iw**d9s3F^N6mu)Xh;g+ub6C;g(G6psPG0Dd2+~MP7~VHpg$)%Yp q+I5qh*ud zJbgfB)0(SNOZ2Oa-PUer9xHm_x|3h-<=YM9L>7GOKpeP=-qdMy^2vrjca_A4Zni92 zd>%b}ti5o* ? zueajp0ic{&-@s~ZU#}3<6vT9hQNcA#YWr1m?!!bm2S3el+vZFXe^ZGAat(sz)8*w| z)q0Wfq#Vr&7W~1QacyQ!sXZ1v8vy%^lnbxm!(^i%n4j!-vDA9V^Z7p+*b@dX+%*@6 zUwoaLSFZmGaMt+pM; dOka%8Av2D+wQ~6)vH#?&Hv1 zWuvORv5aRtz6QQ;in`cM%z2!awv8P+Qo9W{6N7$JN7yH_#JB-!J&ii&Dy4J<3*aRE z)#lWHT$~u!Y=C1TdehA1WhrQ6aNhFlUwYAgveBk>c;N3lR-5%=eop^Y@V9ELY!=pc zR=V6x1B{#2jdNwr3pi1k&hXFU{Z})k`_5xljZlKyKXmel@O$l;w3UY+z||6iL8 #jZ(e_ueJrCFfFA?E*PwAD`=|ICQU9MD>zDXt9r}N olxSuw3j~uFX r`;UFHQ!drI_lFq%b$(vCMoNrp>5|lcCp!RLgFwzsE{?Aq0&e^pqS!zx literal 17377 zcmZs?cRZWX`#&7J_N-B>L#a*G9x ##3-tEQ8V@) zF@gvoPx|@%p6B&_zOUaOIp@Cboco;XI`e(Kuj_tipr=Jkb&CoB0MKebeQX2(5as{- z-5?=6ncLEE1ptUY8a#WU+0oHK&p US3{IoX?UI?}mqm zTUc1=>+AdZ`70|c2L=WLfj~n;Lv3wcSy|b)Z{He|lLwBm^6=cTv$ON| ZNYK;O0(GPk-wksBio-43dek*CEL4==g?=jO_JmM^jTXD=TX~J$(rYi5D+S zo;-Q_?Adb_6;)+rppuf3f#U5aQk l=iJM W}^X{e69Xg@wglzkY3RZ}0BzuArb07Z>;V@nbzb zJ#+Jy=H}*#ipnY~Dk37{>gwuhYHG2uu|YvW`&@iR&sY*8cr)J%^YZde_C8*m@cGpw zda##Lmd7t8CFS&lC;#KU0QWm~Z1igMRD=!}P++(8G_(rR?&<4^$nq5vlTuIsnpwOl zuK8+fYv< Bd%^Jre^5p=VxVQC8_n&hl@!< zLe0|4K+8&wg@;zzK%%&`HY6lTRu=fy4HTD@=@*dn?AbG2AQK({kdTlvdHG6HQ J47yrC)+ef$ nc z?2S49fRMf#4S=r{nTNIgs>L*@xb@0rI_9}&1+>XeXD=IYXB{28g;|*)#D|Z|JTC2V z9qTi`wpT8D7q)|vWv{32cbn3{Uro!#hB-}3cY`~QjA%!rqV94%TF$4Uu$Ft!t;R{W z<3+7vx(XX=P)N>P&rC7PbBBB25%C%(_sf$^CmS!_eJ6Hr!KS2>D@yOZ%1Ms*R=C@{ z9nTK??@db$c-Z`gG_l2QCz*gq?={Z^+g2S#ef4I8=i4j+(-F^Cr#A#l1wvk(*72Lt zyS*}gQ C@NphY=+=)% zhaH=0qUEJ2-J`8^!TYK^JtX~RQ(q{*(>=fK??U{;f%$1}w(8CjsS!v)PeqNXku-~Y zEPc2uFjF%Q8uo6NZ%%a*(ZPHFE|m_OL6sRf%U%W%*`=duXEMiVw0(rNRKDFJ%>%jd zuaPX)l +|$*Ew`4-Ytj!)h8H5(C5)SL7%M#f?0E)oc&?!hq+`P_o @6xM} zKYjAm`>NSj?URs}v%j$I_e>}3L?<*LyAJDgae4K|3G@aOVa)&_iZ?f0+Y2RnB@Y}N z-XjK<6$w&DX_nU3{XUh!U-$j>#fDZ4i#F`E;6+c?Zq)A{@iIH@z2kCd7H}b}rkpy` zJ&Oi#6mV)I+9^WWE-FkF(U&))w1$C4k9iuRv?t4btOK}ZwF16Tb6M~sT-nYm#L!5Z z%bP#xRxlNyBk1%Tz lSa62j_#=9DGjCdJ zfH@{i39J@<*)H0icq!H+Ez^-;&h UX(x@)lk! zyo|Hl+q@Gh1ck_kjD$?X(O6g@0Mppz-$QHd-Db$EbF}>EU*h4r=WyRm`)ndzU#0)I zBRMdy>-4IS=x^(8+OGaXq=9uD?Z*RN?+cRGzz-`Se{iam@*i~ynf7<{gg!lC=M?;u z_sU3Gd oW FQ{i8yWNK8bjz z%g;CyUOKDHc~#lhQ|p(z^Zx7C)@vFRJC}!fB4E4X_5%)6ZVyQbA%1G0s%@y(%47*p z&Gvm0iY;k$`7;gl*722px50rY`-N#JTbS~jiub5ECSg{Ly4P{gc|)W5YjFL}fjVT$ z)C$v9Rtwr*3VwgN8+^5By9j*(x$ySweS-Ca-{`A6F yp4YfJl_1*$>&YcA%i=`Drg?9(S|MC3Uyn>L7#_MlLo6fz(Ggnvsk~?*@xv zWIKx2pDb!pYn*rJhSE||NXA>}T2-#9MKdW+x96h3_oR+K#u1Od(&e<$KhpEGH4D<- ze^t2erQD;~7KU8=BR0B7*)Z&{LifaKTP3XW;Fhq|xsHwNf_>J9rQjyY{)$s&^QEf# z+xqCW`m>-a$|q^M4r_X#_hZiF+vI^Q5vOg5TqC6YwKvS^J;yL~isj7b$(R`dsPIk* zg|&_OEB8gqH8 `b pKf)8tmbMy~$km`n- h$ACv4G8OqQMElI> z4Nys1MTL&&v%*7fzp1g` &-#CO#}a+c$;tU#JosYC^%b$H1OSk}1n*7Z!!m~d z(7vXr%!K|4fbqN-l0@(tF4{M{j7B{Rjm?sOWBMFr{_D#*jr9G-{MoN$)ZUE+vqgjq zls{WQ$i&tB-?56kJ`>y`GiDFhNH>P_3()iC<;+Wy2{Qn~kA8FrI6`Txb_1`ev-8AQ zItJF&t3D1a#dMwc1vI{B{OVEap@lR=z6;hqH8KVMEGo(;sn%e)9ZyXfP8F9=wQR7& z{z=eJh!mCbCU+#IljlV&kn(!|;aPrDc9GZgy6!Oi`9zSY!hww8X8l&{+~eG-uV@cO zf1B(cjyk+yJn0}suOwh~)jU=x+V3FrntBds`W<7OK|!%BEv8|lZBbf^M*e^O$ z-ZWP;=M8!dTCquM`-n^#9v(E!uP@M79ngQiT=1ZRs~o`f95cL$sEVkLxcbbRY<&Ym zFL#?rL)sIte9ofTM JZX9m4iIJJVrn41`e`vd-kE_2K4eumfE1_L;CU( zKX*1Nx!66LQ<66%;CFXuO0+bljFk4TxqW4V*k^4O6YdR-Gepn8y!|4^pwGGUUT-HC z9Qc80M7%MIIxXXV3Z2zFxkclY$){V7a`n8*v|!slkq%+xaeySL{jI@4n(W+eNhgnt z&fkXb-zNel{mWOe;`e&g8TsiMonBnApPw7% FE{j`{pFRPG35d8DK5 zJiu(3LO0~wh(Y@0WvFaOuK>S5N)iI`FbZ8usT86d;amUZ_hnzovlUlR!s?gkcyw;4 z7TPx9o+c0PvXZ(1cMFGqty$;_0~a!BgeO Y*Z?mQo!5pInQoRjecf zG;Ob{#VkMy^=6`cw4AR|qcMG+5~+P`v{gtR`t>0-KKa?8sofjUYnPoHxZ*)Qu7aI+ zep4-kS!1U2EFctJng#i| 4T63JZw+Yz(V1_h({5+1WROX&(2YgZ$Ir?9j8}Y2@%JuDj^Q4Pf!jQh zY{~9?OqL>@_{F$DQBiN7eV<9E?5!oXkNmxTup)k9r~;G!mTnhe3ip7(F7|%;rq_ng z`!sm=H0DJU7=SlcsCka mS6fPX3WBhC< z@sn$vNQo+nCi}xIaOmpERv>r~0J)SCrg!TX)orRHbV);uZir$(x7NR#))!1-u#`8) z? -g)g{^j~hQ$bFnbz*f`#n9kTJ2@ecF}E$V7}D5Vk<7%9DC z{Q>__!eIEFFR1yrLv>AldUd#0ps&yAC$rxhF4LDkVXvVHfqiIO^B}ycn3BhD+P#zw z-hEj|*^r?=Sno^Cz!+1`Bf{!m0^AGo`@HQ9V}^f{2>-P7%v0td7MIyKBS4rZDIE~- zE4!7^wV&sV=fKoSMJWC_5U!}`z4j|GhWl1uE_-PbZzNueFtRN(Ru0yAyyLs5VN;=- zO6kU5G{2NDHFK5u)CN^W(-+?t3p@C((F*y19iXo{cfVMu)2D`d3~qYc BgB dSUHn&c;os8%Q89I;cnO5=0&wbufvWD{kvvL4 JOY_vlvKUHvyXUhW9S}HU>Rm=UleP6+46Q6gV zFCgODXliS)#UmPy@?L~hzEp?}N@5tK174)>2>=Jd$KMQScCq?d%DTxZi TDc%O7!5>)d B2H_{~wxv_j2=K1Fc@Sy+5>jpPn$RHnPcR3RW-`tX|P60<(LoelfRgMjx zoQ^1u@J4gd<@1Si?}oe)&s^qwmUrLjz9Do&g5ny3M&pT`TK7oy?(J enPF z-#6WXADv^V#Xo9@BM#LkhS&y2?eD*x!rFFqiI1i3J!+4t{b`%YKoI*q!ayv}Mhx*` zvK~t&A~IN8Eh*DGEslQ}#cRMy_&+t1P2Ki^Q-J%mS=FI%6@4ht_Lr+bsRxM{?Tx?K zSk>cv=7&ayMy0{(v|xd-YJ3vMtJXpN+S9gLJ%Nx%XVpR>#}1z_4oeXUSbE-&G!r0y zn~2!FCWtfO-pu>lm3#dvY0Y8MXRZ<<=l-TkSV6M0-Kq=MGR+DCux-Vf>7OmNb+)1I z^^1``C=8P}y~Qc~@sPa9$gZ$!`g0a^oRyyB l+6~ghc zG3;`7-)$EwJh$4HB2Hzi1kU*Zidp~pPO~9!B^n@h-{?G?|J zC>nxZV7{Up0}$o ;szgxm)P{7Mb{c(TPM!)s>*rzpJ?O%Yb%z#z~;bPx-h*w z8>Jv6p8WJ0=!*~o{Y~Hzjzu^N`sxQ(IAFqkGPhW01j4>ISAmc~aR+ z{9E^Tn%PiiN++j8pD&JRo)JhSg@ovq!}<0&7)-^wNuBXa|BI}<7w*J)v0BcyN(0n! zG!6^vTM6x?M3P{X^yLU;Y)t#AH&5=GUQn~xgUB!I+!j```nTHUClfYd=Jw# ;(6bj-cz#ptl?j$8hpNzk^tLO~Xqh7&rK1^{%RuUf zl33O)NC@`-} zH#s(b-1Z*0-;@|k0a5T~JLS1PSrOYA&(W(Atr>?Z1to+ GB{)&i`(IkpDlqow0(s0cYMyBLO?BiO}!N?xFJ7eoaJHSA@U 74$DCXF2B6xuiLc_Ja;*0v?twZlx_MQVRCoS zdl}|#Sf}&WX-@q)HdffT=VPzKY0vwL+R3x#-&&Bys#%^?jL^Sw8W!QPRq~C^mFFQ} zI{%V?i&~&sbxHBr)? U9qFb1%<6R(+3fOSrdBL)x%Ei|<5 zY=c62|0IEnytw0#%oDe4cBAhLC)Qc%vFK<&*-@m+Tw~=GR^I}49QCjzUhBLf?`=4% zevbJIZrAUC(}3&rzbITjzx9q j=c_D~U4 z=y%*rML)&<+|gV ;vDB`upl zHQg?zw%^C0PAX&?NjCsA520V*o&4zO&@Tqx^|}U>C8Fd0wDsdYohh_&GLm@RrRkug z0kmmJBDaZJ6d(_f#)MJYeP+WX^e4w9SP`$?l6zcxfLtpJK|4f)K-Wf>tuwe!?#H6G zkT@#q9Q?-(q)%9GgEa&;hlc)XwXCQdZ`eH;1O;6iXMqMz{bvKNay>>MI_N(9g(5PK zP`=IYDpwzIz5?5|hG-p0;2->gtk@{x--Ybs1W@&8Xw%d%WHt>mdJ0mxT7fN>o}Gfe zR!}ys #hN#2*r~RK0@P-uh$8zp4 zHkiC-utDR7c>P?+=7pMd7GlEVAa|F-{pdom4P_1GtsBqPJM+7^P;f{5YXVkTIexZ# zaMA+$zdXYIx0D%d>h+ wZMTikfW#6;_5zj93ZTQ}JVtL%s3WE4CHeHrc$ zPM?X6z4_zgWBJ(U2jT`N!u@9XO-%kag32OFRUyl@;%z50)E?&J3RBio3?6)o2s5PT zKq8x@L|sl>prMN$qNzsxD(d3bZygd8808DaM}{mHW?Ert&(ly&)|kRfu_oJd+@{Lr znKDw71PZ_59r5Sk UtvQoVy!V0 z`PAJ$L{x}NMHCz2#?o&aCYzm*ty|AKhL2rQhj;iMBx V=Hscht=z*C~p-7W=8h zWB!$q=(LGgFAKinwwa;=iMQg82P!T@5cJ#_`s+E~4mK7r9%IE;BHmQ)PcmP;DKR }~6Udn)Hz@K&ss#&PC155Kl?5f0FkDv@{OMY{(bVhJ1l&lOapmfm^ovAcJYT|X9F zR){M?7H_tUo%MOvt}^Ivj+kD1IerOy$J#(64E7JOO%1#6cMB7H$bcnQ)_N;t=N|v$ zXOapR#vawO#z3cGW^IPj_jrKutfntK_sXKz%+)Iq6^C|@1FBLY*EQXiYQfUF{t6*g ztxSZ|Zkb%QvS)_a{}qISth6feRJMv^s+p5OI)vwP)!jkerqO5vnyUKGU8yD 7(MzGW({;YLsqbY4Q!{Xl+6{gV3j^m~ zf(oP*QW{!A&*-tfdB7w5VVUjF!^?y{;fU4Sr0B~#81??JZQ?Tv^OyyikgCkLY}rEu zKDyO7XSunyc7P3=>Uan&^Z2uUzV3KUMKp+kHUrQh3hyFD&Zw`Co-ev8cB6Bg%*2j& z4{~g6R7NTh_e!$;ce(=Oljy18Fii7{4w8+kL`+*loap CD@ zSXWF%8>izPn|~n9ZCmVcPQ^X=E0SELk?X}cbx=Q8@0<#&vn4#BCJjkAr1k0%j;|xa zQU1X^a_XE& C80{#dVr-0f1eUrtcOgQn29zHzrUzJD A< z-!->xtC*!?s@cBBdB*I{AJKY~gT579f|?V _Z#E~&o?Un@ z>-k>ihte!-&h|Z#sXCC(U7!UW4M;@C13GUXJ7ztA-W;?hz3tT+aj +4jkVWy}@HU_;D11jznZJEF;Es|{dw6C0K<(%DDQ|vJ%H6WO zT0aagGq22iI5mnaNPG@+v0xkQxZGEjQkatTOXXo&;5RWOc*?d#8dzk4q5_2s!j*tU z&V2)IFP4|SinP)Qw?2ehmRJ((jmB>Td*d 8FVR<3r<2DmW6hV$uc#lv6fDCYb?J|Z;GY;R8BP&k+PxjQi zd>kw8j$u4z3`|(j`yS8zoko9@@i>(LI9A4Re2H*JZ-U^yjqWIdcBtfTg7kezbW=#z z_S#v@KOJ*dpXL9;!!5mZU#@rv>&|mKzJtR=jKB= mps(pK^=sm;1ZKLg z@4+_$g22zHxuFG*I{2FZ7A8j-m~Hme{YebWG29b{-P`sc$Wge;(qb@Q@;^y!Br~dC z&$=ud?O?I}D!D 3%El5e<;cw zgnuweZ(u;zx{uWz3L@}?v#5LXn&G4Olz+K O)NyP=l zYnts43;LZE+-Fuf)GBfm`HSzzZmvy(uXsFX^m^Y<-{$R{#DkwpHhBRBcc&B=*0GY$ zL+BRyrL5@|U8qG3^2FAHd$v7&;PSvC?U9>Q@{Qq(zwGP77k%1RX4t?t>TjC)woejP z8JvL4>_GlEQ@otStg|}5%}<&%N;+Zj-e0tZv0LP4Z4L0ww9n8Q9e2pKaAy9MS*6v> z+#|Cp!WLR%o0gNI }IA4yT4pdRhI zZkdi|Z6aFqi-JddFRgGWTzf(vbcJJa3)|z8l46goJXD^cAqRx?58j*<@8ROb>u(gV z){G&es`hvaZ^~c|tH9g8g`kW}pP7$z zOIFDTt6!dDs5q~L+&WQ}$?A;48$ZcW?0Dl7p!+C6!F)5Tf(Xb4lV4_~0pQJBvG bD6XX$#`v^Ls3O%p1%l{Snbh0 z`Z}me6v9xaxIg@+YP?Aj@x29+(xXCc+3} YE{BesD79p-YTO zawqwogKb+Vw$zQ+twXYy%1N@^2iZiUrRtBWv~4e&LKm>`>R||p#{{9@=7r5FhtJEC zrKD9fzBz8}m=Mm$zPRGSp_&3F70vdnfv}s<+l6;z6wStP_Y>($RdUu8nr+7IM^Xnk z>JJbp+=RVp8=OCh`a7cUT{+sHZK5RW^-2F*<;pFSidX+mA MneP2{_2~%#J1H+W(^X(pI7Sob;gRaE;jr7PCJx&QN+9Z1D$T%0T ztc%!uNBh*#M;r@g=RW%@yBtGXz3?M4@-Mn(*2`m=oY837;;K8>^MU*$PyvmyyPkF} z1W{Xk|4qy@OTTv7SzO7lU4)K+-{FKbd2#zCr-6`Ume$6iR_#+$p&y*nm{~&Ct5@Fc zcy{Z}`1R4S&>+;FZXfYFYon?oDH`fU)gtlCpz4q9h0P-J0xQS@xbBL?Gs%7u1ia*G z% ;*~ z%P1z%$@qx21HprexOX!*Lk&3xyjZBx_ewn` zDx<;ocW}|n5OW#Myx5%(Q^H!0;8Cx1Gybx0#Y$@s7PoE^L}K$^1&mJKgdE)$<3>t+ zEi1*Ov~R<9+radZ*6dsX>MU=Qns>Sioc-9$ro3NfTce?@GznvUo`3zL<~ybg`cHpB zpX%95jXDtR`G9seVN0#cLJ<2D#0Su)%vuF8S1BpiF{1&i&H6(p4r!F 7)+F5_}qtkV@5CU%F&6b6NvTf D%Zl+VG{giKU`Cy zD#y}VGkVq+b6zaA!qzIQ2%w{0=qz>8#XdNzXP(95uUBHFdHwu`aDXW2Ji&NCxqU?% z-6Hj{Wz_8S^(!b)Ds*cffu z??K&|j$}mf!3E}Br!(0}0dE@X2GvO`YVS`@nb?{kAs@JeSzqqoc(h93Iceq)s?@CJ zgU^d)Qh$6{GM!vWjv;L v$HH5vOiIo#=NE9v8=ro9k(47kN}NqIsW53tN~@92?& zpZoW=+pxHn`(9B0IX1iP6BV@;6~+ED7Wpc}>p?H_O~b#`KKWnjkmvP4W~Wwn`g#{~ z_TCdWqwqxay?#P%DBXz0W_}O`6~jNgEWd3fr}Jp{<+0h5C+u@=*_S9}sPe *5yZSJrRZlwOngK3KjOu6Oj_6O7Jg zC)yH|&DY6dnea!%cyEqmb5QwQ${aXjg+IGeDE=C?m(}*CZF21Qcxl+^KI5*qlY9@p z`WT6RjcFyviEnIp%$r*vs-ua*Z-hE*_g?&Y&*|$6NgY}qi3#hyjatE~3&RUqr1SC+ z53M^?Ohl>0&8ib`b~zPmdr-;tKkqLXc|2e9I!=YzdoF|f;@MAbt$;0NMojBqd%$Y% z?Cb??e21(c@#wYe->E9oQ~%}N5)EC}eC5jhZquI1u&JdGH9A$}ye!1SF0%o4i<8dI zhahjsKNeyw#g3gN_Z3adyWBZV-DiGuv7+Rvc7EyIO!gXyGSLqxIjm6_&hcDBPitjl zR6*9zvR-=Jr~as2!%ge_&k&5wSstdU?O>Sg6WwSXY`rq+16%338jz&YN;HjvNS)vk zb-*fT?3fa`^L+w$u4ssPfw^@QdR{_{wPFQT^Q22P?>2jI( z89Wd71@U_Q;pG4{h)KZl#SGI(4#KGL3(<90KcPd?xz3y;G%^$9_r{6i#BTad!^r5Y zg*K{2sJL35k$`u5U1k3s@5)Z0bqV`bt?mn}sNa?~i_yjB$(sE$0G#lrY2zyWf=ZYd zt+3_l3}JTV`*< q#lA`sgvx4lw^YciPW7+ACGBgLuBe`7)Z;^h7)#fksuPRa8)LIG=XV`xpiteHD%{nZ`zEV+Wqw9%kK-@#j>(a zu={>6`|U-~uZt`wium`e`GPO2n=-Fx+oeuCrx)(h9JaQQRY<2Hj6~6NF9wDl9;iys zt2es9-+N32P#}No^R!GAFaE9+6?LxFWytz6HpX#d{7+d!U0nv^=27;%X9?YS`CYnO zfhSrTq^x#rTO-|B{?7+KA|f{f)Ok5(EWq?OIbZWudjxmn|8tRz=fqe}WqPOqGK9WK zO;wI0btSu*!t41I7y=49rlv^fV{gm7j*uiHUr>U0`tvMasl15X85>mLI$iFN7InR* zVjgZ-lk;Cq)>8HE`@soPB2G}$LpH548q9mU^m3 85>HL*E;nU8;E?X za*r`lztV=etpIn>XznbkAcR(Ne`N_Pf1yCWbZR(H(Hr0`Ngu+l@_707X;f%l-X#U~ z7~s+Rmt(V~8}!!_hc5Nuu;sM*$Fj^wBV OIT$4=sAJS$4(DvEZ)3Qucz;kBHYm 4 zFZSeD$xcks-CiudO2)UjVzXm$tbQL3LNEQ}J9aBIE)m!J2NGq8=d{bRU+JC)AKFcS z-?0$38h^N6DS>iJq?3~KJ5Sw{h|-AT?f-voGzd4ANB&74WE4v5L;o^gDPVTJohWn* zy`~MOES4=8Zj1OkUTDsRg 6cqUzA1DTj-0I|SqrO!<4z{N2IPE3j zll{^1m+D^>&L8K#0D5AE6#D(uE %vc9YS1ow%tjN4Fmhj(-s2i^DLH=^n?dehgq z^2-yQMv(5sTn|=qZl!Y&utEJ!%;lw9vZ|Bwq2ur9dQ&+u>s;PiQSeplA?H+jsPc*b zWVI${pV_^nqP}a}@E?f)lI5+iJU(dto#7e|v6+pgroO5QPNyui~F=k|KXWpk~U@ z%K6n?CjJj5SP%NgBN{76KG|R4+Ont6&RtJJSAU^*5(rLU9I_oVnNnO<0EP7hWuq-G z7IHKeOH!dsR=9!#ZohAO;DpWt+ws$O*Z{Z32vdL*!U789U=BJIYpXqX)v`yFvI zArXi@4MCNh4MNh2RvOeF!!s?~S;#`}57B==&wB(M#RP&s{L&wrOJDqh;YUYx;aEt} z#z}9%I!g+mHp{Rr)iB A({J1_F@d|;s>hXnY}T;lIcnxU zwOx9^D4z6CV-3c>=b5B{6>hNsA`06P@2)pi_eQUFF1@-dHeg%jBZN-z{daYQ`&ftj z)ZREHt@Bv&D^{>24e{z{PC!=JBHh&CX+EJ3F47D_(EkAG9hUte!fWFT8@P;i*-e6N z5}dXhwkQ_I$+rf3Dl3sTzjY}i|BNE(JiCz=n|m*K{!`-=rmd}_UKvq%@Vq(o O{}S?tDGaQ7-ELtLUFwEs0O|qTPDo>|YZH`-6n`YO!kj!-O0NEWSC+ z4qkKIxBM=Db#XyIngj9#56Z~ZC4nx>WfuZ>8#1S#8Z>u=-C0qqt!e9NJM4K>|0CN! z=#oGQ6b;d}MYaWP4*%Jo^KA3KJo}TY=&9agH1Wl&NG^mYlM7-=BytiP$z@VwDu*m0 zxOg?0fy~Bo)|Zd-SpVp3shQ}X|M_FN&_x`Ac5gWBCDbBP)wuYYntH)fS2toY`O 1XH&~PSfPHB=m@i`FGJyt4@G!fH10IFJPW~Cbuc1 zCWQ9 Em{7DY zz~-b1+z;XkU{$wWB4Lt0cz^DFRar$FxUwmezXS<}Oh;rN5#aHHWl2&nqu6!Amikw> ze<7psihj4o|AmXj={d~S+1){nIzNkJ75T}n5VJiN8M8-6GO#~4?O0_ts;-%0@2!2V zKEW2 z8xi$!AjVEGvrw$-Su5CR;)qJ8XzhRDkB5rA zz1@J;`=acC5(?N`KDkNb%ZG3E&XcG3XQuN@)8mE8$?~$GUGN?coPjC$lmTb(7rCrt z(8SU5L(V_D*!VtZN5&AQgPL&vs`qLBhvnm3p<21s%SVujf|w_K;-4)(h!?jr$UQog z4*lJ2LutuA#|APm@P1C3FRwqMZ{LHsnnRF@)32ObQ$ ??%VQRn#xkPh>hFm||}@m+B-|(XEr$>70jFNXfK0iip_u z=`ooPBElO|7a^Lo5AS?y%1@C``ER96cL1V^xuKEgqy#S(Bz*C9sbztswnv QMwwY`ZF*;y11yXA(jmfJiJ^ zT`TK5>L+k4GBN ^@L7jr8WBf05;nqu$wsjkZ8gx4pKlB9%Uqi*c8Z^F{m>)rE-@`=_aT%qfJW zmZp>X^o?yNTIKS62+7m4UEAR+C^80AX?38e;Eet}RuLq3Xu^5(NjHgJ^>iYu5{0-G z$wx4E&%*DrB&%I+RP6JJ$n3K~Td;y|-_0MaIP*+i?c{+N0f&k-`qiC{ihi#V`J}}~ zX!2faxApuOf{k-FG eV0${IeJqP9Toj&>1-+XW!I+|~5i(J*v>YK6B`Afcqr)|!Wx7dB zQqETIh0e127C+gfO^U+@#_~hn56>*!)c*u b_#e~$6Y;Nxt{Is{EsBK-P( W# z<5a5FUfZmr+cyZ#~M=JPN_2%ElIndiCIm#&^#q;%>1tv#E{u&b8L7EfQ@vHVvm3fOg zZM`iBGx=@R$6Rv#W+EmlkK0OHskywjVyJmeeht&V?;@iQe!Us@WI2*Tx(2NQbrT~~ z?Vbv$n Wv$X4c z5G4*3Gq^vn@-@bH>M;q0X1V4+8VkZZ@s#K;{dHGfz!`^6N*gyhV5Fx25=+*ef1$pl zM!o6tH9}MSy{Z(URx;3xIrDYIe2)hgG}WA0MWZ=edHI>e&qeX6??KbCHCl6sAeg@0 z8SkS2%BR>&zJ=z4eLtJ`yg~N~7;3$!wM-WU>2h9d>?0hg_XhPP39%&?3ml#yU|kKc z9l<>T%4z%$%GjikY{@rP2PZ&I)A?j^R~ro%{1+Q^zRzVPfIXv=gh3O%wX!4dIUFR4 z>YP-ZJ; XGDL@^2>iAA7L3>EPUW)Cwvq|ZtV&J>n>&w(!2bx zyi0F#_&?aoV(vd!6t)37X{)U`%KRw^?0MR6dxYG&3{Y73nSbZq`gvap7AqLL)Zu?k zO~9v>yX5;M_Q&D=_F$bulyI=*?F_`%+IG*xU1_xO&zpI(x%jjh*)dsAjurugWo$M+ z+RxT*Z+5Wi*YCWt9>U$+^FOz6TWp+^7X76!S=WLUCO@zbTYNJWNnq5X0u+x4*!ZKX zno$A|E3@@(h!$7r+&|6USdVv+m~AsO99XXs5!!y13D?yvH)?^2;p`Q2d83#=`_vm0 zzgpqhy#qQx#;x L-QzW+)sQ4XBuKN#7SYJr5m~NS- z%@q*%plB3dGh2&*eBJ2=xs2>d{3V80<%Ak@;OTZ@_~YOu@x(IjvvZ5w<1b${aeLS5 z&A-G+B}FS}Q^)=nH>K}`x!yp+v*`<}d65tT55&vxG0r?>@i~Tuh!Fpn)DL}c{&Hig zx&K`Y`Ft8O0WJ#X25AKdpz`)?wyI>id3;8~NR?NKP>og(7QXTLi0`S ZkKR_*N--)(Ufj?8 zh&axh> S2b-dKEK{-X4pWSO2t- >~xm7zM?E LeR>~KAslS5gc&=~Qql;o z@Ye#<*yNA`pHKw iGPR7_rwNUbk0qO$RDpIc^P3@O1v>H*q?0BXZ$`6dDcC za$C!~TrT3ffw(Yt-nH@RPSVBrizoB{3udr@4m{@j7|FA);Pm!bv9jd{zL3?5?4DY( z2fEi(PquPF5@2bx 4OHxwP@0D>V5N{VMab#LX1}Tzv3%Z9D);t@=Ujq*e?u_{p zLb`0P8LxQndFWvJb}ye|WTl#KHpO_5d3ZOH5ICO>ca+`|T?=zlH _P11lyTc`r;uM*Z3>QA|4i>Idpg} zL6_NmnZ54j@lu;k%6-vYvEROEAHK>bKUf!rY2}OiBBSt(>a9YoaXoF0qNiI6m<&j# zb9BOOMIfQPqFyP>`pAFF!=o|nm=Q)^VV1)*gEfz83(=PL>`8Tdk#CmsqJD|+`|u&; zlg4I3{OLTmUmW}%ypO T z!Q~CRTfq)CVrKT{%fll_7dB!q2G)CXY+>~c=-s-%0pQ%fv%{6$C30j-jPxDK?O_;{ zA%G`_sATme$#;JdAUU*PlCLs$WJ&BSKh90Pc6ItdC9 (dKb)`CdWbP zy{u-Ye^x{|F{6}ce**02yX4{l1>^lji@d2Yig+7xJMN*Bh#3Zu>ENnnKy&8MGmkMh z(Xpe4v4ND`7Ri~CKXuvv`m`q9vH4n+vFb?WY|y!}@Kfw~>5d=O*6r++w`LpSr%KYQ z+#?V**&_$dp;70d!9CL&O9CKnj3EHx8<;fYy*^{oiHVe|M5WMp?jEkif3n$Z?X1 zn^;K)GKKjgq{!;wJSUwp(MW7pg)7M>vD}4cM+MDD%tE&^JLb|5A+Dqm{Z{ KxEVER$34E{E1ffZqG5 zfd|bCZUx_j=BIgjZF&myWe$yg!pK-IWq47~8zIRF-;^yi?9escn xD!|_F%J73w&Ep|Hvl QL65nRp%u3~ap1NgnJ?o9sL# VGo%4?`1Ucesn z;Shbt8&m!N{OMK6qoU!QvKUV=hF&+WdJGVZp;TldoUH}!O^^A17Fopq3z$YOWX@On zu5jll>pZyydMEl18mfKxA#wO_J==Au<`!h^eoVpcgw2%d6V9m}o}YOHUscrc$cNQD z*XCT; wfuOw;6*;yqxD1S*3MbVH`6x+$ z=Wi1pSGy`Qd@s1yqt2(ma7yOZclSH;M{N#Ydih6ODrME3)h0*2OnW?Wl}N)4@4^eM zBIke93087j&6PI} <6!6DPQixGGx0)wZkpUXO@geCyT_f~WO From a6ff0cb5de994c0af60394f6c98fd66c0a0a0427 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Sat, 26 Oct 2019 00:49:25 -0700 Subject: [PATCH 4/4] Code Improvements for mech made by Nemvar at tg --- code/__DEFINES/mecha.dm | 17 ++++++++++ code/game/mecha/equipment/mecha_equipment.dm | 7 ++-- .../mecha/equipment/tools/medical_tools.dm | 6 ++-- .../game/mecha/equipment/tools/other_tools.dm | 8 ++--- code/game/mecha/equipment/tools/work_tools.dm | 4 +-- code/game/mecha/equipment/weapons/weapons.dm | 6 ++-- code/game/mecha/mecha.dm | 24 +++---------- code/game/mecha/mecha_defense.dm | 34 +++++++++---------- code/game/mecha/mecha_topic.dm | 16 ++++----- .../simple_animal/hostile/mecha_pilot.dm | 8 ++--- tgstation.dme | 1 + 11 files changed, 68 insertions(+), 63 deletions(-) create mode 100644 code/__DEFINES/mecha.dm diff --git a/code/__DEFINES/mecha.dm b/code/__DEFINES/mecha.dm new file mode 100644 index 00000000..bf62e6b6 --- /dev/null +++ b/code/__DEFINES/mecha.dm @@ -0,0 +1,17 @@ +#define MECHA_INT_FIRE (1<<0) +#define MECHA_INT_TEMP_CONTROL (1<<1) +#define MECHA_INT_SHORT_CIRCUIT (1<<2) +#define MECHA_INT_TANK_BREACH (1<<3) +#define MECHA_INT_CONTROL_LOST (1<<4) + +#define MECHA_MELEE (1 << 0) +#define MECHA_RANGED (1 << 1) + +#define MECHA_FRONT_ARMOUR 1 +#define MECHA_SIDE_ARMOUR 2 +#define MECHA_BACK_ARMOUR 3 + +#define MECHA_LOCKED 0 +#define MECHA_SECURE_BOLTS 1 +#define MECHA_LOOSE_BOLTS 2 +#define MECHA_OPEN_HATCH 3 diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index b5a579f3..ef9a1374 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -11,7 +11,8 @@ var/equip_ready = 1 //whether the equipment is ready for use. (or deactivated/activated for static stuff) var/energy_drain = 0 var/obj/mecha/chassis = null - var/range = MELEE //bitFflags + ///Bitflag. Determines the range of the equipment. + var/range = MECHA_MELEE var/salvageable = 1 var/selectable = 1 // Set to 0 for passive equipment such as mining scanner or armor plates var/harmful = FALSE //Controls if equipment can be used to attack by a pacifist. @@ -59,10 +60,10 @@ return txt /obj/item/mecha_parts/mecha_equipment/proc/is_ranged()//add a distance restricted equipment. Why not? - return range&RANGED + return range&MECHA_RANGED /obj/item/mecha_parts/mecha_equipment/proc/is_melee() - return range&MELEE + return range&MECHA_MELEE /obj/item/mecha_parts/mecha_equipment/proc/action_checks(atom/target) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 29a5100b..a2f8bb57 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -34,7 +34,7 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" energy_drain = 20 - range = MELEE + range = MECHA_MELEE equip_cooldown = 20 var/mob/living/carbon/patient = null var/inject_amount = 10 @@ -252,7 +252,7 @@ var/synth_speed = 5 //[num] reagent units per cycle energy_drain = 10 var/mode = 0 //0 - fire syringe, 1 - analyze reagents. - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED equip_cooldown = 10 /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Initialize() @@ -527,7 +527,7 @@ desc = "Equipment for medical exosuits. Generates a focused beam of medical nanites." icon_state = "mecha_medigun" energy_drain = 10 - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED equip_cooldown = 0 var/obj/item/gun/medbeam/mech/medigun materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index a8ba9850..7fb86b9d 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -10,7 +10,7 @@ icon_state = "mecha_teleport" equip_cooldown = 150 energy_drain = 1000 - range = RANGED + range = MECHA_RANGED /obj/item/mecha_parts/mecha_equipment/teleporter/action(atom/target) if(!action_checks(target) || is_centcom_level(loc.z)) @@ -30,7 +30,7 @@ icon_state = "mecha_wholegen" equip_cooldown = 50 energy_drain = 300 - range = RANGED + range = MECHA_RANGED /obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(atom/target) @@ -73,7 +73,7 @@ icon_state = "mecha_teleport" equip_cooldown = 10 energy_drain = 100 - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED var/atom/movable/locked var/mode = 1 //1 - gravsling 2 - gravpush @@ -350,7 +350,7 @@ name = "exosuit plasma converter" desc = "An exosuit module that generates power using solid plasma as fuel. Pollutes the environment." icon_state = "tesla" - range = MELEE + range = MECHA_MELEE var/coeff = 100 var/obj/item/stack/sheet/fuel var/max_fuel = 150000 diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index ea946518..9ffd40b1 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -164,7 +164,7 @@ icon_state = "mecha_exting" equip_cooldown = 5 energy_drain = 0 - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED /obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize() . = ..() @@ -231,7 +231,7 @@ icon_state = "mecha_rcd" equip_cooldown = 10 energy_drain = 250 - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED item_flags = NO_MAT_REDEMPTION var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index c0c3795e..bce75278 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -1,6 +1,6 @@ /obj/item/mecha_parts/mecha_equipment/weapon name = "mecha weapon" - range = RANGED + range = MECHA_RANGED var/projectile var/fire_sound var/projectiles_per_shot = 1 @@ -154,7 +154,7 @@ icon_state = "mecha_honker" energy_drain = 200 equip_cooldown = 150 - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED kickback = FALSE /obj/item/mecha_parts/mecha_equipment/weapon/honker/can_attach(obj/mecha/combat/honker/M) @@ -405,7 +405,7 @@ icon_state = "mecha_punching_glove" energy_drain = 250 equip_cooldown = 20 - range = MELEE|RANGED + range = MECHA_MELEE|MECHA_RANGED missile_range = 5 projectile = /obj/item/punching_glove fire_sound = 'sound/items/bikehorn.ogg' diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index caac0739..2d182516 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1,17 +1,3 @@ -#define MECHA_INT_FIRE (1<<0) -#define MECHA_INT_TEMP_CONTROL (1<<1) -#define MECHA_INT_SHORT_CIRCUIT (1<<2) -#define MECHA_INT_TANK_BREACH (1<<3) -#define MECHA_INT_CONTROL_LOST (1<<4) - -#define MELEE 1 -#define RANGED 2 - -#define FRONT_ARMOUR 1 -#define SIDE_ARMOUR 2 -#define BACK_ARMOUR 3 - - /obj/mecha name = "mecha" desc = "Exosuit" @@ -35,9 +21,9 @@ max_integrity = 300 //max_integrity is base health var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act. armor = list("melee" = 20, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - var/list/facing_modifiers = list(FRONT_ARMOUR = 1.5, SIDE_ARMOUR = 1, BACK_ARMOUR = 0.5) + var/list/facing_modifiers = list(MECHA_FRONT_ARMOUR = 1.5, MECHA_SIDE_ARMOUR = 1, MECHA_BACK_ARMOUR = 0.5) var/obj/item/stock_parts/cell/cell - var/state = 0 + var/construction_state = MECHA_LOCKED var/list/log = new var/last_message = 0 var/add_req_access = 1 @@ -436,7 +422,7 @@ return if(user.incapacitated()) return - if(state) + if(construction_state) occupant_message("Maintenance protocols in effect.") return if(!get_charge()) @@ -519,7 +505,7 @@ occupant_message("Unable to move while connected to the air system port!") last_message = world.time return 0 - if(state) + if(construction_state) occupant_message("Maintenance protocols in effect.") return return domove(direction) @@ -689,7 +675,7 @@ //Transfer from core or card to mech. Proc is called by mech. switch(interaction) if(AI_TRANS_TO_CARD) //Upload AI from mech to AI card. - if(!state) //Mech must be in maint mode to allow carding. + if(construction_state) //Mech must be in maint mode to allow carding. to_chat(user, "[name] must have maintenance protocols active in order to allow a transfer.") return AI = occupant diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 62a62b56..b7d59c6a 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -1,11 +1,11 @@ /obj/mecha/proc/get_armour_facing(relative_dir) switch(relative_dir) if(0) // BACKSTAB! - return facing_modifiers[BACK_ARMOUR] + return facing_modifiers[MECHA_BACK_ARMOUR] if(45, 90, 270, 315) - return facing_modifiers[SIDE_ARMOUR] + return facing_modifiers[MECHA_SIDE_ARMOUR] if(225, 180, 135) - return facing_modifiers[FRONT_ARMOUR] + return facing_modifiers[MECHA_FRONT_ARMOUR] return 1 //always return non-0 /obj/mecha/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) @@ -199,23 +199,23 @@ else to_chat(user, "Maintenance protocols disabled by operator.") else if(istype(W, /obj/item/wrench)) - if(state==1) - state = 2 + if(construction_state==1) + construction_state = 2 to_chat(user, "You undo the securing bolts.") - else if(state==2) - state = 1 + else if(construction_state==2) + construction_state = 1 to_chat(user, "You tighten the securing bolts.") return else if(istype(W, /obj/item/crowbar)) - if(state==2) - state = 3 + if(construction_state==2) + construction_state = 3 to_chat(user, "You open the hatch to the power unit.") - else if(state==3) - state=2 + else if(construction_state==3) + construction_state=2 to_chat(user, "You close the hatch to the power unit.") return else if(istype(W, /obj/item/stack/cable_coil)) - if(state == 3 && (internal_damage & MECHA_INT_SHORT_CIRCUIT)) + if(construction_state == 3 && (internal_damage & MECHA_INT_SHORT_CIRCUIT)) var/obj/item/stack/cable_coil/CC = W if(CC.use(2)) clearInternalDamage(MECHA_INT_SHORT_CIRCUIT) @@ -227,19 +227,19 @@ if(internal_damage & MECHA_INT_TEMP_CONTROL) clearInternalDamage(MECHA_INT_TEMP_CONTROL) to_chat(user, "You repair the damaged temperature controller.") - else if(state==3 && cell) + else if(construction_state==3 && cell) cell.forceMove(loc) cell = null - state = 4 + construction_state = 4 to_chat(user, "You unscrew and pry out the powercell.") log_message("Powercell removed") - else if(state==4 && cell) - state=3 + else if(construction_state==4 && cell) + construction_state=3 to_chat(user, "You screw the cell in place.") return else if(istype(W, /obj/item/stock_parts/cell)) - if(state==4) + if(construction_state==4) if(!cell) if(!user.transferItemToLoc(W, src)) return diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 79ee7435..0bab48da 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -199,8 +199,8 @@ [add_req_access?"Edit operation keycodes":null] - [maint_access?"[(state>0) ? "Terminate" : "Initiate"] maintenance protocol":null] - [(state>0) ?"Set Cabin Air Pressure":null] + [maint_access?"[(construction_state > MECHA_LOCKED) ? "Terminate" : "Initiate"] maintenance protocol":null] + [(construction_state > MECHA_LOCKED) ?"Set Cabin Air Pressure":null]