From 522127f13a0c840ccdec0595287fa522d8a7d95d Mon Sep 17 00:00:00 2001 From: FoolPlayer <498107402@qq.com> Date: Wed, 24 May 2023 16:56:09 +0800 Subject: [PATCH 1/2] update readme with modules content --- colossalai/shardformer/README.md | 67 ++++++++++++++++++++++++++++ colossalai/shardformer/flowchat.png | Bin 0 -> 159786 bytes 2 files changed, 67 insertions(+) create mode 100644 colossalai/shardformer/flowchat.png diff --git a/colossalai/shardformer/README.md b/colossalai/shardformer/README.md index 10fd1809b287..c68cef713842 100644 --- a/colossalai/shardformer/README.md +++ b/colossalai/shardformer/README.md @@ -8,6 +8,8 @@ - [🔨 Usage](#-usage) - [🔮 Simple example](#-simple-example) - [💡 Policy](#-policy) + - [⚙️ Module](#-module) + ## 🔗 Introduction @@ -188,3 +190,68 @@ CustomPolicy(Policy): return NotImplementedError ``` + +## ⚙️ Module + 1. Flowchart + +
+
+
mU2?bfHrCMe^PIrdco;F z&|%5A6IYEKEY2=|ABtmjTDJ1dn_3R`@!C{p{fzbaaFO5v8GG*jf+7@TyRBZ*2Zz0Z$%ZyP5j(Qx I^?@Y*+Nf*K>lTR^z$QghqeguZEaS{Y0~DW%F0~RBWM)!tczBaJG0iC zUUA$dV>E&1Gb;sB%jL5Wu$T+Li%dpYkGz>!JRVr>w(G|m7~v42pg0XMsE^d){B? zq1<>s?x{`zO(9w8&$pfH0?Q-0c#q?Nu?ZCPeO8~I2{Faxf`TJo^YfG7sB{H{bjglo zQc8YD-m*d?Crhe=Nv$jNGO_*dxYy9m^mAT@+Ri)KJXIw@LDs{CA9U+2w5@vF37$P_ zz_~Id;o=>3yqLta95>)7tr? 0*(|7Ux7Ue7u4&A$9xzjNL0hOd)K1=v9j ze0GupiGSq7?zWDWWZ!oB-3OU8Z6L;mz}oC$r7R-byorDYkMnEW(~M}aQ^{bpZ#o3V zk(7*g86ppa4}x P_K{X?ORHyoNt%2kR^{YM-K1IUwqT~5+tPL}kZ|>Ku-C6Fsp^k0SN&{8`KvxB ziP;V(4o=1s4h=5r1aYDJR|crqjouVzm|dJQVJ@ye&7RS>!Ri=Tw_k*21%LI;d+5M{ z*M4k{^qi}}4Xi#zu)%^mgB{9V=oQlO3H2{yUDiAKwaSzGGs5cRp1a#I!vUO?#MB4D zod-!eoo6+VqLLc$g|x@y+%NA^P)#urN(puq=zqJY?jg)ihJN~mvG^s~=CcCJYFw4} z!Qu<6g-!?Ah+}Vk=Kx|!mQ&C6;eyVCtu$G9w+$@q&+0T$HBOo=DLuc_Tn~ri9ADFi zva 5c2&8AUJa$}2XTOsC?ma*bx(In3z>4}f3dX;QiqfOX0$H&S-C zI0$~Y|2o^Y6PRg9p1$mQEk*Iee=c=&Rv~~~iNk!jEbCW6;#k;M7ldb>6arYT`P=i) zH6g!|vjRhQ4M?>r6UA}$b=`fo{YowE#=it_Utoot_MA?KMhSNX-q@ko4p4S7NQn%r zag3it5*U1> ++ zJ3EZZt-Q8B8?4=;xxud;du_sN`qN^4eQ4t#>E!mb>=3~y|NSbfgY}MnZm$&{oa$y_ zuj@P;R$h*#C1#y*Okt{r<1LJS0c+_Es?|?)jd#1Zx<-ZX;Ya9uo`hed`cdHh-H? S+S3^EQYIQMY@fecQracvBME6^RZt~GqEWIT_4wT zAMQwk4KUKc0`9wKF_IX-CcCa*G0JgDNOPLZS^QRK _`x`Y_an;*8iIwKt<==I$}w|>5nC4UtJb@!cN zD;0OIt%g#(#6&gocE>=NY~THl)TbceFKY+ZuQLUfON7S`_~tagV-mW-GuNix@Q-S^ z?S1TL7Up-5j5 =wjNGy1U)UX{(IDTi_NI`$r582XH+yy5arI3unj)uh zfV7etQ^;$pnr6JB!n{6vc-=7NK$nGP>P_jHfuiN+MfQkXLMp0JTmBtj^;E+J@p0sq zGy9Sk#*daX8!Rcw!~S36K`8;Yx`>t1)K_Q_LUUT4oJR#wpU3fB7M&VcvXA1mv2`|9 zmz8kS$DPOtZ>)0j8*K6r^i@vv@DxSI2h#{%`eNBj>FF?|#D>4x+STS3fGK##;8L{! z4Gj<5&kvmJZ)eG9=%r_}n4I$u!aa~MdH3;!__dwL@%@ec%0AL{^gwv#^#f+oscY!_ zdhe#De%;hvKxhs}qJn*8pF~}r_$gQ_B5Pxv76FsZx`V!bxmx}+Q2|@UZH>hb8N=UX zwTSrL;#sqX)z!a54w$4JrHJM^tW~6mHZET7mgH-AYEL&+i!jw7-{Nz0xoPR;lr6WX z2@FjG@`pJd3QOO_p_s=!<$1Vq9Ctxfd%uN@0RR<5tK>ZPHT>1x#?o%zIIjwRdq f(=noxJAU2qJfpplRG*yLU~1dMN &Jj_V|VCTrTuGjPUJ zK1Bx*?-{KQgK6ql89-GV(U~jfEQl#sKbm`WU^BecW7NSL+igOth!#q;KMzJTt16LJ zf8G;q<*&dI?9ICmop*&1f*(IRHy^D2s2+CmGJ4*nW*`Xt+`CJ_y*R~G2a5EbIp;16 zXsEKq3f=q}$Iq^DXJf`+vw>#lveVkL&oc=BZmJo6vWmS$9=iqA3#(!L4?jhqZqn!> zjk{8Go4yiUvATA AV H JMjOGpp#m_FUXBm-Beq$QPm_> z8oZcVlD8JqjIL9q%)e$?lH8@AYI=UPM!(dzAgH7Q%u~-xzw%T02;r03y(~u$wL#J; z2`Pq-2S-pJ6zsUb8bs5{kAh1F @Ol!Yes$Bo$IMbt-jKXZuUm-sv8}_2Ht9NBAzLPm=CwnI1GfuB!fVy z!`G&uPm$47uZ)!sW*53fn5N^gMdef%ynwrN(Aem$vdZIS$8iV(xDQ f}Dsc|S4e+5(8rdqyBfgL;w_+EJwo zePOfeHpYekdHK0_C?LN{F6~zH-OZ$iBStj+vGGQsa=T<I2QD> zX#62JN4HJ4QJj6hxRC)DW~!De)!dbPzZDw?wFO#c!nKKb9K7h#$SZ|5f+r?}_WVm% z1=gn`@;6jX;V@ZW8W|}-dBGa6)VNzouB|)>*=z}adH+tHZTBa`;g0&yVG nQ=%H2cFTNF8bX<=sDi!WTfCx*yAHbJwY91JR4X zLtn03{vN%%w^C{EFg#Dz=b}^1Q{B8!`EEzemH{ysS6Wr6W~YrVC!0Z GC4Q& z`rvo9ANbG$q1R5a7sY;)hgm~2MdfBZwM)rZg^E{Khb-iN)0d3LVY2v{Sz1W0-I hAW4cmG{-TsoLVF0j(!&TRPA~#~UHtgNQ@d_^EXpQXIO*Z4*p(N2p1yK?HruO96 zUCZ2Q7^J~u)1F6YM;+7wp!}?WjX*P=Z)K(Cw^jMY^|{{gQemXo6G03?8wfgG$ells zx2$kp?E=Ka }@l2|ny)9O_k!aaEm&SJz7;!yLwJx@e7E6Ex4v8URnTZ2Z3$3m3t z$rU%`K_`vR;3VSwK!7FHGMlu?Rt{i@{zlLQ%qjc{D9^uGDC{q7MLOjY@E^EuB*-d? zp-L75l^d&HZmnQzkYWlR>^3VS;~bZBhqgxE_7e&S?@gEb >Ny_ z;ov>^xVff!&?rU6zuA+R=CFT84&qPMG!w!x1%C-)>vv^8Q^xHKn?<2efp}7ptn3sc zuXQ8R5YD&e<^=6_pQos%=ojhH8n^p843}3F2$SAIy avq)d=*?Wa!#W^rpsV~yMAhSFS zJ=_qPfIEKoFjcnF0z<|AP9AXvE)UqaYs&jGp{O|9FT!h2HmAS09kgEc7Es+CHXQz9 z7*Nf?Ae+N0hreLH;6lIqhkb*9Y_vcz?bYuHHbPYmt$kyEUSs^pnyrInKcoG1_x;XZ zKBiqXsZm&*Fq+o>z_$r0rQgGdw3Ay?E`50v^XQ>0TGBvf`i4Ju&dWhtB5!;*he@}u z@S5)TqHe!8BrFG|LO~autf%(|Igy$c%fqo`HAw5epLvUo-KqjXEV-1y^ZunvWp;m> zFx&-R&WuR0;T23aQ&^9w;J2C&*iH zi7}i0-&1!9ACA}2%-kO#yYt8{eL)9;Lr-mYmh%lKC)ta;^a8%mWEvuPUGSymJ#19b zEy zBi |`OwB2xB&@JY+}U{1x*a2us_mA=@tCf*2~}tsT?s!4G1L&D_H}e z`53%=+p!bSkPxnlfx0OYNvxbC;ISW!lO7)%5f-izG5CV<;Y;{0$aFNl3P@;M$-vj^ zO31^HbNWk=(@EY*KS+=P-* F!wb8`goa>rTH24*elP8jPZ^a4BLS1dNZh_ugL(=MK=bP`nui^@YGXcmtG6j%D@~ zgO&ai?kf!dsQ<9rCEoJ0ax5#)A>vm(tWF?08mz;`CFBQ~B7{sEERNg_I3S!JOoi)O zzy09=Xs?5bya!w`uncFy!`}iEX99$ggv8CT2MO5VG34(wPF1?C`Or9j-}iw~I7}3b z>Ta8OBQ3{6=;tuL#vLs?tsFae?J7a;2O9-HPi|#?sJ8;pd05Aj0ck(<@?{y zpX6waI;1|z_p^SB$+Oryd*C0d`kt6iyh(%KV`;v$l$f@eJvre+6E= LYp_vFY-V?nJs32IF!fEawv>^h`Cu=*g{T$ z<$bzm@Db)D%)xd282%qRMV`2`FIAO_DMN!C5FKP&}M z>xDLaVLVho^a1sCT41zA2G(DHL7${G12ca%Yy72a1rV)ax2JaTQeOoHEzxQ7JI-16 z9LxmUYR3pp&YWE^k^uF-)Ij0Y)9HZ@N3hY+aR1No`Rn3oa8G^=aa$PLw2r#x@qF0q z&QCj3+hYjzA#-cLwTP&@`3h?HSzVrzaP#Z kw@#G0RrHduP7L}2N?MD z>>K~1`NGM;;+wv*?M=s3!dpE-_;f{dBEm@u&ffG_rc8*lbWiJG1>mxw{`VLUN8k4p zTALWFX{@`TGZH#Hp+ LkQ}>$Tie;huO@lQ!dlBnz}1> zJCZY=Sw> v1d~V^bq4tN(^h9m`f;l> z!m#mQ`4p4hG>PFO+o=bW4gVfceT&C_i2SRSR{t0}Dn~7W;ev&mv0YE^j``+hiA~~8 zYOU^fZteQpu`t=^>Snq}CIS}jIu_^`9O;tCG{JiQTI1n|7vci7;R=X^>=(vQNRM`f z!FRJi9s$8vrX%K&GrT(wzOZaDcf^!E_Td4Q{G?4T9cWC32R3J62qukM{?$~UfUFbM zd;4hEA&`Z51A65sLLJ3@sA-z!ev`0l&2_V`;r9ir3#)INF !OSF zc}A+OcGs!@!(@4dlbu7I>q;(YKrmh_ZPQrVcGgBBpSK|I+uOg*?b#aPCJm0K%#H2+ ztnVk%5*mEfoZ-nFJ|3wS%~v5#2XR@o&(k&ML#yUkCdbhSv#J|Dg6tJ?ivgo8AKV 4{GTimXS41EwZ;HFJM+qF`2bC_Sy$Xj^a@z XqePzmcyM?V{`inB-&A~j$^K>Ilj(bh3dAy zn(q3?F&W9FXxkRa-EBEUb);7Rm3vlYxp_G!M2%zI5v3_e!Tc4}dDnew$(JronY{XR z=hSf80I?hzA(MU>Jo}WPh2ggvz>)+pLg3^S4m=E(>waq}zNnI#<6T a%h6;}F6M3v z3H+E>hC=aIYj!fXl 2aGib<$(4MnFW>dw8#GR;yf$S)jGjSGs&q6 z6Pwr9!!d A5#_LCn5f^sxj2)#BU$Ia5&6584mq)_@frQpZYa^4 z?rf-D9 %m{;c-YPB7}Rw}jT_Fisht1 hc%<@<^&A$rus%>p~B@u_| z_%1^%fx+c6;8n!?k%sHxE7-K%wy~=Fsbd254s~%a(Q2P>mvwJg>LN-Cnnwl8=~n2w zDN)Zpn@SIFrb?d87$KHGBH5xHOr924ibxYF*baR5O=*mXB&*dg9Ff
(>#c+OKaKOf{T@s9+8>oOu6-xWUTUMN>VVB@PUY@u=+JZq z{hY4GtyWHauHqBV#w~mc5>#WMWFi!8-^qgoczdra9~WQ#v~iBUf8011p`;Ux3 ddhxibA(d8~6Z@9%d>z5|b6i!vI%X&+#ZM+dfNyZ_O3UHDovpbVsRFvc9IJ z(i73OD!Pv;q&P&Zi2DkMn6VWH$S#ZL+45K2GGi~sRG@pM)?L1iP(}`fFXxW5%HhxM zPFMBPDTb*_A>-^qP-=npehAy^>9$2m%i^vKv!xy;PR bwf-5tCnaOo!@~yC4&Ueo#>ZJ@3aDKoMkM@%xr6<57Z=i-E>H9#rZI+I1F>!}&~2 zHU_(~`_)<971%f~IXy#8MCZN=V5_kImIJFLQKI1YvOw}Rbdu-F`ih+NJ2@ q}sXtUX+ZvN%{Og!MaR0 A$9NMI z1c4w48bn6DeilsSI>K9@6u%ru-u>&M=fX(i!wu #ku-1gJescVv~;T3OkHLYDXJ2MoK#R0(slD Q`X4IHdFf)1cP7=2~x+6 auYA-pLd=1j|^9HO#^smw=UO|2OLLrSTdfP=Pn0;wV0&UFIG073lfcimG zs!Z8xT4$sF`6_^O`)?+XI*w3e f0P5mZ(9TK@$BGm63?(&bf zumaFS=38eP>Edi9LGgpkJ>`M^kmuBrv)DK)Cbdl}A~@9dwcH>Lp@u2g>G+xnVVqq0 ztLC$5M&>pC)mz?AYT*%yuVO__6`Crk!5hI{4K$@|40yS?X)=hPMI{<}pDucd1N8E+ zGwKvLnLtI{2>~?^X%%zgiY+mEff}RU(JMRXF!mUzCCI}OCy7djM_12?jjR3FoeKIE z1JDs;kz8sjdZpeVebwyuS3|pDvJ_|OyYJ*@dyb_s=?2lD@u|@3Fj!H@U* $n60nPWnEE25tMf2&JZE006JC`L_&%K*TNRT}uiz zN6WgMQk`tF11!}v+BR%kCf_k+3}gST`V*D_fEfz&xIs~vbr=marEj##Io^@L<_mcc zTr%1WMNTY(hCrHJ7SbDi2Mrb0L*sM8i$h+O z7Lg#I {a5Fx*< zm!U;<)Lv |{YbNfgL-)K?&3(>oIq5Zvd)Qu32o 6sDbB%DC~VYgB0L>-fnZEb93m4Bz1B*NR2 zz7rsPM76=U^ftRFcKV#1%z+iW>nSA&ci~XoRMGuk*Z*qVK_2n;3#bT Oy`XndRI^4( zb1lLvw;%oZ*DY$rHOQx3$xyFzNA$le(+6*WE_sxsZ`H^i;D%Y}))l1^(lpr3JO~2< za#x?+n=Q$H8USl~w=Zse6fdB%Jpdx4o>uo|^>3Drf5{%Y{mfyRouTNyME`l@W)Xm} zm_nt-Yuxuf?r%oct)o2>IaXu&REc_0oRe4Tl3I2K`Q6^S-JBpZ2}HN}f=qjF+xQBW zDDx?Igx`M59Z^r`B{_Nl?SE3Lk={`P(@{D{4m2)!EKXSp$a4%%- $*NtjYZJ2ekrLXvBKMsV8o4Qu&iY6jzO(2!2Wok#qjH$VW)xCi59?B z+uh4{BdJ8H1%yJRl =lwdTVHiFmL!@9av(3n0)id z3uQ1ww)P5S6z_RNsR>0IyUMe2=(5IlzO}ywSfMNSUfICAiX@RiurHv1$RE(oJeF;% zi6>lxBLu|ol_+@^U3pzb4A4?kK#Eyt!ih6b!H0G)0Ky+1H@3~69U%i2BT)>paX$h{ zgR7%?ZI;jMkrlc?ve?9Us@r8eCJIKI =^e;ngz`UqCSjkQ;pVjmpyh&AxiwXl9@Zll4S%6 zS!E3`Bucm!)w7fMR=(f6rxb+RM(I!uvt6~NUnb+G*P893Xh4r@fDRSJy#idw8zzgl zH~dNI6og#|xf%b%PXcMcESubL43MU4ZPz1EL?=LzmiXV+;tKf&hWMc7BuZ2(I$KX< z#eR&26(d2nP02F!wBN{etlp*oHrDd4q;F>AxqF13AL5H^vZ%vnV89Jlwip>u0+wdE zd`zAemI6O46+W9XYgOkbm(57+M5b2!+@T&Vuwmt1GGhr_)5?U&mOl gEvlH%*b^y#}8XY`yOeEa{Jeo<;^X|Nk=kB=5BG)oXZc$G< z0H#V;Lre@5&{uiLOIK=K&bcZq86WXS&=(UPfTs|= Z8RxK+ zVu-4zdc3zzambHxds+6q?SDU{+JsE6`Sii-eM(8HN&9n17fIGyY`oU2ZsnVV3VJnV z|Eo5#%RbDNl5u?sxaTVoAX*Egn0#FxG@G-gEFk)M!CFX)Ny~~=kaQ}eNGgXS1FXIH zxdB;P3NZfOsU+p&;^G>_M#4yDOI{6wRX|NEaw{Q;%=F>$Q5;MHh1o{pG~1nKx)_3M zAzXwP>Ez~QnK`c_Q*#vu;5Xkr0%3i44 zj>(?1pkSw0apf&n>nam>x>`L}M)Fr`CmGihG=@g)irqU03`L%TmD?*|v|u5bl28}x z5Ye&6l8N8vaJSyJ*Il+l1rg|@5S;gGJ9N7a>1YQsBPBoH_AsJ=Xj>U69z&%&(nlw@ z)F6)5C%W^M!a3LG8w{)?{7c?#Ze5n?+Yhvp)PUzPJ{vu$V{wxqi8FzwaWMHki>Io0 z{>b09-YB1~&XQtl^Z@nso6^!6)&AkMHnaVgvsEF#BO}W+*_;)p_sJHWbw(r3T9Nwk z>n)DMrHLjTqojR9_svmKK1150Wlq^@D)+vH#nbwl`=g8jer-m&j}IU@WRY^p?!r0q z>gvUQr7CO`9b1RO!;4HgF70&=-h&jAZ^|`3FC+X*nLD@3#;91%xoWxEsP>dCRXnJy z*CV3t$uoqp0+h03q)4v9)Eer`mJUAycf~s<)Mo|^Mh`;+&|8E0uBf0|U3K@jD=G-F z_Zv>a;6UgWvoNgu4pBOS ~b==&L6{KTq*88k@f%rs8p78jr)fiR^v z_xgU06Dt2P9bTZ9i~dMWb1T5ti&{e;UNi%hk8Nqegm$>2O*Xv><)=5@byWJ6+HF*x zF1yCVUBST=kvjwY!cI$3cUD9C;q=$gui;?^d5o3ba-PkmiBYz*#`Xzm(VFhU*X}Yq zwOp~wxxk{5%jCjxpUAN37l&_Jh?sS)W-KI3QIllVP-JU`vH?VsMZP6*yDaQ9&2P^E z_2sMF#$RfH+Qt+fAVv#h7Z?J?muTOqfw0x_Mf8}%g>i$IrVj@h-cf@;R#zX=ot7wT zfbGku%(#ei;g*yB-tozW6l-04^s2y?_|wnZh>*%Z3QVme)f9I7^__>^{}jPe>{r76 zPFwY|mz+#{K~)mPX{7bkdVbBvMGx0-AX=FYrKQO=+m`oyz&FI_RyEZYkA9w^%TI z_SBZ2<;rYfmvS|2e=lpip!1E@6Rbs9)b2!sL(qv4k9k;|eIoRx4BLH+=!PS9`<9#2 zWMc7cP_YJ^P+czhwqgFOdjG5~eLbzr9EvsIYS mr*J;%L7qu8HAqT`ShjA`4xGyjtuCVSurwfz>pbuvQ zfpO?`=!0Ne{y$+!jHFXcPFDRMX}snN)0-(JB9{H(3|s!%l__qz^^u{v;kIyu0W8`1 zMXn<|E-E-~Ah5VU=-$$H=7fgQU8^LZ^QBz*mfEIi6SDWFlr(#&q{sl(Z(Dks>QH zsE=wGmQBMN^R<~brDr_=Dm&+Gn-~v>Py8wMqS40C(J(i9Jzk(_S;70BFlJ)`4lgd_ zC|!sEF7c9{5xB%xkaIiYI$j)209F97STvmlHO5V_(btfP7mxB32)b?1p|rt4gN*zV z{$>bPMqC!5wDCg#;+Dd?Ut#HM<2l!m2QkhbwrSy#a73~RzI}~;f!-oL8m71l_yQ&& zEfzjY X?Mc?&}|iea)5` lbr^{} zKCdVa2l@L#bOIK}KPecX%0B{v81-L@G=ANwu>o}hW{|l*9#Rk8soUJ2DYBpbX{5H3 zd@AEAT098p)PgrWUp&az`+(t1H2xoax_)`H0h{J5K-vhVU%udPM*TBiWztko7X8kC zc=eiLrPVee)$KXvTdnQ3UWEp!I&j3#!nTLF#Ec->FYzAdJXWxt?fKb?&J@6e3U%9A zPfo$NiUQ-Z=$Mn&G8M>YLcdgW=TfnexMOVtBCeF9eFis~B5VJ}$v34F5XsK=L$Q&? zWmP%*K`5_dwgU>t3LY{Jax=P^tESxi@o7z9S`FY-8v{_$GHKioLv-J*FvC@X24epI zxpmK_PD@=`v{x@y1!QYf9BW&oPtHRHE$&(e`CG77ulcbC@{J$pGDPs&2wXDls*UuS zZa4DH!Atc8bTKnvJB^IREIZBo5HVJ<+RNs*wOyQ|JjTn;wn!Esh!|S+{SeO&Omr&B zphga`O-AcYpfDJlTEY;WOg^u>oP3@&AQT*lGjABaiMk*i)z9}CG+6UxL#qxekG~G3 z-UN8!+F6A9X+fd@&Q*nOUp4&ljjU_hW%>PLGn_}NYx9(XHUo^4xmxADvN9(p-9u4g zME{pE1D*s^{&9T6;s~|bpmWMGPRT^DqCZl6laeSy0u?iSQ;R`o?ZkevW>@3c-T_Ph z?)L(OnY@LHnRZ1EbSMexM3n%u?4pjl5oWmf;2gl{7SuLBZG(}WT)YucTmR2TsX=Bo zdgN|N-wG) R#DaK$3lsfP8SGIigcRf zs;F$l5`;B*OAWHa9iubuEr`>6FuiB9o4jI;A-E)7p#GIKB21m_5lOI?6xw(7X-g1? z&B$1PdHtetijG{7!%4R<5%_oxo|L7w(5>dgRd;dB(kK`>hl#p*qL)3Ph!vnlNQfw- z_dgSU5MVU~U`_1{I6JzTN&paop%Wo)8~#=L3{^lXMN442hLkow>VHp(ys}W~A>jn+ zl^@23px)H-n0|0d4$Qgg{$> -5oCiRQ1jszt`1gy^P| zQGeB+{upwz V%tv=x0z`sd5b93*Ui& zfyXVCVFB!=eLeWhnd2M}O9kJ!J22RBo2^p40raH6v7$2TCD6S)A4=~tDi-Vuq|lLA z0^~MhDtDun+(@;rUe&VmXf|pAXDr4A+41wpO#p?!VOUku%rV*Ef<)^583QpT{r-Y@ zOwUi4ERtAyDSD%#garbn1`-mJn-fKNY($m!9X^eHg;;TV>1d#k=Dn!ZSDJb2Ckgu# zAf4_G@d(xq7(J2MA=NyWyJnI5s6XJO9vjOCPGqAjz9FlIvq#jPJds!*#Rka_Fkk1Z zxWuo49U(AJCMOAkzCs(WA#pl@d1=_UB2P9Hw=fGVNaL3r!wc+AH3}&s!k`1=TxMjX zD;DWG587Ep9WQy>V6w3{ky0(z6WQa4?>Q#V6BxSgT%NVP9?M&|4@7@EXidT7lt>B| zH11_Lh&{~=y5cPsys;VqB `cC<-X$#(*%7TN}U;j=dF5>^P@n z*+(E(eIB%Z5M_`X$)+weCBx$#criX4fMs0hw5M*5 AA5`vW71}Ij;*?ITB&Pir#je#!H;#vWk0yE zClpLS`s@37HNCtM0H&(cK^twA>i*LnZaQqHk&7CTe2qAj7m`ry#7hNN&s4Z9ok=I# z 2`S1zG?piWq*EMjI$VH!Qyvl^Lx*xQagPcEsFcR;tW*)-*B)a3-J#&&he{G4R zk&Th4@*y{R${GHrxa~Ds+O6E&w@cQyqxYAUvIMEy9sXqV*tRr6TKB8~c09ZacMtS4 zCbUG6=NM{+f7SB3PIxW@wYLi8Efy^?cT1jZZB^&z`UEU01By%A@7Ejm=Aokm2#;b@ zjKj+M *kSJe+4Fa6Lr0VyKRVqgL%7Px|i`{?ur zmv6ks9V^xV&co|l3^NbX7yr7xMXj7>=IEw}Ca6%4SY4dBICTx7uCj1xs@~Kn`{ZJT z6E#+{A}!i_1@zUcnJq_NNqAEmac4ak07rJJfs2ugn(1I*iOL_}U%=(x;+=7nxTFAg zm|Us}F$1y%nIuytUrM%4fmbv%^(Pi~7t=LqsV}Yth8K5wiu?*+V$6Vm)2tTHMcP(( zkSHc%V%`J64)AcU!5;i$Ja?o*Q%}=9=Q@M+;l1v$`s;8xz(*JX2pRoO`%VUY-+ukE zG8Q?Is tCYf=mSfeG;nt1Q1*2eqZ)J}uHDmAw7gBY>JIwVt!p1Lq(5}ung&Qp z!bn@`@ktX(js`qzo0t6P+ChAvGc+o(MFX8-6Xcrcpu>~Q0D?U@*9Yo^1JT|=LH1YB zQOYNEK%c;d9Lu+^?a##Fb_JT3;hv==-Sz&=s+u>U)%BqaRn1f_zPwuQtWQBubEr4u z7B*R$+X5n90uK)yyp5V2BTaV`%iR%Gn*<{O|81>mcia%}g?T~Xtmw%(QI+h({{E$k z-M&wRi@$d3xBc$cLF~M+%j{anwmuDLf_*1oK{g@m9Hyqow56t5y})t9#^P3t(;Yd! zKmoA6Xa1Xz5ylTxgl8s?r3y(|#`rZ5FW_G~l%@5V3lgAOJE5bQbO)k4hs#A4uGaZ$ z1ECAatn*C0ST&evShhYOfu82CHgoJWxcF>@!VwlkUIin2fP>JqwXzNQjt=Y|1kD0# zaHJK-W9C!fQqgbp&vUU2<$AP}Iai9WycDQ6!=9~H{7pk3E4U^8xEM$!OacZ10LEYR z`^a=UAyFWjH0qd=esZ{nCwGGW>m3a6EF4$8*AvI81v{#8y=LX%5vhIJn#G^TXAG}E zClt};;4pxOV`Pkb!lW-+y?TFd2ONEDk=}V2b |)y3?5`*+CC1u@ z;?ZzqE|Dhb69VXHZ#jDf@!+f*4-}#yU2WBTEl~Z2%JmP>5AqwKKeWo?*F#th9X}df zQRLv(s|I+9$Woq)5W59u^am)**e%davTLElQ9p7Ipkw#o*yUswwYJUPXJ5rMnOAER z#e}#M=Es62bl;Sa6S|B;SHWnw;^~f#SxZ}SKBz9fny{W$cK;A~PGwDJF#;i()!R(@ zBd7_d$2Aaawd-y$^oet6nAd3sCqZ=A8dAXVLVO>AFXc|(mZY~}vhKpz-k;`QDdt$z zCWetQt9^EDdeJ!YORE-eeR%$uf=gZ~Ir)vI04X$U#e`X71@%>pmGF=aNTgFNBJZvo z?FO19K00zpDnC7o7@k2@o3~`KfSOdcWJubS^iBG>Le+S6e2`_5bRqaVV(hc-($fN~ ztTI+7ZDbK@2ha|2c(;_*)JZA=qwo2^WZToFkK}>CAUG~SZvVnk@(>)zL3i@lK(Lik z$W?%n&$aBuFFuopQ356p8%F?_LK0)U`Q!6L5_%^Y^Xb&Wx%Oo1!|$~kz;ENY`itE1 z_7U{QWFLQc6U^FN8o7~KbQ}HA4u}o<4UhY58IDrJd#1W^&bs(TPzxXF){wmdPGH!g zG-~5qM*6|wTAZIWs7=$2U5z{@YL7K%S*v<(5vr4e7? })(5q(tUuw5*|88oLXGLWZZ0cHVrD|xC6f>|H8S18|m#dI{ z0%W*ct;XT$8LSzQh!wSElP(%7gY5a&T>$W(hpR(0(s3!dcfEBYuVABB!)w-KOr;{o zR$tXE;czr=(kTNDzWI%^Df*?rd&cTX693`oU4y2=bb79-ZnA06GZ$^JOL2vS$I$-_ z918Xbyu+6qU%}r=vsR86|0G1f!YwR^)}$82uZ;H!1nfiEz~Zr%?6wP==vQ!Z{3#=H zN45yZIvI}G%bml6t_t93I&QdU@*18TyWa4$*)%HA@A%q9Hirb2-sU(+@SrGK1YVuv zJ7V2Bu#p4Kog=fzRVToC;d=J~)_2Dewbm{$Jc|L(fWzx;E<>Da!g)#BchH?wm$@FC zKMvGzM&O? qq^3Q{t)1v|!<(OPUgr}nTKFQ#f2&i?t!SxW zxdJAua^HmNG);^Hq$fanWMuZh14X-s=CImsSZ}ZT4STnz;f=@gJDQX6ug4aK@r>QC zTiw{$Alk|a8?a7gqPfaF9vfjP+2DM96`KMJ6l)$;Zq;oe >|cQde*XVq?<>Qi zYWsa35tIf61!+YEMCt(n$+191LOKLQR1~CpsAr@^1ylqSq@`Or2MJLShVGE=9J=P* zYXW1xd!N0}xvul!T(5pvGt64+j(^ARhUl^71*0bD(fZUkFSWFa_uSu@$uWUaH_koV z__)k_S(9ykL1!*>a5kw)$;IDQTbh@`m-F7arvko-a6iP%nUTI=vY^@bfQucZ+!3bl z#qtL4P;uXiPCSt0vtR6X-5*F4Q{5Plfdid^YGAoV%}XE9eJzB6B(zSiD9;G$!x%1_ zUQ7nmAEfj^`{N561JJB%*S%~7(nLO>%6ll&u%97ccJunl?`k}=s-WV|nl(Fw*;1F~ zA*$>g1KV?>P=L@uEkxUD|GDjrz8$C{{N^2^d7c7fRmu1o44vGx7sqDEZP#VipL7+C zyzg_ttB@0mu4ihmcMPIO;~-~SorM#*tqjr;F3rPzO0t_;3jrpT1?+p{?|Y8lVF>9f zFTKC##G+Nc2Km*;`Af@b;m;iwN>?9d1lDWyvqG>v1q=Qn)Tf(*zGNi%;mHpcZ2;(R zKLf=W3D|eBukYGFuwt;wxcDPhq #8Zh%24`uWXWBfc^6Kmxw#}l13}^EJp)=JkNA0ZS@9~o8E@y z?oAQ;!`3QL0VYLp0(F=4!z8}vLvNw}veK>T^2@BixEOs8N-?2O-J6q!P@W~nL~Gv6 z+A(JIwb3SsaR~(!jBJ{aOAb_T8^3xubfJ^xT}exikEGn}rG@p#6IpBG7~u9XTYcBE z*( zOq1IS21(qMtNf5TkJX@$jKCMiEh1YWi-F^38`CQgRb0AG%dsXN=}f2vz~1w}3*|mh zfTTV`9Yi%ge&Tz63U=2EkP;`coh0^s9D;C2@S0dYB)S5%MWwu(*|$}6K@ZkGkla^L zjIMmV#8i>kho2A{t@MuwI_vc<=q#mM^xMAI`_a*lL6Thgc5152Pq=YS9Uq}4;Z;6W z4g}Qc;fo-UHAg*oxz2n>9>l>gULaO;FNd~Wk6t1oKm=D_B}6K}DECF5_!|H`z4FI* zHz3{uZT_+JQXMD3RKzdh*H2)qAth$!&=xj9MrC@_nF~iBf!MC{h<^iNt&^bnojuEN z J6Q-CuavUSzQ70_3a02JRFOYM;g80Ki08f7E z(>KGG`DsFBe%}1aum9|Af+>QBT@WgI20I6Zz?u*JY*rJ2(xaEMd~o`DKYwrnq(#0t zdGZC~No5~H@3)f){u2^pf})B}#=?Z?k12>LB>R24M*LfY2t>$)1U~?W1Jh5s4aOqJ z9eU(zAy}j@%uk%LYw` % zk9UwKN|2zC{KPHWe $@;bxhY1qd~6h7whE!5fxO4%9xJ8uJS&C{)IRW zeV^^agKJHq6^9}>kCPH%D7rweg%v4X#%17ZUxA#)gf6_HSlKy`?|+i6|2hi_2i}{f zd+*1_yl8=;atKRFclQkyQV}_@Q$iUK=4Ay2HBbiY)@fg_8l>w`IO}or*c00m-aZ@% z%}YYjcg{Jk2&f)?e#}cnz}qG}o&2b4=rQuPJdrzB)9;Y;X+FJ~>aAT9%MokCOLlHc zm+tgO4&fUq+BY7Z&3`zMr!3B8()gkG*26|Amnc+PyT&&u035!J?w$Dlo@;Q{7wicu z;M%FbY#8)oBVeed+A{ZdUuS48O5L&PKBoUsWGxxgF!wjU$8iGqc@5x99``_XY%#Pm zkV>QdhB=%~88A#SmC;>L);eVS5Jl;hW0LOz9}1|4eAgD)tn#P5VkVj`iadSiZqs6! zjXMb__6^a8tqJ}{n{&O6Q5V |}B6@tDZM>mBj(g0%IN&^x z{gHWeIQ@k<4~XSUfq&rc-3J>#4mYM!_Lv6-nQ}Fuf9$S%r)Cu9(oc8W4h#$p*M~T0 zOg@&^`~X7*OkTuO1&|yN`qecE(GJiaha->#eUeYyiF+XGL4CW8A0vVcO79xpLqsxH zO@#ETUy?RodT+EO*~nx#%Fm`4o%kZ$a+>g4erO|}o((?*tq;8}ppT}x+boCxAfN4C z_ITq4et@U}h} mNV)s!~PFj^olUcR*96KJoCESK%uU6tgmMTK3I zWZ6!jle3$gFDXCTVX3XPiJlhn*zlBB@NnM-FmlyQb%wR2OMFIav*pDTZ3Y~Xju^0p zR5OQf4u)McQxc!e;;j7a%hqg{*9Wg(W3{fkVBV7}B(+mfpfCb@_rGM-^9$cJu7US# zK0iw%vp7e~9;mS=F$(TF>B}~-vZOsHWs}-rjohUn&6f8sugjBK+m%?TqehQRl#rv6cZtf^t-I)&O(Hu9LR=HiO(8qw*ur4KUL+n|&wU z)XyjpEwE$tSY|=o&1eIaQqewm$5BB)hjGujb2#W6x)-9 `Yr zFL&$84uZ;#+V8lHjq#ZcKG<4W975{qI&y_i!<3~mbdq=sxP9O ~=;kbPFjjlSQ z3pLr(bI)z75;Ljm7Yfa_rL*^(UFKLjq?R_GHK~_Xe0L&&^OxNJmL(rr6C2x5S~gA- zuC^K=pC`Fc9pNvNGaGOuGq;EJ>E6;>N%*|B`m0dWWJ*NjDNxXeC&L3oBYdF1Wj{R? z2iW*TL}(n@=s7|0!ZT0USki7;>RMV(&P9aH+PV0Ee{a(FyekVXJW$Y3OE}yAwrx8G z*NxG{gJ2<&Zk}#=AwcOecR}{N#Ach(&`ZYUXObK0zHn1^mkU6Q*dW8CLsIh-t;IgD z@BL`5W3OHOUYpUgC!PinK9>=;KJD%VQT!yS2d2z20VJd5Q`z`_3x07&ZH`3ISyg5q zKZd0Kh9n1*aHsDL^%m^M1(|^NX)Zf#KU|8ES=hO0Ir4$67*l>ka;DmTanW-yW1~&R zfj4qJKPVvG6|?Hg!p2`T`&_B4&tXG?NLupNBSK>MF9Z=FT>8R`H?fvx21LBiMZ-@c zGU&bnK>yzS8~O#HQUOaTFK=^%f)4O0!@QLiE0oxL8jEU)WW#;X#7pwX)Kf0|2Rv}J z7|l#W6K-J+GJpZXtC#<7H~P@i?|hGYvQ_M*>v^rYkp@%8sT0uPxhD!t8mTc>Gt2p! zPIDHDd8_U2vhlU%*Zx98=7%6W31XS}C?L=qxz=@OA+h@evPB-p`vE+yGaOCE7xAXd zH}X+Nz)o3Go7E#j*|ls`Gaaj;4xhWT+@o9KPJv{(r-VO|NcLn;g_8MV;@Wl|B5Juh z+#eljdpz`eonc-H`Yon3f4(Qe{R?LkTAquQE^;t8S+(95WBOPeNX#C0|1zLEgZ2GQ zXHuyg<5vpPNrCaW_O}%WUhw||gL;?9L>0e5l=dnZu$bnY$O$511F)po^tjm|?vvP% zuk@i;GkvxfkOERG6>f^#x4pn>ERJbxv(ttc*t_)?n>p4bQ}yODPbRY__QYsBO1h(6 z7U7<9@ahPFtV)kx%hpLZc#>B_r4ePwdi>^`wVw3=@J@;sw)bhA2Xboqr1Kz$6h;lk zb tKp)yRwPPWaddTOJc?YCV7F)96#%%0RYlgQ~4w zsudCDL~an*L&P{3Jjx3c=9P6YBk*<|ZL+il?{WU7)<$xxpJ*2;;I+vPO8wa7fMUA* z5h651#3?|_rX9v9OAZ}~gYp7jJU F75fzNk7rKj+WVLTK&Gu#syf#f-IX4Yk7<@ z3DvJO3E`t@O+;Ov&f{$gQZJ$3hXN722{hL2rx$V1*e`Q{l_T!S6z~_~GH@X2W2v6w zz3DHfUcsX$K5sAZ&NZs-^+5W-SW92*eA4Y|7^>gV?F=NqgNy59g5c6mj#)kCYNB%# zg7@C2rDiVQx~-nhHlrbvEkRF*IS=>P@_7(!t*29aP;X9rrQ@2sFUEauv+kX7_l?93 zvBuR9)Bq!!`(kgrb>PMM4Xe*@6uvCKdEaJB3_lw@So2fufc|@vrwA%s+*KD0SNjw( z=_qI#4>Hzjz(srP{9piO#)0T`dO&i2Ork;IS(%KfSPB#s%CbjY=fvD>6FPCCT;Tjx zRY9P(VqT#4^TTb-nWFEGI)-cxvktO|8b|_wM9&^;i;b0bqfOQVjW6c(g7AsqYerRD zh&t=BTAg4_bg;cthDP)Rkbh~!mcvU8l}Zf;3GJVwyL|O5i;`QA)BS#`@MM5__7i6v zbmC}6i#FMgrot<~`L4cnV64RlO^oTaZO|QAo1MMN<)gVgLwV>g;_q64U#1!D(eERe zWpO2b?_!RLPkFa+P=qpQi|cy3hgc0hyVCGJ*iP+@z9K%q!Fv2FAHaq~-=v(WW_3;R z6i?)n5kBu;t8;7$NY@=Xd)mYS#-(@g10PaD44CFOzeEIQue+?8Rn=ycW>{#M1@_x! zmQ|6k7Z$F(%i7QoxT>z_B9#G#yu}`M?0BTz%?F{eg)f@hwG2eRM|UI}R7}1TD?f9` zYN#f-C$o6?lNG8HDe;6~OrS*idsw^HW=; )IGSSr;`RWvZ(7G7VHZ3nV_~)~`$jZ+22#v)_0iHeOG*^74J7-#&Mfk?yoQ`c{6j zq|!LoZ>B`LAZdM*D3}+QPx&aYIQxZ`f3vT{h)&1h^IJh<-7Q;TP%0zGmGy8=&8VR# zk(a9>yu{_5m}6iwm1=Zc4j}liYWTDJV24RmX;#`OMgUGOrL)vhYx_{l;d$m59RYf^ z?RSYzs+5T8%xOWD)w^@ENpyjMmm;pvNd8@|JJKi!_>7y1?uy9LZLRje(B~d(Gl7U; zt|%v0?Kz=m%kLl5`${XFXH#LG {_K(l6=esrRzWdQ$v z`o75;(Y|}~&c=Eb=9Kl6WTMw&HA#c#6xdR5pw*n5+86K6SqNV)+$?*Vr(ZyO>m6*T z_6w2pPuqu)DETlv_Fmkgyp9vf*~OQu^9fCD8^uc7{CTzB2*!kq^M!Oi(jh4Z(E!SI zpvY xzV4 z17gx!A1X>@vM*G#64e=QH&6{J4~_}|4CTJBSPJ3rYS7CE!fLlLeZ-)ZZf}-2usm0W z)GiK)U@?dO4>&=BxJ(Y2 tK-aQG`5iPPY4OIV zc%$87#Nua~4_Z^kWq^YorkQ*@+?dSVlI%G5aJ6>HAP;k3=z}dPlX={4Fq3Mfy4HJl z&c5@dwxtlg-DmGmuPfA&u~WJ)hY}<$Fs}VuBaAPU;M-a9A??%-wXz=W)vKvjMCO38 z`A(?Kwkl7H#>Go#F0XEvZvn2py<4)db+d4*uAbN9!}3V}@M&T=`KD+JH%@;5d%&8$ zaC1J!s`g4Rd&x0hnHfd3%01iKrBgn*iWy=bvYk17y(*ecYWbp}QXZo!E1JI{&n`yt>L)DI>V*cn*L8uFLn9OBL#MT9OkXsT0Iz_ zoq&2Lla|m!a)kZcYS%ibWhk}sFIx*^r c{2|YDT!RNnzA;q=9k^ri!<6< znHp-(G@zxH0l!%7=upj&h0DDt8*dQM$(59I<`0z4|0J?L?X12Yt06nQUT>=-D=0Xv z3)m$DEK@AViJu&lJGRdgf&oO#V!n$E9+Ix1k&h*Pt#&R+4}I0@K695PnF{x-o090h z<@DD^kyY*mT<0%#qx2QLU ^I^HQZgB;qy>7@xn^4=Uu!VpW;1$b zaRudDnZta=X`EqoqP@hHG*lq+==l2B1 K|o;TdS)Y~F=wr;z9f^(zFv;#C4zDHv095>fhP>1*kF zSU7xeW-Ovm7`1(z9R0CN@&X;BCF1jEJ|pyxyAQe^mzBj7I8HkmCK!*bQc_V}*h?g0 zf8|wO0aeC_GxMGeemnD>ZUU4Q3^9b(?+4`Q z2+HQ z6`;7At!l1ZI$i 7oWAX^jsK+uRN$M9%nT0gvUWq_kv*r@K%Sy=QV@V;v^&)|4d7;04P zNwDES+yGIf_bbP_@i_pz4Y>cFqafaWBT45bE~ZZG1FUTABg8FG(_Nz0IsCW#zs5iO z8}!T_wj}&B8G#%|F%Er@yL%K`)C2uz_AR^L?&Qz`GU~owBCZ| $+8UE|> zG+4LnC(VO{c2J}1FbDt@484L83TTl|h!6!qjWT4D`~(n`-{ytjKRRhxaFQ~uSLOZE zhi>63gR}3yk>7{T=$m5KHhg?}@Pp0`u`}K6gwhx&yF~3-!h(PToZSbc68F2Tuy6IE zNE=*4FSc@FI9HVBs51K;7n*uY&|ZeEB={9sItHSM$-o+E4Zbwd&@cTxyrg!+;G<{U z0|2`c9jbsQD3YT|K%2D4*sr}M(ntd5>edlCW-yW)>RnVna1kQeH$g6c?Gqn%6~G2Q zGm2#2+u%CsWsXc-yY>DkwM#!yOyrG)m$>q`ib=5QauZ{Z@EWATi~Rh~OnTK9 Am-(`D(AXHRe{ zsp%xNIG0KYZcsEU0-e#z6uDWm#>v3mO=o}%d hCFb8nk>W#mbSpLNcum z)I*+@c?!zo=3-^l#N~Dvm5q+Te58``W<925Wa+3`oXxM~_9_^bDyZ!I>9Vv=UjKb) zdpK;t1imvrf#YZhrb{#vNi{TU<}2$kbIk2z={k)UNz3#{Q`=)st{h&#>%#D}|ja zUb2#(m2`{N`hGj*Tg49HP$f0yOu9;67B`Kn2kr&ypGG*a8}^wP7=M0ab7Ep%!T}$S zCMfc0XV;x |p|t)8D!~GEU3C^}S>9yMPbFadzZtM-{x%9ofp+rIr=R!)1wx z+CAkZsr7_P_Ku`Y bwr+?dX?j!Ka+pW9T;fp4WCEu%%5OlV!ByY)*JRIK7~gu$l~Tc zq~1G91b|UpAIQBxsX0fis$Xl-dZlabTF~wHW=ALa5m9Smkqfb&E|nz#$Hu2Jjv3|S zb_GWn+&-{4K~(PJGNZuI2C`K5t^4s!5e_{(EH+JMRR?J@>8E+*w$*X{+r_FJFJQ_R zy=U#mZi+m{Nk(cSU~qMtb2?6+@QtCm^iKsf`FWX7TszGR6zExwxYl0@1$LK`sG(BI zx6J*L)0W9DCy}+0YL`@eQ+>NFgUl{0ZHRQ045BwFv&uaur&{#zy+gJPY|c#$`F2 z_V`ux6T}X;?iQRlSvu3jGqk8R-zDA%g>?uq6mVgD ~)#BFC!MSND2)X3h0H2lyFkoe_6ludX6A1X0p zT;kWo2gh`Lgq0XYIz0p()KYRuwde5V?h+up*!tMI6aVoynU0_6I~7F9LW!(b7}qD| z@D65bm))mFI?X}kK-m-|M^?`WkW(1s40<)z;=A%->rke`5Y>PS!(k=eud@R0c$Hp} z-|wtR6>b i?QB% zRZ%wR%)K)%hUD=dIRBjvDH{f!T`t %vM%??ttLBqXSJ@nWXaKF?_h?=Mvea0$p6-Fi;Ay35OUU{5}a&nf*6; z(-m&(4N{$4c{?4p*(*S`jkFo8Y)|6&Rh~dM(tsPKwjLeF-iTH5`|KcyAhL*6 DP=v@LXRzDrOc|2 z=S==Tn2l|%E8CkB6H!qfAeyzQWmth?m-XnAwZc^FdTtTP$ZqXSqT^73$?onu3k~5_ z#jBX^MFTIChYV(OX967sU9{6JZWcI2d62-#Std8fJa*5e?d%0IX>Pn>KytG KQvyY8VkQ4_LJ80aE1@*fnkW_ySE zN@4in0?e(bj$Y<_i|5)iBV)in^%t4xy@$`SC%Hy1BkFJ$OgujhK3I}b(RBPa5jq}a z2o#&4$H^Z8#Hza#2V_0UJe)Dhdt V~auU%C2MjFyZgEJ&2^;!AYP&gHb!+Xhtri?AZEt5KQ?q zalUkwom*83+{NX}jLC)s@(73QOzli!yKq*ShZ81A;Ky$3cH%m!xy(amy)R)AZQ`Nh zeCdMAXb7}XTRRJAUlhBHM;q9&`U!z3q}=*u>X!W|7!~xtbrKysh}_u=MlTp*%A5t$ z^e|CW3)i$U9UhG{gM^h9=tOytyvTW({2|R@@ JvhKru;okZ0SM5uXe=p!qMfGp8_%~VnTUuZx_P@pL|05*=f-zXD zXlEH2Y1SR1Z@3(rHKSnAw^*n-A|4fmRlHQy+w$mjqlKse*)k6}hNWS9f?%)(t2y*M zPPA%crp}P`S~pxkHn`I)qH7^LZD;3111f6T7}EWVdqcZb+wyJ)qL6NTYnvrYgI6|o zUad{|Vs@i2WXjUQO~7tjmtF7}z?5PxY`ISE%FeBO?ADif@Etr`5Y~v LKF6zP2}oGcmHuJ-(pBNZ_RyIL3U<<)0{7 z_dUpJLuq^L5k}*?9tdnmkL{f~wBrcUcX9LN9Et{+*PEe;v3~tujwKOf4Vz@MWGJaE z$UOD(MeeUZ{k}~ybuf>nO-5xKHh0k8?EqvjDr^dT1cuw-+s@2&! )~ghD2`eHY`}Wd!V<&2M6WIKW=QB^btQq|5#JJo3N@xRaT~^cgW;99Ht36 zDnSK~#+8|k9dri@=IG7|gY0C~3+8g96J}{|W+E^u%H6$#fw6wVcOtU4%`SXqn%5b# zx(7zGow+`^ }*FUIFpg?;05{}GSDYhP<3)o~RGOwenyuLS1dgYuxfh5LY5 zGkH68%}>( o zxs0?P7lRl*2|0d~Ain$l7Krc0Sgw7)&t>BKOThUbSR^o}$9}Ps@dLSb%t|0ODdIK* z)()7oK;ZVe*yTo;G|n_=nge&*Z<7mp{O;{G=^R);B{4H+iXV>)lxXM)Pl?;#5>;9& zIzFh-{dco}l=FwdRhcpoI_&daL2v>}{UQtmtN##q-Gip9YJ`X%exPK~3ajM2#l;JY zp?dfiVdg3LRYA}LdQiaQh3}g*2Z%OF!ClG%4Y&gDQBW}*q$bvY4{&k3Li`i{=!8f! zzMhA0AM7$9h0|^4<8fJLevl`aihUS<4*z!!60jqxlW&-Q_vB$R;I7eD1z}uZ_aY#m z(Kba}LRIB`4&av@QWOCYt@{fEE?&L*$K?na!1%y^8|_yCy!b3 P?fEu}>zzRtGm zjQt!W5)x3{kSCQWohF_@i4y!^V71@$35{)dCbY`~1Jmz!55o4hy##Sy@~-cFVXClu zX9!VxiL=n1gvvw0^MJfPS;$~?0{a;uMQl?aa6kKsvW4Qek@$PK$Os^Oz^8tq1U@A! zJfIU}IxB&DPb?a7?%XxHuY8g~6z3jGAaohQLMaOUI>sm}R{mIiU%*O}f`zyQ7J>|H z+Ix;J))S%y3A4| 3hQ&icH(dBrU3Ni_CgW6c*W4+4*&Q!rt^@T*2JC^4Sp4E46)BIg~ lUV>l&88n;Ol#7H39t9W@Hwv9^;#;r?%tS`M zGp)s3#X0EmM0?C-uW{ZeQ+oZnmFP{pinD>5M&g6U30SIM!M1Y+$%XxlJ7R}-{rZpa zb!o )u)~Z;i6yS790?kjMTQN z<{!KEm53LKsamYZY-y0jB&sLClwX&`;~Gd*4DaGiHm&lDmh NUyH$ z1wIwt{aS4L|7~rBeHPq5Y7vdER^%C%Te_9B)TATFuY5fCB z1e+tlH;>Cy-Q6JpVgqCdFib+&I)7+`E2u%Vd-ktLH3H2LC{74G@TFhF4eV#YsUZ7o zTAP2*#_Z++Kis+3;4i FmFmh{?-^rvWOLutxj{&-Gei{bW #1&_PQhvxAjdC1je6G6*0rBm K~fwXVoX*lvjb^Df>zs6b2jz zOQ4h6e44;T*v 2)Rpvs{z+4 zI105!?(1;yYN$8wxVZ?~ALDxqzE+)6#Wkr-l7mTPJj%I2pxFN;uU`cAakS+I8b<(| z(5HPBP7IE(1Fycuthj$J6>bergJR{M^{3P1kXHht% tb`#~Oeq|Ll^%?b2Te2Cy;bai+ +=qi-_m)ekhi`Q1hOD>_DXi|#r*@p z@qb_p2XzWveIIa&>G|nbdJX_T?s}@i&m#Rx(Y2>=3ygmsAm!gPYa^f+QFt#wQtF ~mNCnDMp1bt8Uh(Ewqd?C&u`aW?wOlD(~H`q~;gAGzka^U_W;A{s`j#h5> zX-I-#bK^v!;{PWL1e&;FJnp(ZIOS&h&>LIB`i}JvEA98FG=4tUfX3mmacsjOi5071 z)3`jT^LL& KkL!bCm+h4C%c|13di;>qC+RD+YE{~V`n^dY#XW9Fha z@SF{k0McV>Ka&9HB#L>V0zr&^Xky_UTdF4Z^GO lcOT elf-cu+eyv?JdhUw8~^u%RR5{)M3pA$Nc6zm4tZrhTNmuX3pgQIffc zI~8%jmKqKDbnb`5?OzN*B5Bq*hm*gHE!YndAf**>Qu-rc1GNga@jpF4L}bA25?n*z zPd-|NI;Z1tW>yQszOFs98|sHMz5!i)0jY3d2T7CP_X;wzL8A=8eTKb;jC4>p{MbI3 z;2Oa=fFvRQeck_~k_Ht?gLc01-_v;{Den=QP+*l{*T}?_r+&Yi13IJUDs$o!?EF>E z069@jEgd2TQ7^Pruo$pG|H4JyZ(@Od2&MMbDh~Yz7x}-jKu}rK3Qbz(t&f(CX-#4- z4?ocXOqTz#ly-!QslM?&Xpc~6P9s<%zm>rdbXhcX5L3i)M`_#yql00f&RsKT1z#oy zDAf+kxMeE%CgCyoh2RJG71^~&;g&@PeA--TxrHNRV2}XzyWcDq^pg; zl0=+>I;8MN?i?VRBik=M_)O@7EeoP>QU`n0r>aSEhwFc6&q022)t`Pc5NkrF3 s6ns{Sk{ZsD1PKwEd80ID#ywZ+v1aK8a6`v~ZaOXvSt zGYgJAe1R9}`=s)_?e`K1H1|gM{Nl5s3lDrRQ4&11>!2rvYiOKj-}}Wq<}`HT-lLJX zI8BuT$&9X;+U5PgA2(!x#q`85{yx^GV_>NI%@2bhUjgwQ%!j<|$N$L!?aqjLK}{ll zph@J|) U@)xNLdCF5p?>F0f$&g9-B|ESDYBT--XGL4adD3VP^T zP2ZI7#}59J3eK ixE8 z&>;W6(C_vnhYlBbHF)Zs8w~G|ys)ySqzH~#;p*<-!8L9H+ddJ{P^8-h-rs3R 0fjj= 89bAe;Y1*tLQJP;&?omTs;aaum#7KQ6g4+VOV9@a#hZ{V;-qI#6A69|&F! zfu3GMxQ0JtTTqY*#I`=R#~&xm76EL(BLwk45ct2@euyQgRo k5XPBzJ6Ntw$c+I^5w6B1u)T-drMS3z3!s3?Xjw6hmC8n!YE5A9}g1 zzh~z!UUVCJ;O6EX9`y7%=i)675AD4%Nd*!<(4I@CBY;`^T9 j{GBmt`iIHB{y!@bt)4j9zpfJjPs7=mDO_2~Q$8P{VI4C#q2bC%tc9$Mq0iUQo zDzU%OQ~NU9=?{<_tLnl7WRt7&P&;K+*BHu?^ux{;BVWkKOkTzd6h)$gqSC0@OO{81 zr}|x6?adW0%opeG7?$f!bsrA>FxcTtXZ^DwU inAhN)9W7C?ynE9ae z!cLHF<@4Y{-W#Cy8vWE%=+4C^VUxyLLBTBk@9%`9`|KxJ #n4tuZaoRXt~v(*zKDEV z-2M^d)qI7g?lZM=g9DuSC7H!6&XL&dZMD$&UZYTcB#sbcLvpWxQs|n*h@*fQMZuXl zy6F(& XSRj&KH-(Zy9bR1-Nt>D-Cd_h=X#vK zECo6nMUJsLnX)(7p~Mz=Nv_XtENk7o@Ff%7cro>FhqRnEUM7CbvQ`x*FB?^M$K*xh zFE8uz!uUMRGLgwEb2W)ksuBW`?3h^~9zyrFV`)ldXG<1#TB799=BrOqV_csU1zNic zH7yr=9#`i-VW#IWV;*mCEj4ttf$W8nR7~59rlIwYlSNv*t3_@=p6GNt5J9RvCr%cB zkx0p8$E=@7jOY=0M`w2KFnq1sWT9or!};6TP!cB%O;qvt^Wrn1p!vsf!f!@A -3by`+=?<@%=FG}nBObZbPm~MJuJ)Kx3odN*m#K94dD #ZB-gd z5@V6F7&-B0{pzF)ARR*T@-IXzWHM%5@mShBbMg=^lN;Y=#damTfctiqr4}G5!*R^m znb2SdrR3e`2VM&F=cmm#74&U+(_%7N-XuG!#OZ6-9SGc*j6aODRo-Z-2@NI^8OvlG z-Dr`eMq11XwRcKRR&@G+gs%2_^R4#4o)j%(bE{K_*!G5Z&QMJptGXFg3V+P=R&62m z3G)?pp$c?HP9y6>m(GZS&`RM4p5k(8Cw1Ltp9glb=FBppoEJ6~rq|9L@{lPU-SL^> zIHV-wFjhMg$*gSJmilS1$Rz4SqqeK5Q|J2$AB|MD%sYt#TPb|8@C+K)iFvC@<^Vp{ zqZr4sS_`+ys!*RXjE%`N<68Ufb4_$EYcb%ME=?_as&x4AK=bzX7yPas@v@*L(x2!- zyS=*PRn+>25^3$@fo7oo*;CFsLLF(4l6k~XO>EFfzkgLn+P%!%=F3!~kGQfS;8E__ zid~va%5X870ENegS+hKxmR>N+u36vVzlW>+Cume4hRnc@r1hHF;8+`=-$p*oOWzWh zG=^~;(i_&IywqniGf@Qz81GX|B=CE8xqO5Zln3K;>lG+v-lF<*r#4%(R~rK*{Y$4d zf^H5*(K&WsT=Htk8!57$c(?KFBREcp#IfJG_F0phebx{Vy?oy4_oz%hl=C^M_t+;) zTi Udp;RuJm5|lDS{pvVF;0w1*YJ(b~0Ga8pEnEJ^>X{KvJNFO4??s>Mphu?6 zyv+0tG_baRoUv-)Xq}j{A@Rb{+VNxIp s4t4K8se6o0^hia2(6NBwIB&Uxz&8_s%+E-T2X zGkDUs2b!H@SD}um#sq*Wi`Vr6Y{!d}sq;nPZMP}u+7DUQjc6UdKJ6`^4Beg_NVO4w8)W7qkkv9!M oEu2S8B zaK`1$tq4a-J^2R(;!%uyk8*>Qb3)|+Zbn}#+-Gd_t>fc!%p%if_7(94(aFUo{zMPC zqCORVDp4-m40fo|f!p(}97Uc5=fJc6cyX!FIAGwoD6dD2gtB|@u&PzM1K(ShJC^II z%kZ>ygWFjJQe&W(VT>qGtWK^$h`w@x-9}|{uHU&WQR2^FKZgoX$;Q%HlM*Bw2 ne*0i=|XCV%BvROuw%cF~b(IUIK|7x9Osx5Oi;?Y)FU}`@Q z$QZe~)fv)Bg|1#oy&~EWV7B@-4(QkEA1XObH|>*R4YJ}S&bL33e o0 dk<%o4 zy55|1H69M#6ICs|nLN8DIsF#H>y9D-F(l*KSaDrv%KFzNhbJTA5u_{Xh9j{QgY0Yl zChk@COU=9){L&67q8qJsc@d#bp#R)?PIKY3+JJrnoZCero7 zd0<=l>T~&U-b>=@$mIk c207V1tce XCX{&z&e4Yc(b})f!C}+$FMh>2UXGx=U=!h62=;QcI34l5IXkSYel_1=EhTn zJrc%A6R1HCqp90Yz=XKDJ<>X8K)$g7LQBBvoDtiR+F7hk?csNvh`>ZyZNy}nZ95(Q zGx+;^zpjcals*AsK;L%h_BCtAAU%uS$}D6WfNEEEb)9-9Z=FXc0gx_=*0#bc^EwB$ zkNO>mG!BqB#p2d>WXS$7ANQ_KNnoF8K3d71s)0?oZ5rM_7>Fqu;H>Tu;wg}=fuUs3 z>(tf^iNHz>O#~))5=+N9?sn7Cja|6pO0}$jullfYL8Ih)T1(t_Q+8)j5Xo8|DZNKE z=kxTei*Mw#yl2hgZAnA+(#4%($;G#Wyu%|~b%sJ+=+_DY`NqnUSpg?u(X>SCvZa4N z8IbBK4vC?qhR^K{)d)m3Z)wZ_=}!~)K&Nfd)!~kpi>`o-^(RUeipggJK6^6e>SQmw z#9P*=D9>@id&n|HC|2IG`_tEE_BY4hK{){!`HipX@W98WwW3V+aNkHxcYlKvx)YPm z2}oJUvbgLz+u;mMti9zo^;am@U9G-t2HS+`V@3=3sD<9DE;O6up_8er)ejff8PmIg z`wx_4m$rXlb+IT~MFVo`(~*!~8v^#i->3c(56O 5q;{Jzo8qZj;67!&L4*!Kx^!za}~TwW=yHqv&2& z_FUH&ItkDLCMi~ O0R?sR!t~Ub zj)+lk )Z^omi^d^-pSP$LUa z2COO74}KF&VB0OA!m|X6a9${mF?w#l#?OFI 8XPE+sk`sk4Q*GQ zNQ}}go>zANByq>3N^vNBeLzd6WR*xXj%-EUmufhABEnWveCun~mBIRPuVcW!7W$6< z`dmKTK)^jmBbtj%jkP$*!GBOMd)Q?tPV0_7Il4Miu4E(ESZ}_$1SOFvqFH7o?|gY| ziHRgQWujy9-89GbzA5gtnaQ~PxvO+;BYglh(0`~j2gL$T&Co=IIShOZgIF!lY!iy+ z1>SMDen1skYi_?=I6eTMJ`rC9G=wKZq#>LSgjG2ETowux(9bhHH`=+=RNeV%j3E!4 z!9Y2aY8OT6C9f&Nlu@?#<>nysYB@Y2WagP!Qf@~1PH@&vy&<3UyjlBnE%REb1ikt~ zwr>30=BN*PCpZt~Hj2-+-F(KQ>x$MJqz10;=3-5+MY48Cr+wPY%ho}*;{bDJ%w_2V zjlPXeRfU@5u07O3e^&3uz=9M#(8`09yvE4EUas$9n|eX|VKe(_Y`m;~5Ayr>d$e0| z851%Juz@$aJhZ2TPA|p05a6AA+d9cRe|`CVcm{j6*$v5 ZT^y;+tp zXZoN`DU%fv?B8fN+A~Fc Imc{<6_(EUKv`hf6&*|aLSUP3KY)%E|SK=0ZI;Y*; z#uqZ!h0u&Lg=-*G(iw2lml6J~^QGiJ)wOKFSBSUgg=HaaRn;iqA+TrEcRPMf=*H?h zvrL9SzXNZ@eT@TTV(DM`NhY_I7)a%pQrwE$R5#3VP501SdUQsxy)M_)T{3^E%hdCs z8+TymBZGEZGlyGJ{7ih9<@{AuYU7%6R=XchTQa0GB_E9%x`*`Z`uESq- 2F ztDn2*)e>KCEHdrf7tfV3(iO${GSzLatz0Jcio}v`JnOsTQM!)h{#%CbnU89d{;@>d zgzTgnKVpsz4zA^xb9)WSjz$AG3t<54_q*_|@FHtF1b?`