From f9a2383b318c551f79717c7fe8a530862fe9265c Mon Sep 17 00:00:00 2001 From: Jean-Noel Bazin <jn.bazin@imt-atlantique.fr> Date: Thu, 27 Feb 2025 13:57:34 +0100 Subject: [PATCH] Update sources, reports and figures --- .../sobel-address-generator-student.drawio | 40 ++ docs/img/sobel-address-generator-student.png | Bin 0 -> 357082 bytes docs/report.md | 55 +- src/DualPortRamGeneric.vhd | 109 ++-- src/SinglePortROMFileInitGeneric.vhd | 114 ++-- src/sobelProc.vhd | 288 +++++---- src/sobelSys.vhd | 383 ++++++------ src/tb_adrgenUnit.vhd | 134 ++--- src/tb_automate.vhd | 118 ++-- src/tb_gradientUnit.vhd | 75 ++- src/tb_operativeUnit.vhd | 103 ++-- src/tb_regUnit.vhd | 108 ++-- src/tb_sobelProc.vhd | 93 ++- src/tb_sobelSys.vhd | 78 ++- src/vga_nexys4_2regions.vhd | 560 +++++++++--------- 15 files changed, 1133 insertions(+), 1125 deletions(-) create mode 100644 docs/img/sobel-address-generator-student.drawio create mode 100644 docs/img/sobel-address-generator-student.png diff --git a/docs/img/sobel-address-generator-student.drawio b/docs/img/sobel-address-generator-student.drawio new file mode 100644 index 0000000..bb5758c --- /dev/null +++ b/docs/img/sobel-address-generator-student.drawio @@ -0,0 +1,40 @@ +<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="26.0.9"> + <diagram name="Page-1" id="gQUB3YXA9noI09xdmOxJ"> + <mxGraphModel dx="2440" dy="582" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-218" value="AddrGenUnit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;arcSize=2;align=left;verticalAlign=bottom;spacingLeft=13.779499999999999;fontSize=40;fontStyle=1;fontFamily=Ubuntu Mono;" parent="1" vertex="1"> + <mxGeometry x="320" y="1120" width="1350" height="1050" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-261" value="adr_W(13:0)" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="1520" y="2100" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-262" value="selPix(1:0)" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="300" y="1370" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-263" value="adr_R(13:0)" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="1520" y="2040" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-264" value="endImage" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="1520" y="1160" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-265" value="newLine" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="1520" y="1240" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-277" value="clr_PtrLine" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="300" y="1150" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-278" value="inc_PtrLine" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="300" y="1190" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-282" value="clr_PtrCol" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="300" y="1250" width="170" height="40" as="geometry" /> + </mxCell> + <mxCell id="lpLsKyY1sFBaS7M7fLP9-283" value="inc_PtrCol" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=20;fontStyle=1" parent="1" vertex="1"> + <mxGeometry x="300" y="1290" width="170" height="40" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/docs/img/sobel-address-generator-student.png b/docs/img/sobel-address-generator-student.png new file mode 100644 index 0000000000000000000000000000000000000000..57386364e146fac493c2bac50611435dbdeba4c8 GIT binary patch literal 357082 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%0A_>dfzOoKU{3#&OdWhE`8eeil1{hFHT##XQJ@s zBipV($5Wp^=ASz6(p_=G%;o1cZI9g$ADy$cY}uuN&3}KszTCC(jU2Q5h5KcHb9&rN z9`+sQ{`fPwDk&<w@WT7xx9nc7!hL(U==beeQeu+W_pRgk`B?#1liQ?xD?Uw4TJ!Vm z#9p-}L4x^ntQ9BK?>g4zV0y6SiSKJMUjZKpY3Y;EpgQ}&1r`?Jwr9_R$%uUhMyAWG zEW&K}IQQ?g6R++qFiAW-)wuBJL1uPlH{)3!ZqF{-_*?SnV$Sn(E(#X=uBd5>F?sm+ zZ`p6dw;K;Fdinn!Ke(JoeQ@J2XcXbl-}L*^`uk&hzV5#->v?A3yzrG7hcd&TKKd<w zMQw%Qm5f8d>qU}#1^d)guI0~-kL6i3?{(6fTO1+MJ|6SJre`!IIOU36(g1nn!W^b1 z&a*r7(#Sf>B}0VqV9O=#!k2G<-gr1=o?z@MNV7D1PsX9A|4$t^_tVQS{D0mmY2!~< z;d65?{c5x=zK~z__{;uhY<JwZcBqAL@t*nhAVh1?Ue!gav%AjCOM3F@YAz_rf=2e& z|KIcH-i}`vzD1Pp{Qg*A>AZ-Sv1ZZA!ux-Jdvm}4`ZCevowmDHRZo<<dv#iG#ZQ@w zEmDPjuMC<w)l`JnR)R(aLayIG3`)NVQ&?Gq-6|Pvz$cfGI`(nl2~!j2Q}GY)zduc$ zoqSrJEk5O5NQ&{++Z-nset5k9=RxQ1#%|C&yl)c!?;Bb(cf489*vxHgS8}g(=Z)uY z?oCQodH?ysN!iVRe}3hElKgt{>FAh$f4ANE;XKvw+rQBKIrV=J2sS=BI6qch`1#x5 zf3{kk<=<U>Zmrz>CRhB;b+PERv6cHa^L_fYB}pgxQNzD&uhWxN7IWtBjqVZs{;F%< zr8$2u-+$pe^T(;SnGxwbOLVpdSVg5(y?uADBYc_IV^Al_`Mjvttf^gUHa~I{ui5X| zz2@t|_>9i?wd<B%+H^EvG3UwO>aSyUrqvy(DPES;_pK{<#jm!MJ+JxKKWqrKzuCK0 zL?XvPv9in;)S%lM<ChF-jev_aliOW0^--D}p!`BaLuJ8678YTx^~W!-7fb%ieCq$V zU($8A<W}p>TxS!(`%dC4G#%$p-)@oh``V06mD?W8?%SSmNVNRP<7MrinRnIv-mJUv zLCnhk|8DNSD>%7a(&F2Or%^L^6#VBurm}9Awfyb55q4=GC%=tKn!i?yo!hQ5qWsRs z9}gCD{&YGrX?N*S>$^+4S-H>7?W*>B(ZMMiCE?twrqTeK51v=O_lr#5oqeX?RwUJj z-8qmaVa(*rsivYIzZq08&ba9v2R;b8O+jIX0gH(|c~@usSl^J~R61Mn=i0B`b*qhc zRe9g9f3-d8akl(w8Lk!YI-kCmI-B8CWKcJ8uJvN`@T$JqYi4!Y*R4Oa@<)e6{>7Gq zYyKuI=Ct3vNT2U_Z2U?0nv9PncZyP~LxUx<OcW(;IL%cU+l#Jmd!7FH%iU<@zjew< z+irteSeHK9e%xN|eLitF?=t)Qt_p$@Sq6$fb9_N<DKqen;+}NIgDoHT{JIC;Tu5q` zF{oiY*m6*^?%j)dJKi;3V&8Z@!b%p@ked1B!7<rWcNa_gdOX|x^WojX*UGJvg7Z(h z+$nZ)_nEi<%*u+3Et|aUZ$MYTEM2FcKcUxn6%Q+q`m7J_(M20iXQsYVdhh!od3DO8 z1LwCMsnTBdU)tYek;-<vN&WZlPwMynH&a{s8ECQ1pLe&J+b#R{uhFloD$MNeyVkM0 z|9yw&=V|xnJO9l4<x|YbqdsH8o|hXyY5MHe#53T{2U*$*GXkRh7lRTw5vdq;{OQ>2 zhJ-^8!vB0(U0itK=TrXX_ghoF|9sKbZI-W@Fkj+r#vwuR@2*DeMc4gir#wC)8-4oT z=I`sP9{+h=tor`v8>^WX`STn3kA-_*gVl8L(3<X+;{WRVkeV)*xi0Va*Ug2`rhIxI z|E{sQS54+$`#y_@pDtxj+7th2-qo1HooXfD-PY7Ogzx!NwsDrbtI!RPN369!JHqel zx$P_Ie$4!MYPXurha5#Siygb)d<G3Oh}SQ-RSR(sy1IME%AG82(mo#d$|68bpl7!X z(!j%PTSWzYR;*oqk<`=x9&UK->tK+Wq5bbt^wEgg|Lb08)*jnm|6uL)vquc$vt_^J zZ`2o2maE+;pshD+oyEb6eQGveVif;9|NWGIsk;6|7XC>e99MdqEc_D0Z#JvoSA22d zg?uk}ThKI@t@^g(Ov1sU->-wl9Uko8r6zvga(hj}l1D09cLMZgO{g*HR8#rbQgmIb zd->xlu~ErqmulBPPm_KAaeCLrA51GV&hmZtt*J9%$rAMOcxL+ql*2Q0cBg}nVpz<< zp=NT*YX&=6MVuuoi*Vcayx;$JnV<XX-kRm)QnJM@XLH;(`vn`m8NHlQ-_ZPOy}$Oc z#rk58?=9yle69R*$IFFI^%EY>G`7<6E84P{^CXM8?HcQMHGBRn{8FNowBLXGk$1CG zlNatxw_l?_E1+s6yR`3)FW+k36nOdH-1~WA>gA88W22K>xf1&xx(QEWIC0JW`;lJ$ zXWH+cF1#0@3Cl%O5A&`JIienZ`iS^Hb>Y|RXLPEH&8VGU_RWWX7O0NMtKA}CZa<~} zc%0TTUi;kstJ7p^3KCbme^b0wa7Czr;>@!XK&8djNRP#!^4_7Ci$l%i`L3C!WQ9{8 zsCBhpNPkaY&)0qTWrMA|o27E@Sq2-1ySqetYu$UPckIf!7yq9-TtBQ{eq>2yy8RB@ z&wG0Xe1F{D`}4=8k5Bnuo}W={Cj6KEtN1)?(UXn8%6E5v{3Cs|;^*3=|NmoO{etAJ zZIkNf$;8|TEt<Km)EPKsca)K!=YxfJO5fS#Zu~iGCjXsDE&9{$CO>$d5AO6|iYm-o znkSKC^6=`)qY;Jc*KL|-Jn!qpr<XS#^qLt_F)yV4f-)!jnHt%`!hD;LMK4=-LONof z5>D1^vs$DsSGlkzB6)?w)J32=XL((a<r~A-pVhaxf_furTb3?by<OsciTj?fd4^rg z1#?W7n(o_DSGHpPgW|;s0jCq3jQ%>h3$qBjC0?}!pKK}R=3uZeaoQmlvhtv>roxPX z-KoFd`tH2(x98OUgLNzX_k3Bf?Z*!-d7C-*uOoT|d_A5`aS@(W;k0+1*Tt464*zzs zmtBATQC{ME)8AW3tG7y<&zj)#E!h5D-);HT{!0?lda@RAp8N}Hj^@w1BfQ-%=(lBP zmzv6X|8K{S*}v&~XH^@!e{-q#p9kH#%A5Y%r2Jso%BQAcEENK3p#A91U;*`~GU6By zwmgfqHYRH<*rcf;!Rc-I!wvVp9zDPA#p=HY1Pjkxk51n1KlT6Huf0OP6{T5*X1^TE z_k2m)s3*3Fb1w6)yq#fcdUy8cZnO7h67xK<=wA5Ni!CW~Kb?+5vX-$a!PWxQpFYYt z{k!X?_*FZ_X3XfCmUE;#_1o2F*=diqv!BT`c>N>%?%e+MfA^>tm1b1eJX4-&QGfqb z@rq}2?*_*=R<Q_Ak_?yi74TW{o=F;9kxE577%bd){rDTQ;;&avVMf4y(O)Ou|9*7D z{;J)a4VTq!S`;3?wn;dD3g}Q9&>TG|yT87?%38pFhNz&gM2v~z#=qC}s~<h8zqU}o z;PN3}wOIy_lWli)WWPIm{Ob2-kM}L-{&;5f(HXZ)YtNstRTMq#=XG?~>2xJdr!~84 ztiIW-HrLx_7+$oSM=he@sO--hU%$+Iv8K>J3A%8%`R1i}vaF3&tiqGRS8B~tm|?)R z8Z^8wpm4!}sfm+!vxu4#Y9&dW-!r@z54QZ$zdirmiQ|mVzZ_c~oGs3CBVlRDpPv&x zv2T>toHaq?|MOO-n#a%g{{6q^sp>3)9~n;hdP&zWS3SCP`?a{AgqKO;hTo57FaL5R zHT7O1w8|`;ICK8b51(6qT+^@qtt`KF*QS{r;^*fH=+2Dl&6pF#eZ_djgfm-{OdJgs zUh~ef0Vhv2#)B<sQM$$CoSVd9GOr=w(22Dtx2#K=^JRI=pI`5HR=mFZ@VM|bP^0MY zlAVh<JIl)Rj|A4g={Ej<O+0q*){p<6sc-uDd9IgyPyLftr#00H<+*ZUiBq`2OV0m2 zc=-b|GQNxL&yxiHujj2!KpMa`CW?~F1A2a3HQj0P?$W+lY_@4<3RM<yM$2B5HMftk zD%f!R*-eY0->(*P8pqTX*XsHG3XZq=dFsRd)y2LZN7uS<J-+DkQnwWTsuK@bUdj4+ zqy?LSVsr;<F?e@=k1pfEmW^BI-2<PhNL)NBfUAE{Z`0rsQxm7MuHE0tyS0MT@6PMq ze{XWXw7gD8ZN%Qarb%y8FM&$c8#QNr)@=3J^@v-hJThLUurU7QZ#&4i$l5osS%p}0 z(1HM)k|Ot`JI_=dULD+B_|CrQ<8tdyh3|ux^6x$WYp3Py;Ej)-gsj<?Vr94KO-cV! zF|B%uSd)c+KJB?2+XGtIsr~N6abEsszrVjoSXZKzwDD&!sJk7Jxv^x;rU<QTF>11) zS&a}`YsQ^5M=k~LQsSI6Wmn&=eWuHD=E<IU{pb6=B*R~}dV6bkoqntzDjwir6Bel? z`+EJ1KHu=uM~;V|ba{PYnZc6E-vM8lKzjnxf{kV=%n10Kv=e-s-!V|SxDg$kPtNg? z0ur8#2U{jy(fhmRNx-+y`67=$PUre~Ci`f`a_vWV=Oz7j{A_tE$k4soMMyOw?O}<| zMhC4;Gmp(EUz`5%+U}zjA8sbu{Pa@1_ij$!1Yh?O6}DVKZXchci#{(+`t)bzzyI%6 z&3D)*@bQZF(TXoeo%Z|*Grae<GT-0LrP|viI$O&sO6l1=Wl_-T-}mQRpL@EV)_8Mv z|NZIxxqWXny9-}B=Kj6d6cv-dXY!6c+x_qNzIdbQwoU*vDJgtQ3AC8WTYpN|QgJ_b z_iWvH89h~8Js}2)mF<k6miX70xMa}DkPeHvIn+#kam|!x1Z6@*I)W!Ce2fJfSy_ao zs%y{m9jFilRRGWCP3XGz=D~f7>HR-$@b7-yn9i+gKgZMErZUR?jHzQr@`ppozlD`0 zeLPgsyVW?<dfxIrdkae93-&Z5G|7@xhA9}xFdl4q_~NGyBhyxq9}it?3m^9GyiwNd zQ}eQZ)5dE?FITnIf1aE4rXVXn=D)+fH-G<cPO@6}$FVvzc~|Bij-C<&#fg6%Kvm_R z9J74ztuUKGv;Lx>{DjZ@*h}2Qf&xAgee=!>DFkFU>ek(o{r|`R;r_#VTLZMrVl0K_ zBh6&Bef^H#5mtKk%EQ%6+HkG*qt5Bvg^!zCcRXl|+4IqF<D(M4dpk|{ef*en^!FWu zIu<wO853UoGY6Ftb!M~8K_z74O;#4+H(X>yS_4DlLk<o#9{2O<oB}JhI_wkJctdaQ z#jDY;Cob<d&zu(m>Lza4el5LbvDy3s8LYxWEB}GUvp(la8G}xwXuQSAp?2lmB@c3f zr}3kP!VCks@VnN+899x==jk1BvwyMfw#xY%drkN4aom>oSbE1!7B}M=6Fio#yQ|-I z)-`P#*q#M-Ox?Lv9y;4j9{gI}FcCE3ggyAds&Pmio6?YQXhxKuzH`DEjya#d$GoZc z%a6U64jCO^TPk^b!C7_CQg#;~lZ8LO^-6-X$Xu3ZQB{k7T-d&D)#Vp$pui_RuSjGw zHE|~Ay6)v~+^D?adF0;0gS<Ou?Z5E++SwzK)mvP>mpyZq-oVK!r8r~4hE6q;htCXC zL2<ic{(+>~azfp?MFoH55>h}yB<9fuhDJk0g&78F(=K`oNNi?$Eqg_l-#&iD&EKV4 z-2Oc1Uc2%5vzs1Ev&_~s&WczN*u=@1xGF+NZ2q2C$3H%a=l`w$a#8n|BTC)dObj=! z1ce7f<15y*zul1*3#+WlLESgfJMfDe5)M_wl)m>_u#*L}@HhPK<o^A4XZO#R*E_Oh z-J=O{2@iJ$Z@k-f^G0!Zj*iLps6!J3jz4IZ(ws5j!#8)~N&l7R7_gPk4p(w$U}#*$ z+9JGaS&=g7k)q&`5W~%(*7N%5_fIUdf)wIAKvNob{zWLt)vXiY-yhJSvdUnq_M^G$ zl0>=$*WT>d`P}2E(&r^fH$7KIq<$>P*-@l+ElN#xW=ZhAZJyUX7hG)OJemE^eAa|N z@`pG}qbd)Bg2y2kv@`0c(M<4RwxE6-DFK#ng@r}ft@mCtD8(;eWRWtQF=0cE!mJ5@ z_z!XNZix121exaM>tK<1<%R7G5C>GA;>ZA4r7m0mH6i!fsJVl5m5OCtNpSjfYqP8H zr2l~y3(r{}`T)vP7cMXz;^c*?0*R1PG)fdQ9&8a*{|-L)I76Y)jZaO*huKYdlD&Xm z#)8-sEs%i*kC+Z|D*L@_1aU|)9h4;++e8F>GESr#YJxI}gkqx`znTh<>SE55@?7dY z7yLd-fW$LA7$3H@#fVJ?B^{DeOwWvlghL&H)!+mFO%^y9vj_`q+jOzz3ERUKwmY%Q zz>N%LHHA3_Nmt~+98!Ifp}}~tr7enYGH9@~QBW*nT7uJ|Aj4S`?x@T$IAnd|F(?KX zEM#dBmddj9A*+QLP|kR;WtVU@IH{Oya4=>S7CN?S5$DO?L!7*OUi<WdBwpz$%n2w@ z;s=E+$-!jO(vaZftkdiXO6&(TI8CAr6cblj&6;pWXO4lF_331AT2=&kB1zJx31lD0 zTcFfOY<LBjgFJCj3Y_3)IV_ND=Hz_6U=im@_7>q;3FfoF<EvME9V`~+ZD9k|S|od- zXH`SOp%tI1EkHVZHaTo&6BgR$=q@~opHsc(Q{U$bP;!z8WqjBY`1E@Lh(l^vIh<u> z5zg|<g5(LM#xy=Pl{3y=YAW&~ei@5mvsQruBcPb^Vau$^QskU>s$ihS)Wo^?(7S~o zlP)MQot5+PkZ70j^{~^Kb3wuSq6sM26GB*8gxy;2I)h?`lsEwAP*Y(6pB0iz8$l*5 z;AB1KWT2QRA7-K`>0q&tvwXcKsK#(O%hDp8<(8>HPADDd;Nnp0(b(P&8Y^~a=Ioi8 z;B?69O@@<EM}brG+knfEoFXdVClQ#(51K{>MHndM5uL7hq8$tpZ?v$1BCt_SOv3wM zONwNckgo@ukYC25*xXm3;4{c!eAtpGEJbn%fi)|EdS!>+D1tZ_7BD62&X{0uU1!z= z9<@0a7Fb{30t&ta7f?jB+;j$UNVdjVOu$FNXf8jf$~hn*AklrWB_%RT%GZNU#7}~G z_g!sJkQ|u6+9KTM^Sl}44siUDz-ZjX#i4d(>h%X8Jr^D@C7aHeu;IGRtO-0?b1pov zzV!v<?gi^W+sB@og0l_CN}^*yK*1paR1?8=AWJwiC0ovzpc5Rsi1XxuL!8Mkq925U ztVjUWL@-sLI3p#(9b#EngkK%X3IL_W457x2ay}l@7Uo@SNhx^PqIUD;GVn1DrGf%} zE4WuXl9eSwxjEEAe4o03Y>;SXdaO8Of=+boV$PGyEyBkhY(K0GPRUo94snJC?<DJf zseoX{gDta)q<TPsJIg0w4~y`m)RomHij^G&PLpeyeZXf0WoaqQ2?+LU23ZGE2nsu* zla&@1hgyhA5i=-kdlDNziuia;D|A`Jd9t}h_}GW-$5w+(b#P^T*wW>aM`|R1U3107 z!C;|U4;wiDs)<VEA8bjP>83Mlf{l;GLeKq@%fR#Hrl6SMT<l1a<6(+bSy_a0_`vaS zp6RjSj0tPLcen{pV&_utdA@#TId~xSAxkyUfdVrZlmP<d8zY-JzgBhyf)j~DF^A6H zn~590JZm>Qp3-i4TCiVD<+G@t#IsdD!Fj=CYeRuku>Sm$pb`-r03_rNUJZpA7aF>g zyg)V^WHCL~oH0S6-^)a?aznwP6>kgqK~-EMn}C2{MuV#XE6B$r#z}$?XpLoO>K7r9 z6#>ePzkgrrtM%Kv*ln@taf8KTz8)1V!n2Ym&rk)Wh%4?677Ojxxslfyf;jE5Z^Hk- z-~YeYo?m!O^6{&$?xwRQcyO!ttp589d{aw;7~?~hXtG)du#!z;T|>s90@n7Ql@D7I znSN0o51_CC^*I8?1$-sGs&*iSH+a2!;NtHIWCT7e0bcmRw1|^;Q_EQ?za6jM)y(;J zJ?73=7sX$njz(k_S#7&-A#I&Isn=(hV}WloLt~r3i_`9NYJK(eb{LBH?+fU-HZ5e$ zULUJ(ca)^($LL-bC^qT5C@kP7VO#AFN*|zzBO%Q}{mRI6R!3ph1&7twa~`(5kG~+j zJa(#dK*3}F)JNa%=XHO(#>QkO%EaR4`{3@o4t<&HvfJ%~BntR`*Dq7$ySpv*%CqMO zdlePtT#$I3AO<&*bjE_2EH1)QIa_C`&MCOqyK_cST7Kl-x#nk&aaylXGr1vVEX%Z5 zX~XfEpbd=7?qO*@FXrsM_2{$w*`8B>Y_=4F+M4OQXTa+TkaICCr9hG-UT2v!H)J?5 zuM0A65jL~fVJ%lt_TavRee)Jo;g3f$WeqnfUu`(G%%$Og2j?EUwGyY_-xO_4`l-Hd zZ;sVE+cmXImOZuP)lryp;XrqC7G8VsN6~_V;BatE^I1OeFz4O9f|JYMt?_!-)qFeY z@YKK0eyrLs>&>$NdjdLc%j+ItJ}>g<<Mi&2r*0peaV@lG<y^tw-CY-FSO0GfTG_E} zT1VftkTb@LNuU0_j3_!7vSwq6)wM`7+12_}`<}>M|G?_EV~_r?v`zC%kDRYH5!Uwg z<Nxp2Eb%b^`?JU1$G?aCaj_Ep`0BrJ$C(p;>mTj8V_?N}h;#AdcPlCJ-c6AADvnB- z&iU}_%FF$x`)0jf^!IjB_f{9-RU5OmRfpYJz1n_CKzH`U%HWAI&+h*X*8OYPS`|Cj zR?zc};?MJ8*{MlM?tkZnt}kC<@@~=nS3OT`y<?xhyDJvG-g?vhlmE-3?aFMn7MUo{ z{Jc56tmkCu$}M^SY7!V9vRIS1UK*NtSEwk=3h>OB@_&!uVa}a3E=2~rx1Y)1JpW+X z+r+mUziq0^{iBh;c$dw-X%|~0h0mlZ?fbYfN9NzuYcm$tzPSAEwELZ(6^e3|3kCS? z=l|J!<Nx{R_ch!;?mc&SzyGTaRWSiyiCsls=kIy?&?%?VrTi#=$riUg72jIAzVA$| z;p9;7S^xDLWTXu09wJgSa!O0sz_f_7Sya09x3uA$4@VzYJ(^Yj{B)L%fuSh>{7Zr- z9V@Qi5MJSKlGt`>68Ex4kKS)P`l*{ocgMsdLf33J{86mE*fR0<WZRt`qTk+hZMVL! z9X6%nOIUXLqo%*N-13s<T`^%g#Ob>^L=8N?N@faii*YbXJaV%A+W|Ljbx_G@X1~X} zs(9)B=jqm4kMYev!S}YccGW}HSCYOSadiuK1{Xf%zm<H`bERW+huRc1>+<*8ZdBc! zs6TT~U8x?Q)&A{Ij@*h?TKBiGdd;RE7n~%U@2S{bC;>Tidy1M5c>xL5<>umGlISuc z`||`hZuOYTaJw?gwdVI;{(F$$@4sA$@1K)*P5SF;xAyD^lnPpK?_$f7rS^MVcKuhV zy{&LtdJ*T+?PoGvg(peMR(i&RCTK+Le<&-1#@07~&*}AFXZFdkz3orY%n(n;hb*%x zO0_dW9ZVLU{N}Q_RXDD4w*+WEiM5=*%RYgPkDip&<UaOUV{$XUJAcz!(-$xMTuc;a zUg6(o@q?i~!|CNynX?&AMyuK9=^kM<fAVOec-O^Ay`Y70HJ=~foKc^Yb)otK`?2K> z1&4mbl;?vRb7V%l7iWi>$-{dYTMC?ng=Q7;vS_&qm;G=t18vn?d-El~wusWQGFO|w zS&Dg;I|Q!Zo8BL@?~}{3xyGX3=U)*l-V(mA{Fv+_&ZTSJtY-!M)!H@LA(QbT%Wld7 zPEldjg(cOF77IPa^LTuB2bnyazI)rTaPzA5GYk$?+yAdJ+*cfzA5$6rwCGS|aMWY( z*VE;)uRU}X_R2T8*kbraRp$A6r8x%Y%p0zQ+o4S41<rd=*nA8V@XP2sTK#x#lFj!j z!?@W|J@4*y?5lB!_CC_Gt%Fr<SyCr!uwi=jD$BUEWs!X5vnKF_>bSkBbIbqp?pe&u z@Bja}8yB97%MF$8RGYF)$ah7RbnlPe)}$lWu}A;S7Zkn~bn&9qqu`8P>|E+5cPGuH z=>EW+4H-^nJ>AO=e3bI5c=|T!k&6FI*jj))|9uqYs@6%I-xJo69;bb5^Lo+8XUn@U zUKPH0HM(cszK*_a9i4AiM&$epSz}=-E4^k)pYF9YNA?t7(+~Ra=k?Jam*;}_#NYWC zp%^ziY|Rc$(8ki&I`jK@!_FK@zjpG=`Ry0iN4W@3DxY&Jvgaz_i@xpmbl+}y(zJ5N z_al9)Jf(DJU6|ax<9BDuez8Xr#koJ;$p)`)*>hLYaO-M`oqxW}a4X8N+iCRjWngcm z+LEM?tU(+9D7}nGep!<9XJLtsMflIX8((a<TD*C=$<>M;HI>4?<#D>lKvnU>=iDFP zyuMr?r(!rcGxq3<SG_M@fv4=;tF_e1Ty!=USlMlf&;srGlmB0!c572;{{B_@KG*)d z|NivxsokFnZ!d1Gc(l|>r8@Q4)FUC&;w(h7^(XiJkF^z^AG6o)^NOlNyj6<}oSOA| zGC|!lQhOQD6xb*zB;YHd_@c^gS=>X|9+Ki;ySk>|Dgy5Uh!!mm+xIm5`jbb?+CLTk zPHwGu*n3K`DM)!+iqgJ+8*^lK_<E~sY>JBAZWq)sKlY+{{a$tXlZtN_#(`Et+06kh zuQbbZp6kB!{8g=46Kv8UM<va8x#forzrRo1kE<;&GHU<xXKl3C-urk>ech*XYd`k( zhuhiC*LS(|%|mhB&vLuGpZ@#oXBd1={Bh8({McVlpNAc9qm#e;Pn~x-!%g^`{c`hj zKdWDsu6ee%A3U2JcXP+3i2OalJ)75`J-YV4<`LO`@kejZEv(m^eB#u<`R9)1&E9%N zW!{C^-4?I&cUn9>wXfpk*;miE9yk*6W~Zy!w;PMhKCei*;Zv_S=Yr4b)OFCnBBxQk zU>nmS&aGc%wqATC=(pnN!Y@&7!q5JvrK_}G%r4cn2-iAycen1fcum_iit%;3CGOj9 zH`n_gUKjEB%%6w6;pdKsviHx=IMizXEUDkP`t+~6#ZK-zTQB^c*d6ue{6W2lr5R2| z4F5X3e?2<2`_so;TVC-W=1-GL_si_fy)N#%B4wJ3kD2|R-IsEke|<Kc?sputk@Vze ze%o!I-Y@6g_*uW|@kR0We}{8^x?U>$w{PvnOHUsDeIs?{wE4lahd6yVcr5b(*Ky=E zqhBc~%nD$?a#3p2wTCTHGG6&lGMqN~z10<*E_X%l^;&~1hmV`vPU)BRf7=_r{MxsM zKZ@}=o$vGR8bw8~T=jh2hVbw`pUPf-|Mzs=+K*Rzz2x7`|EUNn@%3eH2Y=fM+T|`E z_vmlws-yqbymC$7wKB*=@h1O#yG?(pdA`lue6RlX#kZ;ar}clWJ@-P#xK%}D)7M=y zANnO9IRC!hFMrPG?{_vFvxBUJF8#giPV*~4Uypg)zc{S~t&#Uwq}{w%Z?~=d?s?aQ zZ4WEIs(&-*?aCjI8*?|lD{}sQ)AYtp^V5G1ah}~2^vsijFv?O_m=$1sx=mu`G)NeI z$#B|~0a`ln_V~8rHN|}I1iplpKYu)1{rWS8FKcE$&u`y$+={nOV%M~bE%pDF3q=3f zvinWBhUE&o&x{{IiJ~sk-FnuAdr}|&L<%bfKbx~B<ItDTwc#d;lGUJ&+^6^3d9!}2 z9Bh&Gf7|KA`&+Bn-{Yu#e^$TibLl(h*E#y`;mjBF%Q)m}44#xEv1thl2?HL+i!F%{ zOkcTYi-MDVT8Em->m85PZdzm>zqV@n7tomuPX+H@yc_-1ebv6gBzLWOR(lt}Irw80 z`|8KNTYJ<%EvbD)LH;*y-urO*TSV^3@7au7Z_ICgD)~0!koz>><EHIfr_bG%aj0Zo zm7DOSkLT}g*4?)uZrLi`lJ~)_H{Ph<y?8hL>f7dBnU_P23r~J$6EBds!aVCs+QSyL zSc}V)bdsF~1bii!qKs>nh(Y3PT82}#H)zNHk(%PLf4y(tm$|R0F94laz+0dC$7gm{ z_g16Ai~oA-IY6;?dHuPgj?bs-2i&Pna@X1U;P>m`?!T5d-haw)7cRS{BCQ_QQQe{D z6MwbJT^KawSpUE9XM?Lz|GbzZZtW$<mGwo~cHdpK@BfzA=*Qa9sjK(Z@42Hf#~?23 zRyAlqn7o?cKm}-+<FIwYj)yJY`R9-4E&n=2^pvR5r_^&y{V67joxE%Ig;<G!j?LNT z{^g6S%~vnOx_WQDd9`bc9z0kg8=ZXIS4-Z;?#ZEhKaNh_xvI=hDDg(sU7wsk3w_pX z$k0+dKfQ}HccsU2C9CSLk7emc9_x!gI+)&Fc)0oJj(?3cGT)wFyYV)7>hr*>EUzkp zbr*Bq{=Y{3UrqYHCpp6Fr`OpkMx`fdZnvL&_1)SHE+-?V3QNk*x#VfR^;r068NdB6 z7uMALI`QfL%!fKB&zEKO%Gw3i<@cnSJgk2H6?85p|NYth8q<DS$!)F8_PJT}<M;j` z6UC`rH!3gZ{4X#1*ST`WVq4Mm{@UM;^Xl!=6!(-_dg<%><lD(VT`#5PTmL*?`*HF8 zZ&UZG&pa)bot8BH|JiT-+dtT>tayDl3Do?Uw7}z2@xnV>Pd$3M<L8M}jO||Ujm7@Q zSS0GKTUAch^dq#tCNCo3EAiMmX~)ABFPq=<FH1lFv-gYQ%ZWW|F<%dVi^y-i$#0<E z{`~vT(ELB&o_%WHY5#Yk&!4pW+cvHL^Jw<bh{p}<{@s_0f0vct2|7Z=Fm>~^jQq7r ze*BwX{#8w|E9uNlyBm-HT(w^uR(?%u)`utBM<bqB$4=BP*0Ztnm?smk{+k!yzV+1! zKZD=@w_B+^En>m8b5~u2&0<Z3rPs~rn=0;oJcxT~Qc`tMg8eW4x9ZootV`PSscfVD zkB?VYAFa^p%(4mZ**#C=$kY4z-CL(=)_c^OEatqr=DgMY*M08sI<ZlbD>IzbWIz7e zDa<yfNXXygkvP9?_%aS*LHGK-re*rV7BAm*N2K0g_fNuk<!V*o!fSH5A9t1-tG@pU zTK#h>{#3j8zp{+#HJf98?hQQqtLJESi}0~WtE$w=Y-EG#`VadWG7eeX;Qh*@ZsKgB z82L!0=)*<k-M{!3P2UAN+OpmMoyKnEzCBCy`}S`6^YH1<fA-biCDkG$)&Kktzgl@h zDf2|7K!D0QA)W;d2@VmJ0)c;&g;csaHZOQ$@WhqTkx^WD&Fkh}4K3^fEHMe3-AYC+ zjiG65AubX#&c*(J?Q_}4ICkakRl8Qds(H1m#&r3)o$t@Te>cti`EBp?N6X`N{}xp* zmfxG@B0S0C$nkUUI@{-K|10|S&wA^zr|nbX=dXC4acGVA?xd+tkI7|A$aI}ZQQD-s zPivOJpUGbjTz200Te9`A<k3Z(C%@0H&9rznQTva!vfb9&?3(W%4n6<W{+;K@#PF}8 ze*^9RANcm;QG1m4KdT>Kj_xfyy}0$XQv8jjrh0#Be%dRm%HK#4=TJAf>5$t_UZDfl zrK6-UYr>?*0jmp~7P|;fGCcn$vi{7Tg%uwj>^!|Y>1Zm~{;B(phIh4#Pnv$~f3chU zn=k7Q)tl~%?2B1?u_fN#QbN6Ezx}*f!8S7{RQ&yMqwhxY>QBD24QB<s+bQTPF>RH} ztO<7>FHZk{thQc5Mr+2lDl@qmHzNy7s?WaZ-CZC5<M-@!GkdGgztWLB<RLfV&m5om zffh^~Z${nR@qW#rY|Za~Og@($;yh~;TTRx4BRC^Bns9fhElK#bl}k;fq*uhZ;>FE{ zH@<E;q%W)fd*|;j=WZn3&AAtBnEfsw=lj-2_wT1ydB@bcxO4f1x~$ANByN92$~x~; z*^33c^~Klk6a4t3+qv+6aI@j>r!kR!tJhBGJg)z$>)W+Wdhrz#Gn^7vXZOGA@Xv{^ zYgknC_0zgL&syeHq{Tf9IA%FNv;T0p{NWAUHru2wwshyc>AzebWU*yaNcxdE@BL2h zZhE(`!<0W#fVp)xr{U*@Zx%V*KYgF|=bvXC|I^=Fwz=&2F<0~A&A59qm&&FlINegq z+YibvBn+&ALj%%|o}k8fu|;iunQk*DXRNZTa9pjj_-na)u_ceL%U>7Vz2E#l_fz{F z=?Z<jR;_>Wy}qc%{mrj=C#w}}mHLZUW;kuVR`jp&?L-!dW1j?lHP)!kGRV0+skh?k ztv?5w1@}tJ%k`X(yA=K9h3dr?m3bSUJl~(jd({1$j$CBrn?vg&%Afk&bpQQg_3uZ& z%lSq2{QE!mlH~223HHB&zB$kO;B>G>O=guYCH*Q_78l`JKP;|T&6se(G{{6T^8Km* z_nTg5|2bC(irF{Dw)I~gWZS>!*3Q@e^YqElmpAXv6Ov7?-oHQ5|AC8(@Ur|Vz43K> zjW<2rAHMHGu*t#?8-;u&wrQ%*`fy>h^TyYiM-Q`a)_dC(I!(IPVg1f*g}&c$4^Nz$ z($}G~V}j)2n|804|1JEd|BIXN`)~L1BgeOUx^G!}Cw@*7=Tonpec+6T6c;4Kpvk(1 z45!EE*1b5Tt~6tU&Vq}JIA7PVw2qrOUpu4xrugm0#_vzZ+d|8WX4d_?zy7+p<M9=n z`l5ZF=OflG=6t<wPUmgEcRf=-@0k$S6=Je*!-R}O8+<J<wk&_fbM%Yk(Z!to@mEB% z*PHCBDY)hT>+vILZgxJexeq`7`Ms2V`*Fti{+?Tx@+cf^F`5uV-YQavcV{^`m@MRM z+wnw9O>4#ko9!1DabE6w)i?cLoW-mUXZ5!ne{MJ7|I){I{oZ%7&zIDyNGhw(_l~KL zaTlJq;!pIdRFlNtnKyrISGGPT>f;fnJuBdcM3)-R?J2^(72lS|<ovz*Zjt@v{<sUG zuh$w`%_=x!T3h&bJ)7E>?*}7)Z$B<5FX-!WfmK-T%Zo}0NREIwi^RUxj1b0)EuK%; z|2wR1G-JY=eHRyT&X&0=`#DZF-sIum`!70=$7{&=di*<7{b~BW%b!-dnmm;CPJguJ z@2y7--?zG@eW`wtdbvwYWEnJh8T@`4lT-QU$0E-5xQpWd>;4~c6Hcqyq?`8UZrHc; zo}1$|W?Wb^d8<AJ)$4?K2a|=Je#czcg@tyRxC)n9?^TzpSyo_@xL-Evao1rN;bWhb zx4vb&`QwY<+KuPGOp7S<V%^%ZT~2RSKn2$#&ckL~`_yF0T;pTxFJ5ffds~T9eaTPd z855qpylqW>NG<^lk9w-vOCD@#(eu67QhV-ouXVk7#D^nq_EdV`DR6S1JZHtF+c#dE zc=zLT_RdS<ZZ2lR8%x5~roHWoSf(u;9Dd@+?&~Ly?Y@5Q*tOT`$!E*M<h&wE6c=%} z9#@)WkQ4km<Iu<J-;Rcs^Gx~rIdE;a-_7m1`~GbF;wH=@ysC849ZD)ulW7eZPRVDr z-)E_7&zPX|Y{&brM@`E`>kKRUb)z30k6-8Kk#Lk*{K$iVhmCiC^`4utFL2un7jw&9 z*3b4v{c!!CU$@ZK?tA04J>M-}t=jkFpl$2-U9UdPtaue2>szqs)NQAg8Hb*>Z#n+Y z`ssF^_neRSdzmcUa5u$Wc-!A7f0fUgUo4*+zb*XnZtDEm?DOQh?w)_4`D0F$yRhGX z&-$2><ob)x{cGJzlNHtf7DvC??)<du@&A*v_vCY_`OMp^PR=YjwBBhvDJI}M;|*uX zk3T1Q)Kt9x-{SxE=+tfQb{4x$sopWyRW7!i&XeqzTz4nDB<cJ7yOOilMcUj6czELV zv)79_7rPhUmuCYt4#ehOgtVAe{oeFv5&xX34^0sPDV&pKeQ*3bGOyy3f9qn-^!jDC z`>wEDY?1$4rO@{y@8Ny%(<P~o{O^1Er!1Yee+P?j*2>rSpbjG^9WMCC>LUEA-i<Zf z;^x7Yl*HvR_vNSGiTSa9<@+z|rtSC`Z?$UCo=1(`NgF=wzE=3!+$#B(+tFrLNOnIf z8gt%!{{^}Eza9SVzY_OK|GK)l?GNX*g$EnohThEIdw<Ei#hjbt&mEn1yj)zh=Et9P zHxjPCI>zlH>^1*Ztl!&C_j%fXn*ZomZ$En7?q=98H`R3-Uq9ahSE-t=?}N@+R()w& z7m+{p;&Y9g$(ybx&Hul1gZ8z^ox9REB<*0^-I(Ci%zLH?yg-7y>cxSV#YH%)!AfxZ zn)U>zP3QCP-H}(1kGGgLVb7F#d*;OTo=<TXW@A&n_B*J2&%Ol(B@4HzJ_=u6dhA)Y zc)xkb;p9#41J7S<QR$h;V$@Ze_p>Vf&*fuR=T6RWdKtX)J?q}W-;bMF_5b`~kA57_ zzsknO=;p<idyO4m`Qiog#a^n(?5ob6^Lgf}?@>{EE!PY9WSrZ1OO%{wgpPqotZv9S z6mj&`gI`sgYAPcCKhAFa@o4++u2pAtZP5;kT=!}JGP|1>TT&*s*Du#!x4V47i@NZ5 zLt*o|HzZ%1{fwWm{&~isKks7JRC;{OaQd{V>eHnvQ~O1nOHKQCF4JH4H}v8Bg}uwt z9xp7m_P)R3i0EWlUyo_!2UPbKUOwE)EO^uB2!H>}4%=;6D=YSAf?|iV)|$hD4GkGi z&2#&zKuy^G{RSfM|GQ1JUn(cq{_d94^SW(6;)CU7x@LUd9<%1_xkH7mRUK+JpY8;_ zDa!izS55D<{?yKy>|2ihzq!!VXzF*RSD&U_D>hMNjDFmG_oJKtx&?QCtxkKiZ}YB2 ztAAXK`SJH&W5@3K5<PdfY5XhNo#FIyan(&-=E6(;-R)s@1wQUIIj<jGJDIclw^CS? z*?;~BTNmL;2~I+O8s9Qcy494f-)2#Ee%lM3$2xjd>*ww3nEr2Gcj+vf3!9eAPjGrU z-#DDSrVm(GqX}ph=E9cOx-%wR`1-|tP3Z|xv#$NIIG6lR_h^~T>93RYE%aaXR+M~8 z`17iB;f{Cv8gFFn%~8?!7XNhx)SbK?XI%aG-F@+YuRnILv#&J#f7yE5vEOF7ooBC| zIX1=Sws(`D{@z*L%b)Qb&5xJp+C5LA%XWKC=i##KwXZKnzQ5Qa>;I}#{hvk1m4f!n zn-<yszg3*Kx*1s5y?@WVZk0)e*Wa@}UjE-yVtx7Zq<dF`7p*<9`_CfIrTuUA`tuz- zeoj+P$iqp@m_H+4LN?Mw<-_%#J1aiCT)5-!#}qZ@!cWU@iMvI9s(qz6%V0|P47<hZ z^X5hWkx_dcU)t*PX1jBCP0HzMH)_^i+^=1<^Wg@cqV?`+{70ELw>>i7%=Vah_SPe% z@p^x%H-B-Fdd+pP<=Cw0SIHlhVrc9X5b&MB@l?xZv0O8!@@=oU2EVu#y{{+Jl)~cd zgin{GJ$j%2OsP_{_Tu?t!J9um*g2OqKUn`_OJs3-(sAMHMf<-@bAOw9G}UOMPq>SF zwptZ?(Z@9ZBif&fC+>;a`yze6Z1m$U=i@)ppL_EzIQ2j7{l%8#buYWK>q8ek`#9~S zQS8i!%AFlPE+yaj&o5b?Z*s%=dD$_y;LWV6(u%VtxX4eMf7HwV`~1tI(rc`~Nq^;Y zSyTI>Y0p0Ibu0IpCS84MeDRjh$LZIVpOx$XYyQ+48}<0m`RD&FSGH$3ZJHk~FWvK3 zPfM;dqUip~ntMCne0bmWWb&VR9(Czz6KAQ~d(L<|@$>y%8!j!p_VYWd@T(e!Y2ao1 zWL7b1o(?97lO7!Zbfbz-P38BFXX_d*-c?uLGmt;6rmR#sv-;lEV6lA)bKir)FC{np zj-7yUUBJ(I+=96q^UU7a?JaOf>e*ttbI-lSoaQzL66~>N+ooUjcKrL|M&FI%)lBRr zN>Ylm0<!v_{;OWu;Ii?zO0nm&;FsygeWM;N6Sn?zZ&}<T&XbS&e&ogfd2#(ItIe^j zOOtwMRDYfFB187Ix%BHQDkK*X0pA%OZwqZ!-)rVPIc?JZrhPxB?|z)0uk$bb!SRiE zHNGj8*}4i(+FSee*1jL_WVcod?pke|bS^Yl>1X%nufJA)&v1J0a74{L^m$C*nFmj5 zZ$H}6zg1MGGsCHJ`PYT%?V#PTr*`i+5vr{}y>q$#+f&u9wywfezm)&|{By50us5ov zuDC3HPxjdy-Mm=w?;<`cx(y@9x|{)8jjV`fyx6i!*4IUuMcD1fr2UKL{W1OOWp8h_ zP5IlMRjTiEU+K=8p!4a?|J(A<|L)m;Dfju`e~ZOSj#jO{l5e{3-eOM9SEAc_kMzig z)#<sjZMomKw(#h}x2(@~X9fK0Ka?2$?daF<p>nd754+Yy)UCW|ul`lU*CXWKi<3ti z@4xA`t`GlPaLClX<jB3tpa0*}saN`1xirD4_T14`B=%E~ClVZNIXl#@Ts9Gl^j2mS zcAHjv=licmvvzA$bN+&c_|v&wwr;|cTJQb3kx=uqy4LXh)tFHK%l-XtJ8ZdFR95|3 zP<U^R;37`vogIJm-^E%i&Z^lKWiMSm?^fi8utl6twe?^0-uS#`Ud5ZA3qS3j^8D0o z|Cc?v<|q1oO|R-!Q{nbG_qfvjbw6kXWZ$W}P`z#UCFkdKOIAPszc*6wol1SALE<F# z2Or7IX`rB4;K<@4{Hh?JSHj0bqWC2DLHqadKlUFi+{3>27S~LR=MCR(WZ(W%Z@4#Z zG3Uv9@$nP7Pv^^atbQlavH#q9Kbwcr^Rv3w*X*f_Z^>)Pa59=b?_Y<?i;s`1wd=iW zAFsSw@ge47%aN}Oi>;FvuUwqWn*4LB)qZPnP+KCes-h;aTld=8W83*N`+cuv^kf|B zILlps?&wVWx83nJCK7)i-~N?!#=T~V>A73`YjwVq)~`))y4!z(iIUdaU5*a5D`z#@ z#4oKl*y1WVf1b67_<a)rb9<v525JFsHoxMU`QyMcU2bPi`Kog7EzjO}yu5Z5wiZBD zXOF9`yRh508<)jDo_1${{OvgV<9F(8kC*PBE+63WZQsjTH*e$}&Uy3c-L#7T%XBYB z?myd-F(u>Bi5$6_G>vsTixuAed7E%Ev3pyJT6SvkZQe~EKjuay{m#^#cvi&j;`hIa z26k0t`4^4tUtd}mk-AgKeC3DoOIMo3k2F2<Uh#qRaQu2Vlf)Fo@_%^-`)Xf1-1+?b zl3=4s%*ThiQAzLLMkSs8%H=LCS5c)=X1{p(gShBTg6m_fm##SaW_t0)ryuXSuCIhN zk3XLMtiS&GBlYk6Zkzu9pJgg>xAtl8Gg<HSq}{!nKJN34N;<zbI%#cr-}|3WZF3*3 z7xI}=QS49F{RrUp2qROkj>4<}_siLB35OQVsbv<duPD^`XOOP(&&>YO*?TcQndgsi zdAqOKlB2e4?Yv&o*>6(stM*^MfA7Rm<IhDO56y2+sw+RzbT8)17xyjO-AcBlC%x?J zP?4Fq=gXdNr*6K;Si6|{<`VCdPnG`txE`ZY*k8H+*`xRQeCJg<6@6ZwIARnl2pWPk z4LfthN<00vRm{a4<yrUVcB}uJ@#hTB(QNLv=bL=O)xsjQl6plqZ#*eA)1!&;?2ni7 zJ+1rI=T&QN{}8k9=HzbH+Qa*`#pazp*ReJ1lpc@Cnq4(&MrTh7G;yA-*!32CR3a!_ zK}$vC(u7cN<4Tx=$--^>Qt$7**~FQef2S3ks}-CK4r-EO3^cUCn!&C(rm8T@KyTZt zI!}XzyXL)f0}1x38sz8IpP768f4}Scji)^~9y_OQc1>*!_#`AU-7hdh1T@5xSpR!r z6X#@`2DZvSoAsYQ`d%+H>&n%48$-RfZ1s61WHX1MQ4O>$?$E+pLKJjcW;ifjY~ef- z_bIT6b8^T1g#Lfm^nX8=zP|Tw_zm^spZ}{<!*$G6jV1fP`7p7}3UM%4=*gZPjR+Nz zJ(<A7>LRQrP<_#zQ_V-Hrr9pcWT7K_`b`!N5fK5O0t=E21jPf?J&jo$9cm%Yg+1Q| zd?b`-oOU)jsHotuU?vNT@T|;P-zXV9R10@7No@MdDy$~4$5T#y)&-U3Exb%DP6i+w zkeonjRIJiem=)lAR_MEs&kTn*YSmLRoF?;LDdSiY;$Wb-w0V0j6Vz{{8q6V}5a7&s zu|?{UURCzN7S5);OUFCZOkO7Bb~|*jum}g4<U~`l#$Q-NVU_{ojV4avhC5IC1$;9; zG2WJIR1+8Q0kg<(E^It>h6~8qkGa*ZNZfb}s-hOGV`UM3Rb?YaNpn~#&cS41o3e<{ z3dMENpdl!SyWAXVSN?YBkhT8~>R6LK4H-_oZW=QJlq0r-g0rzrK)@%X!!VMpEy2)) zlu-c+ft~<^g={PGz{^c|l@(@OFj%|^ytj$WV(h{PrbV2gatjljraImQ&k0C*IT$Ql zcr0}z`Dx5y!9!LT;Z+t+2V1m~c7X>_Oy)EsI34ai(*%k;sE<f>vcqBS4z-ZXmL|^7 zrV{X(u^Aqq?XxnoT|se2s1Cp=ydkAZW1F~u?}|eltir1rUVyhOT-X5GAZ=~MP02z{ zUVVjG0S`G?g|%3|l!EeWMh3{Oa`TT;?AC;qCQi`@Kea&F$z%^GT>CGuK|BKz!r@Qc zQs8jyDQ;=veBAQc6zo<m#)B=(Bo_OUY!)ICz~L%!oP$;PSmQHoP-41Z!qmj+YwRTr z+5(2#IS3=LsR4zn!7)KDwI0DUPr;^!fJ`;@n@zE)Z6H$_PcH?VS^_fFJV=_7l^Y<p z20Y_n6+YEcBnk42$<l@dr{KP;%P5VlDTYpnxi4RBg&7yNEZ%AeiaJs=6*RQL<$$W2 z#*7Oe((iy1(*h>OgDqSiYNkR}Knpk0Qp5_-;$Oj}gDtb>+k-ckH(H4a_^f#RFhU9x z9;6wD@Y;p|2a|;d90hzn2!reIOfdl;kI!G;g3kjZGi*)z8Zw;bMRKZ{oMYS;1PaO( z`x+9QzWUxJYtJSuxK{KwWE>J&*TlKiGUFY1GeobV!i)<N#hbi9b|Cx&(?Fa^LWF}! z;>5`cGaeiVZ<)KKqd@88mq3OO<HeTk&(vmIn8AKy6{w(IV8ztLd9|=aoFb<tvAPH= zIT<7-@y}fjnooDA1)V5!-DVA0=NZ7lNh4n2E9fZAPyF55V7LARwdnGfm63H212ohx zsZ4m4ap+C7-&x!G+bc6?ZQlzXxNK}<%6?N6v}WVy&K5G07c{B!DuXPTd)#eZqFO3= zpT5I_Hl`*{(<7zXlmzmEG^RzIri)9H!G>IrU~1y*HB?_sNuQF%jeCjJtO=)|7G+wA zw98e!u-{hw@u>Ln%-7$*=@?W@!Xg72e58bpuZF^`3oXvNTU0N$i16MH1H~bk4FhNi zHGzroVv7h*WlHxVPEDz8Yr#=RNipM~z{<3UQ&Zy82{BiS+s2UKa^PZd5e_nVGEuin zZAr$BZIp*(qX-9RUC{~UXc1qJiyLw&Dz72&s3{=e>v3>``!<bP6BZ@j1~)XI=@;S) zXn+$R`#}l{vnDht_U8neD7qfr779+K#B0Zru9i4Bm?*M3%iUa*;ndZZyP8agA(`ya z*pT7G)n>EFbu>XD1q&oekPy71334<+QjmT|OUTg@l7!L*y?&=&mEE{ZyyD}!&5w^- zpU?VLdrJXqlZN|)&VOqkz3`UTdwyxzPPNIWpBDLUo^52NG%J8@k~byko|%(F-Q>as z9dHGnrMKZ--tuF+cFzy`{QSykW*6aCsY2HrDQO_}L_1g{-YMA!-p=K#F=1IjQ-+hU zTtYM@UEEBO2%|X$rCYZ}<Yq-nX}*~WY8nJ-z(>I6E?1qSFl)l0!+EDEh|~p<tS!Q` zN;iFT1qHxUjwOb36lMjSJ6XUBjueusD2T2L2B0JEjJ3GIV{}p+OLRe|HakBd>)ttt znGOvHo^Wxf`>fl)95l{z;0f0f%{dCQ40fiUy-Z09w^53dL;VWJwOo)P3lv!{3Hb^5 zW^_Exm`FjeHXNv6X%RlQ_?b1xkPA9YnH=gJY9^;MxAIfcKvP)XP|(y2POF(>8Q(z3 zY?lA_y`b;_r4BOkNaGX^4)rA|7q)@NJu6vfS<X?I_22>pCNeUu6cF(9I65O2d<Hxh zhe@`DqshUElnnW?1Su=bnJ_ExwgxCIJQ2(|R?w8uwAc@nW<dc=PJ4HWmxG03=;LjX zpa_X@T5$6a=OWHN@X0phw#X+~F+Oa$(tD>3l#~(#8`HSdJJc+0k?TT`GaR&7TZDrw z%VvYN)HQBrnFY%94?HM~A5j56kGC&!=YZ0T(jrN)$BjTC3$hU;NNPfwkj410C8YoU zGfn}82~~}5{OTQQOa5^%lUaN~qO(PK4%kf|n;n$fg<XU%)f7=Q3?=ZRy`iA#Fxc=+ zv5YH_+_RRF+{4J!&B>u|ApnZu32BXPJRpDnJaUVIh0+2F23`&p2N!~ZuF-_sB+A0k zMDgtMtM@=@ip=z0Kk5BB*jfOF#yw1jIQiH>LAxY!!9-BxXWFg&Mp0f85fSi%%q1$E zW$FbLpdOz!x0Zu)7RVnUyGTu13sy7~G%-WRATwGZk+p)d$Wmo(5%v<=2@b_s5ex1e z=3K<-Tk|6ad{8H;X&#)8SU3b$^feSXmCD?01!Wwm;05zQruJ4YTQdtJK(47X5*Q!0 zaI$^30EOWS?Zzrz^$xWwR}D9U4__raQ0K9>2*0Ydx(1$3-zv7^I4E4#E`RqAl!9SC zBGq(<U{L$&szok%)bW@`K>ov)Gjor-<@Hn-Sc2m|!>ZA=%u@5(jh{!B-JZ@18mc5c zaIUyHSS&PK2OH`Q@PEj1vE`VBaTvJj5>`-{W59Sq4qQ2s>YEHD#)mCxQp?tYQt5#i ztglq(Oqf}FdgadN`PQXpq(4B;fxFPdbcpk;MQAly&AKao4i*c`w!H(NhVxZFfd65O zkKXjtw)L+wH)dEQzRJqoc<aixU*cPwKvAv`z}l$#pFh%KA=ipLvi#&Rv7rFoT{iGa z*mRhadokz9RV~7E{6IE%Y;GuUnzcOtJ*j~ON*;};SX+d(%uCooCS}Alp5#&gqdaTE z2Tpa9cZ!>eK%y&R94r<VIhTW!gA)NMj3to{7K&#tZwD74Gu9LwO1jvR!gGj|4}3T^ ziYzI{f}+>qDbpd&snWZ^2Qr$hJCM>M?B*&gWcRS;n5|0~xEP$u&7mHW_kxeCkTK!r zP+wB{>)X9EO!af;ch~RDRLHBUP<ZxFR~)oXn?LWG(DB+mre^bI<vv?`Te{JZ)2GBj zG2cWna$~`v8PA?2fdVhX2$UeDSG)zenB=UY7U5u#*mTgg&!Lxf-YjF0>bbY2_4m$_ z{<`Gcw~p2OuLxG>T@891y2G~dnBa^P1x^PuoDQkZxnR+L%nMY@EcnHAi1Vs>sXNFe zBnR&-mKNblCb`wQX^sC5cDyv+^?2uWH+EsSZ+CBseZ2p?^ysYjXH1M+_X<i(KH$<S z+~p=bNt9c?Co@kE+{9567Vyj1)Od@J<TL|1_Oyw$MOaPZ&SQ=%4iA>Kvp;U|uJXS3 zbB670(3UK(xaUkvnL;x<3Y<=6I5FwXnXoK5eLX0WH!Nu=Xfh@%n<)fzHWWCiR_&W@ z*2w*Tv;8l2uJ={z-$o_fdUcaC)$-}De><K$`#0(Qox~`!JiC>fpOoq;OfYMVY8O7$ zrKa-Y5ND=!)i>~kW!+pH>K6PU=a60yPvziH4_Wklcc#z`(B_&8(G|z9%Uu<me`8y! zljpuq`L%^#=em0F<*$8qH#`0D_4F<^pBDu-YZ6(qB>gn3XHCf9R5v*@b0c`Y!-~d+ z0w>;pyWr+KsrA<cP)Q1!bU3aX(0{R|xc-{_^E(&fi~Qy5{JsAi|0t`vzL>Fb3)dB` zIR?uzoSO9KOt_|;aUbOC2^<{i7VIDv1^yRUaXjPD;q$yl+x^~Zp0tPTvb{Fx`pyQ2 zS*%%teiFqdijts$uYV!9Edh#m(yaqI5*F{b-!OfZ@bx&uzhjAcURA{gh5uEnQy%@> zynE5=y*JfU>RGhJSCm;K#$0Skkv_yZmH)CVC`=a=vbG3Im6t&Z9FTdWxMBr6<HMG! z8BL~F7CY>96TbJR)8fUZdpq9NyR{30mLb0Gd)-kQe(s9$N>jlV-i=vp!pCHNJyKeP zUwx{H5CP>Zp9u{Ghgck|c|aUe3z-F;ph1I@4ckH|f~<Elo9ZH*S5sl|Y|o@_(P@1* zDmPENQQm$nBY$ni?R`E9Q<<)EsfUR8dOT?r4yyc@18x}I6B6(%5CH`RxH(1=Lko12 zt;_lH*?|l0E#^F%k>}5%7Q8^}VN2IyPR@pcLn(61=fQ=^NihMx8E-f%?8x%vMo<)0 z*M-H$GG1(XRkcgH(M@25$((?x8BR>9b1rZkKPm+-F2k4(ac-Sd8c$YnX$2}S4WE0J zTN+3h?zi6l!OXifZPDJXm#nYd|L!XMDqrpCIt||En`5}I_r@-mRN!=V5$DNGt-{Cb zZ0>`~=Ei4&0)83uB5!e$<HrOemKI?(=h`1Lcg7syu0MJ7{eKG)|Fe=^_IoFF+y6Bc z*WWiOT0-;1yY3h7&K^B*p<qqI%yk`K!%iOCeeJ}NbF;S}VK>X}?2}^QiHn}lJzGw$ z$GYBJqTj}ROM$QR;j=BR^F^nhJkqv0HEB0*bW;D?sHEGxn<k!|^4#M6)rYlDf3Ml* zq_*qU>D~StSI7OT))V{kY=6?zr%Kb_$?T1|*m5y0(`NqE`F7<QE{z}CgjY%VdOT<m zmiqW3!WiV)5N`*Ig;A5<Ig_4(I0QVFHxwK?a`tb2{*y<qtl1wmMmm4|Q0zRBh3nYw z$i$aEH9r@xEqsxe8``P<=jqp&m=E3me*C-3%zBvZ=QXR`uQ_LK?AHBuYunN%VW7PU zJ05Ruu3Z27-$mJvA9KC#FTUbzSDBap=T+yQ^FJOM%6`1K*4;kYXffyQITwV_pOMzu zx^~h3y7x2ZZv1)cX4kukHI{FmZ%%SB&xmOJ*dn}2&e!8hi?Gx;o=EU;M2Mq<#X_zQ zGMj-LLH^|V-?+Rz>AP{&s$UzvubbVg!nWa8*UZBE-|g#+1&+txjt@MN`2G8~BU9VA z9xn>!TL1XO>R*rAzw<naeGXdY?*IOZ)jQjsnvcrq-;UIuJteQW<L#4kH}Vc&ECiiI zw0Fz=^IiP&rA@XRh&aq?+Nq|}bcmC;woeCqgRz!~fZqy%3)ew;h2)sh6c_MY@t1MM zQSX;0S6z>_6y84nlBBk-^|k^hJ@LX%U;lnw8~-gl_4DPh^T&GC%S2+1N7}#b|6D)u zf26p~4LSDu6`wK=om>9p$l}eP-G$|LZ^&MFb&~wWmc)r$=AU2nM_`AiGk1^boPf<4 zPD&bcE?jti;t|N53!E4qws0}llC|t*LJ{M`mRoWSQG2J%Tl1^-eOBlHKhygRa}$p7 z|9aGQoBi0Axk2Ljd+W^dtalnmZCbp3&ol65q1wv)!drE@g=gmFF3pSobbq`3M)i4r zg8yY4>c0QBYpJ!XFqh)8zctfrV)Q&(9d<r!ndK%dl=-kFWRCf4&~k)ECZ<E2ec+xw zsU>=YgDR+1{6h49o^HIC|Gb*7g0i5!;hW3~uF5hO{@MDInJxA1f)lRl?{AA8ugxi8 zcsR|S{qbe-@6Y}|<E-9#wDWg}oNvYZ@Li98+CO)*UA)=$(bCn+pVWQ>ZvyypI;!ID zR`=2)>f3bBm#!&;WP{W4l^WmUzR$ZUIeY!w<w1e(c<=4fd;7e&Cq^$nsj=t~r)j^M z%DzLKzBQ*HU34!l4)rN2MU0@#Pr45UL9rs!AGLqVzNb|;cf8(mZc?{@+@<?3m&|+d zQor)$4!w;0-XCWzV>cdLHS_4c|2IB6e>^z3`qRD79sOI5MgHF2|GKifE_1Q+?#JiX z_x7o+`FhUh&$mbG_Iwxjl}Pja{d3Ka4?7)$Ij3-``*@fr3X1w=tSU}52G#8bZj29G z44Za>N8CuN>OhJU3>hD`yprz-(qEcxBnUbpCam6FEi6V&*t<0C(bS(iE2`cF#FXE6 z*fVp#`Gy-#|9|f}ccWly&c&nes~z+2{QHq`F?-i7WzY`vA6LGu-T2LGW<;Ks8mPd1 z_w#Q;OignAnYzl783`Aq<+f#KpZW9VkzmV{-<SJdo%?-<+5U#qbQu$?Ss$9K*&c=a z_r$$k7ro_3o%NQ!UDsd5$4t1Mxtn)$;q8+@n}sGz`rdeWWL`zty?~36U-(4qyCIPq zTl4JcoM&6+pD*f(nXK2C^st4qTTSK3A<map6=jgNFE@v}g&-)XNNEOv>OV#%NZZ%^ z*Y2fpUil~8_7uIHvWMUI5vRQEZu5U1l0J&RnH=CKq@(er^3BhMKOUSs`kH(7x(S{0 z>(?qTTRZQ+>mSy=g7bGRP=8my>O<6|6NlF1m%2Vzl5JTSbHr<Yyg+m1zHR5fOxy9R zqc8CEy`NL&Rg`>tp<k15dD@SkJr}R<e_YJ1RC#XF{JqP!A2F?bH$TRF=EasE^*2wi z7j67F@u#z}^8L9hGMqNgKOeOD!~2&a8X|r(E@U`4>Cc&PjydBx$j=5k3UeN)kes5y z{lX9>g*gG8_a5C}t1@fCotHPK7i~Ptd3WMzVOELCOUt+A_r90g=dm)O^Qk=ONQe6W z4hMa=ZgaU)Ta})(E$m;yp%dcw-*n!1)$*?5<<&#oKkrSH{dn?ilvwpOHTUx4du;CC z%<Z1`<NJCYIY*C2JlV3l6xi6@^~-N+&irv-dzaGW%HQ{&l|N59>->qGt?%AuUBCP5 zb>HuE6>f{1bN<!eHM@h0IiGN=`&5`HDvJ7LtZPm+2Yc9z@nOrx%AMerASj8GR4*hH zg7U+h4zGAG|FDl2H&;L2Xa8g+$DXZ6GFPWRZk#!{QvA+k`Hcss?|R%j@6f_#{kj#V z=j=BWlq6o1jxRm#AXA?k?>OghS$6MCcAdKQbNyd-x~KE^{yJx$JEu2#-@YHa-v9iY zP?MCFfAF_`MP7Q2&DXa(4tKAAlC(Mbv%B!Qzd6-1yRx(IRd=fKY_^zx^`~X|^k*Uw zpKQ;1cB-jtImCIk^1z!eQ0$x%7Vy(Je=-#0XVMdPH#dh`$a|NN$4kF}w$fd$zZ72( z=w0e|=I6U9d;b4ht<Ls%@^i610hRb&@7J8Wk+XKYGt1Gk|Ia}QFYxX}?F$Jr_63^d z{XO<bvE{G+yWV&^E301{e%`vd<NKMT>*xO5{BK63^TWMyRRz^DAO3B3=J5Yhs8MFK zQvLm;`jQ;?H#<YU@6`+YN~9Iqt^U6Go!?p24Nrd0eEqI0%O}c2aUm!^nbRnb&k1FW z2U}jvYslI&rS9?J=8reMyW06DWjG1>M|>*2cmDU|H~*t8oD9Co&aC(}X`Nwi)#=B( zlfRw*xtcTftzhxGSwc6@+}>{U@7BH@ulgDT&qt&`_4#wYwcGyp<L6(Ft)DL=8zJ%Y zQ~JH@QqyZU{+0i}>;KAyH$JcVbFroR+>4&?YbM*XDb6zRc~R5%^2KfoRi>X!oUh;2 zoqFOXEL8olWy&0f+u*ttF=|e7K6S8UYT|sV(ff8*)}AT<AO{TnJj|fHdS+>6_?k_3 zl$JJa|Mzgg>8i(V>|E{~c7Ntg`_cc{`q-A0chA3w{IRKa;rTcD<wvcj)m7_GzjH@^ zd5pc)oeg)U`22Z4HQ!zM7rXK`s}#qQ@1k+%K>PeBe!l<j+}VDfW9k1)>jNIOYVS(= zxzug8O1ZeNgjt#0@scmGbC?>P4z{Gco*APz-Co?d(cloLaL3y~P%;fD2VFa3F2qgV zAm`ME1gG3%fxXi&&7Wl~ayeb3U(Kd2FnrD4OD`M_wEMsA{9m`N;K2g1-T&ru?@pRK z^?uyx^YT(X=j*deZYWId{PB9fZ|Af(AG9Wws=e0zTKR0#x`@o14}bsvaj)^mrE<4$ zu}K-uLirkBK!=YN+Ii14`#(>uG3j8-k%fATI8QpY2wy7Ec?+KBp9Y$fP$Ri;0hdId zK+9;~#ei~Ndi<%Q*W%ym?K<JE|Dx+_n53-ljaRGhe!Sx?{CoSw_m+!|?`=L8t=iH7 z+6?>S!O5S=9Oq;2iE8T^?|Ijq|EB+P-KF><iTn1ul<oHUo<8(iZ-1$R-=B*wG7epP zo&LBl*qZyEw@KoRV?T8&@5D?HY79Eq(y}mb5$DOI7U8UNqxd>qacTL;KmSX-ZEHcL z?&GPgr)`(+dw-u(AVY?6zp+|+*dflzWZo6fSS2dpv*K;as*gdxAX_aTcdPArJ>%Vs z-`hKT)$Wuexxd+Qvfzrs&pp4~^sd?3{Qm`QTs%B*==k}Uz47*z5k(5^H9Jht{f_y4 z==Hf@ne}u2cVArC`hT-?c1-1s52iou7I7ZdI+uR(@v|lojw!-E9ulv#W=+uXuvloe z{4)22t%arGOlP$olplNI8)lLC>5VOTr30xE7vRs-#JP3;v6TH&_PyMA*YNpNkOyjl z(%%^5TC^B^iu^p`-HiLTRkENC#O=HZz4P{UY~_y?*vq^$-6;2Kj*Y?Q;)kv7@pr}V z@2~zcJ?+h1F=M-%VIR^KaUM1~m;Unev#w`i8s;-5Xk3XkQH-2Y;PjP$h4_Ni`LFs| zW<?%&-*a;Ax`IPbepOqM(>hJq#L6P9mc}&sZ_uwVlC~eO%vsoZ^G&q>&-&#h$IPU4 z<a}?ud~N%2_kY>Fee&|R1*>ze3YGuOGx%n=zWj>S_85KX{&RAF_onN;?wUI7?2$V0 zugBK*^Y;C^7aISnqyFFWX-&Vyd?l6@+NpnWKYaL=PlC?DmXw#JlD-~dYI6eaPJYVz z0zAOsqA<O?;={~^JN~acSn;QI;S5uC@%8&=c3;0IqnD*?ttx!lxAR6pmf5|{Wo3!A z*}pS&FK+r#?|)5o*?q~$_F@lPPR?%>CAokERh4Sa4hD&juBiWB`X$!?b!YoLT^ZjQ zmjpLHGMc%n>Cd0+xf}nj>c0OOQcAiV=Y`e6HGg;g+wo=k-|n@^lT9}j9(lL6@JVRx z;%nwYt~Z`unOE^-=f&T<|GznRqvY%%{aaUyO&*?K|1@c_^6u_)Pwp98Cx70mT|e={ z&o!?umTzVglE^ktycu=ZO?c8#PW6!YUn&`QRZY9P@A8_R&L1xrJAeFb&v&#~|GCmn z`!hf9?yRVFJo5VP&KJ@ZzdL98xVT5VgjcIgn=iESSJ%ym>ZLw88}rPzMcPZhk5rdF zX==As^vCNzF)?+g9sc~zXG=P#eYmlu$o_qVmGJyq`&9Y<1!U*!h<f_}V(`1-<5hF- zOD2o1KKu0$Cpd$Eie?g95Dt5}IMjUJq^SK~`sMJtH{Gw_M?X<Lq`K|@MBV5|yY$Pi z$fQ0y|10?!Z@0VPq;|Qj?$L8TzT9@>8R$I2dyhUgKeoTP?St)3-@bQoKiIp(|GwED zoE=l=Q4K90j{e`cRW<2dXz-%FTR&`jWjX7^E9spP-#<LM*b+bgrsVs)rVOXObI#BD z&rsnI%h{toV?xe?b&EMqGPMe?Dn7S|Ay)Qy)E!k#F4cuCSv6tNio(^o*M-{O-r8oc zEMT?25N}15pWd^-w&K5i@>gC>e)Vpj?O#Fhe~aw(_OG?S_hw~I<xQU>cK@$PEq`}g zZ1wtx-I2ZJQ|r=u!q@$}FYLEs-%4w;7OB4q1SP}epwo-I^WOCbualS6mY5jvdG5>~ zZ(U<e|0kb@9L{mgI*Xw?_qLGw``dESa`sk21?MH_a{m|j!tVdB^Z2}Yn-v>CCwx7M z-<>qIS?tJzNB>2n{m&k2eqJUfTW0GnT=h#S?C+tbMX&!q^_;u$@0L^lUu^np`EkFn zO<@u1F=-!<u-NYxTT&(-;+!gPpzjc#7qQwp#CVp$rejOCeA)SZ`!UJ+dHqYf{%?1_ zn7enIf_VQqxvt3KV#Dln0XC-T8uRAO?hb#(?=Cm#|ASw5kH&6Yv~u-twQBnpoBlBw zR4_0oFnGE+hU}~O<nR4QJgRlIP1X5r7Pb4galH@vyZ-mwz}m}R?=<EFbk2KES}6Yb ze{=Wyik+*9@*kW(Ge;_GiSph~1%)72!KXz_U#=Dro$^~Lj+;rGaVmF*(xpX88VXHZ z5pjFM1g3H?N?>+b;xT!GhkA(s$CE2FEA6c%I8M&2N;`LE-p_aSKQgYx{f@k!{&w!4 z&2`WLzb*S44zyhRvf^s{C2d>#z@G;b|8Bf3cJ}Yb$G7D*j?A{-{6n8Ne`lWAy`7<X z8xz{EPOCN)QQYabH$}(q&&x*#`91Hx|NrWdBTseC<Zf=hm-@Fql=1m`aK%5he}42r z#!J<j-wXcT_}x4CedN-=6HmL@e7&2Qs{6ijjYZ;%qle7zmb^+>v-#2^d%oD0KZCd0 zM}IE;aAl>~44(w2plmHC;Ym)c>OOVZywmxlXW9Qezh1td`Ml=esc}_NYH}9at@%#) z$L;<lIZJTXh6gXRLH*IXUG~@Fm+o^}^m)Bhzp|djUiDq7CJ(=tKS{oS+3nOn<z>J6 z_7^=7J<faN+Uu*==U2^-d|SIu@~W5bS&M_5!H?f)l2Jx5G_DjAm|<}Bk-q)<OA9}w z$$ROGC||R$c(GL8YMw_@>r&&1bDX2Aj~?aUYVM_H>Ame${kiTX^IF$WoqqPns`aPN z{4adgx}LfGU8m&luV?@7PqPo|Slbt4Q;@jaxA^1j=+E6#E6&92Eqt>3^nZcE-R){Q zA73uq@%y6d2C=A@jMm?dyky_=!g%KCe{*`~RbN&yxOt!@W$j8%Uym-)IT!A{{ki$| zr;qdF<88L49}I3)GdaG0=0Z--quP3tJ5Tq?c9e#%`z!C_B%Jim{?xbMuRKDy1XiS% zud%TeF0acqFxt9(*}UVXf8_4>v`r416Hwsfs>DocvjSY^t`riOap6|k)?Wctn|>|c zXD{_U#xPDS>DQ#0KTiFt-FVz==dAOKZB4gJ{5;g1&U-pGx~@v&-$oAshoWz5Ega1b ztnYi-Z@%B``=yfGa;7rI&-WNbD9-LY>Lf8qx~{^d{>`SJr@#A!1n+KFdsBSNBc|^2 zqecPlYeqN33lC3cdwliuRP*{5E0aKHOjLOn+?c=iuU*BjD;y?D28t_9LKkv+9&8ex zwf&$>L*BgHoik_4&YEEJyEHrH@u|n`i}o+yW?ELAacE6D_s4CI+a9+bbzYa%tYi4= zu=Up?D}Vdj>8?^ddd09a-%U1ycZX|%6SIIXS@WP7%#4kkYxA9~WxV|P&h7s<+1W7e z7tcTMfRm92YwzC?w$7W>`!)Qe+j*t-x5qyTezyzj*e$1b?CWOkkI#31D!gplYVq-J zZQ%vIr~DFiAI?nt@$>7{?ufjVK4+}54T^3~|84&G(Z(5t7b8M>_r6|pFk+=sgY)io zwK+u>BWgZA`t&+B`>0RNSLfP|hu!qqV^tVM_-!J4R=+=UTtENB@%+4#$LIUWbo7SB za}+DO{@%PwH#MM(RZ4Wm1c4=bCW@L-1y03f>zOZ{EnI8zI;2HS#Z+c@d4A2S*u7Iv zRUVyRUYv30LdKEXcH1j<g=!v9S^4_y?59baw{F^a=#t<`d%gcZYmPiVFZTFYHCN%| zyFWdi#r)XyWW~Q5iH|>ZMwpuBbg}<V^D+G4)Gs{ef)$x}$eB1fBseLHsN1`Pf;g=3 z&HtXGk^iG(UmR!({r=TuPu5Bw9n%S&8*2>b$#+$x#T6d<(E9iOHR1T*0YBv#?A}gK z{@5xXzV2azZ1tlr%yE|2-?(#aygG4e{oabHFK6!f+;gz2ceTi@3$wdVq-psD7alNO z&U36v`?}r5t;XCNZ+lL?K3inN5r-qEPNya1{5kr$?Qpk1e1S*(n~i6WJm-0PzDw6c z;V4rtkB^5$kmRfhB6=1JKkmN4_~O{?FyrK<7h3rDtyM3(tt5WZK4H@8fR2hhjYt2~ zxhDQOTJ<#d=PIEklbru<pKoXJU;jqd`aC{gi-+pTAE(BL{A0hDbvpHtarM_@_ilf6 z`NY3AC|qb!!O{DlKK`}uIllh?wEooTCyu<?%qH&rY1KCKw+83T7jKOfm~$bj-k+>B zr&qKU3>L=iJa+%OUi+oV&0nl#tYyk=V>13IDT8LO3V)`bme>39SN3Pc_nwJe=l?&w z_;=%9w{H1m)u%TeE`0s>>FfJ%d3XLe`0%gj{6I~Ug^yT5`F8y4X5M&k)lDt;{Wdu^ z@*7V+bpCk4zT5Qv?ial7Z*NMwzcu{GpLTox<Y%Uiv$;&H3=|{NvYdq{Jz`ZiDO+yE za5v(7R{Cm@Sq0zRe?R(r`@gnfVw2}{o6sKr+I$ne-J0<qC*J>65x*yW_oZT8E643^ zYBnEI47b@8Wo$gM%(b@czLNO!nl<{<q}J$qzB;y>`{VSRtri*6UsVTg+^H+^VD?3( zFRpT$77M@H29PznzCetzk#lQ?X?@Oa8882^s{g`AZ~Sa|Sh0nX{iFC)@46{J@8$DM zW34TVGrVS1pwX3D!~hz<Ha;)Y^M=L!)wvxdI(FX=f3i=hd2?^?$Cc&2G6EY43g61j znsBA+mj3Za-1h7K96md>?Bl%K&mR40R_B|v!Cw32&(9`YCdvkig&w6DPMaG1`1~|P zl;x_IN$}f-_B_#_z3}3U|I^PV#2?x6&u7h^9JR1`JK<VhtMa!DCE0eolX-nTR{4E9 z+W5ThSpPan{oNh5+fE*3Z4dEFj56@t-lit=XYIuuANrr_me<wl>DjEYuM*=wGV4;W ziIJRPwx8m>Ing~ko%QSFr^PA>zg|CS=KuR?ar-3CURhh0caZaHv?O?48mX0X#?poZ zEn%<x|GX))nldk>;`-s%8_%_s3*SFZoy7erWlrg}1eJyCPuH#eUu}_Q8>3<Q<iOnO zq+@lp!vB6A_7_ineE3wmUd*qVjTM*MZgy#VIA=H&ZOh-ixc$*PclGP5udkihyV_rB z#)TvQ*6ax7@tEnbnMqiv?Ml0vO81K;4_a=&(?0?#F|Qhb{<yuG+c1C0pS-gvO4lMa zg>SE!-@QF&O7D~D@3a42{mts1v7GsWXTXuO-^CuCYv=lWdEzsh(4OV<>kVy^Dom1e z<R|L8sMJqYsdxSU-A(7B{KiwOjW!<pbn`~Z*_@o6ac0|M%&ilX0<CMAr37b9So3^m z<<T2oIv!R$YrRx|aNSNPwLHtUHBwg&nY|U8HDS%$W7S-SpBE<G`J18m%qF(y_<Y@C z#m+}75>=9NY?5sLKicQ9ZePrig!(i8+wZ(Oo%(3&>eS@VrJFuZyZ$UG;Zgncv)^xj zxUlf&?=@GpzFKWm`1T~TFTbkB*FVSS=^pc6C)wY<{`~Q^-$kG8=NFF6UOS`n?!5`! zwfF8A|DT)j<*MKP9=G+nxt}@xJfe?Z0Z&<w7_lX@8xFL5dsDGn*2{m&q~a;<^US5D z$HYH+5HWYkeye5n_x{}av|s5@{C&CJ_x~4u;TQV<u%+=v&e}`qSML>m@`$N@exy|0 zUg6&X^W{e!@}IIUQ8ZDEbQLPv_*vZT)V$Ygw%j`M_~GYez7=BE{;gT^{QPB=3ug|r z99gLBBs{5giKWHDfSw;Gw>~bsmil;Ni<-|fFT1|^74G>md(%bhvvoc#2$O5@<7@o? z>sd`qZMx#Rz1s4g8BWUUrY=u^bnP;m^3T&-V%NL1s;RvGedOojk9Y4+{m1SpwCUrA z?aPloaB5_1k2jDKj|u%XFKx%&l2;G@Z0Pq27m_M^n)~y|VcDNMzO55?HtFKMA$9qe za$Vt<1AhW~UDxNw*vYxaN2nPpDxI_4pnvcCvX%Ekirc#iU#UJWe3yUhRGXF0lU=8u z?X;+yf3M=~s$OpYjHl*{FWq~2%wBxXh2GfhX=E(9P~c@^627(F`)!3rZDW{_UBM&& z<4P+FH-+cxJ^JJP>+#&^Y5cxF9$tN1_+Y2-{Po^-SALvd&ND?<l{3bpNnCB$wz~?_ z)9bhW`OE#z+dIQ4==~dau8;EZ(!Dc_v)%`r32*%TY^TNl2miw7{Em5$Q14gveE0rX zmRYhhCal?<>?Azt=n_MVhs&zD3UB;eT=-h$u#nijEs!c;V&8?9C;AuO|H-piH$S#R z#b(jP@FD|y%LVt(g)2J?*L_(2(c;DIr~H5ZztwKuc&$sHU2IEo#-aE$@kiPFrMg$= zoxd)_7m&ODy-l(~*vx$u1&7zE^Btf6Uh8lF<gMW~h5o9HBEgk^zsk4%_;6FX@W1fa z{TiMtPM!Sy^=Nxpj?aVU3oR?}FkZFwE^sRKb0ce!?lLcjghL^o*T2sxvzxLn!S!U~ zANlyn{rB%r?2mq@?XvIG=AYR*^E=;~ojDpEKfO2B{QOa)%UbeXvp<Izn%U)KIGqvx z{<hb-OuN49>(0uf9_M`c`gQG&3ci2Sdw%csU7Ocua`}3MSxxKrU{anWf7Guk<ee9j z&b<wOW@WX`df#qsQxA*ZR}%l`{I7f2<y)s82w_oE(SEn$LQ9HcCYPVZ^Xrd4-uy2) z_rGDzlc_3iRXVM=#;vtr*!$b_aN*fATL0VDl{yN3e7Cmv<J|wR);~VCa`)1S3pvB@ zP3zyg&m?HukJbKC9oN@>{PZv5_=Ofp@!q37-ReKW1DkJc`V%zs$MKup?U`q!J0m_P ze?GNu^6__frRP_Lm;N`%4%k_E)A#3(2Q!rojqc5m<iESueBXxiPp)6+%6Cg<v8on3 z$T|0J{AzNpz__HWV4!Hb*UNk9Ny#0%<#mtT?H7G~@_E<CLmq~1$CM_?-<f-De&<W? zw4}A7MjPLqni)~nc}kHpGqQZvtC}w}lkWU;Nc_jIab8yI9RE&_s*kHwjW<5ynt3B* zYYxwsrJ1f*uV>YV<zLlRUan=J`0>q-3oR*unH+x5=9$UAfFDB4g5T#F>rPrSGirU9 zOhaB-hSMagDNFdbe!hC*LW}+V(2iJt8NJ<iwELtx)?R=8?m~;K`N^ZM?s{^|KHiT0 zyz%?=)9rpS#h)B<_Ef!HsPgsQ!TWdT^?#pdb?HOF)WzRk^e+B3=g#hnUHNW%`|g&_ zf6$WmddFANh9w{q#c$OV3>MzCS|kT5HD-7<uH^CYxOR2oLe7(iZdqD9jNUKX?_XcO zMe}#o^XtzaxzCUJV^CqrpM8|^MOwSspD&mHZoIs#RK+8N`Pu@*ULM~aZ<f`(sjm9z z{J-9&P{AyA^KNHhzH0aUnt!$3>})k}FKx7V*S_?y&$M~dI)9&&?0F-?nq&JT#jxzh zn*y7^H5(mwzkQl%G_ym#ev|#b+ReZ2_lMOOOYvPiD9q*e;=!{ha?WwNa1B(r?Xv9x zC8b6+ZlBTwr%iMEczr#@uJ;|}+<rH{L$+T!@5lOM`Zs2)*DuiLyR~%ry0y2um@k~= z^PN$8En&@$Ga_>f)_dD7nz)ejd5oc)d+q)jh2y%*d5_J~-jh@GgLQG?!O+L0Ve$8K z&F5N4yj~NsOW#;es#{WgI-mZE_bc`9m;O8WcjNPI-R-P0RrfM#-hW@J3mOI8|L@L$ z6#4kCf8Se{s?-&G?|b!eD__jl(3v|vo^Ce05&n9veqa7k^TqqTc7NA9$a(j6wKh5J z_b6orgN3H==7G<Dc&m7!>p)A&Q(4(r6LdDrZ4&M}IzxU&!RNiLtIF<HX{SGujsA9| zOgb%j@6^p3{{#to^Q1gu*W>9GdA#zu^1qKBiT`TqcPPtWKd*P>sygoxx7F#ZXVqVH zTx-E__soSB&>+YeWA@jZW}KQWB{}Ou<NCfMOU<X*rOZF;VpH{R%Zq4@@W&_K_Z};+ zH!lou*e78a_wY<zy{x2c{m(}UYqlo6b`s9}@hL&&{q;rROaJcpE?xZbZS$|?Db+D` z#dhB;bC*2YJn2KHbJ^?Oxn^gNdYw*tG*i5*@O5pg#rsnqJ)W&7k=^Q^FS9j0e`%ud zze??WlBJ@zo|<#|z4*kN@RP&_3TV{+z!XjnpBYA3{7Rs^+08^ULKB>vE`D6dc~a@N zs>Q=euRm}6KXWR-<9Z`o;rKuO`zoGK+j(M&UHHBmVResoCau{}!fUQ$<gCr-5N@?( z9*g{&eXe@jV$7wp*H7tvQt$t|KcYxMn7LL^Ia$#EtnM*qf6>SL)VT`pKR!C+Z-HW7 z^#Y0P^)ou<Ym2h@cKAQreQCvomTGzZV`1)mQ+X{T>Zj)X`RdIaI=%W|=;Oj8tcz8T zuisarmS?^9<3SNf66~K^^Ufjvi1qeYoolb3KlW>NO48P+n>MD@3uy@%uC*6_+}crZ z7vFPyo~GNQqWh0qcl^GXbmwD&;=9T<65nf*4JI*kx~|Xdm+G5Y?A1Q&&-J{$g@^Wi zW#tL!{kOhx_Z$P6>u0s(H*EU+y14M)!M~rc+g>a^C;GVX%6ISY`a9EiE;ai2-I#6h zybs-BHO5(`CjVR+4|0|<kuxK-U?&rk@T}L_WuU?;Bfl|>O-;opR&dq?oh`CW!ezFF z7XNC(e>z`SA8##f|F@)GXMf1whwNYTeul|3tP`14aG=k&@E2okscvS8&7$?o*F`V? zvdpbTji=Xb&*vu(cRYOe>G$iux4$2`DZlpK=2&OpEZ+Kv9Sfg+JF3>sf3(?O%=_E_ z{oh~oF8-cVmvQL6yv~ub<2=*vwo9*>)q7voKETKz@!(nZ`fL-uKaVSJ?%enD<Gzab zWn1^_to@PZ^YZk~M1J8p7ZQ25%7B~?DSnAgj|*~HSk$)oYKwq(f9VQjfC{lE>o|Qq z#BQH@(9%9n>)2~PX|3I7L0!o3`6dD<>!S;|K4K^_b{39Gj5u$sE<NkR@%_(1S?}l> z%cso3lWx@&MAX08=DO~ck+q@8!aI+y|NIeP^S9>Zg_iUC*PHWIyMJ~T-dFK40yLg< z)9&wwj(;~&KcCuL^W$aGo_~{_C$_jw+4b#)nz*>krTDM=A`CW&-tU>!U2<5Pg+=`a zc>f=Gq>yMoHZU|E<KpniShM^lXh>2amg%j)j0qj3z8Oy1%)&x1KChGM_peLe@<z}0 zZ^J%|gyXmB-|h{J-Y?3&pjFK!gv<BG2|wG9&#v#Qv8c<~BJsb*?$LXG(MPjp{@n3= z<E8dL;`gLi`<y?byPVf8o;P~UZ71Qd|1Sd0$Y#}M96A>-(YODMo@~>`Yh5#c+zw}3 zUHA37Wv+_ee#`ixKVMXh3(wzdp19I*{Zi5UJ*&iXA0#m`3FmN;5t9uL$*e4DCf6?K zfC6TMUSk=jkH?i=N+t`hHga-)Iet#ES3WlQ*YbPS#e(JYZ6&<@SAV=x#QeQZo6mvU zcZJNX3oFFxEC28FV3Nq%xl7k%VNk=-i`Czb)xW<O&7F8Qx%+5GsJ)GT+o_Z_GMl3F z=j_P;S{m{yIq1pS<^0E_PGA4_H}k0Z;<NzsGvWd>5|lwj9B8f)6yo4{eqtC>py8m6 z^U}aIY6<6--~=b7>mL_#g5t{|zx+(WpT7q$?U(s~t+)8&=f%IGcg>D2WQfW*bfrZt zXSbu-zwb91Ph2Zgv(u8@7GL|*=T6zLgu~z8_H-XhI(9T!^?59`RO79Gm*&oM^sm2& z_qpm9@AiIdtzE^hy<+(R_W3%;)Y|!{?*00w`FHa9+~QFG`oH#EAHO|rKi&8L=ET1r z^Jj<HryE6T?~@GGzja_b3yazf9#D8woFc_$On6aRlHs(QMNQ?x>iQCmXM9ubdTMW2 zS3UmxKKotb8?W`=;F!v&%Q$pPJMGc+`O+Pt(^ncADlU5MBz&*pOTnF=0WS+C*WSA$ z{Jdt(`b(=#R@(2+3sWq!Tv&79ps70lkz=dVSJ$1JT-?3!p5xPIiF3aS;@@m{_P<)J z#vJ|e?245R&CUr;zNC5uT;gV|X*kewtZEi`d*>z93w@28oe9U=)V2gC9ICKO`pJJz zdv~&bReik7p6p!qY0`hWwmf3ka-ro}n_ABHM6-Rx9`&(}oG1TT{a^Lb;!)GZNzu7q zpBfk5e%ai6ugmc9qKz{OKSrFaydJMAUH|uz!{Pb6uTOV-bn5me)#tUR-FE&sdhsuB z{kucL|Gr(TdGq(_#7*aSJYL=W@zv8+{0AjYyRQj&C~cCwf1gFc^IQ8I*ZxQ|5#4`S zO?(E~#pY8cCgG@iOst?}?!e7@%hW(o@#TpNEoEFj9uwxv>mAFI*Zi;j{<+Kz@!xw^ zZeu>(d++jE3kF@2g_a9B*GCx%AAf&Y`uE<Y>PA=RuZ_>~E{)DO^iaI#7;AX%^qQ?< zac08C=W}X2jvV6ubCvh!jrZA4orT~1JeHthyY8u1Q}iT;=|R^E-@olWeE(+j=_#NF zyDw|m$Am`C*gG}e<TT}GDJd8%)Lf$mK1E^*$Cly*C#M^Q3pwA4&6uDN{#pBddhHJV zZ?_#Y4lR2B6*8OjW$BaB_3O{@@=10bpRaqZ{IgPd?%p`FZ+G{pf4gNS?(M(&ZNOg_ z){^LqL)Z0WyC2tCgl!Ywyx&ejTgSHYb`by1w`+gi_<b7WGjK0Du9o*|O>^3t>*DP1 zVs4vzWH>p;-EQ+&GFbR<i5h5O7&xVoP{HkraY%5Qp3iVv-J!u@I`@|91gA^$`nY^E zjvr`YeSg4<{Y>}7OZEx!^Q-goWda|s-(&vkZ`M)97kB-o`m)o+y!2c%4rym@n%SYs zZoKhJ!jYinnGvN`YG$$8(x9srb+4a2_Ud$a{e*q9{$9>q$hm*Ft$cOO#+rnKmF(Zo z^DoV~R(f}h)0?701vg)=pKT~0z0WGTloQk#+r`d1RW{zgz#CkS?DA&k@_BLTShN|b z9^?>ExM0HA$mzS-)DWb1iGu=fBPVC_@fI~u1TyXYsowtR-tlhL?eFg8pE<gn|5g6W zYk5Z*GZu0RO3N6D^xH>Q<<I$habLy%Z??KOrSFQ(`tYZ~@Y;_T0U}=8mG5ni^{;vT zxYqae@n(Oq<jIFmv&;NB|M2g|*V3!_^H!*JJY1ywJNdZps`<u@8Ar_*XMT`1*m$6Y zFJqA^C|{6T{O77F7%W_SYaw{s^^By(Ei7s(I<kVZF1!O(V0O!Uk32Ph?wxn^>GV@a zV$*ru*8P(2&;PM)-;-Z8Z|a|UoUEKKb>>L(eVLpW#jR=_zB4kM&+f?3NsF-wD_XyH zzn9s+UrQU?-W_F~oLm2<;7(cn!Y6l__X>i>#Z#xBFnRj(Xws2Y^7F)<7cX6IpSJ#< z#izS_L+$_1-Y?m&ygxkcP{)q9Uk*mp{=9YVN>{$y)$Vtj8kvN5t$8?&s3A%LX_jBG zwE$@Kp-HSmg45+rTd?r02nAnI6uxp6z9cYXf<yh!NgFL*E?>&usGhv<bNt_r@78Aj zUi#f_AGhZUXQ6iiuTG^Y&HM9ii^sp)E4(wDs@v6S-hY2w_@Z(t|LygAa?<J=92Tz+ zYg4Ov`8>Js)A>{TSI@t(*Szok@?RI4qH4?j9V+;fTK4im+uCcVkLCBRwljHj*VygR z_wp%xxij~rsJ*kSHZU^XcYE!Rv@2ORc^|W?l{imdOU_xMGrSlZIfGZejRaMf7xI`g zxqUqT1j){tFzrAK%dcnE+#k1{=be6cGiZK3+h49nb(KB$-3#Rpc15<{c-r#G^c<*+ zm>2i><SV04F5isz7h2@wt>xtZy1l&6axdmcvbc$vhw@FmwLHE%o^MRr^Dx*s_5Rv_ z^EyC7A!o0hGW#MMV{o&l`}i~IDZ3^WG`~*cIg%Z=_RpW)^18>a{kIkQc}bGz^WmsT z7p6t62lXh{ZoGV)+vmj>zG!(+)*>-M8(d{#5?&T{=QF6;vtTaEC5agmek?UJQ3OS9 z$wrBdHwB$P9+-S|)9-J&>rWqTZU1_F%dPYJ{=aHHvTlF*@TvXi`F|Pld+LAB^R&-C z$l@e?%i84OrrDo1zJIBl`up#4VfLiSrrPrN)~8<HVq~JYa`UBqKF8MVt5K^fJ>#H~ zsQxwP@z0KVcaD_bE2~%BX1}eb;pFaZ=Z==I=CHc)|IEZ4Pkz<h6gm$X3BGmzby$t@ ztBvojRI{j+WTmg|CN<}>a0p~f1<j?Ltkwes)|O_6C}v@y-63siOLPqq532pWwKTc# z4!`&Rsy|JI>tl7L<NpT4=WMP^=3f+E6*(z>QT$uw&q*0uzMS9<J9|vtU!tRN->1!I zt9A&Syx|qT^zcjeH#dZr%LhD6oGN$eS^d6)iq0Q@Y+icUL`pU!ko&mqchRKw^V972 z{Ga!>>QS`(`gQL9=X8&)u{?Ss@9?MU#a9<{*8i%uyI1M;b3@0G!lkK3AHVj0JL)%k znuq-ihTkurcNhMf`uO8z`{$2$NiwV6-gx<W`{TCV+^M&}9{vBKyMOQAk{btS{<jvJ z|9AeU`*U7;r#(7n%$B@h`?R?qAKd_@mi3#A-wVvRFtc{678z~#1*M?oMEd)a;Ji`Q zXu__hQnixX*CRW@sp;>VJ)q=#_~Vs3m)M_(-@A13;HSOY-gcVj&gd--Kj-$I<@u)e z<4ST>t0d~{Hwc*DkM6jCXHvhh{T=by>tii9BrLj~{#>8uczoJ)`xSFrELGaK#_zvi z%yqN_v~(wQ`_sqm;m;pmOz$eZZ`mw*KVTuJ;9HqlAI@+ejd*=vVOQ;+3w^eQNB+O; zy*lmmo}`?j6?Nw>AKg)wX18vKs{HhO6Z&<ppFXy9zNW0$1fL79F0?FZ`(J#@<Il(U zKfAL1+4ht^jsZ0?_f#IvS!45eD%;83h5v<*{&;Qw>EnL$XOHXiPaS{pqx<r|cihaX z_pi>6pWn|vFVb>H;{CVPk1pJ;QsRt`EVx@$uek5m>Ww>I>^k+e{#ESW!Z-IyRn-2x zP7MBgcEu`1Sv!ver*`ujpFp_{T#ORWXw(!Jm|^hriJS*WW3I}CZwFdhj6xT3X7c$& zY{=jLd-um5M}96g&3_zYmeiVRw9%#B#otWWdGXPTJPjqwEBju2{o4QKDEqyjU)P_X zw*AvB-hWh6eCq$yU##EN_Xq61GfA+xUFqLXr;kgUA8`Mx`F5Q>xpirLWkb!ybZ&4t zwj@5frb^>o-IiSo`j^~4xliJ}c=ElBBa_dICf7_X{ta4z6PZ4h|4K&tg_hrP`p0J5 z8H?!iT>rL9&sbOZv`_boldhi4tj2Y}V)uTWY1GIH8#_tbl(0^f-Du;TAVL3gx?!=! zm)6hTZzOPX@7Fj`ux&r*x6?ntX?e*dE8;^7l)J%2VPlz~z>Euea|75xLR*{`2r~%_ zZNJi@R^pW4#1yCF_UFE_+oS2`A^%u^RGEKM-2L@f=kIIZPk-DjuX*I!e_NaV=T62= zuS-+7w<U4g8xtqtTlOXoJGk8*|5<%ZeYb2};s4s_JjXV9PqABZpAWR|#{S3U3Yjlw zZ#ny|I(jSPYfen{Cx?>{%k4ryqpW=k)ut94RQwBCACz@^Zo!?9dSkWFoKyK?GbVgu z)0$6Cfo9Fv$eDXxh!r$Bb3lZv#4EwcX<FBX7C%m(hz;(~dtLT?p7L<V$9J#l9QR$@ z`!|2~lSk?9->z5P_I?cM;a7fI$hTbfg1G#xjmvXnAwGoGbJzFISKIZm>oHr>>#tty zSzEj_oPvIf>&tZq>q%w5_$5B?&9uvG$!A5q*ggJyc=gfZ!<}Qx)oN0f&-?M|UoCIs z^^iJash|Qbb-@`E4lUCpXAyTsHpqK-<&J{9=P;SoO4C4bVb<>pEq>fS5gY6$KWO=T zUZ(T@9iyKGO|IYnXk9igd@k8sx}WR2O<2#{KFO|!p7So-eRykY_}KoG{3)?n7yd2e zJn8o9K)Cy(OVZNY!}tH2xbMe-XprxMGn_X4Q?W=qb~HIq=i1+>se3+7;s0{<c)6y$ z-lyKv#~;7oR{!aw7jm$A+w0C^yKCY*FYOdH)h*H5FKH@zO|h9(t;9oFx0#$slm_|o zGFK}o%{p+iSm_!lD(1Yt(BjAI6S1NEb8E+DJ?ZY?Iy14uy#Ew`v!9dgS-O1czpuZ% z-k(>!{`_&nX17HKoz9P}^Coq7_r1~ot+9~vC5Lato0~~{{{DEl<A0}TPDg9mA@#EN zy^p`Y)ZJ-*OV>nE(}dIF=MBrnAHRI=HH_Hs12VCqle;nDPX9W|{=@nby($Gu?`co& zv`D#r@5i6tRnlTJHY}L7@>klG-QTv{Q#VjtJ2%)Il(9hWCc)nq)`8|Ewi>@u0u3s! z6nJsuK+BP}xz55?wg!n0eP{pi`klF7rh9&jv7GYb-kaz4|GVRmv-#hXI=6qHW`8bx zuygUpGu&I{h2&p!|G2S#y1m5wH6a;JR!+i`;%tAU6xK~R##=6~w%5~sOS1o*GKct+ zmA4E{6gAB%#r^(2t(fzB_C^W0weuIQSAX<BXKMHVTWihDqF4X=Uh+-3)#BIx-lO^X zXRrVHaDC0J-pSuz_txK53IDwJ>OBL|`#o9NFIx(kgsm2KUn6G#V$0-)11)8*+M+;3 zS;8t-D^ml-!kp6=TJpGjA}WmS|K%9!{miyox5rdI{C;G|^Y+#J+7U?#NuReCe>}#! z>EpNS&y!A<Zl3sO)t{90%b$ro?(sgZ{B!DW_xYOf{-5@kubJGtcl+DU+Iw@lUwVh> zIb=9hISEhNJ4N3mrl{5qG+n%-DsA7Z2Mwz1MjwA|-TZMG?`BY8bmPO-r_D^aOidCG z{{Hgi^U)tazy93uL;vTG*KcZg`a|n3hs~SUx%T?$V|}xqJY!eev#RU+;wx+F_pKJV z|NC&opI2=)XJobh#(jIDRCYtd{D1A8;@k61gw8)7Q0b`ZX7YP>V0ohE?!W}6Q&P)f z$Z2@IWo1#@Qrj&8uKavOUOYL_(z5oglkhH6gT#xrF*<HGe@YC~?4xG<zyG{lIZi_F zScF~D2K}T3`oiA4Zfm}+@>#Rd$t)~dPx$63N!HT+TAsF`BH3C_=g8ypZhH)Z=F~G( zN5!j6i?&MYeY$z$$5)=dzB-HEy}EmYr!htU-{Xl+cm8G+)-7-=s;CEzo~tKquoph9 zC;0Kz%b5|mKXcaXbSnOyZhS5L?VQIyJ0khTlb+2<vN3+|+WzE!bXru>heggpLKF8a z?%g*@pnLZ-kw@Ryxj%ln)3NjL(Vy?17+qGn7H=v&d+p5L#(i$~TX+4eF<w<XD`U!m zmS1o0khN%NhKEB!Q!RMi=3Si&FB>^M^KWaJI3_rm@6WpiKGKLu_zf9Z*8yVyH;==| z!|IaRLQW>(OJAE-fN$PH9w8;!5)PjY?4bOyU^eS6RRhJBh0!f)96m3eUC+(BUUzqm zlg&4u!Yuh+7cNhWRC=^l`gzp18h$m01-76xk{%xdKDHFpLM0)CE(v!?aH^_a4nC%8 z#vTWARyCC<U4CDI83sRnv)f*=-upgv;*YQQKV7|l;laf9(aO@{^Gz;1i1c*_9U{Y` zwq$2@7CFONw*nm!oUF@SeL?Ou2xYn}He<q$Z6+p;35P;*bI(UAD3~0KQ*c-?7c~75 zY<>ki{Q*)-g5OG-8V<Dhy;x)_py1Hpu$Sqs#Ec0MTXjHbVQ=)++R1_fvkW9{zY8f` z@L+7@?7d<lPI8P1C^#r2T|B^|26ozl*{s*@{rtS~o8IwKR!46qVHUNLqxZ5-yK?zv zoZhC<<#3&o!{^1WY0(B`Sacx;G?2t*W((50#B0H9CgDlPd@3`V4zz^q<(Ca#bD^a# zdnK!&$J~YkEmyYs90WTF)Mh50;V_$<!zbf2n`S?#PFoi8;M+#sM;A8d&A61l?N?&3 z)GP&qg;(Ext69kTje(JAt%$&k3tqM0<7GgO0tGWjA1DbEYwuj`f*%jt_ix!zeBO3@ zvAEU2Q_H{+6#jPgw%9cnTDIl(9^xq3({P}rFMlH|IV&BYzHgky$>Ez}wD&-Z8uM)M zSsb^b91@(Ox4RcYRgmKag|AFb!n1BTHFEkMF*OC5uw`$<ftGFg6Dhjk@)c`~n#sym zCgE8u*-@Zs!=ts~KugFLPfE_=g}C(s$gK{hsvx&6adSv;%8FVFKI)2uaa-gFo>0ZO zkdrrW;ei&m=2_sYy@FH~3=~7(2I+vTASX?*a0qzpZMe|Fwk;sRiP_K>T&}GY7ML+% z*EG!;q^2;W*j*Cmkm1xErD3qpal$gtMNW+&TpT_gskcRZiA}Farop@xq_1GIkWp7; z#svnKV343g7AuR|l5M42<P?msuw5xGFw5Yi7?;lsl?As!$FL}XMy!JF+EH|~*A;FK z-x)64tZF_?=huS#GNFpGk#lAKLhwWhnL*nKGIhn~Rwm(BEydEHSTAV-W!Q|xuAtzc z$kfFkQyq%A!KU_rOwC*h?krGb>c&<k;Vc$o@DU_dUJeOP?prS>!9pGsEF{!2ATK(A zGVB#l)-p|y1TVIcRaY=r_&6%dkqpydUIS;?RXGa}v}i5l0Z+O1flAzoxmz_rWdbD` zHgrosf|IC68`$y3xj1}Y+_)Ac0SaW02+RQ_WD0PG<<b?IG2xeO9wW%p2AqtIoRbd} zYg1sV!i5sXg`BA!tZF8;|0}`H+Oo0XK#N&k-z5s7i=pu+lasJl4of5FJpoWqzDQ$i z<h*;QHk*<h`x4Zia9q!#wj`Z-^%Rg}rSugH7JgioM$X(A+<UW>6-*KZ!y7rz-poh? z&;FHgaQJw*&krH1c??T6do&bG5*N-@FgTbEZ7VAnES$YN|1Bu)NKF19zk=MWFqg?m z_}^9YM$VUa4y*#7I(LkN!zZI>aU@8ZgyaNsB{(%Ut`rrRB_PNoysYeUC3q#^mg%4c z<gePZC^GgH>n=M`WAN+jqaNT?V8htRIrn<7HmGw>ZmPYja^dPi&Tu)gqj_1|wt^ch zjYUkW|K3hd+A7=MNXfNf90DG_4HsIjZ1GwMj-&;ZOy2AF*5-V9czX7C24jlOL1&qz zpkT6)bHy@9TFn%RczfSYc=g)~A1Uu}V{!un<jf08nPO#U1?Y%%e~+uHx%2z=`TbY^ zg@(WE4Gnwy_R`ygn_xw`O#L=CV*K_--!5%pRWG^Cw;>J`B`E2DcvnowYh1_g>v2on zLh<hGh_4_U3@jNBa!&qSOwOncJUd*lVqD1if0Ou}3%h(@Kqmtj4|1-3-^fK#O1#C| zqNbCgX0h-a?-M?dzhB5O9^{;R*;^abN+I6gaEF2!ca;=O5-0j``@NX9Hh(TS5GFP} zVEGNc%8y+4dQ5J((89S()k4uXIs)8;xRAkkkh53Jl$>ceuscC6yP(6kkW)2<Rox`} z^vvm?0_Bo|f`uY)Y>+a!-Uk`0V6yOxoWPt1te|jg%o7usbK&gW?cjBU<R&dX#)X`s zzf>#~Wu+shg6y~eimS7Qrj%855{wHuLoK-cRxq7}R7nwx2RUVLM{$EHesY5V)QAj7 z<z`h6;Y<bB?j=ha9<=o3tab&BDuY6qjAQ_5?k#L>63#kc1g__-{2U6Lj&HrvM22ZF zuR)qnH=GV~nl?#-hiPP06)YAmzLjYR3S@XfA&miULcPjZ_@Kq=!X5A!f~>NF#lqyM zOhr7V^3Q+h16vD#M;TZOVnYtdhKF~+N6E`7Dp)L3zLi1d5pD=m)h;?6gtwrU#5oi= zy^78Nx2;GE1bDp*cB|S=kf|&s;CmUCL^%{Vt-8Iu0#xXbn<KzIKu{R7Da-<wEkW7} z7K&Tf23x=)myDDKZcwsq4JdGGR`7KOd10l9z?=!EwrP@gP#VYt77lO^kU3hzVqxQq zWuR)l@d_u0pGWLz5%5v;;IN0N1h+hhbU(NUcu-el&V_`4%b=X)u!@C6eaWiWE>L@o zNJB944k+_pXc6P`%V1ii3GM-!GBpVYUDj#^w<^dp7MyuAg1A}LO*pS@0r__V7vn+B zl^K(jKvt0Mcd)a;nb%}vYm@M-j_fQ@TFR(qJjj`QUx}h28&JP8qX^_y$s1olZoP1g zsY&=2bV~<$0l>%v3ReSGU6DBktS2B>B;;x<SS-wqUTgqzIVHIu_=?j(&R~|e;3Dh7 zG>~IA>2`tA8AXn51v$3$h8%bxBv)O*V&U7UMG6!<_72FgJnz8cUl+naj$I|&1*#}1 zaqNXAP>N;T<qk@u4!1ct{4!>TX|#}00>B~yoM*eEG%OanevkvN<;n$>u)4Pva8Mcq zx}b7f>`}D|$j4h^915IHM=xNY*wnm*4_d^`4?G6ts0B-znuMcHy?+Qwzm$~Qw-&TE z3Ex`4=>-ZG&}gP#hU8v$3L5>8qF}OES$4sp2)jpn?)M#Ut(WS*$uGWWy}5Aon#sM* z<!?LZnw{P1Sw6+F!NHu<=39<oT=9tuOQ!Alvc<=y;N62I&t7bs&8l7!eS9sr(FQIJ zNRMk1H-`+TWEp8A@9nJWdkkbYUZ39ncvoaA=U=}1^n97`_wKdbm<38hSGhQRSA?zl z_?SiA<ldDY3c_^3W!4t8Es^cJH7y=4$nQJG|IZ|D8?(5~CHd-{$=RFrG}{>({lo-j zUAXm*%P(Us<f1jweFm;Z8n=MPo)7nxIu{%YF7Dp=@1S#_#<ctcVz1L4pE}RKC2{%` zmj%07yN-73KcjcV)cAAZ>DtyE*?xxqemWV>t9^KMdezI!nGtDGM}DnNOWte>nZ3N* zw(~^l?fbqNPOqy~$Um+CTI73lH(Y2jdmFNxUH#9qX*GMEUzynT>!!~U;rlbEbv0iT z6;D2p#8hq@)A2f8{81k}SK;^MqZNN{CY_PhI#&EyX`Zy!u@^s1Z%;82{JU4Mxprnm zS=5o$(@!6prJeHVYj%3_>e9^{Z${npIJRS!_J=2TlIGOjtoZZd*2fv2Lt3v)cJ->f zI%#Ib`LdlqKKR*g{HOJH_B;iXg*&TP+`7rC9-^Hp1InS`z$BgVB9Cz)XYQT<etdqQ zsa=Z)YfdfX^sJWq^DIHf^o2={bpF*{-nSo2SoqVCvv)_>%z2&V`IEbu@87ew_gNSj zE+l1;?Pn-gxlE!ucXsx*<Xd_79&YSdA7dnz{=Z5mPGVk6rKiNHxcoPr=l5?nkJ}sb zxhgb&s*~`mso8&On}ntEv)m{sQ7&XMISJp|vv{u5oPxJ!oZgfLJ)L~LxmK`$j``ZN zyO->#VwIAdwP8WqyqF{Z?=DpLyRlt=n#79jn>x~;i#`Tzt-gNv=#FeZ#k6ypN7l4= zf4p)>+*uBE_`~+Ob`k%XgG$mjedDjKHTm~1Vd271`CZldHHq`@wVk`!ak53t#A#z; zF^6BqoTW3#%-NtQb5Q5v@bz#Ew>Gp$OtDF7Zf<`j@1tM-cAqQwBnj5opd?$SvmCw= z0mnh9W%>Mf{a?dRUJH(zQ-8HWrto0K$?DyR)1Q)7n7GF7JLwxPV=fTAK0LnuRb9qZ zbH4tm@;^SmKK}SXvDac9TU}xPIk#mON`+4H%bM|^#q;A%a@OF0N?K5IE7{U;p=HXJ z?ZVB%=XNI9^!=)P>3p1duVA>Gy@2%kd-K{?1#c?7wd+h;o0<xDeBn%=n6ftxYjzhc zOJiTiDY$>Hsr>KSQWY&$jw?OVg4+J)kIapi?(uoMcIERz-u=(huRnckzuzvXC~hGq zuR8xh&R%m<N;<tSSQr;_YQ9QRXH%c^XY<A%pH!0rb@pu%JneJ(NG1FCqkglW1zk~G zdQI!Xn+q*V=3QSqajyKni}!=0OYh3fGI;&aY0ujo4=WOPm~GE;udi4>&!Y7IzO44` zcP$ojuFdRx&~j}@H6?d-XQVSO<a~Q)E@#&3BM(|Y3lUoDW%?ue#TRc^Pg?zT)5ibN z)k!;-2K^HLqIo-btxma?lklXkvd|-lOm(-;b{1}PQ@;0Y=ffG6%LAs~{Gw|7@!Q!V zQ0Wqp__AYT%@O<g{h*@hPKCc>-X3fDlXJM^r^{TGx6YY!FF<4=XJ~HkG9IBh7evA) zgBmI17V1|(sXFnsm7#@VYi>XhGmBQMTFr-C+l{xycD{IB`7yE8=}57&;CK7Lj_h<X z&|VnBdFx|5idOvpc9}i7v+-22c+ZPx7g~htjKt!99*uBab9LJ3BkA8>_3qvNy7QjV zPj=6aL!$MkkAMGfAh-WtwB58=CE?BIrF!OlNmFaN(9(5#@k(YEb(5*rpHNT_DugmQ z2?t$WH@#bQ&V)<HG=GaSO?47J2U*-)ud3#gVE%k%Qq8OC#f3M0r%o2$_x0nxit}Yl zpGTGa%H#E|cyKZ)r}jwzPxuL+8@1grb3Sj}7m;NUe0klzkMErRq?Rf2-CFu9?#h=2 zO(`9d#I6OWZQKf+URN(*qNGgZ1C@yjxl6ApSS<A0A#(5Am(NElUaU;A`59x_=B|9~ z6Q~lp{7ZRSyq0kGnhBk%>{-@(?(y+}j=8xOpyMV}@h;=fi&-BxdEZK&9TQXFQGfOH zyK5I(n)jPZiT~TU=jpli=Rs?}-Tl{Pom<8uBiTR0bh!X%$?~0r9S8SyfKFNZwL0b5 z|LrrUUua2t6=uKvLCdSPJ&?gu@?vAImV$}m)48H^0^*q`H-GzX8`xtlr*Y(rWoyNU zl}R=~o^&5%DQ@pFG?6ki3F`UibVP`GW<-`j(%h+=HeSq{d82T0%$~2MJ72tC`TpkB zJEqT9CjI$ztme<ZZ#8#5^o#SihVKfCQWK6|JHOX_ubTM#J6htab+6xXemwQn%4g@L z1!qmLK|XcH546lb+E04TvNb=GL2KqBZ})x|NqXjdbjR<DPG>52N%Y%C_dIU{ovm=> zM#Yf|yQD^kc)g?z_DM%mjW+%&npyES>*kG`xjB2DZrv&IV)hKh%42Qqd}sNeX_T)0 zwaN#yJoK_Nr<d*jjp^MVCubjf{OI*((01;hj7lhn&Ir$5H*@W-_gDEuW(BMb`Fxzy zFJs?Ebx^%RZpJMGHS5mZUAbvn8K0lUpQejD9<2JbKPo<R=JJ{a`gZ$HKN04dSGP~% zd90<}^}C@R((m++Z2qjpE;waX?ypHRE&j;be%v^>T3Tve!QC}ZHDAM%Kfd1oRGG7E z#rIPwO836)iis&nsoxvybF#LV%h#jpFZ7g{d)b{Q58t0B*38YyW|CBYjjQzX%I1yd zyrweiKI?Ufsf@P!SKw~9ZtrS=a=VZjSLQ_oJm2!KBVNW<AbQ>IiU|kI_2l~(>+4LO zAt3l%?uPjL>dQ~=ACI~_$zXD@zGQ!Ky>Xb?mBdAr<u`4_LA%%1M{X^A$mt}U^){jS zIJaNMy7f0f9TI4J4_3Dk8;}mx+#J3c&);1Mh~CYnZt^IgYO#~>B!{M0KZ$jYTR&Ym zd;Q$8|G!=8_f+jX)&Ai0*>5*CAN}#A-2Jh5{n_xkjH$}^{@jZB^J>OBPTwB~=O25# zAb*<uhyUBx^BjxP-gjrU+ne)Rw?AIm;I)vmer9aP`oCE^>vq}37h5=N-Fm0;Si%~k z+K;xoUw0n<_<T2)>hj3yqdqEM)fv&wa8d8%`QkQbPkek$#_?k;b{xJlPRRz`-OQpM z@;n86)f2J4MN3*QOc)n(%3irx#^aZ9WZ{=GK3|V*{zVi1fEEb1E`4q7S@(7BPm2d@ zE>=9+`HR2Be@n0Z=JNcSU$J|0_Z~L4NYRk1-}Yq}bjQdmzMb)v(RSZ{UGlj3HLmuO z!=Aj}H{Quo8||}M*NMzBfNrK-dpXRu?&ngYkNun3#ii}@Rg%v3pY7ggv{M#*n98h2 zwxu^==cvSe6*|plQ}X@Zk3)8o>-AgIOqR*_&T}nrTI_n(oy-Ua1;MR&hYY9R-&ZW- zx~*%mP_X^dZCew?%nQ+Gr;h6Py<5LB{N#hv`R9)ROE-Dv@Z%8cpJzK7Z)EMA&dijh zm&cWtk&<y}{(G$>>(u$CueIXbexpipvfG>UQ8S}tXKi?_wsXge6Gy+l%FjQ0{9e4C zyj9`Zlgt}Gz6##Hyso_3?q2mPkDChZQGX|YbbotM+WoEN&Ic?DIlrFpKWp10yzJP` zU`kq~yE!;~Gp75QZ0IZF0!OJyi<-(?>-P`--N?Qjb9L^Xm-C$7lwB&|=?|;*zRC>R zxK{g|$1U&Gx$WVxw+}H(OU^2|>HG7>_b;E?|NXCc<dC!L*=dd58}qm7?YX*;vwiPk zbG!fhjxsavD|;Cs^ZoF~Nv9*LZgp2{&0bl0^lNYZhm%QfKHPj*@#|+&t?-nc+LJqf zd{qDa_`dn-f3>kCRtq_K^SzzbMdn-x@S6-8Py|H=8UAhD1}f^Vy<NF~M;RyBpIchg z_9V{Di7EZ#5b9f<Xpyu#x$V(Eb*Xv<8_k64=1(5g^SxicYFZdyR!YVp%kZA#f%o<2 zI~1PIY~J{cOMm{a{3HL?TwQ;4A?I`XJMz_j0`Cf6R4)Fw_y75ObKO0orj;}ATU{mJ zmYUM;C~|NCi>XVaf(H{D#}U>k9D@DFT3rpf0>h^29%|rlb3MS?ROk3O@PZ3V;2lo} zK_-r#<{phrTpfIV>qEcJE&p(}@#U&@uhzX<w|)NVe;;L@$Ikox%l7J@uYX?c7A`%0 zGjn!P&12@XZ{LUcs_p)FV6*$<+1o>IeO%!=f8$MKuaA%Ud5;GC{}Q**B(W-QbLI3$ zEjO=x)1#oxVNlNGCH(B%zQ_6R+8(te+gXcEuUY=j@eNPn8lk}K3$g~$OF3_@Kfgcq z{Jk50B$r0izYSVr8qwt*ekJMV->X0V@T)6nTg`a&dGThp<k`NbgJZ?i<E+G<$KJf5 zT7SY=Y}%tx>u*O+&$};t{_dJBS+(43UV(b9Yh>0Q%@23G^Ebfs-Hz>I_xCRry1#p` zkox|0_I$Tjm!B#<^Og0jj&H?Zcelq~^4INC=2zNQTx@y~-@EkUzcp8s)RtLnwm0B? z^!mI^S9<Q3<&WByr*C+&>0?CE&x+%Vc7Akr-uP85dtd#2{=Oqyy;qms|9xx!t4{y@ zwPjrv>vruFVxMblwe(<^^z=t3YJWd^s{f+1_qz7c$NSeGUHd)cvGH{umv22Q?T){_ zFMeG1g89|d$^Uj=YRTMq_Lpy$aN68E+!WL|2i9<F_|7Q(bh9?mTtwZ+^rLs5Wan<V z74;F-+q{IUP6_tMZA!TGH0>#8ef_VDJ3m+ddVMA@=2P20i<+)YP3(2S-Qu#gGK+&t z)OfzR%IvO>m)Tez&-2ZH>5t|0@^alPLb5j&Z1{KZ&$Id0Zff5So%P{!d-lgk$!*fp zWKvSaB3HU@p5MLCR?t1(ChYqsT{DfNxzG7bfA3hfe)cL8#oOZRD?Ibx?C`bRc5{nJ z_jUc_hZ;M!vL%PkJmzBh$lU+RqlL$_C+@uSxxn;Y-3GDk_oI8C@?TB*`O|qdm-)PZ zH-GM!7*Q4f_wV0xwZ9*2X<i;~aN)~``W*%HFS|Y3mD;;MyL$f$b-k+N2UhJ={~c5C z)kWs}&R;)Mzo$IaD6c8eSQcEj&}8A&kmv8Jj&c^KzduV}ixaFX!Hi{!+L^XbGW!?b z?iTI}m^H!m$7c5VHZ$T^U*-RDAhzmpu)9f~g~i{~j|;DbACrF9m9C?6boxDO0qdO5 zd5`a2zIlE7ViQH}&WfWil?xx=?d8Au|8d^lkDbo5^XI>~cBv)ow0xL<L5|X*{pFv0 zw%cb}ysKUE@7Xynn?CympO<o$--+&x^^?fl@p0bnNXvc2rxNZSYWef5ye3QM-{arC zw>|ADUF!cF)+-H=TH}=Il>Xmr%kP(6!nbr^Rf645UhTG^nq`VwiNBa^tf#rSy2w%! zMeY~x{pEY*??tYheRbRH>5q4*HuG+-xwxO_xGn#6`#Eu1u79o<GH<;7x!P)%`mTo$ zjdgv0{F9w(@oe+sjbHX1YvsJTX8OKrg>QdPKl6Q_oawaq%yz3J3%Tk=|MuDZEUo?c zZvXq5%tJG$_aB#>ZmK8x^Uy`+jpyTi=05$~e^u%CzSLB~uXexRUlA6Ux4iJ_x?`r( z>6GHS=0`1-{Rf!HDEUFd7NEwCgFDEhEn9cX-8$RKIWuIUm+-lt?>}06?f%MNvffmp z@cweKD|Z>}_wJXnmbJcA(7Y$@`Me)ztfTCY+>PD6Zs%2>&{-e0P5*vu-TB{_AO3i_ zG3w8=&JOFk(BACnVM#xozw-ZFzpu$xeCnfV#chlBZ{Jy(8oo4a)`p`C4{uDWc;_wr z&8}2s-Tu{eoX0ksX&wDvTe0G$0>4$d$+}%T>n@&L)Veg{U+2OTr@W$mYWQZjX1`k> zI>X?*WCU3!uR_zpizyA4TKrCyoh;tH*FZ5@D=70&{r!ke^FOyU4wr1c)Uw7Vant$d z`^*L3|M?Pe`1k%F^BQlwZmrkidNFD3m5Hf7p|dWmn_l;#_wPhegDsyt*P0}*(&@8b zpx<|Q|9a6w)7G!Os$^FE`jkZ82T{wS`}=-eZ=M~0Jj61sd(YQ93oD+nt=+1o;hSN3 z&vLh8;-NVgtHE3UL6Jd5Ej~k(aVh8KLpJ96nofyMYQak`wMf^6_3rhP%#?WHZ*M0e zz25pK<C|oAb20Ha+raPt*5oAq{K=iPVC(0<#hVY_`fzO}->dBpMK^vfKK=3QcV4%h zTa7;&UQPTBEz-6ocluWzn{@hE^2w)<OXu%CyX@(Yi;<;KmT4PiiObo_?Eg`^_MPy* z%KiH+zAkunnrqqSDb?~TkA8FKHQ)1fQ8~{MMr-qUtxIRhznwnLb7bCa^Z#dZ8oh*< zP5$ua{$hi~Z)f+CvlkuKIXSbf;Zn;@vH45Ci!L=#e5?_adFaybRU1DS_IeBFS*B}j zyHoH<_!s+pYpL*iAuD%t$Nia8RP*}DH~EhFOLMP(%C?G~_2Esg*T-Ido?~vMUOG~` z7F#d1?6;~@dG{xDtKLb+-QSL}wtw9|r%>BGX8Rhc-*c}0_+9$;W%I_nVo#UJ|31+b zm0@{86Sfv0=kK>;t~~Pf+4VA;s<VAny@Y4=C7ja>nPHIrC61B_<g`$S%tLF6&YwHo z6*6N&r^rf^hw1#+9vyw3Tf^{s+2;17)xGNazBhhfnYiQMx?k*<zyIu>_v6q-=FOV} zcRkRZtK)kk^>)#p-xHZHYx$hW2-5bgI2*aR@NDi^ZriwTf9CyI|JZuB`To*u)wtga zFSc2K{?^ZP^x13we}8AaIrh=(NLzl?%?~rZ`Cj%P{vI~#0&Bg{t!*r=oVkm?P%_DQ z;VYAu@GiSW*Tf>W9BRqgr8HGdr+$T)^`7)!OF4J%uUE<2xx6mZ>09>qo9pi_|Mb!& z^AM;VG^P31qY2Z$x~=@V`D^xs<zcf5t{hD+{J35HRo-6TYuZOI_4AgNWY@ht<|Xqf zzt>xM+I)MF$YX13%qlLQnz7<OyP*1C=XjZ~UHii1B;)t36Uw(-|1au#WI$JZ+>OZf z)5PXnILaj~#C3ZG1=WXw(iF8bi*o~x9BS#YUwWx!ufJ^P>-VeTXBAxVu72Efc&eJu z^X#3EuRXP>*nY3#>^a+svJvxNs&Bp2QolRN#_!jm3g>OR&q;UjUZ1%$cklF?*VnxE zd~@#g7Jm2VML^E36+caT!j;TwE}v>E*0o$>&v$?K_NBUuO%|%Ii`*TNcxX*vwIHm3 zC!<VxA;q|qGgkQM8L^-%hgx!8P4N<rE54QyQyl$w{+|2Ezvu0EGox{4ZX46xzju_| zA3wZ*ZB|s_PLYiTD@0!NxUR7c={hSm^%3iNt>fI=bdGn=5AM@7%lM~IYpn0H*5skJ z{mLW%(#`aAew?vp3!55L@~ZgmrYz85{)dmpZ%;AUc6ZO6FG6y$f!)vd)b4or6_TBH zUuszvxciG!D`%`!Pbwu{9zJdj-xmfSa%}dUXyu%FzVCS7kxjo>m##clQClyw(LbAg zmU{J#5cW;g;3njP#FW$WtB&%$&qU-j`vd>a`S%}vzRx`HyX@>W;ayARrDyf#UKV{n zW0lE6;r4IG?cbSwezV*-Cu=FEf6tXiGu!#xw>q{TZQT9k*z&#?^ZC+)zu)=op}Wm~ z)yMCzKfCiDx&QV;P2u5?`@eG%BLh9dA}*bJe)@XoBi-j$^=C$;J8ITdCR*Kp8urGj zaP6TMzZF$#6hyB^Tf?Q6q$eTeQ(g6aPO#m6+A?v+<9olBaxUM$&;FjBznAd2-9<`% zdrH<kT(|q%mxDL*x{D5$rxl+LpS5AxWmr|fxc%l98GEbj4VDkY*57(tt6X?n|5d#> z`|qUCmB*{HedD+;J$ij@$DXk68*kQXC+|2I{-ovlm!pR3-(~*_o&V>Vi_GVn$L{aE zeNMJZ*DND<+4_3{o#u6G>M{@Aa$dUQ`(!WSS$tV+;#xj480SS((oe7v2$&V{K;XG^ zqSLYc&rd3Ue7yU${1v-@4f`z0{y*dQyxv{1Dt^v;O?R8BlTB^bNk5&p-gszxn0Nio zmv0u{$a;K|Kf!-%+na;=wUzmE{vP|s^#07V>G#eq<(&Wboy(uk>96Fs-A~zjX%$mr zS^cw3CJ)!F?>YW5eqH>H31@$;`}^zBl;*U5wQHVl`@T}S@Newb|8jd$UKiDTUh>Ra zIc{%?$-e69rFlNxV$+g-s<$n=5|!>0Q(CObX9X(yc8YvFp~|iFJAVE-P7R+IbJnU; zGM&GOL&I0YE66|kd5xyeiDSRoH@iQ675z#+tM2msFUQ>P*?bmiT*<|qw%8<bk<iAg zx7#0=YiF01$L0GUDfg4?dAnUlyrkT0|C>BL-ye_u`y5&L{JOsHi`ShMFCKl9@0x%5 zQcIebBU_d7I=f7RxF2iIy*aNsz27}8;Qi#O(lOgp4F2V8UU|R%d-K*CA8$NdapiqN zNBH|2!vFuBYkX$@R({=_SMNQ`ZeHr=JF3>bMQuyZ?I*lk!n0b6Bq>PhGoCYf33Ew& zsL}E{@#B8!#fX?sb31o=+LUiDx>Jz$dB0Bld&gkeqItcST5@vTYl?L2{x|>noOV5D zU!CT@vO@_r)r)`DKG-$eTX@}`l|t<Et#5tMKf?cS>))qh#gVfn@b13P?*8c3Qr;*w zrKE1&d3WYV=UMFiJ9BD#%2S2OwRyi?P0On9dpLg&e|tlCx=CQkhhzP{$HMbh#Gjb7 z_sOBdzaN+Czs>!*pJji|5;1*?tQ`+)=UZ&C|5v#E+Wfnpl7#j+COS1Ol%`~A@`_-< ztbh$`4exUa8~yvdZcc}=zHIi4BhT-d3aqavoEv<te#hs|iBUZLt~oo-Jz?Lud#TC8 z<K^MW=O;_cbDejK%3m9#W4R>%YU8_0U(PKn|NHLUvr8?}?^Ygr_db8lWoUtxf9mH% z(XA0>@w#O<x83>hYp0&?kAt#PD~?L`o>tn#Xco6!<hkrEdHs6F$M2uMI&AmNMOSZE zn$o^6`={>6^ZctcW%_&@A@h58ckFn0#{A3i#Oka1DnD*qKmPddeEIy0y%~v`pn8wz zo2lr-V7*l#%3}L-pRU?(`PDA+;py-G(me+?x1HGZd-cTF*O%us9BO$sCkDI{ip&Z; z2oz)smOM{RbUJqbjN;pc|2kCLZGLutSS{~xj&D)?{xwqJ_k%k1|Gsyrd2rwt`^w!* zO%!MUyz1@tc=z`3S+{D>-&`WX{{EJ<{_S<@|7yC6bR;4^Z+pY=y?Ou2qnCcKE_`i! z^~X2=RU7Z~*%tn|clWRM_q#E(KKyu}{c+9V_T^_@oUQ(H?Be=2-A7;BZ@sB>`pLfI zSs(4awO4<8E@~e3=xFrx$6dm&r?aN$&whQWC5LytO|r?pdiUbrpVx1H-RWHRzBhKe z?s2v5d07E#UH?3~zV*k&^I9Lj%7;ICZ62DG^T_kk`#Dw;^&j7y>}J|m<g9w{%f^-6 z(tP*Un*Xc3f3M=+BYWHD*WyDSE5}RspI$e+>hJr?(D*&?w_eWh`Eht1w2^u2DW7$2 zaNn8-4_#NEowf7Nlj&D~e9N8s;}F00#|MwM?s(p`Q1kmNZY2@58?0o;1Grav;4<qJ zHIWqmGuIEb^wgIqC7nJTcFdzWKIeS$tM|P(QuYRY`R4NHSGk~eTeiRF2i@v#$J+0k z{5-#_JUH`^|NHgF)~WX#`Elj>uIo1zzFr^OwY6P|t;*ZbDzN*0zl+VTMPfG{-(0n4 ze|t+>T*mCE|DE$6|Gj^9sio(c{(Wnia{C`9H>}d6*9CXEa(f#Ft~`2bV~2ZPcz5UW zr@JriS{m`~<FWR~yBC@~oY$WH@se<R_}jH%cCYm`j_%@4y83<dJjZ`~zVBP5@0Sx0 zvEh8C^2FNo**|q;bdLVYc27~&I=jyD^y_E*{BC9MOYGC*?Bvp8%<f%zd-GmIed0HB z?MLSO*Z<vUqqP6$y3cJ&(Ubja8CyBaz{j<a*;!ODnAvcth3QTA&zKn#KJWjz=i;(D z$+}fL%4*~MYu>grdg{MkcBv(&Q9Q<0@ObUI&Sf1d+tz)4e^dW<{r4*eGw<12Z!fLR zJakdK|ETNzc^TTrY{hwwR%Ktcm$}col=J3+>HiXx?)^J??(O;K`GI}^E%*NWx94;C z)f<nOOq6(cK}gT8Na5T4mFaFb?|pSJEwd?8$vXQr%cSPIs5;*<@9nzhGi*QqOl#%* zY#F<mk`~@fP7U7~GvklH_giS7=)C7)`qdk+r-;>Gs}uU$drkM~rhb0kS>D^Hs-<+- zyjM;BxH5n1_kcRPKLPbeYUjrZJk|U6@mHR{?~b3(ul|_Lf2JmW-9E+jc9{lccXs`I z_#;o#_r$fDXHOp&9!q^J``fzww59XLr)^)&Ux?RP2)4)H_;;;k``$g~c3+PD+jge( zg5~1Et7oT5+P|Jt|Ek~o{YC4?&(9oZ*YKIqzj9V58I5xV=o-N-{tlT=zjbc^TN1)0 zT(sj&K}nfM)w223dJ<h<uSI=UC^Mg?ma=)?zo#E9UTe>_oKbiArt`+D$L`*qb>Zz& z&PcoU|4(GZe0)4pzU%z=ua)_)`>*d`1M;4h?}=-3MAdb6*4Siiomppmeb4`%>)($H z{x;F$viQHM)8e1~t?)So5A^mH9!&guF?j#>MN1v0+lO?=`bqRnl+^q9VQ*FPN$Fd` zPcB?yh^^ars6~(e1UctA!K!@+aSjdN7fk|c(N0;doHGxey4dm8&O*ri{~oKwA)vNK z*`2Dh!WZvG&6>bF`)|<SK=J;g%=<InpZwx|-&WxFztr<RHrAEJf?mRMzjAfIS*5Df zeSG~b<ujyh_UqNAvgk~wZ5Q(I1$7?QljuG^FQebl?oZ+G??(&SuWUcD{`dK8^{`s| zP5T8e|DEC`=>9J@e$Jm=`?iUyJ<0z0ig)Ud<^BC`rEE6UIroL9%NiTp{rK!@Etl}K z)HQ9CEbPq{514hK?9xnogQJI9Vseib==S}15>fN^*r_cF@n7B)&8g3*x5+Qu=q0=< zv3~m|vH3f)l<fYl?W{;S%HtQmUhVro=HHLv<1D`}{F0ft{oyjDDQYRn_kMfiUS0S@ z`u)7fh3?<hn7_X${rpdGeeB*m9p4jTzkj^XE__$-f28%kO#j4<FWc|mm;QKa`j;ct z-`{qN+hw19pSf54{#OUnzW?=)Kdz0A{(t*J`s}HXzc~L&I{(%>Tw#*ve3`n3H?)?A z**E_cZ2z14*r+#be&m<eqG}?xj<40BNtc|`YqR<Slf-XpW>*EDYUNzb99tZ%dTxJ~ z(!TO))nm&ol;_HJ{JSmw^$4T&*CTw<SM6JBp?%7`GLWf&1&Mx;ew<`p#aZ8U{-a^i z(`TKk-qgK``DOh6l|rBz{r$fsLi~33{wTh=H?QOEHjU$cx2GhZ7yokP-R-YO626zI zxdeI%Z<?cZwFA^y@vb)zw2z6(++~sQFhO&ZQUCP3=)S+@uR3$h^J7FVtX<0aGp_bc zXH?D8Hm{hvTGhIea8<Ws%kRCKt)q3cFM4`%|J&*?Q8k<7hhO%~|NnhCtL9s^@anG6 zO_Qcp&406d!|%`4j~2vMKWdm;t^B*L{MY9fT~Re(x;lTH&sJad=iW50jj!Hc%`Sfz zyY-l>vBAqPF`NI^v~q6NeOF6CeY@ZWXiP@KzLhh(ZK7<~zmxje6aSw2lOKL9O!h)t z^$L;hYh4k0>MZAN-(j+t`9`cr{oSQ0?N{DcEfD)|6VoetSWw%2e#wjXy%KNqj~;65 zcoXo;*j(f2H0i0y3$}9vi&pnWPCR~IZpE>?{MW){`_6xRdE?0BnLNBxlJ;&@GK&xC zIx0OS`82P0;Ji9_hj3@#5T$8%<9nBWzxwFoRDY|K|Mz!s8#SxTZkp6_^!0Xm1?`PL zUe;dyadPj~iX7J?T@#~pUg#g)#jUjM<{BCOJDX&h{}vw(U+sG5=jyCGb@`@p|8kGK zch6q!CB5nE+Wme<jLkKUmqkwr`>Xr8a#h127HjbC6mYwPjFLGc)FIPpb&~9^xJ0M+ z1Y7WNFI<WX3>FF)MykL{GcwG5VFenF5$HVBqQ`Mi2;{nib1WiiXC(KEQ_>wg1e!m4 z%pt0FrjUVi@4sECS1Vq8yfw#n&$}qW`n|E|=j^@T%_;E0kFk~W?#%8`N-AVf&vVA% zB_e8P6ziJS*WGP*e=Pk!eCFnp|NqQ<`r{!x`|~${<9r$%zJq$X`+U}PkP%9-dQrsJ zA@h)o>N11Gz6Zi}YcI9595%OV)DsDqaiMi#gb)Ssps}FgQi~;rZ{i`D1=Xn<z8g3> z1YU@Nf@e}oDLG{tG@mv;0>#8r9#OS3Mmw(m4RpwCI_uEjV9uf8^P){;O(O+?aYi0A zJ1}GEp_a%a-&UEjOi{Zb!oqQ8Yr~<Ioqh*?Q!=dbM>t@Xf%i-;pBbtd>sM+oFgf^4 z!68A9RYdK~(tYKWB+Q@M3rrHlHigbG;64#&xU}I?i)LqxLxV#*i-=kY$F*b%T+PrJ zFzdoY-vtH>4<C^82TcdX>Mk%?xcc!%3ks(G11cDoa?17uBs#Gd+JbkV?TT|qbh_@I z(g=-Wa#G!b4@_RdRw4@zweTIR(gB$u;^dI%q?oh`ycr#q-bqY&5Vv-K+!|mz36!+B zlouE*Gzg5;09iqzX|M`iV^71S7Blx11`E$FkOMC$Y848Y5wK#14!9Hqm06&`CNVTb z;v6!aq?JQvTyXR02eqXd4{>VvXvCz5Q8JgprN6*rp|7BpPloW4;~@V!D6)#Ei5Qu6 zgAODhHxODu&9ycTQME0M7nMQ&U9f?POPEV~ZYw2O0bE8Wwr~ljal8O;O4iuYaHz%U zc=|^YgA(LVP-KH$21;0I0t*kdNIuv(6(q`~zrbMO2SF(^;s|aqD6$TjD2L22@U_?u zsw@ud5eS%Jpr2&ILT;F{a0q}CR;J4egG8x}JVl2FhQ><e1qO-tTr$C%pee}&x^62B z7P=Zt2gT2UJwgF94Aws~;i1&6VoD)1E-+2=1{G2X_c%3tW|U8qqNqLtWrE3|<SKM3 z6%^|R`k*rQbObLYV_e`&(8(dHX43dX2vqdV*v`Zy{49418ztMxL7Bk7wS`NVYyWXx zaM@rCN(0O`+bLK_&&VVT%3BQ)iB8AA&ld+JI0tcV4WAc}3Ut7?Re;hoIVm?nb%Dvk zb8Z1M9!P_Cers}T_;^^>ZU!X?P_7`u+{Q;78oo1Bv|Blk-aHTnKIrGIc)*Mcb;16W zEd6G&QeI&4FmoN3u+`>^HsCDV1!`DISVpQ+kYE))ENQsZa<#1K5KBBaC=qx>IwU%s zdO3S8ncfGvMI_iE^N@T|@Qi>nyg64v3HE{<V=L#|!Y?8qE6B{T4hdzfQ`B5q4z=98 zTXGM)jsC9c0)vISKW&hr#MlLujZeIVMbu38N5+7U%lYi@ka+0N=_@WEmxGfq2@IWo zObM{H0HCk{o&KlVxWrp{T6|^E+voQ!ESK&%3r-a*uefyXeLfPg=Qw8z8R-maI4IS( z3VQ4^c{r=weXW5fv<`o<py5yp-=iw<u2oQeAtyR77=ju#i@zp-gExSOv6b`aiIZBO zat&lH384aaY@;dbBt731SF^TGF*};rF8l3x;d$Hdcc!?RQ*<;2G?vadGcM))Y;dJY zS<}};BWE#1MGn||3XF_PIXPSA^sg{cT)3eZ5^<EoRwE0`6g3rrBD+PGT3Qa7QL;-4 znvaA80%lEcIPtT?i_#?v&`9-gaL9CGQhctgH5!QEL;wvJXm}GB`=fzK$>JGkh>r&1 zXdseRd5xBdqZJD|MfYg!Jlez|r={#L+D;s8Y(qOCq*Yj>O`Opt4rwU{+6@_P;*2(N zMw>X$%s`+|K3Y4E*3P4~Gkg#hKV!6F8Le1GE0)oU1y?_Kw8t{qV;SwSKxZfj6ceN4 zi6ePDkuz6T9<~;MoEjC{P8;pLjP_nedoR$;K&adu?Y)flUdSnHheS=S@bXei_C49H zEJkKZ;QWxGv7zF;aPmhv^#CQZiU?TyMa0h`)9InoX2?>n3w4Y~Ip3OpbpbE@BGcdn zpP4+TtLg0j^yJq0{e?x(r|yMpV-Rt0D0E_U+C-7z4>UoBU&-2f>->5v)i8a(8#$Nv z-6+{?cN=sC01JnT;)er&9~b^-eq28%w9rXtqcnJ-JArXRT!qUSY0whEO)8@5XJ-G+ z0WUkA(bn*&C3C^fR$SdASjggQD!<@jT*_JB;aKPt{>Hr<q@&SNC}56(`-eF2B^Kl) zWKg;|<Kd8bD66JRIBm=HJK%-#tl|N40zNS4&Zoe+DjJ{_s0+3IJU&Dxq=1sfkHrm- zSY|__6`wyrJ_ET6iyDnd4VPLxF9ppBSfZN)xhpIWl=#HH+JJ1pqZ6;xf?y^u;a4ZL z{9as{_8EMux<*sOqZXwlDZSVO^~3+0yWeY^T(v6y!0uI6e36S%ToPH_7g@M)a&c(r zdj_(ws47oVeJ-QQHR(%e(}E6#6WSa?Dx6wP9upJ_B^niZE?-@^YTtXaa|UO=tX=nN z-Mn?L>fS}IiR|9@{Z8$?+ExE<?<X#YI%GJ_G*+-U$PP}(Zkrn(v|PMXTTRKv$zDYT zlZEr`IQ=qun%8)Nf>lC_@gS%3<E&5+2X8>)$`S$!4hzhfoP@OsMCJrAPKpNQtb`+6 z9DWiT*KReWz}O2PK&FB&UEx{?xhzXL$f4j+N6u<r(3S!+({E#&xWKFcS8i7IkjAHB zAm>RGGBpXi#dzmZvNGRfPs4>4Ezn(2UIyDii^dOh2nozFSad7X7<)1!sw`dbkhMjP z2XvPUTf;L!uwxBDj`h*b1t$tnSmTKoTvA}iGHwefIK=SK2E2Y+*$EV~8H;_fWK3dH z1vq34I>fmABv|ITgVqKwc*x44Zc@XYi_0Oz*amj2BgnA|jJDvr-gtEtEEX=jP0>AM z;KY@6!Ra8UslyiVrWBJk4G&t{a_1fbxtvS~I~?Zb@Ldte&8mKd<B}05;x9~KY7&;( zl-otgej;AbrO|D=B69+qeY`<w-{CMPhhN4H$}YGD2dvcgfC8spM_uqfEnd(idJAtY zjR2)IVxt|cI0px88z{-PF<hMl4gv#E5G)JjqU3%vP!J?`L}^$gb|mP6t3+PVy-td^ zmQb<*4&vAitxdvh0@p8r92@YRsY&?NK36VEwrD^c8x3-7qb_)7VJRrduDiXMlAVQM z$EG=Qv#OtAN?8wzp2l6G0&@bkuMGrW*GNoe!lEXlf^i||<`u0?!fAqAu7eaf#By=? ztvJ0+ql?Tk7L+8wsVnk^(?QP70=HL#3aSO~SXk7r#CnTRa;>dYoI}PT9nhUwkv#88 z!7&yNiZKc=BLl~n1Sok)T-Xb4Aii>QC~&&F#R=clk09&umE(}&JD8hQokw`jb<iFJ zhgc2{zZKnP8kB4<2M28;sA5b!@*RAEo<terLC(YXm?*lK9aJ$IoB`b)cZT;v6;r83 z!D;2zA9t2-GW<Vhrqvoh&t}nz4>Oa_n5recQM!3h&s1ri_#6YJTN%QH!U0cdns9@q zMU6-LZ@a$OoB(#;0H#JOfr`W=O};;w;dlOhcgiu)6W?#M!qlip_|*dAt=fr?td~Z- z{!p{Wbf?Jf{3|l;xi@8!qq4WxEncT$u`tkjc^(C2m%$$<C*ijJ?0ZEy{8mhMTQcS2 zYId%VbGfb9L!YQ=KYz69uiNpGFT(nwkJrrJ^>|&q$m6-1OCz2n&;0S~`K+Y-XJ;kN zySbF%OX&o?{fpK6cC6A~=2L#A?`Ku<o86J07o3~h{@Q&(MAwZ^SI+%-Y|nMM>(`N{ znLjS(t^N4ZKlSzU3yG^-3Jw_@tkwnPA5calBl~3(FfQaQz2b0?v-C=jq?h2VfXe)J z^$P^5W9~@KwKcZi{9@0{A7>SFH-2$y5?=OdkM&ZK-LZE>_y0cK-uxx_|FtRIKkf?V ze%$FVwPO7rmTT|lrr*0Edp!QSZE)kxoFfaP&5kq1=k}e^_@BYyx8nZi)kYKqcffik zC*fCXjGKgCtx^21>z?71T3cD>q#0(vMS0gR4xbsj4lNfydu*@zHdiAJyIbqk<28?& zpMTf$JWhXUkd9rv+B?gQy3eGHPc45b{bz&ChY~|GYfX7u<Md>o+c&3&pF6s=ddsn# zT;6>*9jEDABu;3MqonP;*vBEmN!Bc;!0E54Ylc&*t>u&S*usnNPphc?DWCb8FQ-?3 z?S$1i7X_=rja>G>jhy@O+wYf+oWa}c9y~i+c;wny<&dO`ZBtpo?tCdwd{@6p!he5M z&vv!xRfp};vd<nl{`};T<>F_L>^l8CX>(|?;d_~8{xuQ*U)210x-)72?AXGUIV$t} ze?FJ_WBt1}Que-r#lpVXi%lpA{&aBgD+ZqyoD&e=yK?!3mhYbh`E7zb+~?^Y+aITW zv^!tq@!Rjp_ugt8t(Fy>{CTN{uX+3ZDcu>_=Z@s8734lQx6}3c*&{bxH*I`%>88Z~ z95Xw!>bGs1%`MdKM~By6SBy3}t{B~SPoTkCPWuQb>T1d>S3Zk5;`slv%<uZ8mXqwR z{i<5O_=<E<phiu}Q`Tqaj+}dKe)U&r>Bf7D^+g_^SiSr4JN2|1C0?buX9e#^?AGMF zzsvHOv`fXIB`23!d^z=Q$FqC?oL#5IX$YIkUlZd#8@&5`TI_@H$d(5!S_kidn~P+Y zPHrn3F0@$X?Rn7hE7Q-mRV}8@-TzI!Yq)R0B*#Cd$Dbwr);BpSHvhb<p7oAY`~S@~ zHea*;FXXJwyCb5Wd);Wqbki4?zyI4T5Iz5*<j=aO9cK>R+>vvBn#A@a3bQ9Y`f_ec zP)=o3`g}$4`H?o#-{;-9w%}0h^tmjZbIP2{-`BVP>wn?Xea5(2P4DJn)qOv19$Xq8 z^WQ;nUwLG@%0u<1>r%zf9Xsp3g->fmqKZjC!6A<qi)_g(Gr&!Wg`xtp47TiRj*Bfg zw16{v(*X}&-x+exg}Kunt(hB@boVK{oyfnbldT`mQ|J0SOMZ85aZUZ@XLawTGtE^R zh2pKY8Q+^5q_unN)#+!CUH!fF*qzO(Z7mOuntOdbyV?5jNAcf&{1TZ9IgbV%nP>m5 zEBoDB$tme(!i5j>bT_`8<=Y(f{AGCe#<P-hKfeDz#h!is?-aAT>Wb(seD6w|S8bJ( z6Ppvj9~;0-LCLrxo^c`P*W0r*r*is9{8LkPz8?GcOtk!;{jneS*Zb_xoIJI-@M_)K z=6h$JmVY_&FT8}eYVJO<6DdmHZm+TI`*rI86K~y*+wUx%iQoNut?Yeg?nItv{mZg1 zJqcP<Ut%|JeneeBUHAFtj~3mHZqEt$_iev;(scP!*C78}rk9+A`F3y8*4tBB(8w9Q zw&-RDsJQrgoYy8sB{KWalAxTzsPsRdpYChcUbgT3>uj^5M|W@US=R40zgl#T!K;1- z1`4wI1T6)Vg^qmf4_bcZU#SZ(IVxIiQkHQj<f*NBUf1MptLp-O@9hg(Qy5_vSEXF5 zQ2+XBapB8(&HVi<{tJJ+$hF;mxp7|Aj(}}%R16+|+8d?JxqijhssI05N*|B8Eh_$h zpSsu6V(BVo-AM`E6AS)+d+1d2dd|67d8zj-jSByt%-wh(raAjc^knakPaj)9UKxIx zT|H)lw|CBVzhK|*7dpB@H;t@YNy({}JbN21v@A4VcT<{0{Yp=fhnSS-LQc*LsnuJL zg*`3~jkf(9Ww_0Dweh^U2A@;@rLBJU=#p*J;<dkQ+E%?@v7CL~p55x-c0KvOTx`nD zWBQYO@5|g0TkC8f{eQW7_r~+7wcnSlpXBD1ap*~nW|*yoys+BW$wGz=hd=dho&Cst zH{U;n{h!h_&1~%CPwvmWo|7y1eeM-G?=$v0CbTi;Y<?#vI47W7H&B3rgey_TxRCSk zy{1=O0&@c9USG4PdP%DqsAQ0{-mROKzq&49_h$7+v#P5e_5as6a{Ilzj#<2#S-h^e zbkAzLmc+1c1seChUV9R>rYgX0QvKz1{(4h7Z};VOAK5eQ`s)0tk4~)K{V1GYWK~qz zk`^^k=`-ic>UW!}^RxSYe5>-^c<e^Z8Ebd7dDVL*!tY)d{%#+t^E*aO_~Qf3+>K`r z-CULPd)LqW^Ww>iAAg!ylXq!dZ}_RBroXrI{fbpiWIV{Jys-NlzBV$Rwjo$5OI^Wa zVcE3JIjRRaH}~vXC4SXA<IwT6^GEp0^E#hge_8y0?(=iyuJ14WyC1J{>}<W}5%2sZ z{2%=Hzf|6y*~h%^R?O7q+4fo&?(fVv<@)F0jBOE#ClB)9_pdF!^t!n2wy^!awboX< zR=q#r!Qp$N+`Z=6Z`qH>s$ZtpcK$Rje7rDs;vehBr9WkD3lI43S`_kZ@utJOd<)-| zN3CLi_qg*(?eF-&eUbYu7MPkv6@Fpu|H7(cu~6;!IVCbH9Z)|h!3A{R&;>ItzZLtB zeKnWafAZAM9a;Mi{tv3DKYX?O?DWp#=koknwWcZ673TZPRHc^h`CIq%L(5X}Q%97S zFJB*8AG>0GSKN$<u2BAW9rK*3V%u{r%CzT1&Q9nGzpr&vb^G@ts@uOFc~X;lP@*=} zOvp(%uVRJ3eY^F>qIR63JO4lV7E!ZrCbRG|yOL+UcMJcN-d&k}=Hk50biIuJZMU}Q zZ?o8H{I164?*^6HozGjgometGCSJZlah+SiApz#-d1SO&K{XI4hnRFUTxem-42e&@ zmR;bK?(gEBuE}+@!*K1)dyS7GZJ*5kbL!9UpFt+imC~|LyXaYe>CKyRp=G5||Gt18 zU%xZQfB*bs#y{_t*l9f*Zie=KuABexR>xiv4ZnAH@~?a6^(OY(%iO+J?Z;ky_mhWW znZ^3eIS$TC-%D^V<h(uqvZT4~965)AKjyO@SI?f}Z~a2gWld#--MqT3GrY>5?pwR@ zrIu+%g3F)Z_Ddz|J={x5mX^Otzn|Z`eofTu@1a$4uYTGc<otR^b}MLv26rH|{<>fZ zTMGbA;h;Fj#%PRGRxnAtX2E|my3N``@n`Dq+5dw&*ym{-5!Rpn=%{&@G4Dh5M$XS? zrgf@5JAY&ncS_P7p_>x_SH`T_Q?e~>|Al{#q?hh^cyQj1*YZaz-W*NxsabAv)@F8R zM8-THo&6DJ*CNcM<NwA4>+B79Tfb`WMJHjQ1;O=qW!2;F$9}7c+Y;@avpekagt-qJ zb>_V9swlnGZu>5~m-SiKjJ<1j*{L6Xwf^hocaJ`&E?U_%^Xn6yzT4ZCCkag4^7@!_ zbn@J%S`llQmi*rn-Sza_%Z`)_^&76Q;qiU(s<Yzn+n_Bb?m7nP%hVXPJrhm`RhJyu z9sJ8qxw!Y_k>Kas!@vA3{%UKx@p%8`V4i)O9fRlmd^_#nB>(DvH?ns>elz=${p82f zPaa$AzU}IpTIEDV%F7rwJq44*2W6$7pA@jD|9Sf}>HUVkx&2~`BI?R)uV(sWA4ywn zax^YJuS;~=8NL&rKZ<u3K3c!)@wNS8i$YvwrF%{vop{^ic$YWto4vK7w>uVc3ad>` zdSfS>`u6+XHI{upt3Ge3j;miTa{68DznTALSw5fPv!|l4x_<l8f428!H{J{U`Q!QN zqgSdYJ^U2im(i_aviQ>L-Qs1(^xymY%SKf1jJZ?ck?q?2clrNi)_#9de|`A<>U7%U za`!7`KmJBPFFBSkFISUwXbp$2$3ADjy$h}1)vOWlw4a>axYOw4SJT;#8rGW~y|X#= z;tolvKhvLgZTxrf=ap^m_tXW?*&3Yc$o~GhvfbA2Q)XPc`Mv10-ke@`|FyC5>b`nM zx!9isGs{oXdS|y#*KW7V+kLyW{?=UiT-zl4YNvG;C5OW}Yb%%}X4IzNe6?B2Lh)zl zkL2}lySVe;uGCtxK<3Cx>upE$;&WD=TD4rD@R0uQ$9tl8DgO-p*%-4k=SW?AX5Zm$ zS?jVk*u9PIm6$c*P3oOG*^if`Uv>)LUUySO{O!Mo4VAVnYAU7nAA>fUTP)nHzW29# z{o0+|k57&H|9!ht&EGRqPX6fdaI$-6z0!7C%z{mc|3dj*b)>5=*?q4fBYVx}n01pb zY3*CS-&TcN*DhWy?03kv9E&3X?ch#;%%A<S6Knc@?-HA9F1+7rhv_7TrpB1*e;2Cr z{qPKbwfMUH9jVv-tMBZKk#H3{_3_lw<VAZo@w9bqEB<17xA5HAmyOcZId??V^TQ8| zhlPaxy{}@i@L%;3Ckonl1|pz=3#ZZ<*JNHjXi2g78*Trl=eC^eAN`yD{w1#`<{H+` zJk`GV{%eh+=Jhv3zuN@Pw%R5$zuWs;Mz4xXqCxoLHnp0UH){U;jDLAjc=ozU-P+%C z=eh;!FXZ%e^sG3Z7`}}E_;wR;{VB2C<>xcMbJHJvZh!K4s`+JSKEJ#BRLgE}*i_KJ z-zL20YyY|Ba?3%5?QZ`J=`)3|Ki^bwNcmZ7opfl)%<mIh?A~lkESA|)Sse3u`Mewd zyGph%<ni6{`J)r4JG6hHHmHJY_sf+JkT|$+dihcRcW<nHl_z)p`0o1F@cE2WhxCPB zs2ot>H1gOz$#~nTOU-|nX6AhqSDTjfl-YXGj3OEFIoiViZPxEqOVl^DZ#leY!Go5> zyoT$bIT_rAGPd#;R3U+TRE>!O0<#QwUO4|ewUEcp;=}UT!k2Gr`IY!f{7*7`?iSyE zT;}amUW4)y*P5?SJ~{tmUYYvdch=*Ud=vgB7c<YBWMv!*_kY*3`!q|y8hbtQ>+&)4 z7jiBQ`oi}>z4=Gx^&7663a@kKUW`(E|Da)h$<fq$5BuAz^=J1+^W}Fx*%MYY_si;c z7H`|WDE?l&|C-G2+SG#Qx@-F$uYcWVod4&;T~M*P{d#uS``lY1pU-|g$fmbH`G=G6 zFYcE!>f)E@+!xv%E)in*xA^I~k|H@di>12`bp4*Eb4*QrS$jgvuJr7jy;bWbEe`x> z8$BoLU(EeFpXfDFhZnSUac4J3v#OgoOrGL_H+bOTgq4w{p<uGGZN}G4R{~hn|9t(K zw5B}d*M$!b-}fE)Gqd8$nr~h5|G!nvEj;Y}lKGRUzRBU<n?6T$-M1Y5k;?Wj`(v-v ztPSS`fByKrzk6j#e4M3t`1|nr3pqV63g6Q^D%Jk%@!FG1uh_oXSr|NLORV?&`uYbi zlWKmp)Tl7>)W+uO3f5a~w4D~W;?R+n4(MP?$>sg?ZpwM<2K=nLI_LFsb#TH-+UdG^ z<7YPCkG)%GC7o%1`#Lsjhm-KVnL%Bu<?lVV&MTZRy>3ExHvgQ3Ke!CSY!)cT&A3tS zY#yg6e*I1S-C5A`er3MhtL(EI>wBFICJFSboKb%J>!8@#!WYw=h4%z97T&$DWU=sF z^b!XOa(aL<<3di;#cS5LX35UkaQWxlkFVLY<-<0-)Y`eD=>93T8S8g$S1;RdQQJ|m zLH5UyrkNElu6)aodcc3oJSoFTNaRDOt#wk+%ma<N*R#61%YGXaJosAfweiipm&{M5 zen~uMIJ4s8qf>{Ceno$N=FYY8F28kf{^=B@x?+#)HJk6a&z}9hFXH!y8k^5iRR<1s z-p}dWyYJ4Gc+SiJ?3NlQZH!&+qL_NJ&^zVvJmFhfarp}7c3-m$r^Q;>GNkNq5}sGH zRN^uJN}HP0okuqn-uJv3t@~xJ=0yLWtA3ng^DTU~-Ck-z;ls7Ig%|&q9)F!bJ?ZGu zO@*hv>2ACfB>zj)Taf#miR!N4eN5%|H>~_VGb(Pquh!A!r&&x@(tjRv*8cr&O=@iK zmT3=K++IzKqF@&9zyZ*#>z#G)=C27Ya0>T7@@V%`enoYGwZ4M8bFawEUNfg#r6ytB zO{0mYUH06M>@vUCdvD>F{r`7M@Y}@p{GO-fBb{NF(*4Y0NmIOcy}kU#OO3LIALs6? zx2?-E7MrCmT%CJI<aPh)qe7q47irG!e6B9`cv(Al;lKA)kM3$do&W#m_vqx!q3qLU zUFcZI*}p%cXDgq+{gJv0&(0S9xF-K^QSGJX!r#;QeLdRFTxL5nIqs^JiDG2&{L{N0 z)&IXS`Pa^vlzTpR>Vu-+?_M5vJodJ1`rRvYf1Syif9BX)_pPqq4!i&Qd*}bllSw&M zNxNPK@Z9(weTB!ICp^RHlkJC{&D#9FKi&x4+_C#qL+819{7ih8)+ukx>ti<m|G{Q{ zadEj!?OFHp2V~yP-0}LywtMe4t-QYDuhpZa=D+^^`|)d*Z{f#xTX}sw?(IJ1DEskE z%f9=T)zNBke+sKZ(>LELHWGR#KF2_4R|Y=?J){Mo$#%gyr!2ua6Ix`~6ubO%d>;RQ zf$6p1KB<Y!C-o29|5>3}_xZU~&Sp0~Gl}c}i=W@UB<mhG*Y3`|Erq=sZ~i#?Z|y`L zoA0H6vz;_SgT}&YOWD;`w*Gnbpz&{2wQ`%<o1c%@?RYis%Yw!uA2;odN?!f(@Ar(V z&+)ba9q(f<%>4CIs_R0F=3K#S`H6NZ^F%&xHJ$b7cy*1zop~&7YpO%+s<>*W&tz%5 zQ=Am7v$<f~s{GFGy8FWIf7WP!o%wnHZK3<WoPtBMul;)VkjwYQi>`>8>zb*|rpxZX zezyAQqviKkzxzC+rAlXWdDV*JD{pT<k|$mFV1CPrp1aGHCv7%<y!Gjin3#Rn+uz6i zy-@S#^V6jHYj0F6jfvS@Us@V=>2hrS718VWrvLl-=k?6D8?P{hs#Jx1x+GZ9|DZ+i zMo2Vq%TKVE`Ik94d?i?qCvG^%x&8lMf#~`3>=^8qnLfJeeVk`z%1V)sH~(I)e`;I# zG3j&aql3Y>lvggj^L6|4?v3{@{`9!^=JlyGrFj<HZN+Bo{^j_@joWv}!-Y<7YU<KO zE*q;<b;?=q-g|xftZWM>;Yq*#{i-oEvoVV=)A--DH~R7F`KOPv9e<*1$)9=MFh0Mp z);xP%+U>pH<-S~Ax8upTFOJ`L_vLqsPFthbvGA4BugZiSPQsHmZL?f#oL6n4x-zM4 zm;SB2s@q~W?`r6reoy1*j=z_jh0opGsah8EzS%Uta*4qGKZ*D6=WgEWy64Yh!-+rN zUyO$gzwbNmEhI6S<@l9fyFOf-XYuCL7lyuU{+wRk@D+L&mRvJ6J5|*rEVVTF6(w`V zS3xTW?yXUrFX2;g$kt!vk+%Bsb~P0RNNZAh*2BB(^Yo4#JO2FiF7^Fx^Z#hos$SoI z{&kOvfx_EeMfb1WD4BZd+N`=>H%{M*>>|y&AGhc2cu;;f(BnMMi@UdWsBS7e&zU=Q zL*0{k4?)+ATYNtD&f?#$cUNXTpQkH)KgL@8q(jxMt)J9472dv>J5kzU+rjJSUi92w z-om8vdT-Uu85wK!*cW8||0gGL?m`Qwtc$l&lb`$Y&)%o&cZ8VzEAaVhTLGH8vDC0N zN&KbIrv2_k=ab^uWqZFo{x)Or-{vbV`tv9B|DONqH}mFaH*)UORD7L3`QNXS&&sVg z^i;1XR({(e8<lijpZ9a(t9;?oFXf;aES{y{1{l_c1+H#0Tydim7l-c(#k9S8rZWz- zr1<}z70?xWnnzLn`x#R;;q*5*WNxns{LOeTg~3j;#ees+*~-HH^RCPJiawM1^Xs6~ zo07UJjw6k;&5sL4n}^>$SH<b;VRP<J+3796s=EZ=mri*!)!h5zcJZ#l>-Jn1ubw~f z>q@)-{f(++Ka;-N%AUK>lBAimdGe>i`;-5wI4vpJu~hTXJK<YNZ<Lrld^$SxWoGuf z$G`Y}SAMpw@cF+h_P*L2`kKAX*hKNBw~*Gx)2*=|&rJ!MA03_gGACwle726kb@oQq zt1*9T<6}3upWgC*Wzl`sla>{4HyK`TGB&ebY5eYQ`u#-h?4Gm7be#oeO<?g^Q|wZe zaK>@A`SFL$Kh~`}R=nhnwn5^Ol1p|3gAN{s7>omFn4E;&eyo(pNpLzendgT7=5qHv zf9viupSvuqw>@H8`H8yKA9v0u_W8<uzIN;5)#~NP?)rbRT{Gv-e^5{K(Or8U&KK*K zf@|*Yp8r*U@g95nD4c!!x9w+q>eo-d(6Wl#zcOKBrSZoTnQt$KS-#ye6%;6%kDi)) zZ#<Uxv%)-8WB;5$p&1id(s{o8I<rr9@B8<!qly}R{=D^B$k}<eWxF@H3Gq6f`{Vo0 zqZyg!j(qA)eI%W2der=SX4f+==YX`5f8Xo9HXi!-a{hZrS$v4yQ32G3`&nzf=z{yP zqq|N&f7Iq|_ebu>rHwy-eBS?y@9>X9pLYH@Tk@Un%bPPlV(RaQTCcq?lK$SLfj?s{ zSI&e|7Bv%(#Z$n?Mv_^xv1urnBsLWEeu&Uz5?=Q1GrRrkuI~E#!5_CxcKq!de(vbD zY}2E^9v5A%Tf6rW>$2U3oH;Xo_*Eqw-gw*W_;>TQH7E8i7cl(q7rbc7rYE3@)4%H5 zLt|fgaQU7{QCeraz;xf1LkHBZw_BSiX5Q0(uYaUm|IM0J{qtj$q|0S)i}^C&E_=Uw z+P%%n_iEO^KRk6!{ddl*^VhC23p{vs`u&T-zvC}Xt$Lm=cK+C2b-wz!qB*I{qT^~; zi=3{tw>5d#BOCo_cl;j(6UCjNUU1B}_Wru<Pd5pg%ij}wJpH8K?)<ffKY#quUE8jv zGJo=GzBP6kOZWfvofXry^qa?h?@xcLF6KE2pR(lgdGUVAPiu^HM|{^UqlR%IXYc*P zcI5%5541dCJ*iM+Wb)_QlP@2dOir~vJ9oq^+vKSE^>eO59sy^kzVG|-qx=#x->S&f zm#W2QnhXE`kyyQSyZ`Qdl~y&G|Gm$C+*6y%9(blBlz$<or|<56E40_`UB78V|Ff7Q zbB}Lz6_PNRk-ah2`qAFLefH|veP_S%J?8&zI>}l1-rS(BqvhWGQWg)T&u;u)lD>Pl zK;ez^yC0>Oe|7m(yZOU$qrzW&x*K0=$@`v*_`0C)$Mu$dzjqydUR-$e-d29!7jHTv z3YKfGJf6DZp7ovQo5S9V&j`@=d`(G-_)AP+R>1wgk^!Y#`Fv(X9m(w%do(+}+|4M( z=0f&b|K~~j*P9$=du(SlVa~RDEuKpycKiQg_~P(d<NKXAxic$%PP!;L%V3%5qbd1Y zkMO-V<L%lO=OjGoLz5~0>Eqq`U*x|Po)9}*cw!nef7cAIZAbECKc1Vi@Ba2*n{NKN zE9fN5R=VR?<&Kc98SifgFA8|``&g}6Zr|f=b9bJPwY?}^_HpA)<B2EF{K?sA&@=a1 ze%I#mtd&2vO{$voeOYYu`gz^n-`CVeIG;5);^F4<kzgxXuR_7Z!eJE!lf)Sh+FxyT z7M)?R_1^CJ8b`i8FImdh8oq0NZ}_RBlGfXfEc*P-aIVc=rStweN4?n3+`7<`lJINo z{JxjP1-tJ2`?h<L_PQO5)xS>j4Lf%<^fzzafuEnOtCId}@6uYj?#Dj;^>ex}m%rGr zK2;|IG?KCw(h9wMH~(h6)k@uI@jAEP*Z#e`;mkd7_rO^=EJjPZ-o`J(slKiG@9*W` zUUmH6bGw|MO~}N+GQP{T-1EPjRmSIM7B#OAvge)I@jm>X&e2c5m+k*PJKOwd>+WlI zYZ5p7JN$RgftH8w8opC9;t>fNpSxDY|MGU5l|f?G$MySzyOh_z>U;g}edm+#yX;kG z&E3`3-P><!_x<D-$FHE_m!pv~vnITG{&s%v%BtvIiCG5Ub7tPis?nSD@O9`kxtfFn zAzP|AeJkF54Fa`~@6EmR-%)nAhuJ%eZMw&JjIJk5ZMJ%Jle2dJ`(XL=$L9MB&kFe3 zzWNmVHES*T`r3Uro(Dq)eZ#IdgVurkaQ?J1bk62t?>9T*f~SUltN(2uuXpTK`?CGz z-+5<0n)0?)%|~C;VB!Dbr+gH2w+$|_w5at==sUOSK+DUW^Xj%ri2sfEkNKaVc&~2% z|Ak-nt(eUC)n4wp*lC?R-w*tgen0im<mzSrFZ~MGvVN=Pqp#X-ei=^D#Ybe`&YV%~ z<03R^Ld5zFE@oj7M$+2)b9+<vZ{7Dw(M0jS=*EMFKYtweuH`@fed}`-hew<CvQ3}0 z;p4}j6%StSyKfmCeMEbDNd2~~yYo-Kf6@7O{R^+yZ^qr}kM9Yu<`!E~+S?qNfBdu6 zV{?AdUolDFw)yP&@%Y<`G_Cr>ruDBn@9KMf|MitWDtYhuCtC3v4q40BER&Fyoh~=4 z;K;SJg%6&c6<ufcDPMSo!Kdn+b~39kP@`gjKI1}8<p(i5?g@v!<lJrT*!?fCBi=ru zBl=%Zhv($g+yNeJTi)9(Tzg*e*|~Wgt!49smKu52<$Uu|Is9Vlu1R0tS?&A9`W>3D zw)Q~tRi1)<<evSF-;X{!eIz-3`}MA5hu5IR5M}!o7=OKKc|7IO(eCzb$KJ=@61Cs0 zy;nZ-=-l6Pr`<@r+o<kY^Lx*^9g3+5_La}M#kYQM3+H)$^}b}*mkTYE*T3%zuD?6i ztLDCE?#4Swwd`BJe7(SE|FY}!zX^5I=GlO{Da*gv?tOM|-i^PHzHDgYF3aqEdrk63 zr0hB4h}Y%ZJ}b7a_zLnj_P!FqfOL2an(3Pp_ciim0lV6nh!B6F1s_}#CoTLrTTbuD z?qDtMfF0isT)R=wy03oaU*q3pM^5K2TVH&sOn2k+V~6c6YA*Qiel+R!W%kwk_Y~=^ zlT%&D>G^)Uy}GSQV&6BPJzpL#<o5mX^l$5rcdakq>wn+q&t&n=cBAdIsDuRP569!L z%ckF(VYi|F_C?TwuQ0m}_9F3t%C;sCAtOJRf7hSd9+mXHSL^?|h_~!ND}G%~n!k2N zd7qC>^}`Euo+__<*Y`Q!)82c#+)c5^(<Se1HW7Kg`IafGT8Q?uI!ZF#CYBa8lLGtK zx(11Er~1})tbYHtGkE>`zU%ij<>zg<`XeT0TX^>TyEmTooZIpCqEpuLZLym*^=|D= zy<vUxe#7Tk$(sv5Kg?}jw;7&h_|FQIFFmUM*X!4`vQ%Ti{C_1rDQwfc1Ge>m1_0k4 z{%mM@|NG4BbFL-J<(J>vIys;@MZwm*q4G=opOxxmyH{v$J$AV)qce7Y$j<|HOP^i6 zbN#;LuQQKs?)ZM>;QXuqvVQ&E-(3i5avnMow8hL_XMcnlXa@fCdCMKmh9Bn!>1-}{ zfAu;%!brMYHvZ;6xyo%4(lV3%W3xf4PC|JP1^lWyD7L)p*xdf*^4C<>D01dXoSlAv z;{6`-p!9WNa=`mW&dZzk{jJjkbrj_4H@=V0@_(mmex&AD{;tO@@yq_-s;c%r5`R9U zzxA2qy@wAk*I$-ZpSH62WvkK06EB<jjbG$H*emBG{O?nY;Wc}!+6y)>e@=eB^|({< z^=;{`Nk^vlpFi&W-^)Jxc<yZ((8z4-_HR@Eeu1qLTD4yhRCKQXt5EwsK7O;Np4_tu z{r}Eg2xwOWt>gS1b4_%AZN)Q(h9{qEeuSOfczyb8cF|Ra|0dMf{Pg-|x#RDQZ4sp} z{{<U<`%@SmQ|kXK(z5jTv>UmHZ?z{(@e-VWYqj#diuLb5^dEhG`pEruOPQsw_}zQu z1!e>!2b{(~8;dvRHnNEd%(~FfE8TaX<-3)aq5JOx>~|)|Prm<c&AE`btj|szx%~XQ ztj34_>0KM2B|c^Ua9v_{Z@k<MvE-=s^$SlXlo}<(zVm9EGdc13!I;0id#*cY9D=l} z+;8T_Z41xNF|{+7=$bjt_Vu!N7VmC-Y3O}2=g+qd+g@n8)V#b=WAn@DS3qra@sYji zTaT-YuUZ#>a>MVS>Jk?ru}jxY|Ie9O@#@dF6JgtPeCPhMc6OGW_2J!=pqv_~beoSs zyJ|PxRN0`!xlZE6)H%&hY?j2X)|uOTyFX7``pk#x&$~Asy!cb&+uc+5(*M_mRjbV3 z85PfOAKjxbH~HV*?U3OmgSv-Ts}6^*Q#V)$-PA&SD;zeX4{ohC3hF4BEIc^NTBecn zq`;3!yUUM&CNM#*mNxBYN|GAupH+RBnUqr!^NXRt$m8D`R!}$Ly(g$`*-~`<Q+Mj) zKe16sOPBuo|MiFD^~y4*mE|9HrV7|g{J*fjYvaR>PY=uP+gKL-C*%6GO}}60x$OCq zra3KY!F$Iy|Jd%mRy0w(`5<X`nTyc2iDhdyq<}^%qD{U|p8es^k&^D0*Zs~NuX2C7 zc=hu4=4uP&zt6p5mV4mu$?&d??<W2{vHbki@AG~}^Xc11+`oRi%woH7-k)N{()auA zcj<=xPWk$L%dGP;JF9<#!@uCh)Y!s@Yc+jmt$U#|L4niM;}9=f(cjNclh)K_{5=2o zowVsu&HJx@fBtc6Nl;EzlI0A&bl6$|yLr{Ne|h@j)ugw}-87r<=~wNu71_HU-<f@x z|M|}QnVquNWRHl4?H9fBo|j4Z)pm0&O6Fe=D=L^IT3liOaqc09kB8Ua>n%ZRssfI0 zS(TpM{o|9@&Kns=W7h1;(G#1y{m=R}_FuCMzwKM1{qN8EFBh6cr=L0|-|sDNx9{D) zc{iTA$NoK~+I%hkPmbQUC|mJto!Q+-fB#_pp*dIZ{GPBkf0zDdpQm|j{=di<cOTzX z-*Pm4y2Oo!vY?24+DR8<m%I4?T2qt%_vC`l{Qs6)ip@NyD|x5>#Z0F^|1Ku|d30~y zk3U8?fBgLZ`=97fP*kd#Bu*CoTzG%-(`G$0iRs<K+q3&NcGtX^*WzaLv&isW-6DzW zckc`T|L3nc?|)#`0=J}DEUIhjOYG$84gc1PzqurId+q0oil0+7Y$g5l%jZHGkfn!T z+V5Yj{%xPh-#zbsEnQ}j+y3dH<X^dOj(0BHmy}us8q0Y!xw`B~^yJIU9Lw%sD>uvN zGTv`nuw3QK1OLBs4xSA^eKhd)mLr$AYd_ddYdLb~Lx5u6u4USBRf}upPJeq<D!TW* z`q$)!+Nh5WeHDpGzkbiRSZ*u!FXHF>dyM;bt&<m?5pex&pbQ1wUI{VKDzQUxf4$qa z4HQ>?xy~<^wEVMmaJOIE|LJq=g+HI0*ts+P^cOx^|Cc&P>+k(ln4|FX=(m6C?waRx z1#k10@6!`eHnY)_@3)Dr<ETIOy(hEx$Bj2LB`(kE>{}P)a}G4jvvT_}$@SjfGCFgw zt;n;eJ7&7Cs3`r;XBYdGoPrZutaU8P)zY$kU;SLLETunqJ!pw)^YU-9N*C`RsNUP6 zHs{ytcNRZ?eQIP0{yzJQhNb=c@@bF0Znw{xc<1vO*0+ZL=e%To1evdx@^9VN>8FqS zwx5%6nm8lBB*soouXx?0TXJ@L*M64?tx{dcaQfX{K~Dyk`0I0$jXplv`F7%*^HK5s z`+|D(WhUzH&RHmudf0Z-=bM-O#SSFf=k&8aTXjc8Q-kwBMB;yb=7?Xnf3NaRfBY@^ z(&3O_)&KgAb8UQ@`SO13W&8aX?#!H#{>^8P!A1$$zt1;+Y16SO$*O+BHgEH!sJc(G zlWL|fiCtZ5B)#9h>Ve+homXGqXH~nBoqmOqD|p(%9WoAm_!a);+e02753V=)3VRp% zekr~@_xRSMUfxsZ+tvNLnzW`k#qN_Rj|u;hWz6RJeahSN<W4NUJn!epxwaeMKW*0E zU@89bRcf-*&+=od1D%BDRc)1+|KIWF!@ph|^X>NNUX!`~{ijEh$s~u~m(J?T;<vB0 zeB`gb^*i6r@1?f?k_@leYQ>wmB>dJlIa+z&m;dXF?7O+=U-d-)pCz}T@K>Mi#?#{L z;+HO7um1nD$S}-)i`l!Uzdm32`F3N%)P<b?D^^Nm%Y{|uCX1gu#=M+IPiDb>yO1ij z^gZuyF-IpK7X9TpP2$0$zpd+euHKYP*tz+MVI$|}mYd#`G@qS81H7NN@s=kz9ol?W za&F=6#V-%vZ&tknnG4BwJ+0#W;=a}L&2Jj2UAey&UJegCd-VLi_(<8z_a02L$KGBS z{9n1<<bu&M+wT`vf|fHHv$L9bWjJk`sO$f_$68MM&rQqh<<o9d{+-FpHfcc%Xw+8a zhr(O0CWA>1Jw?|ahL;{?-T&Hiuj=H^9iMM(i`Y0nq5q}$kNx{aAH7a5TefcJg*!8U z+@AUNVpy!0^Zw_n<~a+;%?|1Ee}DPnd%0!zHb6#3nz?;v7_1b@mYvsceoy*OdQn!a z^}6dK&)>v6KK8f#BRhEDe>uB1C`&%y`PT6IjD5}yTE}u1NVBS$1Z<u{$z>#Mjt&`z z3>Jj{I#tEt<B=u%dvD*24`pxJ`j+4S@ANt4(YnXCSN%Hr>%Lt~N38y<9?h4ZUrZIM zf3i<yfdZ$N#GBH)wYD2i_wQoc?epi)@3k9mt}^~VsaCmF&E{*C;WbMe`MEDESwt=0 z?h6c_^J(qO_ABT2FSYL5vCF!&*I#EwC%a!}|FoH(#q2(vsg_+D@$*2<%?;hA$I>28 zJFIOlzclE`D)#atn}sjgTf667mSL~iTC>2})#38pkn;;UJ!hVNe_L?<p2(ZuPuk5k zJ6?F3@80u$>fIZkzWnLo<jYpA>d3eMpJVhE-hFFkdU>8ZvrPS|@=Ei!zaVqX?P?nm zH<&qp+;gC1VZc^3N{Ze{CMV%nTjqZin(^V=@1+r0{e2#7mD#nbimcb=E=YOn1^m@t zX8+U6a9?#|xXr($Uj>C*znVQ&irbyzV{(2@aKPK3!V~9rJz8|1Ur+PFiuI<)|HaR& zG}=AUNmyt{{Jr>&*t#p0D~z}N+Yu8}U+~)f*94ZzHAMmLd*=J+pP%}B+p%S<L#|zz zfA6O7{r!9Xgw#e&aE)ROzjs%-I(E{&G^2|8`zPN{Y_Y!bYSs4(Et~US^(C+O<=-{q z)r1;8d7G_eX61hu3s}#&E&AR^^2hX>pt0}gzqcKEle_ix^)I#mKjzvNe)zv^{`4bH z9$vnk-1)Qp+25^J&0C|~6P(tntaWZ6vr)*%#NxIMw8i30{$3U}pQV-Wz6PlrzJLAh zbz%K|h94RquY9e_e7rj6iU@noJ)0Hr+4|Fz>gvM%Rh(~}_m`=OE$%ycgjs$2(L?gm ze;kU0j0%6{?|MAt^={>rn{R<uz7>Aj9+kBEqcQ&<^Qa7`P2Z#cM|IrQle%%>*Nkf& zwq{v<%G-ZtG#vS^_qJ>P-KlauhIKP@?o_2jAN|srbOf}rWM%l}W(&K$8D{USSLzyx z%1ul;d;b3d<$tD%e+Aa;%Q4Hd+M+w@LSIzOSGidit_pwLYHanm|G&nRyYE0lhvoZk zgm6#F%vQNC4C>!}w+Z}r*La@^=k^=#wZTI!6Hi~;vZVjYwqpxrF9xb@PhS3Y_M<m* zquQ1=SVe~>IL$S6u_QQvfIH|H^s%<6U5PAyrE8E_HBW`(!TIxIkB`}lKjN>~KQei} zi1N?+sWF}bhqC6MI+nKjSyeN`GpXQ*S1MV%)lKjGby3W#SaIR^`^~9rSC+@?&F+k- z`<Sz4V~&~Gj~u;8@e}h`zU?Vne{rVyw<Bl!zZ{uz?$hkd+^&f4#yfA6tz8zk{7LxJ z-@Bv?O%!h)2kp~&KW*NQZ~Nv|{5<=KUENYYyVgp2_S#9^>+AHyJr^AP5-!BE;o8HW z9!{K>)~OgMa{8@!w(I9ar=0JHKlSdaS%2-urhbF&E#L2a%TU~Ax%khl>ikPG>NSrS zFBG_X#dh)8SMAT(e^nekZ(CYdtz&WhfZcJ=f<vAA-}H6Y-<SRQu76+A#-B!oueL`e zO%BbPqIB_iU*7*}MZLXy)j{hd=f2!2y_Zoddi_0--L)$<#b%Z#RIg<*F}(5SNR7>( zoL`N8`;6r+7wbNoo&4g}iY3<~3;PeWL@s<IOF`r$JmKK*U9mXsT5*C?ywBv%OMg5+ zy|m(GZ;(&Tc9CE!?~8YZ_a0<kdv@lG>TMnU=O=^K_Z|!4PEj)MPOH5?E2b+wPW$L* z;qH&;eqW3Z_cu)P@m4#w#ZAW`eA)JSOU2H({nq()@mq?<uZ!YcAHS?VdhbKSlj~1} zm*2c)w72=Wx9*J2jom5Pa<>B9kN;L)`X}2-b6&+tiS>S3M}PkeGI^@>Om1>#<?|Cq z)a~bW`q$b>?|k)%?^WsQy`^sp^3wBfc<g-L6dRSayEJRgt-$MAf+y3z_V<fFzW-nI zTV1-&_6W6WGPC6*f?mH>nSXe{ZG2C9oc6IL-@PZcSf05ztFymeNBFevtj<(1xnIr^ zI<9Xj^3v~oDfs!h@S30Q#?QZ$|JQK%toW+AU5=6>`6sAIUUIxwY({{3&MAcp0!;b) z!n;886fN7mSAJDf6rBG4s?_ZD)3Q5kH8+_twg1_pt@msHyiMJ;nXNG~)ef(9xaX}r zdu~;{Yl73)w0S7~SyCOQ)S`Cfpr*i#0PqG^MX?>fJDqY0v(iPnUg~F^bDgu_+q<Ur z>@vl5$37j_4bX9wDNFs|$jN<na_8>;{BG7~r+CUwI{&I`<a9ojT}a8m+9J@xrs8T= zHJ)PTJ@XFei0pXsZJx!8<*}*vXPk7A`MdSmjq=UUA|qyopY>|22|rR^e?@YC?T&zN zTXS^<_ggR04U5vU);>M^>3g9W2B%N%oq)RlB3Lc-Xn;B_H~bno4|lx3%F^cfU`Bk& zasK+-ci-RM|7&MV%#LjDGxw&w{2pg+(s$squ=mHi+}4jLrgx`y=bdx?^XB*3jUT;s z9=mymK}&Ro0fR|Dc&LHYsDU*<<pl+18Tha}B^&~6z-_b=u=ulT-Hr$4wtvGmJz<(@ z@!nc@<F_K^>Vkdo9fAeUD@6)l%2z#Fv3mES#jF3c%_<U{{`RKS?Db}we(M<|vdH8_ zQ<7jx6%<SoC1xoYB!YIMJIv*T?aHZJeJVw%t~4NfjeTAU|Ap_|7ay2IdsY8_+b%PG zq<%lUmp5GE=3lWH7ap)j{iL9fTF}SRqITv{8i&t}qYvWT7xb~N+qYaDH0SjxHSOi( z4J|4rik$uhrt1zYIk`0AcSj9q(4|yZe!jYJ_`BOu+Vx7ecSx^YP}ImNszBM{NGl>7 zGMtWvH17{gIP`#btwX{RPMcp&hM=*Se}CuCY<~$_^80<>6|v9fH4PJ0zWhCy-nH>% z=g$|KXZFknbt9ivZ|(UJ$L%A*seV%q7UN_DjYBObhwlv6zXCH1x)<zib71D$b3L%j zx$d59_`SQvYk%daJ!*4~N}l_)h<Asw>T=FGwZY{w)w$od*l#y;mDyHWT$4ZfnMak~ zB>hHC<(<2~fsbAx!yTYp*X9p82w{Wx3<K^7dz%h$2!KYyWxni>{dnj|kjx+ZvxPUp z&MGH_Z!_5Iuu^2>)t7S%k0-ZA)ZWaQvp3kgCsxJ!(L@%to*!bj70AsqEF1z7W{e9t zoqhBT5<41o{S#U^pX^o!C6ls<?V3f(_0#HFO4o0C`{()HpgTV+6!&d&3r^)X`4P(` zEVZZclsW~|x22#h8ywOq28kSny1t;orc__SfYQ~q;3GELR<tq+w{cwC1d5pp0!&Q8 zQj2`MD4A;ppDw`>rD2fB5ugiRBEqYzV6ZSTYH0ukr8(HKS$CWoIZfHNf`^VwrZgOA zY0H|PM8V=$$PqS)+^lL>1TF`GgP;Hu1nW|{C_ci*O;=<_fU?JFP)Y6J%*El8ablY$ z_>OckGbQ*W45=*v2~NBMx{jb!z^e@k*y!a2lm;x@O{YfAW|l7&pxj}y1r)G(^B++f zuo5oZtZF<==NE$m_5&zj_qCc)kPleE2cj@UYZxRp6v%;wgc}7F6$}zxwp>&rGf=^? z13Jh^!U5!1hO^2b#~LKDu&DLS2)o4r3J{PQP$@*B72vaGLbnAZI89B+17-h4K~<1r zw_Z*o(In*R6_R8ZwK55>I#2|@J+{Y!v5`}G-BL43kD7661tnR<DYrq+OK{=h@R699 zyH%6Y#HE$7@IVXKggfA?rj^4S5)O6buI;5{rV4a;%LRXKRyC79lH0*CB+=4vpvCb) z<rFgF2_Cu<MT`qMQ#)AIcz*u;%mniGie$z{&eA(FODS+IBhy|cC*dHzrUNYV!DlE+ zoMmDXb}Rn=b}j{uHR)@(&|+7mYOt`7Z-W;or!M%$#3Y=RpXCa2INVPpG7>UC?Vtx* z28kJbvqHhf8nUpcnYhgl0T<<<%t1~Dt^qajc1>0=ICva<7?9iM2FfRVdo>kI9`3Id zo^fFYdj$Bx?Eq=UM$WB;Te!f9f<(WAN>q^l46<2U)LdE)v_w|F*aN<2{gt;vf>Z5R zXH$?gIo=1AAP!HN7TcLPCOAE9KROp=kijQVA+u-REkO!gE8)wu*vjPL&ik^#Rsa6? zN&5cX77k7T6SOwGU~50V=(W6C2L<U&K;eP`*arUJZYvY5pmn%G3lkIk6ftrG<iG^b z@_M5vZt&Wz#$y5kGcHKf22pgcyTRrIEBJghrg|;CSfWvOJ9m5LZQI{(HoITG_7;43 zJg8)Y#WNZ1c3aSJp+)e<l`XoQz7noyw^4MEB*Yy(OpFUT7cV#&yj{a2QN;9i7%0<0 zq(G^LoTxM40<Gg}QuDvN=t4{2m7Hiw&Y}aQRELHG8lYW)T(fLSyPbsH0ypPUAv6~| zIAk2s$oO<cmuoaI!Fkr9;lTgo=X{(D3=9HoU-NsFj*2%v1Rtpfi3J9jGGZ7G4h|-Y z1)tQr)LPD&Q6ah*885aRI5}TqmVnjm5U6vBaR*j4=aW?mVQT?cI9OO*gqhUq7iBoT z$O)!A{R;>P_;Sqo)47Oq;bvdT)Bd0i$kD(fqZmij0;4GpYxX3rxET$+(ZC}z1gKhh zjFx$$WggKXFq-m+4l2x2e>Ct$1CO{67;PjY8kHpX+eZU$H1LQFfziG#1w#*`fj1g> zM25g<-<HUp9cH6(w0lNelL<!vkET2v0Ygl)YBcah1CPiM8136qP)v;m-e}+v7XqVw zTOxaQ*n)F3@J0iV$PgI1ecRR#yQag|0$|GogzEFrHXor7!qajd4ZP97BQgX=+kE7d zPSCtJ8hE3DM_dSuw)u!`@n8$i(ZCxGJR(D2=r)+KC4544_-H$iPzXUQ>e2a((WVMH z84Q|yMgwm&@Q4e6(WVNK6*act91XnDz#}pQM%#HrE_s30U?>fs(ZCxGJR(D2w1+X; z!yqyQMjOf4+BBnqhZzE+?K~n|IoJ}^XyA<o9+4q1SlW4$l$l%ztOXdYJh0_;%%T&k z$Y|h=1|D%CFj{#KS#)9x&e6ad4Ll-4V6fD@*pe{=BhzSwfg@m0hRJZK84Wxf0W%tS zXdy6KVPGpRC9KOm7#J8D4A#_Vi)ilS;He)Si^LKFqs7c<F+*Gkj21K4iWwr$i5(5R z(ZC}z1V$V6SgI+sCJ)x}DUh1cz#9!bB12$w&KYMeBHSPt4ZP97BQgX=dl-bX6Sn13 zU|pku2Mz{M)lNENH1J3dGk8dk2Ht4k5f=i3v2Xh>IVKgh766{4M-LYxE<$ls?4xZy z907x~_8v`n)VS|sG~145TcSf?wAn&*P$890&=PDk@J0iVxDXhOZ9b&*Jla$lZK@C% z0;6RfaXB7qaE=DvXy6eS0;3fMk<-7}f^#(RMgxz?5Ez{RCvy51+T}rNGzut;2Ht4k z5g7ubJq)Z3LX_-;tttcS8Vx*fFkmZ!aE2LN@o3<U1|E?iFxovMoSoqL3Y{?;c%y+w zTnLPI&xq`tU<*##2j0BfTEVcj0N7kWWMMiw4LKTkM2Em=<w0~%VRjit18+3&hzkMQ zS02Q<14k7y+Ev35Fz9V<%raoKwjE7*M2Em=g+X*sVdk{az#9!b;zD4wwjI>{T;d`T zM~yt%RKXE2qfHg`5E!j6D9CA}fj1g>#D&0UZ97`q5*Y%c>sE+dwSiuhfqFy3H1H1G z*y+r~z`)Rw_&0j7$4A$MAHrCtvqp;<A~PAbQhPM;Mgxz?5E!P#431vYXm=7vz+kI^ z&`Xxlz@u5<9jkCkfUN}pRsQHfk2iWov+!s$i^vcd&B8Rx!lT(1ZwQR0ywQ|LWC)Co zMUqtgqbeQ^Jk;>OTPUG7t40HFH1LQEfzc5bBF7i71?OnsjRqc(Au!svC9-FSUX_9B zz0trM4Ll-4V6=NiWak8wuh8qX(ZCxGJR(D2w1<J7d9YPnIMj>=9*%&)Rw$u|>uBJO z1|D%CFxovMvU7qhI7b6-H1LQFfzj?6k)0Ftsti=!4d1|<*KBYE-&%mt-Ug9vZBQ~n zFQP{SZ#3|T41v)GGkWI1Ru1D(Ga7g}0tQ>5gdVP=fj1g>#D&0UZ-dCTHn!j#4ZP97 zBQgYrZ*K!zeKgugCbEe*8hE2k6>K#Nk;!K?@J0iVxDXg^st{RGV++pFz#9!bB12%b zoi{opPh<#;Hj;^K<%~9xN85SWs%0XR&uHL{1|D%CFxt)|vXz4^I7b6-Fa}<(jp0t% zT7c0z%dw?f{I$qv<w1Iw!P{%2fj1g>#D&0U<w0KMaqOI|5Ca2)0?+IFQm$S4Oo!)# zi?h+LB{&$+mqow}CcKQ%z#9!bB12%bf+MbY#~PfYfj1g>#D&0U>wvu00a({);DLhy zYY~LE9RO-Qj0WCl;1L-DqceX*&U=CK6?$$Q4ZP97BQgX=yJzT`hqy)*Sl4Lafr9~C z5kxo?M+0v(@Q4h7(Y`I=?1VEDjt1Un;1L%BqunziJ15wJb2RWqSm146XR{u*7J&SO zGul-nvZI2nej5$E(ZC}z1V(!sM7FiD6=kD=HyU_EhQMfV16$*8H1IG(V6?$J!Wzuj zY8Gs*I?N0-+Rh`gm4hufM+0v(@Q4h7(RLnYHAS?@Xy6eYRG7uoXyA<o9+4q1+QYzX zAQ3Gx8hAtp6=rjFH1I|PkGK#R?c0v_ZHWwl(e4?MofFJPqkzI_;Ee_zks&bJ!yvMK zjoI#D;TR1({DJr6&WmeAtpykjNc;hbE%Ct%{?Wi24Ll-4V6>}7Tt@|KaE=DvXy6eS z0;Bz0B71q*f^#(RMgxz?5E$*}64}dxw-u2Xqk%UXctnQ4Xb%HxgAi}844%_Q18+3& zhzx<z9tO4s;ot~7gR*xM7#J8B5+nX!(+H{&l=w$n_J@}P=#0_G9=wrFfy+RtVzg;R zWWxeIPmBiMXv!lY1V)=yMAnU<e1#saqk%UXctnQ4Xj26}^I)sEaHts#JRAXotx!S_ z*U`WmE`ewF=es{_EkFZ$xii{e9&Ioa83Lot7WB+RLJ2V%c%y+wWC)Dbyd>nS(Pm4* zC-pA1mUCuPiA-L28h@iHZ#3l*7XqV8MTlG|fh{;k18+3&hzx<z?irDt6ZCcfsFoWI zywSiTG6Y7uXB4y^M+0v(@Q4h7(H;i22H|MnVTQnHBbmr1BDMrI8hE3DM`Q?$Hj;^K zB98VjM%#Iq)fCYpqk%_sP+{h@(ZHip;AKpf7Kg0`2<F5LXc9$6E0592gUApV&B9d5 z!lT(1G`5Sa*MlQ~M^he-fFY)^9}T?Gz#}pQM#uI@D3s9i-e};B1|D%CFgmtJ<j5Ab z;2aIS(ZC}z1V;O|ME2~^t1?jYd^GSz1CPiM80}#Y*}ewlEA%>TH1I|PkH`=h?O~v2 z9&8mC4mG2Jha+IH6-wygIvRMRfk#{jjCRk6?3`c=&e6ad4Ll-4V6=NiWak9EDgy;D zy#udtV{tnR0|Nuc;a}U`CO+yu@If70_Q%-_#N}S8KP3xbYXLCM1t89b(ISV)42LZ^ zM+0v(@Q4fnTv>QD+Y%81qk%VsDmzBf+&bE|#8$K5Yzm+%9t}Ly@BlULh!z<QJfedN zGh9alZ#3|T3xUx_GLcP0Y{5Aic%y+wWC)Bll1XcLqSR@lfj1g>M25iVggud+6O;@F zt=vWfZ#3|T41v)e1~kuLo53I?H5zz?LI_*w1P$rYz#9!b;zD4wdq!mE1Y2;92Ht4k z5g7ub-7|unlc}qHGzqT-7!62*0f~D)ay0Np1CPiM813g0*~`P$3?B`=(ZC}z1V+1R z*jm=3frl9aqrD9x+uGO?)M((11|E?iFxp5avWW;CY(!}QjRxLm;1L-Dqm5+DI-Y2e z(ZC}*s4$DE(ZCxGJR(D2w0nlFH9Z=5m?1FQ!yvMKjV(cq2Ht4k5g7ubJq#k-*O=`d z0fo`P8x1@nLtwO#j9JGMEixK-L<bdSF~!2-(yVyw7i=wnFq3-yq70`OIishJqYSlS zYe%7m`e-Ud4G+wuhDT&H@J0iV$PgGEBp_TC;mm2Hfj1g>#D&1<AOVqGWNg7X8hE3D zM`Q?$4iez+BKOR-R$*XZaFDpR-?U34o~6wm?};&^6&$wmXtZgC83LnaG?66~wgfdA zc%y+wWC)B_aQG`YoP9OW_|s_MjRqc(Auu|GhFQlGEixK-L<bdSc{Lh%qk%_c2#j{m zu(hT~0}nF<Mtc}Uwy&`zsL{Y14Ll-40Ii4d&d`SiwiW>Q)^==ZZZr!E_;Sqo)47Oq z;bvb|;z9^B%-|xUS(wNKj4h-`18+3&hztR=@^7@vBP9ez1CPkT8O%=e=<;BARYwkE zH06z^JR(D2ba;xK3<hmhjRxLm;1L-Dqhou}JcF&WCnPl*c!WX-G#!dV&1m4^2pBwJ z2A3KQywSiTE(AtLRfrr@z!sdNfj1g>M25g<-<HUp9kzznXyA<o9+4q1+P5XLX9sU9 zA~8k-Z#3|T41v)e2DS#_;14|W6PmFktOXdYd5NrdMw>08l?RczAF0BHr<&2g8x1@n zLtwP#9hx;S5iP6H+IF<IB{Bp?D-0rw%hB3)w89vzFo+9*(fJG_NAs}-=V;)K1|E?i zFxt)|vXukxA0shF18+3&hzx<zM)GJQnaB_rZ6srB(~JflW(ZKBotN<DZuyp!(wTY> z*1t;GB;>kCL#a7MR^Tg_(gG!80}VBv!#tj@OGG)jG#nia7BqLfSa704>6C!T7bdNn zjxDR5n7dZ+nt5zl=)Z1O^x9~FU9YaJ3|_wb+|PMYr&Y59w|;+Ld++X_?f2D?qSS$j zaWN;Sm!6W8uSdwX71(;kNOdfdM$7<!h<GR@m?%1)bah$G*?CHADnw9$2#vVZaI*BM zsc7u%$S_e1ytzmSmolPVuF%+Uv4urdT(DP7MJqal$SMO*AgBl!%$l&^iPEBrEiS3u zUPO%N;SY^Q7A7}gp(!ygCbK52$O+`cV>NM76C4g?I5kb`?r;+pnyRaX_e?#af>DS= z!q+39Nbq8Y)1pnTRM`JInh1&PA>d3oqlu8xd^cJW!t#FIp@|-_wE$!nkE024G(i$q zJt4}p(W;s3>;?<!(W)7doXE?7qls`d5t5v8Mms5#_RB^)DHQk1Mib#^B80W!i7mrN zhifPup&A{op>*s*U^EeqCPGq+?$O~IQj2<w5FQ<(A-SE87UrXg5G_DRFULj`;b<a+ z4PFu3kQg1JA+~vsQRc&fdUTv{bexdb>;@~KMu%udhiFL6HKV;_Qgazb2#@xTNpDrc zsyRsDk0wG$IFM0%IeQl@fUO09rOeR;Ihr7GHY{<Zw9%gOXiu5sTr=89ffc!=W;a++ zkDQ)z!Zq$QyFazeC_nmfv)%FraBf>5*%;rKC(2&?Z&}(ttL%NjtHM@ajhwu!Q^8Gm zmcu7e3VP87%`80XXBKRd0k3dg7Mt*QZhz<3a?7e)?=Neb8_c?(>1)AGMtuv9@C%z7 z9=1$-`DX$sD$^D^EPKeZm~-<7MzKzi0FF|YkW`9D#jk=xv(CTle7@%9<cUscpb+rT z_;CEU+v9!qegAYTr-7{DlrNh|!Ls86Iid!045DXG?FPALmf#7CISD2UXR04AC)3&B z)?A~ca)L$Tv5=<=Kyhop%XG6%xJS+Bu=A5iAOU#5k;pi3Nz`D@hLXQ`=YkwNZ5<?_ zy}w5mmxBU_+>Dnni-kwsM|jO?(1P^?Jpw0;<|LRTy4m#cdBVEWBsvu2JdQ0&2^I@Q zP4_E0G%z&YRGN@zaWLahPG!_na@`4bjF@(U#ldDr5PK$T+V6s<i!EpTx4)qvSQR=O z9=52sc7r|JEjr`uVNN$;n=cfY*x<m$c$iZ&OKcJ-AYO5txduw9a+Q=sl0t98!xocJ zZt$A@ZowJ7U{}7P$dy`*hdEci5}O8c<vcZm+n_{RafE{0#L!s6)Fyl>RL=lZoY=S~ znDMGh_<qO`rX<QWS$Wi#tclG4h2D?V2XZ9+3}!u;h`ccb<bIN}>m@D;Kac3W4?v+O zAh;QnGMn6Il57l;ogTUg7K){R4+$$cDC|ApBkyN0Yr;Q4HgfU}xC8-(pM>8B9uUVN zt#PK!oCFia&y%&SK@uQAavb}?obfQH92+PgPv{r~w+r{ErPO7ms#D_1e|`rFn%J8_ z&N1RXa|D#oXU>nfNl_w7=aBIG5CHNe$m?ccuV2=p$m<&-Kwjs8dVMk|rKi*dQRekm zToQgC3SiCz6`G2lgDG?7g#b`!wm?I(1rnM8l!YcIE04O5#}jT)VmIh!wW<Y`!#Z_8 zT$Cw^_gl&d77K0r);WPnV&mWilR>HJ%$f94D=CV4Rh<NjM9${jvY>QcGR0vzpSpza zixtO@BqC)tl1r0DKQV(j7f!ylkOmp+v)w@*WbBN0*J9^`f|^{TXM{4f38#h5Jp@Vv z2UJ+CazR0>!u_Qbl+H+YCCF_clNuhfoCiBAMeM~AND^?NED20w<x$__^Sm9L1h`qO zQbF$2shHtHwi`k2o7UIxux07vck4jLUXWy(YXE9H8P8)~PLZ)`D;gfQNJh;`2Gtr4 z(Ja%xfhzfJS6(QA>>)SJI;1fk=A3zZI;83Jtf1*4%XxWNh=Y7Xaw1s3%hV=(tKo$Z z%Po};51O*>6u7IF-QBg?H@rlW>Ac8}kL$eF?C?3_c3$^!XU9_0ISD2QAG?Ec3)$Yt znB4HN#msSA!A#cXt2_SQ%Q`bRymQ~Yj=kGn=RMS_GrG*W>T1XO7)!C^^X#RzrayXg z`1j*f>B@z*%f8?0d|v-xW7eKOCl*%x_?Y!(f3d&JMt6Um%hx;AV>hKoNr9RZ({hf# zbECwCXNnjPb6$@BkpC?F@$&NC<GG(#8GgU#b;oSI(099#zqfnKt3AVO-YVql`_~K4 zEp4yl4}IKV?EdK0?PLGTHki(j?aJ<Z-=D4@{%Xx(tFt{~D?*gNS!7z&eOawOf9vzL zab5avu8aTw!K5tfT?I<QJ^vm*`9OAXDmXMasB=m9&A1nKul$<FoX?Lp?lL!=Ww7_( z+={Q>^=5Lv>kC!Hc<e0a1<om+uDk2e9_OBnlB9g&uRhD;Or(y_v;WoexO}QI-~Gkv z&)!@UUi!pZ*1HJgE}y@XpWLCyUGCfxelzw}^{DyGf9tcmXscA=o$c<AgT?#Z-p+qr z>sM2q|7L&jcc1R(dt@~V4$qx><7>-83F-CqJFe&56it`CAb$E=c|wC~#S&FhP-C8R z+N&^%+@lAI*vs25w!AEyn;9-E+i&sV%tVX-yEbz6?~AF|to!)#U&XberJVb3uZ*vF z@-Zu>?sY|s`F5f0=T{$j|39SnINNGNE3u6}@tV`*J0kM82Ic&iQ?#e(@wyuik3Nma zyg76B_M39g?nQTY=S%g!e!t?#-0z`}9v)w9Xe72VCth>j=QTllGS&v|c_qIq>H6B; zNl%|Hf4A}QMd!lLcc*gpZ~yu0sm1^1+KsQcg7-gfF@OC)U#AmPa?1W;u#lo8mm7Qr z6`lK?7jwQf-TVGwR!n`mYTd`(UUv%PRiD|0^!}D#d#veT7EiBR$ZG$4>-U={Elu^> z_{eB!MD5a`oQ-vs+iK!0w^b%uhQ$}2+$$4Tt@$r^zGR>LJu5rKW6NGod))K4D*5r& z)53Mzr|QSlov!#(W2k@e{YKyLoE^`uysvy5JJsUvri(xRoqgPWjA7Q_FW+6>{M_`; z;>-N%q`9HfV$9FZ%U^YW_t$w|HD9C`f1G?<t&T10`>M)4Petz*KAC5`@s!9h;jG7^ z?endrp2r#&N=mN@?DFn^(Qi7>^!Fe2%lAw8)g^pq_(<>brX=GFWH=ruaN^G3txGal zxOblPzH$S(iZ`04Ido(8t(N&X>+G&abJxG>o4fr**C&&G%63+AANwx1iT84t{F>q= zSX}nHlmGoaVcS^UmaIqW&tt8{-dh%{9MeAk=hII1??+#6&-#1p`nk17K8p7oDJ>Q+ z{-|~?tR{7V`J)$mtCIiE-KG9<^|`-Uxkny9;dU4Qn_u`&c<!Ib(^DULvwu0(H+$PX z-?wu2cP850`~LJ{Mbe6ovhh38EcO0++@I1WrFP0h_}||WaC?B$zrh&P2PUgJ00p0M z+<^k8-&!WKF4&#EHT9O^tPfX&bGJHL`rTe`{x9)uQ8oXs>#O(v*H->`b@ef+xZT^W zAAPC)ope5T`M0E+#j|VvRWB~QQn@&A<!1AXuQCoT_78b%8!y%AU4N}YBx%!*_xBcB z+x>la@8rKVi}%HEwgY9s_p^@u^)GpGYsK-GzrP-vy?yqr3E;fbyPW6v`+rv|N}i~m z*FUc6{>}aVl|1vnHGTiTUj`Kk3m>m8cc7%1lCX_K!Y{*rvYYU&#}P40?=I%t`ns&# zRpzI@?Z-y*FI&EDNRP1-Yp<<c^3XIqVwuSEef!PhHh%oVqh@0$^6}p0w#U28&E!lo zN=*_|bdokZvpw$bH>nfcFM8wf_ZOh#aL+Hw(tY)Q%SU%6TKwI#l2=XS`#UZ7IsXst zyYcX7aJAnv`=H*t{&Ib{pNC2vyOq8B-H%8AjH|aSx_WQkuiY;t{0wGY=u3-fCOa}g z<>iGX4G&w?7E0Be%{X+0cYamtO9@|%b@d<C*%qFOdt2%Gf7<=9N2c=9T^HG+S(*0= zPM5hTADtVJr++Daec9o;Q!PH6dAQ^EzfN}EC|TbXcVBT&?>+kPxtUyhhH65t#)DJ+ zUyrA~_U-rAPS5&gKK+h~T>k$z1)JmZUsY@C$9KK9zbL<YZA8|q-(UBA`SAE^#oLXC z3y;_KwhRAze82i}?)o?LF6~V_+<)5^RK}axh#G;Kk7Rq;*y}*Sp)0S9W*M07U;e+! z%3V0?yVdIh`)(B9UZ*Krm0|MesXNcH_0O-%Yimqb%5r91f43;>d(<7r`4U|g@0uq5 zc=R+maAt*m;ziYEMzahogg!oMW`BH;)%RYG&@St|TcY>>1>9Gu+xTVwuO9)X+w4j- zp4nfj>)*a-k@da}`R}JV-}@b4T4q(Ik@Y|R{pOtdBc<v*M|Q3D%UzOqs{L&P_m*Od zgBecjBCj|=QA2h^(2nsi=i2f-lZB<bkNz#%<t{vLZ;WQ1<yQN!h-F{JkNW>PmoewZ z-HUAp{p;NG-~68S?%N}mBj)R6yBD9A?)};C_pbHt${w{VPBpI{UHtK5`#-zll_DEY zT0Ol{H+kKSinT#&HaTfdd#!(zxj*!ASA5U$pVxbj9(vfxS@-Q^<Bf#gYrkjw;CuV` z*h%reW1Qk9@AmIke-wMW{P=0JS6x%5>mR-QJ^a!Bb#mRW->)#S@j3hDnDFo9!=|T$ z?Y`*lUwh=7ynNTgjlZVfO6^`}@qWTg(<sB#8CK#M*FkOMmsuxDDd~MNG6{q7^jks0 zSr=wS?~V60nf2k^+ue`9Mwhzgmmg_5*unlkrg#3`*iQL-MsnZnuicq&ATa+`r}MoF zmoFWx|DRwQSM?%+$Fw57?)uu@k6ypef8YILt6<aP{kBr(_wW8#`nzi3GOJk|5;jQ9 zma!4(*Ijc=>wi7V1KIVj`fB6u%ASwi`R~R-P~)+8InU9%-_74WeVqTUvpMd5l)Ua# zi&puoRrjC#ZT|S6>DSC_v0FvNW$(#v{a^p<xpsKp(K(yl7u{-Dl2(1oZf~%~)5-R0 z@4lb#Una9+ZT`8J-E+;~XPy3=_RIB_At<jbvu8c$4=S<AO-W}m7!Pw!UVlF0(37)L zf0GtnY`OgXZSVGdi+)Q^myquNaf$!<qaWOEk3TLvrvK8uzBlO3my?at`2Nk)?>(~9 zUUK#C+qV`R_^STx_$uuy^1>P4j!n%vl4{<6JoCPEuk^c|T%CnGu7|h_XI=mKq`v=H zGPg3{?Y-91UgzuGU;91eQK&nwsSIbu;cKylezV=xW|_`=^Ih-H%Zfd(iw~F9Z_BAa z@^!vMM`_r~_r<SV7Z<+y`8C{pn!Lu**#CwCe{*k5yzzI*!yT`tKQ2AL=cLus9lv(` z(=ZKxnQ}7i&iCb3pzt{s`tAU^K?5p-4&(^G*z&OD*69z;%2y@ix+9it7h&FeF;M@z zlyAoS`3+(2!d<~J*4u@u=a_7HQJMK==hG{V5&2tB?p3Wj&wTa9E9YjzdkOm=WV3%g zny3FVi~H0!ciyAt>#etLY<Z;cR>C*K^h$QWbl2<mE9NIJem?DSoAB@Gy?=!M-n}<p zwy!&X)wW%^Hn6n-_6`MaqN^U&uFu|6W?&_^@vfkA;q%(BzPD~(fB!F}H<wSk=itO& zAzLqY-KuCkAJ4K3G?a5N*oBhxA@G8sQPp;ifr(Jz=etvPJe}ut$8NpQ*6B6>KP0HW ztNx*%%<2F4%0II&SHrcA{#rdX>GRjq8~>`scK^G6`Plc`_q8je?(fRe$=kD9X#X!~ zRk=!=q>3$4TlX{W`?l!sv)5CTkNfU^bai&=QTFq4oyB!A|9Su3;{LK#{N?gbGrtFv zUOfG|)%R@;zkOWqaj~$)Y2nqJyT2*bn<`})Gt}A&p8n=)^Ze%0i1evNIlJ;Kx7F2I zZo9WY=IP0|EIv<f=>9ERwU~43Y`N-x8FQ*GW*q)KzceBK&Ca(^<Ypb-XD5^%6Sx0$ zZhS=F`}!rd`v2w2&UwuF*vxrNepX1{bMGI%_deyvTmQK;@yDUmuf=ON25CO4%S+fa zJ@?1oi5ok9%dd6I_dk-QJ>{0smZ0Cp+x{^&e|+A$)jsq5pEWytG~fOB<M74&o=?P= z!}&3`V(fDw>yIYP4=+Ey^8Ksa*(Z<hGnJaZZ^ys+ow;T@$5Z8V?{B`nty%vl_f~Ma z)tvV18YStLp>a8v&dP@^{I#Vj`+hCnxMJ^<JFk|1yY!WDcggX_-Cuk%Z4&=2zWU>Z zx!dEW*T)xa`tg0y|92g$*G6=SvMJTs?*BJETGDsN|BYEO|2}`*@$8#dO!@JOD{jKK zK1M!{T>7JazEsD(cV#iTRqHPHU2OT;ACkPdnN3>m!wK8!N6!DR9J&3re($LV9xiWl zxY=Hp7hZf=`|(t-y7`d{FD7g~*!Q+iB8&UWB^h6fpNB45JZ$=<|K|EXnY%xKe(O=Y z^XazNoRWtbF<-ksO8k1Qn|=L$_U?BxHb<AQ*^={mwc^&q>9T$6?jPU(?t<+6s`6rI zc7Gn%JrDMBCqMk~=ymPGSx<L-T=K0~!sb(jso8Afkn#@;%ev;vT;HFOaP+xnV;E@2 zw4#aRQ4*9)B&)JPrA;`i{&v;d{Mh{C>5sRb{@Ba^<>;=}e*ccXSe-B3zt>;7(|vx% zc?ZXd=|+n=pT`=DrN^6!+3#I_=}N}ol(X};S83+iEw$BO?*HxH*}DC*i#fMe=N3Fj zu-USpZu;-HS7g=S-o3;9ZtLsX*Sj{}_|C0dnw<0dP*Kf)<+s%*_wKj|DMzALR^JcO z1oug}>#gp6xEVWZF{iv;y2`#E&A;l8nMW>{xh`X0x*If@(q5OVa_pG+`K{MZE#2|p z!oC%}LR&ul{3M!e`25YU^9RcL-ge8z-T9Mo?6$qN%=9~3ejJ|WE%<%jRv#Xd{~dl3 zFJF9id%Su2HTm@`c+b~7%FW&Lutj~AWc-XbpelRj#nr(SbvZg&mQ`Ck+~V#2c*W;e z`%hR$zPcK&bM&eE*W*>IP3`9t9MwPe`0R4N;~8_OuT`&ZTV7Xhw3u_feVxX-xzYbw zf3BRf_}lIJy3Fu7fA{TM8J8ASe}CP@mg(}ABK!Z;)}G$`-@m-(-Thhhj(>cY^Bm{T zTl>G^$}y|B-Kn4T&zN^dNHbYHu^0cp=-;&S+Q&cUzwN!1aM&f!yVxZ0_TlzN-zvZE zu6X|K?#G+;x%;}0-i-Zv`s0nqPadxD+fcdbo7U1FFFl!cdj)0wOr7YuSgrf_m1Ej< z<;NV>Z1DN~|L#g&i7Rb9uWHv>EVJKsYr)pW_M@?%=drKa_>`UfHQ%Ny|87_Qe$KYY z?8bx7-<c+ZCxu>urW(ob?UyV#P{ODF=fky+6^}I!=lbq_x$EhUPsx8T-aTUdX8*kS z-nacyU98Q*dvfnS;<U~*dAP#->k-BL7nz19C;hzXqW^#XzWn?>Uq$Z<%RM_PFVSOf z6S4nt{q2p`ewFFP`mgx=T-NOWe@J50=epmYn3w+e`jYvg`NxfFHs3Gr|M0x^>WvSz z&4yp5+-(7sZ0z?g2wUg>d%|ot@%AMt-yhGmCU3ki*)3nIv8nF+;o6OV)qMXX<}Ua? ztDpDi|3ABS9-Jur{ax?h@>w;JyK9py>WXeZYBx5k%CpR~*jOL*H_m*!(0c2-74P!T zS#8k&cBd>$&wu}qcj~<Exe1HzJ^wFvSw4Du;fll{1=)X3(?CP{B^49<C>pJNB06K; z!<I_^(B#R@?6>)%f6soMUEloIWqz!`L|=B^`u{>7UG~p^aliah#-Z)@SH!LJZrz){ zLH(5d&3gNbr~jYrQM<y%cI{qyVvpI1(sOyXA1|7lnJav3jz0d_m$%LK+pTrh`*ze9 zGxJRTx}vuJzp>k+{r}T-%KjgJcO!rKyBj%sKN;&8PrQ9e!uQ9k&}75stCbC}Eok?> zrg{A8@vrVHuXLS>uls!CP}Z95{}V!H-?6=!xq01>YwW+(Y7d`%&U4I`U+16N?wpIF z&t;8vW}mBHA|)*w@_&ErWy7LRPqmLFoxAzfUB_-uwZF_h_u_gzHC_wux(jDOSvoRc z3q>8218=|~xAkAGft-BSr{3pkm9u}&zQ6zb=8qMx)7xh6Ny?6Yz2stxwY|N->a`ZF z+b>5e&$zN)t?K9gnHO82mFEAWA8s|y+UZyLA$gyr)cl<(Tk`t;TkX(~+kW*+Z{U@< zb@AKmlYTb-y6gMI?CxUDsaZ!rgAL#7R~_Rm4}CO8zW3<*e*u{{YI8LnPE!7ryt{Xv zC6nRI_Oy3<r`~wBVd1j+O&@PP-SMvF-?IJjHHE#kVs5z;k_+d9TJg*Gy?)<r?6*Hh z=iH7OlXvx7q-L*=?*k=I-D~wm*=KXUmS30uexrW*JJ<c0&!6}Ahdg%WZIg=ISr{Hu z^5e-d`CFCyW)`gN1XVa^TEyl~B)db)!Xe<HYan}=(^}40#Gl7~&llFGH%jgn+2nr> zviW{<X+&vj5YLxsi&kqtTF82J2WWV&?sNrc9N6{0&Bf=x{J$LUzP9SW(>J~2d`Ef9 z&FVJpF6+P5ePrv$=B;6RM;~|`$$u99=+$lQ!mqiH1FJvoytq8rP54^GN|9oFa|6Mf zLI1!1KYeem`^nI&l??ww-^(&>>eOix4s@B|7^bYibz;$io`$9-g$|X56o+rFO*xx9 zSy&kz-KPjnZ<G{tb!`ol2oShw>=xFT5Mh+_a&Oi-ZZYpm>!-b2RT8@QymdSCoPF=_ z{r>$Y?`r+`=%;%Br*m6Z{AzW|G2U!1SGlSrInQdZ`nA}-n@<0-o@*zte}BEo)n^Oy zzZ@%?tZvq`Xil`PlkhjYdWE`A$4jOcwZEJZYxQ_Wf9W*ouy5~+pFK;SyjY9h*JEGu zzu#A0ISI41#q(KsRQugnYutC^=hdilyUR4v;(q>G(5v$0(XrqvvAX@D^S|=F?%r=} z`z!Kp?dQH76;-*;!jnqPtv2b)RTO<ORsa6v(M9j7#kooS#W&~qe`yFh$mt}kw#)h& zMKjPGAqoMnAGEMC3r=43qwur%FRsE5=Ip2AZrEkNUuThUyDw0?DkDzO%wo^_oUPB_ z-4^|wYx_&4-!8V}d`+&xzb^?@ADncZg(p2|mNn1n@4cSWt(l+I{p7#!_9u&q{lkwO zxN!QRP`_<(NBjI!#}9wzGJM`ybLVe{;<7bUy5(i!Sc@WO{^HRn|G7UT<Ivy!r^&yL zHWxlWytLV174L)@MG5g|>I=VkKU=+aLU;9ktB;8yPwz<SnkaHgcr>wPeN=H&%a+-o z(57`J|3>BIZ$Hi{Uab{-W*gpd#Nw^x=gYB%xx1(DSDzOj(6KfBi|ePo+g@xwedXJa zYX{e_`+G0>x3cB-#kSTt7v#e07VfGIdsKPAob7SDIsbCLy^po`a_`r-S;~5;Nw`JL z!jiIPv6|qD(gLTgso(isb4rtbwLVVSXS@AP2e+O1Fa53cZ_}MW9(}+6-}DFKcMl(w zf7Nl>F7(&*d;B{~4E9wg|6+X-)u#4lcd7fCTje?XZR{;%E}B+-bKd%;R5t$Ir+PyZ z#rTd0gMbe8dAdhz`^6sZvUYp4D!M&+M^pFb_IFn#)!)Y5Z2ha!l61EDlK$!Iual~` zo_KmkO4VfHZskY!`Cj(%=iZ3R?NmKp|7T9)kE?S<P3)EQX5AC5&WXF*{xIKPJZbOY zOXm+({w_Ug7roc!`T0EgPXF4{DMwm5B37wC+UTw3`c8f(OZ53S{=Bg_U&X#H{CaUK zzweF@yB=D+>pB>6US95^?CrJjxBp$)a+BBOW(FwTO096*2A=#TJ76``4K5z!oPOUx z##qmL|DWAQt#3bGe!REt<qzTKJV*4sV>Z2e*)^lKE?;MN$jkVc{Am|jiuUGA**|^v zANzZ?YPEacuDMt7nQQ6qsF>&e{Lhqk-kA4IW@mA_%>L+9MxMuat5<$Mz0=ey!zt+S zl&M99UyfTP_v^0W*3$_6AKU*V`S#>r$qKgnQy#v4Kkt&*e!G?Gw{EX`eT>;(ENQXw zWoO|y=_4QB-sd@<c;D}T+^^fJdpDN6KmGi@^YU-U|NqIayK**XUs-fab&Y?i^xA|k zTetTgnWwps@8s+Bw|7O^bE0?O3)!%AncSv~f~E^C%kq|=1x@FYU6e-(&3JL3<;bst z`^A$ED__z#TE90c`cBcY7t{Ohmj%Sz{B=^?nz}pxo}jq@d#&3+3prCeS4joD`&1t~ zx!35&5&x27;&wrmCk~dD_Z*RX&bLJGwubnb(>qOrGMog9r>}hb@$28+$(LU2R14j1 z#p(F-PHXeWJ53kuuS>7JDR$p}jdfU+b84gH`nw0>=j$9frs^cTuQDOLre^c>X0~<v zN>#r7{q-V!*=psacd3)(ICF2j{L=X2?_cG`*LK~!mHTnCRg0Pmqj2=R3qKqcLggDc zD-tgrXwkeqU&KjRZGqr46>`Ti!ND1#eSxEq^W;2n9+x${{x@BDyMAMm-n&^>ci*@_ zc|(he$-*n2r=Bl4n!a80fA(u9;Z?S_OOJz+(7dZ<b8pE_m%AdnQ|sNC_>cDwgUZd| z>3cJ(!ryGH{8?-?uQvQsp5=Bo9$$}Fvv!3=|9Ns_p2s1UtdBN7>svv&!{d;i+|23y z>(0fj*<Gb)x6{?VChK(HiyZmeTKzVm9bflP_%|06vPtW|?~ge$`7`&%cMEF`C&kyS z<zI7K?tkT()tZ90>sH$T`*A&x&F#qV>$&~^tIpoo__pTb_Gjnxk65QKxxVTBHCe;# z`=1&Ox8CyKe9ky3;m{P>G%nwaYi+m8$#3inC`^!TtYTABncnlh(nNmyxs%7`pY<G> zv$J)^|0Km{`$aCAM|3RRRcyG^{1NZuqKPa@Yjzgt>HYXwp!HAd^wUTGK8y4F{`l<t z^T&bCm;1NO^ZBuQrtQX)w{M*?3(IhdT(pX9%I-h$S5wwY)?DC|E&L=Gdol3o(x3Tp z_A>5u>b52if47$&Z#P?0bZMhl;G?}od0#nvZ~Q;hxZ_#BGIzPDg;1bI&)N<C`}ZsF z+g6_(f2sb_O{X=V*S~aRe*WgN=<oUuSD&;W{-0~0_xtPX{j+b~R$6DfFFi59<>Spq zKmN7euUu?<d)<9Gd#guR8(KHM)cY6qX|C1N17D)P-B_foH|yGszbmF5jd<?K?c?$6 zv?y2dUyYtpYvJGbwq#z8yLn(u<Yu)p<1osq<tc(I!V?aC=H@CqSbDhdC-32jf4HjF z&f9XK<w^L9?-u0?o*0#%f7N?6{LIw5T^Cw5xrFk9YSC3Em68r`-*!}U{+q6|*Y)HZ z3~${Lk29A!9y?KP)`!cFcO`e1rx}|(+#2`O=}32NYsIsp)0_R@RT#+I|C|4?;>*iZ zcIWs13_5=(&h*vf8uzt^y0#e)uK1T7dv1T{=c#Y)Zc2T>?<LfHKlbp2d{;#2&zL!T z%fsL7xcK_~sblWnj>gZIx%(pdeP(}t{l0GtIhhX&=HDuJ)GFP3E%(a3u-)r}8aYqK zI0>&3HJt~}eW1}!au^$0SYC<Fn7|?-^XKfrif65-^uoh~^P(~ig>LUTQYSuz&$r^o zqI(f#nhQCvR$NcYS?es!_p=~<&Zm>%`kTXdAMdU+lsR6bZ)@^U{dn2&X|FkaCC-|1 z2JQIvZQ_i=n+a#?H-33u-OhXK@hSZ)b_xq_)h+MU7f}lPbEZk+WWQa~vA(&5pX9pd zZ$9|2L;M%l#y?MDp1A$Aiu~KKueDzO?alJneKWS^hp+XjNS&9mH|6e@^zGlb9bd|B znx~(|7j(4cDU<M|l`U!^j9D6#<Uxl7PtGga1`jX2Zhw5@G`sT72{HZZx+V|r*PF|* z$4;sfw7Yrw{(f7{UDl`Gznb73|IhU2mgkFSZ#n+dSZjB~p2wMg3opN!5`9xJaJ~1H zr>kR%l(S@KUAQP$c=)94$91N+j)ffAUS}*5|D)_zq^I65b@6}dzcinh9bI^L<6}4B z&F9_c>m4am|9*V(=gamlVr2#S<4rWxLcayh6nM8?{*Ji6t$h`5GN)9<#{B~M|6-~t z4o<W#KlX8Vuk8nA-j^TKxi-FA`0{n#t6JH@hm2eKvu8|LcD3N57nAU$r!8t%1n!2A z-8KNNplXcb0ENx=?>$HK(s{4w8Yr%`)irr|>OTMRFWuhlYBp7c`8vj#Q|7nDvxH_i z>H6JVT|8y?pZa@su^WGjtzQ;-rhcQqY`MGg`d^mDpSWLfcH57uXXc%ln*TiM=${wQ z9{#vve(C(FRQB@Y>w?wQdLC?@t^3?;;zG`ocJ+Vkl{fxxWme@s-QV}3FZcTViql(s z^GcKI?|i)QVxd~_^{npK`)&kZZBP96_~(o&pZZtUCnN8tujZN*y(-G|(ZA!LKHf{d ze0}b|Sob*}GZ%8MPhD$bpjhdi;WU-~QUN8?&J7N>te}je?~+sD5^rOp|98>vMWtJx zDouNJ(sf@z$G*mnl)fVWsEkAY|15;6=g0qI`feNlw%2@pz`tpGFSHcJu6XzUsowwi z3WxBTSGDW+d(_?A>TLM=)WS*Ju_kM^zg76&a9X;1*TZ`ge@r*NbpF)J`EPp8*YDVT z>E$c4b#rdJw5xsLcUx0;ph-f?Q{5tc{<<6go44|Ft`PlY7cbrM|JUIctUm8f9$h^B zi`ysL(3izeeGeP{UG&AFZ*~8>zP0y4e+zU*KYx<^d-7#xVMuSP^3nN{rF~!J!hI8* zHi<9f{Q9orCuP%kqFh(B4HP5)O)u{|qJB<OHtNDXv5z0mS|vUAy_LLo`<A0wr=Kf* zpT&Jr|BL9Oi_5t;{w#bsz5cS3aNeGBl`_3TLA#re{rleb>0Z~YPmIiPYGq$_DDkP@ z|9-Jq1{N|KUtV15Y!McxCth#0+gz<Qe8<Fkp4opZ?3T$*t~<6Y|GHp$&92qEJYO5^ z0*9B1>iY7C_&;x7e%UfPx$I?6vfZ^E)4%Soxf(F1vb4(L_}S&(k65kV9(w04v_dO* z_2cIA?`}nT*?(hx{(d;4uCOZNFzfu+UAEhE?tJKqs-7}y{jCEnDS8Vzy*D{uQ=+K( zw1ne|v4LXbr<V8pN3YjUtNXcQwKAvfi_VqVQ};F8u@~9+sg677_YARFA3p4H+VlIv zzDa-of0`Ft_<--JJ|DO5inqsC+<E%{qLc6>**{PEl{bF>xwP4068F!ONB?BaYkb%d z`Yl@E=ak+5Zm+p6_rEY?swdCYoCSwAKD{HQX!3Bb@vo$Jf4*F3Ic$GRGX76R>ED$T zma83Jx3^a1+n=molGe%V*Ui{h`}2Lzqck(yUH1Pzxzt_RyLLl~p4^TN+tq%@l}swS zzyEse#y{oxv1Zp2CikftC~7)pI5nGIDx+kqzVQv`6>9@U!MktYH17DfZeqwC=522~ zHh+7k)op+6Ld(ROBU<xg1)5*lf0Bz{e_bv-v_LX0!|A43sOf?`PycVZ(2_Dy*8g?? z?6m$mPTQZqFYVpA<Mo|+5qU-HR@vqjRK(ku<bOH+@3jB9qs{kMoPYW)%PjI-?jmR5 zxL5rZr@yco&iS{oe{$LT9_MnY`iw)d{ZAh6vUXGAbbtA-C!+l8Hc(%=;<3@yueE{y zE6<B675Y_Q`@ekKj*nC3b=@la&HVGmvnBtoY?QyZ!S>(Z4Zm6nYu=n`{PEWIWv|B} zsYw^wbnKIPeLT*zsHOaTvSKbd^*1cd%_wM86`V0a<mbW3zaDR6zofstKKK8+A76f- z{-5+a!dZBd?VAFx`a7Sdf3Ypu=KklW_TG)RxR&bkgHp~$UC5}xeECzy+5LR>cg%ZZ zvUAG(m~-o&-F)BFxZ~BdFW%3}YnGZXTVt|u`kB)^eM>T&9!<BHR;6dX!@6wltvKK8 zIP-5e#kmb1Z#wwnWp4NPRok^6{fM=G{D8mIEl+0ctSX=SGj%q9s~`WGT$S|L^!BN1 z1s7DCKfd4Z?Vk%BU-)#tF;zS&#bKeq$8XKQAH5WJ<7bRaJ{oh!H2aaW!>YBbr#(I{ zJY&Ke=L{#^-HCdX72cvu-dYBVH!pot|9*UJ@g;q^`5VK-eeUo3)B5mZi`txTj~80} z-rwfM^>%xy`<&hR;U^89gjZRli1I*!%E{<&+;iTZs?2>mzASmyVSWB>ueo0E&$B-v z&7pjQ((mc-FN@Cqo$&K>l;h82xuA2oO3uP;ZOZrRonCHeT=F6M{F~15HBoj22_{RP zi;E<+2eUugw|{B<dX@KoU-!-ZxYTwP_t}cKRqFo>G|uf+`&*s7*!1?JUo&l0n<d{> zXvp6_^QQmLi=C|8_xHZOb1$Oy=&AD=OWD;qS9>~TUz!)YY}@heeDBtk?3yNRe(yjF zi%W*nX<2SoK~Q~8ZbRv;!Uh#)VWEE8{Z<0k@9q1s{-F3;v)btBKaY-F67Qe9@iC|G zj{h5L_I$tb<@DjBdt>YtTifmOtj>~dRlD-7W%}+v@p>kTFJC`9zBJy$zpNV69r-nH z>0yJo=+K>;H+`*oTX;24xccIrIkzjEg!g^E{cy(T6vc11HrZZ_Te~Zu`QXEj=KYou z_PZ)~JaLT7ZH>9}`|3SI`DKsSN%U~9*WT-9R4L>!p+!pNAzO0gskyBw=TttZa@I+{ zooT&az<S;_dH#R4s)mY6%hp{LyI#97UFWv;?{l5ud`Ev?U)F9n=l{)hH-0k<OEUy* z>#*Wo;hJ#hka3uX$fe!U%g_2h*>ZWAZ*}U=$jxcKPr}ytqRb`|+qg1VT%QkH3jocw zDIp1->}o1!+-uSe^!D!i!uovgz59ad?=MQ8_V@e0_3OtLHI?6>GGxc!#!LHs?oaEs zC|Q24ReWK1)!|3gg0li{^ZV^Q{r{<x@T9vn-<leK^haNEwyd&J{`Y6<y@<-4Up8;e z2z@PgOT6FS_*dwQbKg3u&%N$7?=7;+T0Pk=+H(8H7PU8p?;K*vkDs3BnQ_S7EU*9j znyX^cKAGL3)8y`c_{rM(<LTU=7VmE@-0^$jrTH6E?wzmSVeI!e<@t;qpISS%%U%&b zzc1ou=-2akmj&a0`aE4I*`24wX}cq{?B%Sods}S%{#1mo+4<?T-AUbF|Nk8Jm{ajI z;m_NbmwxYg^Wfc$(yXe0(=#Ug`*>+L|NHLt=S$bu->=-e@ztlP^?JuPPj{=@9@fa| z>FXpcwQ}<}iiWwi>^b1VqNcLq<kN@eYjPK?$q#owvhDTu<5k&Pj?SKT_NdY1xcZsp z8A}8%>r45}O`rO-sPO;Km;2-XueNr7^!WLd`|g_@+^dg7t=^`)M`C`=rMi{-1^Vry zJNEyNPki`)xvl)&CANC=FUD@Wmg2DU^o`$ncLg_pll`6gzRS$;VDqWif9q9D63^YK z@v&WI@8)$U`~Mww>ql>DwYJ;*yU+f(Y5sEdTABUP=`uS%-_ZLzUHLww5B^e7;N)-S zrN$mgoMj$N4wvTDZhO_S`J3F`$7|V_u?wlpZ-1)xJZa{=4$r$gK|`0z<28;rf9B$D zX40yhv{zM8Z1q}$ZKr=hMnNuwpA6zYp0g({I;K9z|L9|J*&nlayC+TGto8d|MCHxt zwQ}>O_wW0%epUE14=1sI1!?(Pw)a+6uhjqdZr{WoC#GNizW3$rTaTt2AAcA0TULLj zWVYmt32!1Y4o!MFJCu@Io{`Bgu#uDVZ};EUh|dT1Z4%#m{Pwb<g`6k<cxE^W%?nuX zp5auwX)A}XN7$UYj|nk9e}7SFoOceKm_?_rd$Z`@T>j^e|Hi-Z*HyF3uD9E6zRP;m z>g|&*R?oK=u-6ox6>!pK>9HlOMSq@l*5p)`RNZ|XYhL-ETmEH_u)X281D)0Xr}dxh zUtQCmz5bfm_Bn?83L0$B$#%Scx8m>jWBmOu`rcm4U(fnFsaU0v)3d<o*5sBBl|-e; zsw~+V6K-(&p18yrq)l$I3MxJf5}AZ0X9Vc{I-=eF=udY0tE>Rej6=ca#UItGe>pz+ zGk59D?h7riBC<ti8T|eTN<&{<e=WAZCVBi_(9hJrYyIBzTg#nVE>?0ZF4nO2_pNxV z`6n*4yuWK9Gk<@{hFxl5hE>g)xrKK-Z69;Zo?*RT;QgG7;U8DMuXT_9^QYxwtD4Gv z@o1U*^8Wh+cE9fhrLoW7Ua#8Gm&JDP)AX7*1zx|NCkB-t`TP9)F=@3>F{Plhw|cF% z$u)9%u5}WY+WPpLD_JEXv=rRZ<Dkr<rZS_pS#Y-OZE^mytM4v->^eKdGsEfAIotkc z$<K}19?g`BYtVb=n&DI`KR2pXO=b1FvTqJC_18UKv4urgiGQ!#YF?$aXZgS8*=@<U zTwgLW<;SRrZ=ZWN_;dGjVaZt&SkzPwa(=D2_w(7dA1@2<PW+O%=lrhrZ$}@W5BU~r zlzjZ0MP>h~!$z0Bm3@9w^QNe*{>ycRU?t9?9lu`8dm;IMo7nBVg#sHNzx+G#jrrT3 zZ_H#rPCXy;!%-rCv($sXRjg_%OF4Zr8rW_#QIZZW>|*K_nh_vU_voh6o1$wDpf;1y z`-)wGnHf%-j{Ucr*uVF@bj*+UQFczkt1hoe%{a9Fy<BJPc`1#ZjofzEMXU2}23}Na zcULmATvc-6`11Sr1><k;-!}ccx{*oZ<i)>|&)vCIrzZ5KfA4bJef#Rmb*=^r*4}j7 zyiT%9|8K#HH#^RK>xe%8rg!_k%s-C2CzH(YSqoLqx0g7tyFzC};uhYzguCB<+*=rH zxO2H#byP{Ocb%z>d+fY<ZzjyRQ&yJ0=V|ZP$o)CN(>^qShBTLQ_(mM!-6}&#h)j@e zbmR8XIHf+l_xz434ZYoU7Hrvnn!jBI)r_8XhW}27^Bz^*FV(eA>Q7aT(Q~`#(j%3> zL(4krj$i)uc$v_Cw*8QS+f&c7u1$_TeW9gB@zH$#*WJhGdG5ck@8s=UkHU?$_wW1< zNjFRRkJrmwmA$>@dfa9)pOlP4pn>}Ge3?F#2Bn`hJ>MhKzizY0{C@66-rrk4RjR%A zS=$w!bGTFR-s7b1yv_dMZ~h-V<z%F__UppRR?zs@pLhE%W$RnT`==jClz-WyT=uT# z+cvN8)p;?Swx8{LtNpWfTI>6%i=y^23r{L-Q41+|>!oN%F-M5Xg%ypQ>+jYSZT#DA z&VL*<A0i8yl=%>M_VQK1kJrq%9=#oY(zVF&cWm~Sqiw;rlD3Mj`v3LI@_G74%ImCU zuHP{eDz}@nzC!w>{?Yx(TVwuwj=lwIvL}7sdi(MGuvIm+3poY1^7wj4O>aq<Q~5RE zq};uls`H18gHHx)xa5=<)&Kdp{^j$epC@<jcsONVMDo#7)$v(xJ9&IH-f43R{=EBF z`Qz{3pFg%+Di>Z?{uyBq&>3-LmiF_c)1|i_KYstV<LtF{XLfFy8E>z}>1XlwxO3r0 z{q{xm6Q`};m!x;@&T4JDJ%PE0rQ&uszkV;(>AhaQ@BTeoA!b#kgs@mU@!fm3D=*8v zZMf|Ha<5#W=DB{a`)|v6*sso?F{S(V`Inud)7PDiTw9VaY?$ZCqNY;H={uw2UDRYs zx?UNXjcFV{5nC8frrzIw?(A{U)XZjmu}4e)9Xb^6^**Ej#mh6U<>@Z@;YYZ<pC?Uy zTD0-grkxd!jdq^6`taWS|9e9^e*X*WXn*$f@lIAjeO{48i**-mw-)y<J$~r)v6HGV zROTphi}y$WIvkW(SZ+V5e{I^g;~zYJalc-7Pt4wWq4gy1mur8hEL7t^uYKh3=T8$^ z=Gp9DAi&M0Jn6%vd+TC!%q<_y56kK{y+0-Thh^*}|4(xZ58M8%c(Sslq+Cr=YiBE? z+T5?Fy(?lXPnKT=bpq$?{5j))km4kR_LFyaMx_3XS@Zc>%$luPf18xMq&<IaKL3-M zyE)#=7BY){ccaQ}W5sOUl?PguSS;iezLeBW(NeOtS{Hg6IoICeF5NoqfaQNvk>&p? zR-^>JudI%asV(vMd6l>JR_Ns)Ovh{T4fK8;EjZbmx4W+T&xa51cD0-}nRH<ikB`SI zu~`>9?rs;Sq?fp0B`b@XN$KyLeFs@TwRXgwlj)FtC#$*hvWmq+_V)7Qo4lV&?NPd& z&D!`RMy}lT=Yf`~(@!6*pMObMd+)-n=bujE^YJ)0;X+H;50#aTlq9ej1&ocH!uOh% z-2hMf?d^Z2Ub0^P-U?f*+v+9U$#H-F$7vm5_kY!YWaE|1-?H@C)%QH@U0dr|duBr1 znofuR2}l0jm*|*(FU;!1;^o?po~wU3!WMihYg680KO@0L&d$~gEpE1gl-1!Ty$uIi zmStXT$^VjVFWseISD)eZ{o{$Fdq1{$o|RVnaAA*A&5JAlDvIh}K4?jue(LDa%e#|) zmz!rg9ch^-)ID9;<J`l4;(SNm@=xJ&^knkd_j~=_jfdIR*7B)q87RJ-e4(Xi`PKWB z4M(c7u&7zcUFG2LUE!u(`)1D0pEq7^Y5eiKcxkh6(aw&)+h2A}E_>g#v?^=!w#ZGo z0U9nbzg|DI`1rf|qItxvMT>18ZED_?{M?sS?aJpX9KI`-uiHt9gBqua3Cy@~>FrwY zLMP#@<G()aae7l#R&Vnm<>iBxl%wDG?A5I+Ty&-7*30zrWyb5}y7c2sL&Oq-%8%@q zy(D{kt-irRoog2C9KI6j3$9b-kQ^=!pA%{Kk4JC4(DIRM-@m`0Zp6Lk{724i{=8Cn z`*zou;vD~+ZDrB9;^xt6tk3pGbbOzCLB8L1vfQ<er;2v&cy!_2jSp+r);@b?XDH%- zrq<LU>C`v%qf=zl^gb3Vnk05kjs_pfLvAM_ql~eU^X$EYowxU2Xt{Npzu)D|pMwc8 zA3i?}RJYH&e$L`myjAx84U)#%1+VASys3z)S4q#m_`LS@7SJ$Am$}~L?9BOYoIV~C zTGh6E2@IB@q)8Hx&DhAfRqX7w8Ykgb*WbtAw-uWI|5?JBx$zaL6Lqg=_W!q8W_>H_ z_rI#Y0cYoE8N8mg@W&<o_PC$b<?crccb6Vhlz*4=^Yb;2Mov%W7PTJ>C@L*kv_u4E z1Sn2PT*>4l{HoewUUWdm%y7P=PtAFbb9q01RKEP{kyEF=d{(TlGE3JNQ7W^oR;Vlf z?y={)Y_4JU{dE!5TenR+p0VXX3rkFf(`k8YR*IanRX|`y0Jm$gK!g!feU*Vcv-8Fe zM!VY`_Oi^Y+9$AoZ@P-z#z^<Q(=t|6N*fv|G78PQ5ODlR8o3DrG@jMyCL%E7LPzXI zbx>&^5yaFhHDkgReUn7bxlFIgofidnO?)*K3>IqMPP+{1qXj58y7BpVc!|skSnM{t zjgkUA!<Mm;bM5tDQP6mt!&9bSxfv5eluQ<Ws*?hr{sXcO>;MuODIN|9PHnT+f^X=J z@L3?qBs|HN+qa;ClG1^Zshfktr$7Z1MGB{x&I-+#@Wms;X`274Ta*~vcob9`i-3GM zA+<4$%g5uFiizUs<)LpuLge@!6x9b_gG?0w838ht+sC6y)kN{MdKhJ<YBMnj%RmmS z+2ml%rl#^&Xx4<M!K=$aDGrnd$th0~7B(DUVF$MiHtAeg)5z(09y}4SilT`Cff)}V zr}Zpjon>jDm^tS{i;sN#Q3_T)HRf>Je4Bmw@y7W1-?$E~T3vEXYjs(gwCh)JC`&e` z@%wm4shTJn9}is!5+Xb9vRPTwEcii2Oh|1E<M8qLr4C9F5tPK8!eS;SVWV3Wsh|Kj z;M5q#>En?lIO{<Gh);GNo+%_SW5UWZZSav*VuBe<540>XS;*OEK~6e=4V_GoWNhS| znYq;ol&um(8pF83rOksClsQ#EV8(<_Gi~r0U_mTVh6ak7p&3oe6m2`)vZvud%e4HB zOdzK&XmME0rlz9G?OX5##E1EZ)N}xA4~2qj=P802PY<*#DOt#AM@c4Ya5&Ay;gfOm znpO`ewzUK@z8+|4ama9DWj`oDiNOngvaqO`#GijN17vQN`h?a4EiT>}PH)fk%mfvc zWQPKqpumg^3cVY6L9Ux2(71+0O=X9Zu-cQ3$SEMJ$TfV$^o9d1RVQan2N^QUQNg>B z)6>31&E)XPE$$$z$SuYeC^0s2iW*9S_bKXXP1t&%Wl67-aMTwAZSY}+WV$!S*CD~_ zn$@~EklQNOI*2g~Px{rW_Cp3#%!9l@mbt$A8!{4{E{iW=02!-bz}E;`{uo>~!?I6u z*7MMXoM$g<TT^s9yPKfEj0X{5M>dADZW5U>Aw<{Y;7f|uu+0i{NN~Em?c6a?_FBNl z^qnVH#CTs_v}{`59nDrXlf3*l;M7f4kbuftXjYvfYVl^n;W)|Sk4MF)%ii~5Zc*D3 zWPX*Rc^7a<Ffz>)7ML|*;WYo*W^bovrJtQOb>XS0UgYKxq*8XRhJwjL(cQCxCSPdb zF^yh{<Qu5Xq>7wqXt>bAW3n@1(Wr@J=Q9=#fzfarO^@J07FxKFmK}$A>X|l|(;l`K z0I4)XE~|!l2#op~skR=C>(R1uw5%MhAqY2!M@x#)l47)^7%eGAOA73{V6=Q3Y~|yH zPfY!PpM9x#bA9>Nnz>w%O~z9>?ig<gJoDpM?o^)KnT9)^76xR@%+k_u$#7!zXd^9q zqYPX&stF0qx!`hkQz$5Xtk`{E%3J>~P3tpjep~f!YPiti_Ohjx0^=E(lEnn(7^GS0 zgJww`xVcg^EgUnPxaAU5L34Rzj+Zp*aOp_R+3-qh?#5HA=0+|FFb4IGQUVg*2|Is0 za%W+<)_E_`_H`b)GF1vD0~*6b1?F5>H8)foWPFIygrg5w7IIFV!;_5E6+sD2kUB!4 z)woPhV9o`TwVMLLA>Qn84Rp}Mm4^Z|!BY<88a*R|@gS%0>wNGT_A??Hby(Fod}rL) zoCX#k*_BYAEbwD$5`M*!9R+f023O-67IhBajIPHSlaagLq?&#pf`vuB$Mvi=$dC(K zOpzRZ0<$h?Ef19i36M4Zq2SPPU<Ff?unZ5#r6)EytY%l|@ICSAWf&#*Pn_szc+k>g z5;YU#E`wDL+8{#<UVw&`30ElCL#5G&gTwEH%WP5b%(W)dTB$h-CI=@{G~R8btYD#N zyfzHHr?*GxLKo<u3mJ+cULlyNN!aLW-ceA#J)p$2Rt)4!LCTz|u3({9tQ!u#WoD1t zf~lZ{Z*dD0w&cdSgBmM~ddjA^U7%H<jrAN`K>41<eHNJo3pmxESkv&J<;=FYhaiUu z2(A?X`8*J00azM)wBnaC(p9ify!<xYhLMTINdLkcQ2ZFxw=fbaEAX1yBs>Q!e`1q^ zF(_T0_;fOqlEkj?p{wBmOFMjm9puPOHCb2v$W7`X*X{9hC}?5^-}@9PmT?SJfJWMF z%%UhAi3tnLc>uX*W*X}(T~LKG&3`pzt1ALoS=22gKrs$l2f^hhFl)lo$*U+@ub>d> zP|$Q3=Jjb1uP>#{>t0+OegzJoIs&w`1e7urPpgMeGU4Cg5XpFuGqsZkl&%}a#4^5s z9I9LMV+uuAN?dVsC~(S^ISZZ(JF9u&1SmDl`s{Pl6qG8+P4^pGSXtC{5(`d)8V?T6 zoF-YIYQD`%&CHpSL~63B;X#YryS}|(WB0O38G_Q(-rae1pvnXkFyuIT!BQ3$^(`UR zqF}d$a+ySd9IGXrLD8xQ2Zw?tV{ma9DVDJW6jzaUos=c2V>${JiDydUKuyg?F@cOJ zAX9Y<W=sKF1IiQRFnoF%9<+28Zr1{Zok^R6GPvo`vpGSWToXa5#$hrShhN5}V>it} z#$ItrSkx@sqIP9TuNp;%NN&<muuwdGHym7k`lJ*zU0`|MPe~=B5WviMkkiz`gtbwM z6Lic`-p~6rZ?+Ux_okWfHXdcon>)GR+@~v|daId@pkW{=cgWaNlG+*^dRbW1uW%Ic zT;6jbyyLgL{*gDwKV7^lx$*Zi+2k2Vwa@AWXt>n8Ha}c=s=rOiQuw;eZQ<E#-#S%q z{=QZ4yZ!r}PC11&^)|ng6qn`SmpuOVlH}xF(uK>t%lw4}=O~yYp8R$ri=vq8=H~EQ zQQs_Iu}PqQhOy9h+pvzC{m&ooJO1h8598Kwv41br-WLAk**^XC{mx@i4>zWB6+TdH z{<!<MTineXt4=?E^nLl)BcCQ0_il~cotf2GqnI?^nEg>(b-ZnMer>ScKEt)v_db^? z%6eOYa&K_`oE(adddYBMJjnU=?J33Se8<Z3W&C1YGMsAvN*8|1&X@0eDb9b4yLNqB zy2$sPhuPj1J{51tFiE;UtJFXK=gELMpB67Xy6yfwvBEcca|?gCTPsihIHylla*l$@ z!bp41Z{+QVg=RvNEe#J^er<KnaQd4wJNKEB;-f3_{6}|Q=W+dXKl8j~b?MPBZ>?vo zwfUXv&=~!1QvY1P_x%qiemPs4aroPgF9+U5tXj^<9nlmW1wO`aT0*ccMVrx5yd4Uh zYJcgPEVNs9*6j5Kk0XxLd5-nx$?5I>deV01j_NRf9dpa@vYf?ypc9(v3ZHx2v9Xr_ zZa=NxeZJO_;@VaTslFLk=5{ZwR{oc{G-l0Kujrhee$_d9<DzwThkU*kohhGYKd(PK zPrCE}&-*o?Es3B+%GRzt?bW%XpfjE3=AS#tel53uu328c=rp<g$FCXxe(cZx>~!Ay zyTP{}xx1Gfm!2;9e^#n^_5((5B~a>MmS>2j=pMCM@eTz}Z>u#-7Md+P>H7Ie(a((Y zS*M>Ty^6|Bj?$QEJk$DZ<?&TJE3Qi=&)#j3zUkP!c-fBlyEFIs6~3|Gzf@Om)-}=B zYwY%!UVioS=zRA_eSvxx-y3bUy%tsaC;Oh2y1aOtxrqJ$;Hv#@x1;^jkL1lRJrel; zl4SOp8&%@p-`7~k$N%{k@aKE&)AJ6GCRfyas+BGLlQ(zcBa1`AlRk7Mub1f3u8+4{ zlYDk+apBuS+l`-!);^CvJKcFNsJslh%$rO}Cx($JSwLWp0oxX#^&Gw{dY|9sd)2)> zUZcnArn`A&|LOFS{>+6>f__e6{vCARw&?k}R`Kh{fARFXys7<n;E+ILkiVWdC|f*! z(O>G8{yQRE`|rJ}=Df!bPUku1QTMShT;`Unb)Lz$*8Ev>`!D}XHprW2d+JH(l*_k8 z4U508o3Ss}T{PeH-32GbM{EAeMEy9Q@$PBazB^B1YCa!W_v3+m|6cQxQsH-vgxX`w z1oXd7kNYUQdfU;h>LvZ!D;CE1p8fE>iVf6{Z4*xD$62H`{!f1&_aH^@_y7L=>1pL< zVS#~{?gj>3a%A5%HAtg<*J)o(Sq(w2B`YQ@5zx{+?!oTm$?od){D^P*)UHV$B1%HL zH*el-{Qtk{--tIg&wtFlJM-@KuN7~Sci(=!Yv1*+d)EE@SM^7(|9rK80|O%qL87ro zT*2btK4le?gL0>ZtDa}yefD7?XYRkZmx9gJ#b#~L)nB2!E3#ef&Rsogk+caJyPtZ_ zUsm^^-{Q_(Ro@r07N0)nv(CWolJl{>fh!!1xkNeqSGYI}Z+pkF>iA>3vwxL}G+g%7 z&7GB&S)yLP=kTRf`#0{(+~jX8=4SUlqr1#%3FqBAS@$(|Ds;-%bFaAT%=+sof4BFC zdhX1Ep5XQOp9cCB^>=SuyXAlNswQC$Uyt95(;GPy8W@-;BLd=BIQ%v|SK;*CaQx$z zeLsIyI{)|+7jzA_79c5K*v#PRvLjByWfe=E^G|G!dGcZP-CY|~ldeAQ-}^Lte|oJT z<EoINj9<EWbA!!I8#&YJ&HXhmtnpWBmr{|M_29Gj*Syo$-$yHnKT<E^{<Zz=wYj-M z{A)a(%q;7ZG`PE*^YbKbpBp>nrUzGT%<r2uZ^|9p$o;A-%=kqzZr*Y@vNrCbhWF%M z>17$MvgtFs9<VqGzp;>fMpTRviu5EA1q(&D6&!atd_C@6ICEjc{P5G)TlK&AEjwU+ zUtRXnO)Hbc67}s?roHwi4_AjW#uls(Zx!6cRdn~#Yi1j(z0)qsE!ms)^T+Xqyjd{` zl4cvLzq>dKpOF!M{_|>m)sun_7qg5erhEIZFRpT5dQ5$y=~1g^U(a`!oL$Viv8;b( z{MJ)^x^nLVzy6gm{JQ<sm*?LWMDc1~;NS1c=O<C$935`n_y3*x)*U7?IpqaR3pq0@ zPUvtF@)N;i&d73VJHtWFlXLYKa-RJ8R;Koz!g?P8#~o!?EhA@LxH|VjGuNL>2j{MF z7M6ScF6_74N724&?xmaApS)iF)$z2crR*e5t&GxH+6znFrM4W_=B>TC+%x~D=!UpM za=|LXvl5!r{a(#o?^}QT#|DeCntvzt_Lfxp$ta)N_qr@U;OqMjS%1ZT+pe=w_ZAl3 z^LqE`HMeC#J}bt}ydRb;-@oO>zZludfFecS)Ow|p>kpg*MfW6o{xqsY_aiX{3&p%m zvCJI49(VG-Pt<+)`PF36ht9%Qb7n8y7%Rl>`$623JuY2#mciEazNq<v@f!|ygmalD zg(V*8wZCw2?K<%z;>QHKpK$;G{Cb{bYt(+zeNBH;oP^KplA9O2;&<A+o$2k)Rv$T* z&zkch=<Z<|s|{VwzpG?!{Rj_uud92hyZg^6?T&q`_2tflu9cb@yyO3Y)vde!KRxmM z{mE(TvL`Lw{Ax$Y+D*>(`5Z5HvexPTQ~V=)e`Sh~z2w7-8~+!%wRc}S+%jRt`Kg?I z8?$u%OEZt<&J>NBXwq|(rHoZwVAh0H!bx$2%Q?a+NTG}2AZKT+pp&pr@$Kp>s)xD1 zT>S2usQ&tjiT7e_Rk2wD9A2T;QSEAH-ppS7>}wLgZ^UNJ6~^yQOgDEr`=|cZ?k{h2 zzlklHEzp#xFZ$~Ad}Z;w(R1B4E#$0!&R&|7zy9AT?pFu?%QId0xJRcnZ`xAl)sgM8 zYhvU>cDL{ORq6bsq5b!*^wrm0Z+?qeB62?I+}|V7pSHfte{CyUIl+1J@9LDg_jl*j z++T0!|68QTAt~p0iQk)j?bY{k{eLR0+H*nOUDvPkuknPWM@Dn+^?{PmsV^Lr78Dkg zpprJEgt1BZ(SF7jwIlgrc}GMSbA7oM{?J)C&%)lDKW=t~;Lm@uYn+AS<R>iN+~2=9 zVbAf$cE0~l<nPQB*4R+d;?5qrkx#fI^bCvLnctf{lJ99;Ic~2eHf_V_$dheqGb-h3 z)&|r+_56D)B{SYX=lAcbQitcfpWJvjckI~beg1}wk>KjWJ%8i=Zt=L@tGhvFTfcjh zjZL__OvYQ|tg?k|dot$k3beewQ1o%}(~X+$i_V^4s{N4r<NUOnCpz6NwkE7_@4L}w z61S=6_52)Ac_LZ<L`Q;fY9Ls5o|^5ji&gzc_mZ0U0M@#dlWs4J*?wu&j_DUzs_huB z_vv29p5Lbb=G{FdZ{>BKHYN`n`YNZn{(jH<?Zua<b2H2~RwV~4zdvvNB95P|m#dz> zn8dcR-N2=)V6tPJZsgRMh(qUozUA=k;MDY49_G9^>QD1myH_%=t{hjk>GX?V_1MZL zYJuhaXm$afokr2N`aN^X0wPpQr5;@E-yb>qMrGXoKY}5L>wcd49vM9I0+(={<8OC` znV>|m!<Dj{6O<qn8XTlJrj!*lU01LDS?mzMmM`Pxtp=Zo@7K>}`t|mF{UM>U{Aaf> z@ZY<?aMo2>tEJ0=ef>&W>o(=C`5wF7a>dN<Kfh939q#{?x-ji+kYi%NGwBEYM(1r$ zt^Dj?wldOo`Y*e;myJJvk9v~FZN~a#*#x_p+scX!LTvV5KDOrl`L~XLr;1P6XzY4p z*#vuylQoewe%rSA_my~rw)a_FSUI`BWYs@IzpLw?PBHe~@4N4}%KS7Pp7%EvhfZsY zom!D`sPX#KlP&oz+1>5cC4Uk(wyJ%pzP9}My-jwnjr)sVoo)Ok`u}_NvE|3_ZL5p3 zDL-{i=}*PH>|fvJzq@>-^4jke8}~b(KK|^Ob?%XWcKf#^W(T~>Sy?68uIs4%%sA}x zv6|e|#`CvK%H8k9_t!u#eBOzfoC_Pz>wkEC?Bq2~wz;!YGq03(-v7Bby!`zcr`~zN z8JX8UL@a-HH~0SCtzQjJXKZq57UuBPSj_x*BQ+xGz&)m=qH_v<hs<AA_hPzck>8e? zi(X4dr@dS@?WSj|`kMPvSMHt{fA#ce9qXa%uJ1P<dG*^eL^b?Z=HAlhE>6N`e?+fD zdv|Rqh;-<#)0o8RyJ7KFivtVu<<3pDKHYco&D_V=me*9h`ukz}gK6EHO7nk9XkFBu zR#LEhkI+MD>)myxTIM1xf@`1tUXq-D?)v?o*U}Al*Y`<X->Sd&FiV+<)Pvq_TW0)= zo3@aXe^1nk-|^e@ZkW$sEPwo_@T?D4S2eipi(0`yP3+|F`hJto@fS6`YxPcE`uE$# zK3h9L_|2s+a<4z{*q1p??wv^Vg@b(SLw-NAc`Djcf2;6+(W}W5zqLx_+>{I1YZrI= z0Q=^y{<bP7M(r(0jV_>;<O4QENK&S(DVeDfAa#)Q+3jm*x39Z>@s-@WE1$PNdvT)q zk$z9yhuVo&Js&e)^Hno(mAzA+ccDd+`)}1R=KXfDf*qP$6yr88<}Z73y8Vr&U;p=; z7k_;RC$Wd`9p`&*DlOlA#9272<lN-z;&rU{J*Tf8{O!75-&p+T)zU>rRVJOYIk(cB z{Z{yseZ^aS*($fDgdUi5{^5jmw))=d>!L(HzMGbsacJ)OA0{tzU!VU0DhLZAK9%|J zdw*T_a?L04*5_7hW;yHMpQtSCF~Otyk?sCpHo3LzaXXdWef_&^O&-s3=l=5R`9ty7 zB_6Mrg#_j0Nb(rwKA$JqT2->Hw4#-Bo@CwDUjClU(3kf$?}5sdOaFZ$6{%6#7&L~k ztM|-|Ug2oGhP(3dQ!~~N`MjTAtax>i`(gRHzxOUFZIusQ;MAS;y5jnV>i-o^!g^BA zuKu4EEq+3MGoSId{pmZtl$@WFvfT6J4@G^ktSfImd|wbhJLhZm?23#-3(cQowwwRi zR6lpl>Qg%}zCZPpU-ZS>^=tJzIA3R!M!jMEyisYELc{HOT=6UFZ(a1`-F-@yE63v7 zvzpvLr>#CL)^Qd-_vZc8O<S*h|8+|(vg*sPCtY9de{A!}mDdO`@OpOgA-mO=mnZJD z9O9_5f63iCt0h})&!g$bi$a$Mec8RGcn_z6fg@Yk+r0<n=EiAnY-leiUUyI8N@ne6 zUFOI$yNhq$h?#kS?bbY|k1Xl}vkts<Bv=m-(e%9(pfL3y=lh!2C1w1gH+H?A++XtQ zZ?)~Iu7z!Xmw$CMm3(sb{?EWwYlUMHty<N1cG*O4kDXKT!=Z`Akhl89Rwv$C%^Jp^ zvC~suf4kPX{&z>-&s)>P|J9h=#%jK@J^9_!bocX<*@5@-oW$#9O;|l=&5UhQ;p&^; zC09Q?y*oP3>2UJgU0)yNY_(YWqiK0|#v$(ipI6^be&{S;=5%J4vAeHd&%?t~j_;bP z_x^gb{05V|TS>v{>d!y;Ur&0-`s>B-4+kYn`AT0s7M!=^T-n7>4SF(Z6Q3z&p7OQa z_2$fzm~U|bvnR3|F$#yhy?apZ>UP5wih2`F-pgczD*Md32|D~#sO+`YIjm|DzLv-L z>d3vH+YZmlUuS+lL4NJu=l_^=W71+>WO8e^>|Y+7amai7^A~?6ztug|x9xw#f4jnY z@qd@M>#y7Y{L`BNj|1<{imac#dvm$<)@8xR<)7Vo9DjX}VSMzq>2I=~_{?lVHD3wc z|F_Fyx;w|W9g6~|sg;(y&sD$3cUS)N%dO}CWPN_GQ<^<*X_foio%Y80R&8oNe-Es; z3$Fd-{-a`UMN2SuTh)^Sl~u}rr;1+*y!%<S$ME}-O55pa-_CaaZe0H5<n>p*59Kd? z3YngEN9_Kb*V|b_mrwt?TVGUB-G9&X@cGNvI_td4nY{L2t}wqwr?lx|wj)Aw95S5R zWVKGaQl1VQyHqEvdeCw>@5J@8{2tNshLeteI{QAqCUD7WIn9p3V@Gx^4bC{!|F|f$ zcE8H1%fiYXnODB_|9SPX;z!au#qhM%&s(d-ie@Jj2bb(C-~DNhj_;dY=?w=B&7Wpp zzOVW_?C$l2^VOfZ#om7)&h_=g>(*(1=e?f0nA_h!R-*Ohb33_}MeDxaoLZXUq@a;| zSMbU#`=(zNt`6sGUR*EV&!%*1)`FJn>=jp5_?;B!Skb;Iy8Y>ErmP$1r9V&D)o#7@ zMV<edzvX3XE?WA>b?<3BcXpG>t6jG5@3vId*?tRKXqLnKYRW9X-WLz1aelpVv*+f) zxt~HZ1hp>itqjZPnfvy;uA{8H;);cZvD4GO_v`;Tc<yWJp_q%His(d3a7r%~s``M1 ztU-cv3jQUmFB9=dzf$(<iSk^lUkUAeYhPV(43#-mYW<|hbM}9}SKIBIt6r~GvNgUh z|Lb{1?#F`uKKnDf6m~xqSa0{wuqbhRWt*mo*+cgB&|;1I>T6@<FEphx>i*d0vFw9o zkoWWpEmFU&x76f(X=un;w({5SH|M*q6#D#N=oY-b<LX}5YwO(g|Eex1W^2=*WdF#a zeV^ps=XS5ZoVosMtt!7(%>9Djzt8_=joNW$(Wcl-t2%dDCEVY{yI7<90!wk+vpYh$ ze{ZF&j-PFN*g$Az_R;r@raP3sU10g#_cJ4-W+5l*zj`LVHMb6&-gI?)>Bl&^xzQ`C z)80sKNp#YG#{aS9UcU8h&+X4%U-x|&uM}=_>e7;T-`dn>JfBxry)SGX|Nk?!wtQ=6 z&e2Z48TZ^}o#V>BP7zT0UMa`Q?@W36W@Hf(-e7H^xZYuv$noj3|Id{V=|5f@$h}Se z#fz}(++E#o%kRHk)$2I-mb$&xfx~m}?An+4!}3}V*Q;F{S$};>fBk^f+F97=!$H^O zyF>O*3pV91JM}03aT?cL+q{(vKFlxZ+&a5C>aV-QYIC-&kG3~VTgSO7t+YMvg)n<j zh-9^O&4=8Hw|aQwXMK3EHScag-ABouS+Oe=_1{HK*!MeYpVZXVi&u$<*IwVNYM*n$ z?e5{ZQ6=?X9{rqU{w(|Sw-2t*+QW)p>~=q8*Q0dVN!aH=1E<u6#WNKqEAM)?(%{&i zwrlA-Otz-i%x~?jXHD%{d+P*WUTOBf^RjoRiHFRM`)Txk>)z<wZF;sh7yr1K{_T6# z&08Pd_fK2C%jEI4AJ-(i)30~hosD_2{mrhFkh~YQj@>#5qH`QFn9SL!P&^Bq5MbQh zEd1#1w(S8~MkjVXxN)Yu^s!Fwe#JlLTl;Gl2bA0A$5!MY`<^j%X=1qRzh&R&1=m!i z?JH&6G<P8<cyx04k$si-o=?B?aI^fQrT(7(&xf;>{7cBcvGeS_v-irkO>^G!>xcX6 z1zqmz%U|D8JNnmupJ}|>gQWLm#|-`U*7`rWz#{Av_*(6C($5glZO6OkXfEWmjJ$N& zw)n~`lkh#!Jva8>b!M%4{`y7`Y=o&+qVBH970>Na_nYs&zat$l@^Y2?A@+thk0)O9 zTc>jTf2xql-s9PlyDmL(nVxnxvp(ZcOJyDJjCY&A%(-dqe)jdvYP)T6Wm3LkdKQfr zT1>1IrZrL4mW32TF2WkGAGBo3|GN5`^Yx?qoBPXOer0^v-KSr_!Xe*XW7D@COP?ke zZT)XIaetw0u#@njxv7!={~o{3WcB#mhlQNUyLViDc&EPW&i1FQrC)r1esW*Y|Np(@ zx`4!g=gOk)*ZkeHFeSt3^5mGRr+p_}U&jBFnV^}oJ!|{+bJt?0r%pGWZ=`B+(BbNu zcNga7Zo2yK&5tH-CB^#B-VWkC-&P&4+OJ~rXUZ(Uz2-NRryK86j^1gv;&T3WKHnR* z9S>K2|GVp}=Iig5)=w@DwfsK+yVvT4ak~E$YZyEhTlt;ct6j9hy=M21<=^k<ca>~) zUD5pWH?!>BS5=L*>61@L8E2lkcaXD1E#=b7jbSWAw5kXwS#g0WRdz<g2VccKnjPD- zAWfKu-F^K#HREUh(~I=jU%XCRDm62xy!?u>nu(%TppWdee9l#V>p!GhZd@H5KJT-? z;CD#r>UhM`_rlRroI7`OJ@%Do=1je@JND9nrI~w`+SSfP2QB%=A8oH6%XP+B(<Je^ z<(AwRmv-n`t`hmlk+jQx*<?<~orz8U^-o*>$IOpAz4Cef*}$)VmDm@yR6p>4-MmU( z(d6Mr>AP9w*X+wnuBp4eGST}pw=msvzkOil^}Bz-rL|5C(}~E^IaSK63pv#i7JWSM zg`cVO=Y!K59^Y%^G>zsFTgaJOp<p9LjlA3usvyfGd?xBM*OL0ulbd6{39?&#Is4*{ zP`!B~r<#dkkaX$X=()39|8FaG5>DD{I`Q}04_@u}1peui>wCQa+TwrN?u&cvi|A&X zU*);!EAG$yyEkgvwv>z}&Lo3Io{6`>ZHgV|H=RztdpGO8#xL8>T@O^OQ<5^8ZWbL* zo;&OAePv;_1o!CurYkr<|1nAw-=D*CV(!}uobA>nPj5!<T2(l0Q*5X0)9Ln2tIB78 zwN8!^-@eZB`+VOS3=@Q_p08f<Wa{Ng^&MZb_CK1^!Ts**tIhKdl}ssl$Emk>TlD=S zVR1!Q-bXiC-BVg{<jXto*rF?c&&F)qnO6Qg4z$eDeXnSu7|cJVRGISrsl!o0kJN-F zO{0Hhz7F%(aJ;xI>KgU2Iv{!*`_|O<Det+n=F7ByJ3IB;>L(L8T~>r1UidLTO8kO+ zQG@g8V^es1e`JL^Jm=l?Z&_*atoL^w2R0}F)7;g6g~PW)P2~6e)v>e1w_W(Na(3~R zXZQby?4EzaIzHQ+eX(EF@%qiC4=%k4*k8<6we`#NNv$tq^-o-4mQ@ySxBs^;e!Krx zKHrLe*JQR@=^pg@vtoD0UgyXbwUU_u3oPf0wu-&fp44=)U-eBJWQh9GZjb-l?VDFs zcb8@ya=yOn>eD}up0wNf|Ne5Mx_aO27{APSvGW1~j+`s|7JKi4wSLU*1@pZ1zv=Qt zbo@1Qd6#)_rD^__d)~h{Z~hXo{fiy{ZXKby$F&R&o_Wr}Cj3`JW!Icdve(x}Z;$1c zu&pY&sn@og3PI1n6vz@JIs-I+_VM$dS>G1MKa0NbHY;o)=d<V+x9wvDJ{o$vKY#Us zSvGLGQ-)K>q8ZjQH+AFdpH8*;pSicF#FKgYwDsI868BF^6jzsjdBwcCRcTJymf-jI zUvt{tW=WZ`pl9#xT=Dem3s3*EXh&@2{QO7C;I5U)!>^2%R=<CANzU4^J5oU-_dI{r z=Wq2*{?q=*T=4Gx8?{+;+xg9w+Qn%vZ=JDz)sc72k=c3unQLdo#qKXXq?CDJvz@K+ zef|7}U)HbUv%PU~ZMWb3&+D%2w~e=7%b%ap<m8jkad+(jec3yj=ZkKI*j|5EJLPK4 zL?+=gvp9S;R!@Go6H<#%Hbv(k(ip<3HiMyAuK)LzpYLyUt$u8&vHC(wxSigmuaA}6 z)z;MMg#Ui;oZ)11@8mbzjph5U<>^)O&)ci&{(t5BOFzv2?s~n`mYGNEsmFT$4=Y~U zR<~(d$X@FDxN}w5&4p>rdw(URp1jbq`*!N;^Qse_h2^SGudh1~8rpw1fAO(WPG64l zZ)zTi@5EhSeQoiN-sb+VX1mSRrIOok$_q?*Gxv_Aox~KrJ$nAGs_O$+c(3o?R2u(# zQu)c})Bm00U-fDqpXH%Fethp|$^WX}acyPhG`I4i+gn>>KhJnR^Lf<P)8|SuPx-#A z7TeZ*#4vHo0TyG?g`9;Amqe*icxvc^Le8i1`uf|;f2MFv3ck3;NqAoLgX_MN*K$8R z8)aq_>S-ByG5l)rDf|0s`B(KaA6(iJw^39f-sH^c|GL{(oSHUemC~yhyLINuL0WN> ze%FI@>e;1c%G_TLZg;KLd3LEy&-S9SJMX&>Sx4Vj_tpM!+kR{A)TLtIE5DxXn)JEv z&4aM*&nEK!Jo)|auD6=6cPDZE^*vZ0xg9hJcx?X~dymW2&tELMd^&Azwi)ZyKX&V{ z<!_9eZ|xoRH$ru$Ku<~T*6Js(`*R<DpWt!fKv{l3``rZDxPt1}Id@AVp9J)~thtuU z_p0UIwex#l&C&6FkyRhztd#A$+;Ag{+KjJ4vnKd0KNdxxdM0je&2uG}kHOLRx$+tw zkqJ$fHmkv7c(3d<i!u()^4z&9Nb^ki;rFH59KIXgCtoV+2$%mKVRYv~tDU9Q_I2Lw zrROJaFF60)w%WVzU-12<kl`rX{}rx_b$nmF3j;S#7Czat%;1hlhkKU3-lx}Xo!82b zvY5?y(6%Y>rOd2^oVci%C3?bKO3~lXUS$1x>fWWSiIDNW9|4owj$4_&&-0JDp73*5 zgVeXrQGJzPs<yAo6>=`}j`0uGm~n(<O2pQ8XE&QHVqVC(`}Yy4841S(W(hoRU1Cjz zp*n>LUZBLr(sU`a_Vd=N#b3?Ozu&9B-1*k=#{miwA$5%@&pNKHaS~3e4_nfgtR!Ag z|J!37-)grECzE9B|M%W4WZL_=G_X@M{>^ORU**r<@80fZdFi~c*2%}y_We{{aE$r8 z4vYPYE@%6`(^plMxwbs`J?XRG+nI~6rMu`|`u}0K(%<ryud$L<soV1Q8Qk`3YkB7N z{Q}E+f2%#&^SHd_4zK%bSF$!b_S|-R6$Ql$2F>eaqZeGa<K5o~?FN3H*R}QRkNNR; z<u~&^nNgbFH)~Etea8`XZKkY-cT=KaYXJ)9mu4J-bUAO{e;FYgd{=+o0hY~TPQpR8 zN@x11(dIs)F=5pKmd`)7@7KHZv|9AQ`@K5TgR{!RrbU?-yj-F@*J{fu=f1mKlm4IM z&pNwoffVlsy?<M|d}sWRofze=(PExG^RB&n?`t>xh<BDpm#07btsANj&e;D&{<>$2 z^L~C+fBJC!<h_!&!KIPb{`(B~Q=J;)qGC2_{C#R&^yOQ)>#Q%|=ABdfaDYYrO^*7v zbJuU3tzMR?BlGNH!^_rR8a^3KGq>OLoOr$hoYXe&OTIfhJ=3Lqll|lpeqV$1l1poU z{wkeZddqYFwwtf6tJQXYZQmcXV&Y~lUHfC*@4l~i_wZbX{O8#E_n)`;`|nBr`!2#x zE!>o^L%CJ)nELsM7vbMMuO;$6&M$cV>ex%^IKjtexi7`?6PhYD7IJR8V9ZIC^g72u zi&^;0DK@+K6@~c`;_|yU`(!k_^Y-_~G`!KBk`*&QeP`tA3oTcro2{1m*SRct7{0qS z`Sgp{!!2qm<=4yPYk!B#m#g2NBKT9g{K<=NnRaVq_NO2GD{Na-l6m;ih30+1wX-%| z|MB})`s=+*8E1m3=;~%$tG!`Qtiv8m=i6!L&)6MRFT5+^koc)xsZJS(KJNYW^|#pT z3oUljQ(nI-dnrB3;Cr`H>|c+@r-A)Dj;(#CyJ)|0nP0)Nxp9AgME{sDC2Oi|l%=A% z>UFJKzsv94y?B4GW@N-H-&r0BO*cV{CCVn~P@_YwHP2xcvvALgRDQ7+ck{i(Hom{| zuF7$m+=~}|UGp<CoB|!JmK4vcxfcIv-7@u^DP3O|n>q<E;yn8AyWnOn(??S$B}y$` zSG@ZC<$bnlMhB&qt=LnvF8TWY`uxm^dbJ7X7kyJx-zCE1CEv#B`{UEX7}?r_j}@z@ z&by@^zuK%#|J(Xq>z(cWeS8b6-xLMyYFB&n!OOku{N($;lGh&$Pg(uFeiFa$k7v^x zp6O~%;&eZGa+;sTot4+pca#K7eUUDEvgUF8!3mo~SC>x-{@h-XWVKB{jO|L!hU=T& zw=UoL<<8oR_w5aBbJqLix{1AL&R@%asAio{hO=v4C!3mtv6HaYr?ZLgsnCoGc*e9; za7Kbz<-dgWcJY$`q_3U5f4r=4_2Hct_iwblc!A|}4|G_;G-daa^=?mJUC5f)-OlN| z;r%T;a5MR?vCP3U_a2E%zxONaywdw;Ut?z7EI+@fNVuu+OYhHH?{xVrKBRarmwS8V zk-XQuuaM!i7e^mn@7KSeEgvmDQ(toG>RDG8pHH42a&qP+Ta$x7B#(Q%?Ub|JwPm4p z;xhZ~>{nlN&X4=Q=Sk$#T}yZCoek>`yIG`C7{dFza%;`puhox1W9sXl_Uvk(t@iuN z9j4b;rcIQ+^Xi(-FKdHW&EH-nFu7!XKXHB8{=@AJGKCAA@Av5a7MM`+JvIG*3X|{| zD-PccpG{_PQ=@6q;k;lAlkk~IQFoqSRo7m_-R~arIPAOFMeerAoW2s@f)>ivtTkA4 z;j8cFF9qu5N9<bEjuf6;RI*iTjXCT4pVg_FJulyc9slfgZ({awu@_tYzw6BUzC-nW z++*K|f1a(J`lM%J!@rH&|GfI1bJC!F?(NDCQQPw@?0?m6^<VYG=cUZ7fCtmh$x2w} z9C-6$@<ch=@9SSQGC!2r{*?7<QAXpw|5tzQO*(eBC~(`m-1&1q1l}><9Ke5mV_p87 zxYH}k-+y%BNsHK|wIJ<#g(%1TXaT9;XAkeR`g1@+FMW=+VWO$pmSd~7=DxTz+4dWc za_473$-A~U53p>mbP_iD#kHY=3gZzcLK-je_!zi_+XpS!89(KZ*^jw(=`xS6L^msm z%gx?*vPDfNTKdAwziYeO%h#nwt(S?tbRe~ION-i#^4HJn!<SrB=33;J(Zp9LF@1IO zswp~J^EX~t|8DXcX1+4NeetU8bu*_(e~nz`yk+;LFDldHb}r80J{v4K%it^X{;)Ot zuVx+7yJ~5&FMxS|{Hu>U{Pp!dxo@%CGRyhCt<detmf0BxO6IGb>HfoGe2ztEMgX&L z-UN^CGVwEW)IJ<#+24}AKcDl}qQtnrdk!iYItGEd>E+wiCq8wRHO_Ebc<jtpzS<33 z%AHn)mM;?A6P#Z3u{JxtzO2h0P@TUpdVAjPe^*~zTzvW=-%TMZ)FVrFJ7lt}N%VtC z`%igKn4V{!JA0}2?dH(Z_}BT-{%R%%*DSu7uzp{J<j>hJeH-iE|4(V>TDbasc#$qB zG!O6pZMwjXc@cZ$oXR=D`FuR_A^)C#TafkrM0ntn<g0;KWq)Obym9@d{^i{DU1uM9 zFWek^X?y>(R}T!nAGVu&!g#5X$-=*fS!Zp3GJk@w@T`Ku+Ufsl*90%WR<bJU>4*8} zb1NP9{w;OrKc{=;Qv4#Bwk5Om&s@8py;=AX7t7M*yi?OHe@8?;Pm7c)jr|eO9C2*+ zh35ad{d<;!26$J@jozB|=W+6?7x90$cr>T|`0{$$iPtrY-23!$Gi0v_ot9erYtAM0 z_|@i7_Wyso7k^#9>e~A|Df8x@OMc7cV^FPPqBz%o)>bM^tvl=#*62RK(wx!NzFs<7 z;OgbMs<8p*mrm|0c=h0~?5d#5^GWv(En2Y4{@La^&nGa;M427iW$<tA`tB?57QT3G zz<;91^Z38hl3G3HuD7iBIIjI|yn;8ndEx(DXqU$_@Oze(i}o?d2#jjn8`;ZBr#4*v zwbt?K%bD_}tcTZ^y*@TAa@yZ0-mh67`6qVY^0&UV^80&U`8@)8k9N=docU+=HAngK z*lBBTN2`Z@k<UFGt0t0hF8zOtSj5(*6Ot-M2l><(j;xBkt>VpJ!c)J!Z{J0$2?uKA z_-<TZsI@a_sZ9GPuBKaG$^%xLu{k?3ZZz3!CY(^1vGqvT*ZQBzE2_4;?l-r-9<+a2 z@O!?#zi+<ZJN(<b`^vY*8~3D5zx_X+{`FYHr?v5+yX6v{#O!2eYEL&7+xg>{&X0W_ z;{4m=zDpjr`1;MZbN7+$v%b8{O;2dLDY}sJW%0H(EL13rPwjMwWL1;6_V(U_th+PT zXSCisDd)K50*mo}PG5tEoGY_h)Q;#yi%j6#rKg|7(K_?(?29|C9yz>b`dyeWlJ($o ztDyXyM<UbXUI<6eXr1}u^;O2X)!VNZ`4wN^S7i}yc`cG}qw|}qn;*|$I@>2SYr=;o z|IIIGO?V6*W%hertNuI2_}{kf&89Ct9bs1A2hLAP@yT<Y=l-g2DSF88R$lMI9@TIA z&C|Y}4g6fCXC2{vCXq?lr=Tgc8d9vYid(4e-k2V=n_2kGDh}Tb&vRz5GTvtC>gsw@ zVDY46nL^*OZK2cdxzz2CkBk(3of==Y%Z9>Ls9wPfbeM(9-W6Zyaq68Zy>o+Y<m3n^ z;eR*8u2?efjoPm|<IUqked;EPcGqs%eo8%eWYye~CBfWnZh95}E1d(De?8m(;{o6E zw9Fjw@|f;yqZ6xDS2ImZb_3Uf->xfyR(x#!{C8Jnm%iTe3aj~1mseIc+jzG6{@JIx z;&HXB-TS-OOP&?_?X@)6d4c8gK8xRa>&^b=-miXq3%row$Gem@*W~|81e{j9c2H<) z(UR2UqOI|&uMH+e%%7_HH%M?s!Z*JRr)75-u0_6M@v%6xtMv7jtgEXooPTw7we$Y# z>ta`n$JYdgt`5^JukPEjuvgmr-NOW%Gw0uKzrQZ+?5t1?ZnJL6dP`6JK|{kmS^NC0 zR@d(f%iXg6MaBEeU8*Jrdw!PrI;?dU$=KY>dcpd-Q-)K`{Dp4Jdw#tOf1S|uFL!fk z`s_C=CeLarD_$42_PpxNUAtqyRF=vAKlK04t8X((8xA;z%KZA{*#EZmd8*{B1W;me z(z^Ar-SX?N2AR;+b7~g;<J|jsYhH2A`$=))sjv5a`#86D$6x&@xq#d3dq3Tppqbbt zlXmyzMD?GkQzNnrG-6Bkho|igTU)$Yr+1g0X(R8-9o8q$&0KYWWwV}>@FZK=W6A=q z3F#Jx&IPp0RpeBYS-8QVM(X<N_4}gooQ2Ey-EU+j)jfauv~}v9=kuyLd>;h2fdX&B zM<(xSIu{SMa(}%V9-n!6neVNAwY#;#*R6SVb@l5j!TzC-kM))w;#5!hV|Npzfs9dP zhl<7$PM;e)cisQTv+6A~Yt+7TyJncr+}vYoa?s{+`+cTYKUU~}xqZ$p!>MN0GrK+e zx11=t@aUo3%%tBLxmVse@m3nvyj>z`y{I|*?(B5e*=haze|IloD|g}h^`ane+Oe{Y z+kfoQaTb=k^YCid{kMO8B(9kKFUyRXF7x(r=W7lf>;8GcE2`6@=6^recvJ7?<cT}2 zem!{7EOlni=l$A2#|`cNP8E+%aNfZ?r@YDg{I{~~_<q~$TfZeI-~af!FZ0?-zGF{5 zvlo{>aa>us&sII>zRpS>AA{8@CI|OzPEuoWVp0=%xVYc$(m98Q`1-$BjbsjXt=ZF} zmUDZXZ~nfYX(y7NpYM~kezZ%oMeWE@*K|<ZtI<UG$G_k2P4n(p)c$_EJutlN*UROr z)6dVd`t@S*;%`ft$!k_PJmXjrop8v{GC0R3DQw}qitGCG&&FrS`)4#o_WwNg<KcRd ztWVahr?x-5{rK#h>t-h}Exvv{%%%RK!TNvV4{txPHa&akh2O@rQ!UMl&rdCz|KxH{ z>qC8~x6X5Zy=lC$>P`4M{#Rdaf7X?px64vJWQTly^~3tQ(rTSgPb+@*$(UMe{@c0s zTF|tGoS&zOyqx*7ZtwOj8ee{TY`bcEXC<hkRcZUX=FF@!yB~jQ=lb%n{92>*vipz$ z_#cOi7QL;!dTc?J?ZeAW@0IPV-&fk)ytGz4eRclpoSloFH@HN*-Pk{S>)fmM_K$wA zQQ8w;_GpQf!9kn$3oR|{w3-Drh|RF8-KFL`Yl=u<C8zI?ce~%0Jnl7DOLfd}3aa68 z15L<lI5&cd6k&D0Dfi`n|9`HbuI|45ZrSXpty!UM+RrbN*-0zoT#}t|=-uz=-QdNj zvwpiyoc2d1K;fKzUU|BwyZoDwx6U#~tvA)>9$v{boolrv>d*ao|Bi24u&nOE^*QIe zzkGe=aOQZzKFxnSoMo+kdMtl+y=YaS?DW1>a=$-w`c7cmAF#qbPM;_H-t$R0ckk+1 zKl^Nvz98JYp0mEL`2D99fpdRoUu||=`Li~z_S@vIdspmQ?<~*v@kIx7vi)z5*;=PB zw9I{Nq^QI_O*Hf2rUtv%z$N*0oEqyDwk-zD(Htv{%_>iucFya7&9>!#gy$H%S?c6l zwL9S6-gOrqvRj#alG?6kbNAkcw!7EAy)$>6^=VzaypC>=V~f$e`q0uBn~XPKdE2z6 z<(~h>Dv9R*JfB~Eo_ejkbiWs0?Z*l3>|xuUuRFGD+ol)cQjMHx@hxgoj=ubKrbyQz z!|CHkp;-az)?3X6ua@XgFi1Ye<2%DZF>&#~zrTg&OxPgDEJ)nADkx7Onjwu}1WvRZ zXxY2eXXAVS{p?>Z|61_xj@%W#e1k8(FC+C%PJSEUw{6PnX{$oZUQA$?S+#M$Gka*^ ziHS|S?yt3O`t|Sng0Nhk7wc^@-5moW{WQ&wFRU#R(K0i0y`VN{p^}K)^5bjuZimiL zXjA)M@l=0P+;Pr!>#xTS$jn^y<<kwH6(?WyI<CDZF@e+O<}~q;dHzNZRd?pK^W6xy zTD2>9D_>cQ-SVY3&saY`oX`C0X@5h}Cf|-OWs!tQb9e1&vE7z_FEoBFSH{uzjJY=j zd0H*s%zk`9F;sR{^$h3Z|Fr*Y=&Sg9=4XucG6j)8LMv_WoLu{QcG^+v+GAh!*B)SD zcFu4*7RxU-=N(gvn#g>Cg`6+zq9f%&rHO+Ui{1Y}#a~}uc6Ss`oRLtxGiH`W;i6Yp zR!)Av!vl^1(!*NAyU~ZoN5flxUa!L%CjPx)D;DaDy1n`L{+8d_U6&VoS#CV%WzX_P z@WuBv{{4HO_FLR!1&ukVtE(m&e|vLiUZj_?!ND~%F0fRe>x~q+p$bYAsR|~I{A^$+ zy9#r#Ful67b930bn3-R$y}r77`NrhqYPS5sWX=aoS;x@Gx%Bnf%UaVM6g0NVMlRsr zuidqyP<YM<r};8(_xCSOV%&J!NYLPW(Sa{78aYk*3SKN$lncGTzUKbvOME^C?S2_f zGh=GyqUN!3_-fe2Iticp?3<nsE;t^t*!}$y{Ppea>t=IKPF7#-H`i+0+2bx?Ins%h zq6!9zTlYOp{Wkv^``5d(9A@S{KXf_vRN2&*LPB*vuE{#iwZEbLSYqW>%P;dEv?%jy z-DiEp>1=dCjB&mHE2E7L>+9t#PaJ+c?Vikwiz`j%ZnH6uRoCo3z>@5k;k4@>$F->& zL1{!@b|I%^b#EkiV~0Z%Q}VH%i{AQsr#yHu>9AGlE0xdAWF`%ddPXMUOaFT=rM4#D z*8r^wpZ2n-ZswHLf3;HcW*k`6>$p|w)zx3R6Pty<-9Nt2^X}cOLa#P8mnkoGA3nUu za>n+J(L#s#H9ay-NlaezcB;DT`s?2RzF`fM@EJ?NSpsjjeJW>pB%)xlP@?BTi-o?w z<%@l3XQgzbxB09NUq9{VbKlu!nV+AXy|pp9y~b`ns3BgobIRPgy4!EB)e2qJQnxB> z?J8$JOP6-}x*b{9)~tNoXRY_8T#AW9VL~QT?C!FwpPru1jV^0u<2A{;qH+6KvJz?` zgD7tBvl_2(2+Wuub^Vi-_Cn5YbKZ2_Xa04515@q~?V^IF!-}Pu)0Q3#-?6p-_`Gyu z@1tTIY)duY|1^D3Isa4bMBPm>mxRrquJ|g+qPFDIHGx?ZykeiNn*feC>xG<8|0^dP z5)jjmThq!d{_3>;{wvqkM(5rv2@9K+b$y*~u+E(giOyHoMu+<?zdUW{Oi)M7W2wXL zvbS3j53}8tD?DR({KZN2`CD@B)SN)oBkB2nLwv&lmfyaofA@e!A`Y!KXDfZ#9Je+` z-qPZr&Byy&=T>D4tmORmGW^a=w{u!oK7?~EW(qkqao)R`i=Tbv@agE9n!@fRJc&hz z|FHe97s|Xc76vcZR@lg$oo5^UtlTvZREXIv<b3*l@&{1s^xPcFS@!k&YW8UudYBo6 ztc?ool{OFS7Sk;`#HoJ6Ksi`p!}12%_p4{;?ectkd%HhpZeZZVStgm2uH4yM{XOjV zw%p0Hnh#!NjoOy8a?hSUFJzP71n#XW-TUQ|x8XOv_`6)(+*`}uM*aQ!{l3-DCzDTK ze|CcxR1lHc?wumd$RvE~Y~Zw4ZXCWFrdMCS?^r4myukG|^EBbzb1u#KCpR~=UH|*m z@cl{Wwxw1FJm>k6^)~JGhCXM$f{d#7GIPsHe(o#Y|37TS{W^WV2`g?UZOGcTXZaO< zwuPKa{pQv2@A?1lw`u-8n`kk!oErvni_ckZJ2Q3VWPw=$HAQ72iua4p+h$!`6S*v| zy=eP8R&KEuH`C`|-IRLzR8GFTZ0VFU<~wH}dh+JY8>47;e!Y06vOViLd^O_Bl`h_$ zk<jHk+f3DJ&ygLoOtZ6IU0J#9?DRh2w>LIA@Bj0u``VgF;a_{JzP`Hf{(jwW-$n-q z^|>XJj`hpW@AFRgCB2m6PzX54%Hgx(fw)5FTj5y~SmqrKsGnGJp4+as{<8eG;|<=M zOOMyDbl)7m@6ov*C%YQ-q@GRPSzW!o_|>j2Dg4{{Rz1?V?(kA*M#2P6UybYGy1$;C zF%RFKcQ@+xw%qP}mThv&Iw}t|FdBZ**&hokv7@cKCUE+C^q=ptJYD$s*vUVB)5{(- zvcFojdfg?}=`l*%Z_m{`og^!%m2mub*M$}y+nU+a@9r#4UmLOU(6&f_>$fJhpH3)m zI~zVtIQQNjOOdt>-~G2t;B*o`_3285899k1f>U6|fx8}V4HsHcz9{wA=4VdKtGl!O z{&tq~(wvy<OT&LZJrTL@_4VNPQ)i|zEq*TY>fX%O-T&rIR^{EH6K$)1M(_J~-MLJ{ zXBY)$1st?r5nuOnY1Q|4xwD<7YK4BemA(Gt)1sSZ>C1dwGMqkk-VAK<$#A+^$Mosb zCzHZQE})!tFyUjp%CxtuzSaD4WS3ncowvhLH)_j-!w2iPF1vg)<x<p}ig>|U6Fk-D z?b>Sh<3aN*<Mh5<{vE$wt-iW8+Whu2?e5MtUg>46+~Qfs`(!z7=Ur%NxgpU)YOVp* z>6#)628yjaL{qYygoCOt)IVh{J>TQx`}@Lr&`g!VnZ;7SgR7@SeeJT`t+{*8mxD}u z_iyn?mwSHYg<sxP%PW!Z3@_;#9BdGt74U9->=WKu`FeFvr-tW*8WhjUcU`xl_d?5~ z$=erm%)HRD>9<Pl|G(dj{z;qVXzX@9@*}1HxG-0l!TwAR6(vaIyF594e+DS`tlRx= zQ*Ltd@xIW#RbO*vuh&sCI%sD9=Y#X1el-)tL@PEWa(cyFEF3-_j9S4;6O<bD>-knJ z2w0d@CdIT;=tpvNfP78#lGEo;d0kb$ly$F!$H%~-MQzDdQ_a6eW6Ex(-r7;PcrAb4 z?QLs8G5vbZOcTk4oJW_Zx(gaD<V-F8oql%K(!$5bR&Lm^AxBK$dGLAb_cnLS@7EUg zEwX0%wr@R$?*lhU#{Ku#^T}Fe+}%~`*?eVPY;^E4pNWSj-t=s1QB$cEok3QWaLJ|N zK#Peb$FxRJ^arRhy_A}fV8G$4F<E<}9DnS-nw`7K-e&zyS{1&2-SoJsliw<hQ=OcI zyZpN@wD|1Ydh|69Tk|Z7!bNFkW=st1mba<cFv~1=R$zA8#+Ry)Sovagc~i_;cKI3w z;a`(|j2$@_yY&YB{q=S7Of}tOLbE1_9Y3H%&SDJ(Pevx;Nh~RlmXI6wlH!D>MpYBV z#p}b1y3Oy$*yP^Y@<eT;gl*-gl&dR))m4j^|6T&BpeD$=o>=x`OXTLXmvwKRCe^AL zBtAJYvFdTJxlxvV-uCF?XJ-QQ^77o)&OW+qdV}nv3bjhuT7dW3PQsU7`<$*aeSEC< z@|l^&!f|b!QZFtnbUyU>a;CyU&X*-pYgq9&FtE!C2`U&U3Ys1RWh#y-;*BNzJ_hGn z)TT_oJ?(&<RoR;rS67Ft8yNi(2!4{z^+YR4*<|65D{nQN)JztBv2*3O|Fa>k_UqM4 z)eC(6t$x4RT>Ag-_uD4YmqS7rt?z}msD)g)EnIiM(ZM14c;D62`uk<Xdk#OG@H2nQ zxw+QIP4(tl3(uNxZu#L`WJSa*hDOedEkD3(N*pT1PP80gdF-FzRJpHJ@Y}Y$yH>H4 zPp4|${u}5nyEOCivZXoyO6JYD(DLZ=MsUWywDWE7a=)v>{x*SD{F{GjGPCoAe13K| zciz;OTC*BtK|!u{Yi(!l{`dQSuRGQ+zy9oOb9dQ*#csTJt6s0Q`h3QC@wc-}_&_Un zGs#=Idn2~t0Lwe@7><Lh*oi3zSc=_R)Iu)I{&k33zlG~Z(9L=E|0-pxUMyT$;}Uhw zH^b@U#v9;r`PKTLe|~;8&A6bz+I;Ye{h4R#De39i-`?E3l|H{VXWmQ{AJpz=Wo4aZ zUB2$j@3NPdmVWyEcQ@PayLnevhx<RDTRtypTaM=EIPLu23oW0@7QG>38o#ki(ILU< zs6~2NCnz%u#3@W>5<bJn;k#mi`Oft7^M3t$y*_x?Z#mnl7hT%xJYE`KDl7tJ<)eK{ zDWKx}^!2sT%U`eGANTX;&y}?SU1{d`kJ%MHIU#cP+!j&K1AX5`7jlZeJf^bm`l3Zj zxi>et-rk-c{`Az;t^fc1KK-;v)h>~(N5w>unXglooC5ZM921LLfg(5wYHe~@#;P`B zvy#a|rh7MXZ*O}!$y+Z_LBQkXJAb>MDZSF>dP~oH96!nFt6?V!X(HU!HNRhy*R^N5 ze*C;$?H->hY*xkY-o|J7MBwf2_xpC&o%y^sE`LQu#ou3Fe|^0k@4WwU=HK7n!&ir` zeI)4=&vJ<C#>ah1CXJ_C9V!@|gm*}S>o*dK37$+WYAKgs>2Nozk)gps34vJ&-+fOs z{JdB7T9;SaOy{X~sny)7uUEsJ?=Og%C<Uqsa=|sh%HLmnW}Ep2FZ1y{$((g{)lzQ# zJps$-6m^}kpZ(oY=k5Ca|1NF6U$@%d?x#z)xc;>^UTK~7nfYn+ZL7;(%)XV$p`r~b zb5r~qKRyj@xX|*cYSSAsX5Sk>sXHV%{j?4)1GfqUb~`L%Q=1_xG)v&O<@DL}n%Q_S zwaeE<X#IY9eSQ3jf?Z0cpmcN_l8!#VjNG0#cirA^Q9o<!qU8(T?R@^~l=k|NySqv! z&oh_c$$EKdsga}p`#qog_QbuHD>lox;IP=O*Xx(1PeX&?hR3z88BFDzjUSj=)C!Ej zsewd7L70WZ=R`|z5@cW1N}&@^4zMIUWjL+MbDMQ8IwE34xBk9}%F4>6n-014N@f1| z@Nns;H6@iC3ptOfCqiOk=S{T>DHj*HZu5;pDrs_O7k}?8dvjyq_4xW&<Fqpuo}HcT zT)*q@x7*I|jis2%IKXM>VBh3~zE2ts8BUcpq2ItENLqWt;ir&-!NQuk>bt@FKRf&t zE;9?C$>a3xcz?!t-}mM7>sIZn{e5h2|73r=$on;)eeXOjDk?HbKPOXZGjGT7v{wwE z=r{+CjyL~RW}N?Y*8G0X?IXNWCKoO&be=kUcJ}Q#VZuLa?Dqcobh_%>&GfH#iqB{6 z|NG7Rr*WmjQ2}ryI33-g{l=({(MkA`c`^$*P30-`K*KlbXD5Rr@RI)m8x}Q*P$%I_ z@AH<HxGr|@zqTfF^P{S^!w)Yk@tk~RYxeaW$KJlF`TzI(>o=Rv`(@-r^4!{0y4o!F zmdfYd3l=yWObGb>X0!i`<wZ|VS^ap>{ItYMcY4@7C*e<@K7BbZU;pB~{r@S~Uxy|p zF4PKLwdM3;w_d5D-FK&nm5C?{&r0~e{D4SV{qMKixB1*z6KQ<6^m^>6Q>Qki?u$^r zxiQ)Oh1?~94c?Gqu52#b=PBllPQs^dcW#m=V<h2JKSLwu)8{%j!7JAs{xCgNH8}WY z&V`mA=j|7}Z^^#yCvBF~k<EWxu6oTfpP7sJWUXFIkFV>@Uh}f%VXOG6`2BT-{o1{Z zY66KbFD?D`=kximU$4h!KRq?|*0$W}Bks?iJXw);cGjxU)zkcJzlNCR+z1F=6>`&5 zZL+iQwKb88`|bZlfF_E%M76gRK0ekVre^bK!(l$|$T=mKJgr`@+5BaF{om~C64qT4 zE?b%$ydy8XF0o1V%=!EE|JS~~y}iB8CvgAy=acWhzyDR3gT+ZvX1BSpSJJyFKTn=L z%i9_hvOX?WZNedzk{R`7J7c!h%AB!%e{=J4-On=(rX(J2JNaheB6DG_q<6c2{``79 zerws=TLC}1IOR^BKhOVhhVi!wn}r+Li?_AQ6nVT@?l;%U>fevY>`Cp50?_o_}x8 zYvTkv_G4+!pD$RkLPNwV*~zS@y|Vn>{{R0J`?IdDn))(!6R4DM`XQZT$NVgA#_z;; zEk6zC^A_u$nQO5B>~2GAYip4s$xK~m?pnN9(CqZy$@+fd%zu)nuY47rHDRUt@m*w$ zQ)}F3Vo{s&{&Q+MxKfzNdMY@f>89pFPSF>~{(rgbzw6(x*N^XQ<n%T;ng?oSb?fhw z_+Ak#@cY&3^=(|KmzU0bbQaX+JZpZRM|8LP<um(y5)K>{k6*LQclN7R@i<Txm^9Pq zN$A$Bt4p4Bly1<>sQdkP``269>sy<ICgrLHJZj?B3wV8PZK{(*-ky)gmMrsWzrYfF zCi~l`$NlzMS678DlowV=V)EeP=AL{je#^mS9Y1Cy_i>6|lP|wh2ue{J9*P&!n0&-^ zqo%z05c{~#;!(#1TXRMR(XD@fKA->V!(slf|9-!J{rmlXe$hJhTW6||wDiwV==yxl zT3_VMq`tE(^?&~Te*f#|^ZCy6J4;_*Yh_Zpwmx27tIPk{=MBaaj@>C1_DFvB>s_PC z%5MrLik69=D-FIUeSLLx_q(I{`~Qk@@!yn`nRG(fC!vY+x#9Oif9~I6<CS_Ncy98E zIUjpw+Sl)Uc4nsV`3Y0LnEu}Ps7pJ@sC>=jS?7N#_uB|%f4BWL^Zazq(;i#i?tZ^- zRrL0}MTZ|trT?3K{f;?k7?89gmVt?5N<L`R=ljo1)}Z{|c!KGvuED`K(=N1dmAqc= zJA0XC@UkO&9~VA8_VUSO|7);9*Y+OI42!}=eijc~T8`ba%=rE7tr4I8{y#-QNB4$h z8{O~9-Dml4cK$xkteZ;(XC-vaPd`6z?eh6`QOj;zeK&3PY-z0;zikftb)1BK9&YFK zFnFF(H%%{A>Q~#Bl1w#+hj)t4UtKyqPOJa8@aIiFiMus-nJNmLG!cIC;mKtGS0|MF zebQ$2$Y#Gg^7*{|`lH?Ar)&CxF80}ei`bffKhAfS$wW;l{qC@kkR?;K!?S*Vdb;p@ zGiRt_qoP{IQj=MnlMGrPt&Q5s#p=1ls-pcu%MJglEvY)u+k8Ns;}>}|s)J^|KXGeo z_G;H|v0X0~bqC4aF@jF=l+6+Onsam0QZ^om35#wf&%U;Ydso?8sp#iC@4h~0=6`kn z|G#p!_YF(Q**oK4!pJ1Ni1TAPI3hmj1jsQ9pQ#j_6)-RVZCv&1dwZ*2+`jNQ^I7zh z`1-$J11_#R|D0P?Lrg^Eh_UO6{B}Oslzlt5>&(_HsC&@J?sUIx-aFl^3pt-jKWgWd z7SpQo{T>#zkn>o|!6w#UPbT|2>2==ud})gb>y!L_KbQGfxUM<Nk}_jMbIR?j;qhzp z?(R~x_C3~X?)p{D<=7v+wPB0hc)z~5s4OyR;;XbnPCg1pCaHRV`FcIRo$Haewu0iV zdp;7r&(F=hx~KAUMy&8Z>xG=xO4K9{-r@e7Jm=r9*Xvv6zLm-NC;jx(Y5nV=;jv5S z%#pEPe$P~VA?MLGEow`ibQx-rRk>~gRjxee9z!ZuuLXP9)Fe`zgfG2XwKUH#dVAj0 z`v1T0@7OQ8xA5^XDXWqf>sr6Qy&XQk?pNj=Zrfik7N>G;JH5(xzFq8Ob^kB}37yrd zN50+(X;Z8Db~9bdBx6F^n;U}HXPsJAyvj-VOss*T61TV>Ppj&T3oSlb?lOff^J>4{ z+%c`@>D2I3HO@6gYqPGds(QEcdC1D3r76o!uGskOuVvkzioJio-A?_+XZg6tIOX1c zH5bLuvn*<NYCfM`IqTlEN`Kq0Av4RHcD9$9I|;9GJ#YPf&yN4U55D`{X)^z343C^m zMCt2mTmNosQ4^UgG%Mlv*CZ!U8o}O&1_uOILL-%tN!Uwr&T;U{v?Ws=D*1d2E`Ua8 zO1<wUoiV?}FK=h_j{Q#A?c9YMTIcG{d~|T8ar&|?56tg8`%|~ytygO4&f@3C_I}?a zGhx+*mYbW?v%kE!sHLT)b^7hmuWv$H)M`E)WS25d>oLo}Cv!dO(#p?2pU;=)+TXEt zZOqP~xmKlJTX(102Z!YEySaDK7XAHyf}GoUJiB)XE%lljkO=CN1Rt8uxsWsM@zqtK zmutV@T|U{*>SP$ZlkghL%eE#5*VtHFNAIor8ua?w+T6Y3C;yc9&*jd9WXFW(Qwq<! zW;oqR;c*~i45-mWNWnm{m#=xLLIbE&+~rWo?_;o_MQzHjty;6$@6~?4JIlVl?he2C zeU17XiS2KtwkI9sDt&jy@?GVbhI@OfSLfc|#@Xwe5?~;4W$*WUtH0l`x1abh)k;lt zA?N0_vs|odDN)|88Ha-XZB;){KKXXp?7X1g-`*zQJG3S9vPtTxDKmbzzkX4+`|By~ z^(RE$hqt7inOF14la;A)%guF{UtZDOerJ(c?yVd9mich{8c3f%b&9LCZAMbvZmETw z*Cx#rn6;t!>)TsfgU`>ieY;Cc$z<V-Nf%gduM-spM>g0~#1jsh+yXNKPCc;U1En#A zwJcgr2~CXZCW>p<#b${GBl-@7whP>PrDj<cKa)%L5or7=_Iz#h_G6~gU)CIxOn<Sk zU9PJ-W)ZWR@2n*+FE3ZO+T(NlrtGW_ACJqgj^AIG8Tv<7+h8H*!=*k9$6hX<FQ>iO z=ft7y_v@sK{};&4HqT$z$jq*0>aNCPrpO5z+(|n>Z|=6!d%s?b&gJ(zvE%|vvBAxo zH>*AzWG}syx%_64UyE9VaavGD(@oduda+kFCc8(!V_nF36g1CMv~&h&Dv9K@;T73% zpe2ayc_FyHlc^dI$Rx~TwU9Hj^lQ-O8RzZ)$85h_7JX-Oe91-EU7yccd-q7&RBX6c z|Nrlf=f<q-*6;tftEjm6v7Ge#2J?Fr&dP2*9pw?XzHB!(dH8&O{k2~6dn^9@`LpF_ zybZUaiQ=AXcXk$s?ksvbL!;Jie$>`1RpAAbe2g8LzP`ThpVqZSKATDS-QMqUwI2?$ zXYRkY``s>Y-KZ@aa_7zzo0VV|w=zi8cZPwZyL@fQCB7E52;sD-jHa6>8yK0dY)U=7 z<UJ@bT0rBZbIBVg#R!avOu{@ipuqSWw0VYM^0607r^j_w7YX-W*phi!=&{enZzm=y zKc07<N5ZOPg_L>ToC`N1*mLjf2$Z!dIdNkG!)E{8PQpHn71!6retq0;f9%xsvcDX@ z8kH)hSywKcnQ5GCw|f2le^Iv8-+Fe|@92~3cYn4y|B(NwV&j7X&puD*)Kynk7m*0q zU6va?ZFVQ9<Tx%{K1a=Wmdf(WGp8^w<h)ihQ({&Elj*$5XOgld7aTqBaytok{p9fV zc%@}X)(LnRVQ`U2n8ywj2CTuGXK1hA11g=mt3O?jtM+A=DRAg4Ow%(?S2|mByY~OT zzrvDIpJ&wl{grufk*nc%|KojSt!jHd9O9O;udA`jGkj($I4fY%DVF{j43i>m7oWFX zeq63v=i0l(-*Zc^MM@baxdat2`TZb$er?!fb$`F_sqZ%K1I-5qFZY|uxz%G^YF0+m z&GLRZ+mfTA;VP~U8BM0~YHeyW?wVv>@i^Sh@Bb=JU{=5x_Y9|?@XmwaBuyd_&;{xM zD4F$xCtp3R8@nWCB=9v}XxXy6>ziK2*;%H$p3TaBH1ErY!~EC3yu7S?d~4=qx7p_T zebx6?g{}ro@D*9e6!!O~9{BU~bLscH<;O3XuKj&OaMp&pzg4AgZUn}yH(&c*Dz~sj zZHmaNOG~|9<Rs@hxA9!Ge!oXJ`}>B!c{`tq#a6vs>UnnJxn|!4hxKuLML1Y4RnAPj zo_2`IC&OWr?qp|SpNu1CW*UPA<<!rBf+2QUo7xOn+Ybkrvu<oiJoLTkLQ9gBld#Y} zHy#%f>WhEz)#Y-_llT5F{9}B03P)<W$D~e=<tfVr`fRhOz3?b==ZI_*t6p+K@%0U% zUfrA5MIxP+whNt{C!~1#h~b$(a`RvRNjsNt?9TPCd*AJRU;Xa-_m4B&pPSr2|NK|o z{OhIni@zWLUJGwMuGA>VPH@tSo8=8D#UGS2@n5a+mRt38+5NSrrMZ<%4oa`8yJD=R z<)!8~C!^Z6^!2r=b$@@UMlWZ-X`Xv4W%qh97dJPrii#bJZ&`~TJ$f{f{bawa^|Pw? zSMpxCWgMDen4EHRQ|ijSCD+%xXB>LFq>P_&d+zNpK3S`jl6+7;I@&F6{_5fSqto@{ z#Y}(w{eJ&%X=iy%_^y(dDZjqF{Pf{4zw}!B3C_YLkIN3b<Q-KqQT%yaeS)*F*HkUl z_j|w3dwiX3A?N?a$|eUtCcBVzHrkR&42_&CS<a?{8#PQ$3Nx65zqAR=5)kNL`q}l> z_QT-83~3h^7mu}3TPLmk{baI#%9|S-xBbp?Z0D1Ga#TFNB&2%zqP5Z6Pc<+y$Gm^t z-L`BY=kxRPr$3)xAGa=c_p|P&yQ_Sig!7(n`CN14*fFnODN_|SwPPP^IXO8eZq2^# z)y5+!^Zmo~LxGFkPM(^oy?2|-SMT|DdoS90WEP5QhfSHN?7qz8ZQp+WFBe+oSQejZ zV&!&mR++=&Bs?jc`^g2CyI1E}7B5LS*yJb2t!VPFKBq;^qN+s$oQFuPk{UxmEtRPY zcJhGQ%MK14HS(XQl+52?t#IwtH6>2p0`E)wzg^tjz5o9D`t;Y=*W1FyMMYIBKR@%` z=C^-q-2Rz&PgeZ-cs%t`3#Xsg`-sbHqs=cm@6YS)ku>%?JIi!w$;(SZa&mf+o71LV zxDc?j<mIH8Jr#j`@^(7EzrCGoTm9|C!DjZmyVhJies1B9C3<V_Tdi+*xhu8nz1LK& zNc*GR;?r|(ZaR6l{J!pV{rGJ*e)DWHBSC{%VIIeOrOof`+9EKkz&Q2Wo13oA-Zrx7 z=jKdQ^PN>;WqY#n=jZ3sD?dMz{QBW~QtjKU3EgepI}E=Zs5?1H_36y?c@y2`DqXll zG!%ZtEjq~gE3W3@A=ZoE{cRWQPdv<KS@@_$divI1=VzIE%T>KlJpPx-*2K}=F6V~9 z>3b&?OcX1(I`I2u+}g6T<o&(7Cqc`JK*O~%woW3DtOaWI5#K-p%`AX*OvqwdzwcMp zp{>h&W=_hw{<WQ3aMlC<@`K*lKmL3^|FqZq-iEue``1=~d~~#YO?P+q<f^Z)BH5q4 z<+E+rpLCRK=l6TnZ>OnQ$Mf55&%S<cYu$O<?{i9CUUD@`J@q8;{Nv;Or*Cb|PCYqE zby1?|vcoDSj{IrnIX5nFl@%msoH*LR$gC2-uSRa`@6YG$pKd;HH@THtJSvfES@VUK z*{r9h>+3Ie>-{w2YH#xcfBU~%c;xNwJkDmjbVSa!D#B4duLo3*Se3oesQ-QYzD?ft z%Fk&(A2jnnxgKBtb%)x{&aGKjCv|ji9Iw5@;kzPi?JN<!n24e$Clq%UJ)QLX-R|>T zy&eBMJ3BZ2%agG#^ZEAfuJ-F|Ym1-OD%D+v7DSdt1&_C0+L|4nd2vze;@8VVmL!^l zt`76fyd_(Ie{;Hj=A9iI-^wjp$k}iEZHB1BlKJ{y+z-cpd7u5Kcp>*C0l8XP8H)l3 zv%EVQw(@zrwZ3(KJ|558T6|@B+1p!g^Z9+^@ArwlO`6zt`NiH+E3YXUio)uCB~gB| zpsWFpBXC5KKsYKoWH<%fdG<eVQ}A*>&fT)sWjV9%{p=7_PB}Zvbldlcy;Y_Chs3@p z`~|IC`hLCXU^Bb4{6C+Xhbx1ZpSrWNSaz*y;l#S=-EuqD1~2bh99Ja~!N29TW5(n} zp;;TUuj{?MyL<b|r@~oZ89rsN->W87l34zN@qXp!XD7F0UVby}p2_|D&cc_LdZ)_@ z=?5%m5Y<`OUi|ey#j`Ur*UIy<d(OA3J=DJ|W_OwIx|p3xQU(j{LAfY+x!=kB{eRPB zrLNV_v#kzGN>0w-oPBv&@7jh5zO&6brDpNirmSsWd->Ld4J^FA2D0V%Yqx)SdpkVq z%8G|8rn0T&k+llhmV5iz3cGz8&TTxKa&8)3thbWPYf*bqU3hVktL?r$Y#(&u_uaAL zS-YO|^1}7Dyz2{%ID9?g&YGAU^qg^Io^AD-{mb)O-oH3!_v?jn<%34{IW|)3t_aL> z$Y|2$7xD!c;N%iJni&>yI)15O@y=+HbIHB2Vc{J6`g`B*US<ByD`n!bG4J1>pGKLN zmWVu8HFb36{Pq3)`xRy@7hPK$efs0$<GsKCzK;Jt>Dk%Y(qAt&&kSDXWB4jjXqG|R z8Hv{qw!EzP^>X>z<~x2&!jIO!J*Jpa&kHUqLRN)%c8O{~`!V6y+;<nhzP`Tp@FDj; znTgHp{HONS{&umAum4+mvHJ1LA5SLxA2Cr_mVCT#(fW;B%zT>SAL*JHIP#ZG*NME; z;eOcU%e}gvPp7-pZfU>#fi1p8O{H%Ai>s@rYaiq^PCK)q$>$B9`MvdXT9_+#`PI6u z3S0Z?<rkIbnLj$)7Tl2C$KiXy^i}$dcXxN6-k5y+jo!~~KX19;-(G9V;j3VBF#NpS zbypJFFz7MBA;;(>-1I!odqa!bpC6C=&EH-<r#sI$y-!3Z!r-Wo?UB1Xi=TsnRk8Zp zn?>zAPfp{S&%mI-;OXKRa#x~i#U9_;X2;fgP1n<vvJemwO1g4-`a;f)8#i8Syixr8 zoa9@__vhc-+^p(7O~<YFjz!Cx^$R&CPMjztCztmmd3!{&h>3uzj?S6KLAAF2^X=|F z{^{x4)6p>@YHOC{*ALqt39I`>I10SVH1cuc%G>+y>gw>NvAfF_Wfxm%g{{$0cJC_* zd3X8(OYDa(QSFp3FD~|7o44b{<p=Yl^`9L3ExM4?^S+(1_+RP!`)aE@J39@l%;wd8 zi>!RTc6(3N3=v^a(meUuS(l;$V;+aVtOuPzQZt2h7IOaby}dc@?55i5Unczd^z^hX z7vF{az1N%@sxDkVS@0|O!S=XpNJ>>v_x4!9$;-QSj}2$H$4jSuJia&f*Y7WRbHi|{ z>arid?P`CWC_ZmH{n4H&YC8%+tAD0UdH?5kr?9$LNXV2xVcQdN>tZYy%l!+pDSZ_( z)4F`!#Z7w(IjYakv%R#py8QU-Q!@+~uZh_i1S&~(x36~=E;*Qcd)rj!cD|c&)sL8J z-(UJ}u={ZDckRgq4O6bIt}k94wszK~E!O|`rJtV{wxREC;8HKqive=W4_|ru_xt_n zN4v$X_wES|U*N#_`1+ocOyI=#<mW;$&>#WX>Cc~q!}o)WX73r!X%|}fWar5GRsVXq zJoU$ihjRCGYd_Zf{d!&QyuVH0d)L)rYh|vg>0QdN`v0g~zvtJB#tVwhZ4zHQ^uMKM z9Gax+opNVKq1*2h6P4R_A~rZ&TJE2J#l8EkMT<{H)6HB7<Fp=~=xt|Kbjn54eLAV$ zTlFLQBe(t@1<(q?$EmHYtta<XepV@ecc-sfCHx0y7^eJw?eiV)pPZb$G-6}Yw%30Z zO&po!-Fl@`tKW8V%hi4foN1KW^;Rx#PyEa_<~x}e56a9c`1HgRG$Qr3de#ny!xOKq ziBy&}N-=o#c*~3nEa~&TAMf>^qM<0obcDoKA6gJMK4InX<yf>_S;9&9+<bd|UTL!_ zJ9b#yF29yH;oz5-ms8KpvD~(PF{{7L$Ce&>`+I@8j}|TSoqg)%<>kG<dgN@QPEFNL zzoNYF#`J}pQWYD^-bO91eR1%LUhFPVaF#t5Fj~l&w%v(;!E48o$%dJiR5auE?C|Us z$u`furBeUrqkGrqNwX)|*Vk#r@7v@4)&BpV&3pcQIxTnBH!rAH%G8B9dXM3kgzp`K z$}-!x{kD^<SFGpo{qgy{{o4KU8#iw3`(FS3Zu#k7Uti~5-~F-9HN)xBo4g%cGB3OJ z$yg@+-lwKlAf=I1a`C^unn~jY7V~+^Rb;fy5LJGGI;ezu@sp$N0?TCP?PdD||DD#~ zKc%CC!`(mN*O!-T58wHIr?`J{mF}g64mMsXi*?rzRlnaGK21Mf@8zYX#;=6q-<-bC z0;@~D8J4~Z(Tv)%BC!8Qk~tq}R<%sKjaORj^|iIeSwfPMnhzg7bh8c8`geW*Kh^5* z?|d_(Htk;@vvU)VtksppzxeI{1T6EN{p{kMCu%oq*KaA__~J#z%INLu9zSS!b#?V= z>HIy3&nI1rsps&$P`U-$9jpG^$^FIFHv8I|ZB;uy);)Eza472DSNOOsWNp;dYxDBv z-hsELLRW<p{;_#=^iILW2}@nO#X#A;Nzu8j<K0p5<_j!N!Zjc76#9}ggbYo!jSqwr zOcXobl^e9Efrh6+4Yc3u+S=MqtqNVOl6<U3?)p5-Vz*f)nU6mHiB{kD_uK8Dg-)!; zzuw-SKfUhnFUxh;4|R!ZpE@y7xwlG1?^|fbp{d&8OTyMh35kn8uh5@ql)9-&=SyTk zGPvMl*=+sr%U^|$p{6Mh4zkOeM0;>uT`4)sAmISR&0VFdAOF2me!q58$;+VYaq6DB zOJaAI6@7T%=$>8k<6(R1vokZdW&c$*N&NBQ;ij^;QMX_F$AI?iXvXZ=uojeecM9@N zxU;C)*2M9@S+A7oscW`-ON+k0y9-*T<z_oa3|vQCPH(rOAix+|Y(y1I4hF9@G0<Pz zu6E?uu~Wt8ZPmr~<F?dp=MvM=D1LTkW9;=6fy$QE-`2df(!Fq?RnE4`V%60}s@~I1 z>?nLJb3Hq8x?b#()YH@4Y=y*sYnePeF;V%_GGFP%wNtdi{oMNHa<3>CZj^4H!0BtS zTh_UqZ|c|A*QHG_GXJO&xIbIj)LB@{Btzl(`T6C0WdAO!`g^P@zYjD^y{q)KOstZQ z&Y4}$%MSbhQ8hW(`#qpm{_=NYYf$CjBs@v1{P5A<-;3*Cf6d<qTFu>}_T$mc$FoQr zIYMN|1_q{ssty@W0(akUk(-rJv|<A&<^=^4e`gx}y!MTWmFvWvoyEEF#`_X3E%7v} z|5tPTYt)M;1#jo-y*Snw|5xmH&dp6XZ(Z+`wO*2cf8VyOyt!|_H3m(7ZdjMwq9$=S zNYb)s$(p#mw^p3IvNCvS#>GXT%;>lFLQC*+KhMo+XM>{7$=1I=#`s~1m_hBY5_d(j zkG10ZaXOa8&wO4Qng6{P?<8#U!SS%2kK6vbzf1D&?%Eaw%5!JaA0O+L4%(U(8eP4s zwCMaiThM~lZPgh89c@OIvUxk^SQa1SiZYTk&Av9Jk(qtgmVy}X45o#gee!Z#WX!fh zvl}Cez=wc_3oQH#FCE&lMQ)aWq@?EN^z&sUtG~2fSP`gvdux^L-gTEZ7Cdx1IoEpo z;!oS}Re9U}eq-#u^`mQGVBjS4{J6z(o!zyfvp&3BKL6D2_xrN9^#A+&+k386X-}1k z9<0E3c6JO~6Oni&<xmUfryq~|rN4TtwAkt-T=w>s>fY+_ewmi#fA+EkhOCLWxWe7* z=;vo=C!d_GzT8Cj=6!3<T_2`jXnDWyw_jZ4Q_<tq*PYZKGUV-v2WPKipzP%=4QhHV z{?K-6s<t$HkwvWmC#d=Qa<emK{k3^q0<#{h43U~K{hG5ds5|@n`}^{e<<QZq?XkNn zKc`8WWK4Lw>qpbR+TUJ#tG>!yEq{5*^~-|Qmj#7{l%&n`rhIvM**do{dhU8B;V%=u z+}T;&`^~WIO+@9ZmCKPsDEZHikDD?sDlJyavlsW&Rom($45}nR%eW@GD~MQgmVrXS zxt-7R_O{&K8DI0APfyd${aWz&Z`XyEB`5C|fr|N<T_q>4)%x1(jM-VV$kAw@M2nih ztOwoC`?ASdF$nADvP=hckV^JnF3LDGzy6;luawCIaGSuy#3TgT5ZMr0{ppG4?e<{d z_$66aR~c1&NVt9dDwD0q>g(lJn^I0HX@{*Th?<uI3I?}cDOK(8btbn?uZi5eBw(Qv zsNC5NYKXFIzAXqzf@WDpNk=$VhOC?v*gvH!SlcA=)|Sjq58LIJZJE>XzjlA!Ul;xv zw<Z4x%_{iyB{TEZmX&jt-Z$GGySwbtGGFOv+dCEei?n4FR<_>XQRw{T{nC>!Zf;&~ zl6U7uS+`c`Dvz9;HE(zQVA>uNwIxGw|G!_WAD2$ii3~c{EB$=Oy(JSsRhiE``7FwE zmP^A07XK-iPR!XNGiyWH+bBu9njMR+Ll-zOg4)!Jqij7QSBL5DtopiYaTTv##I~H7 z83oOEFG9=eyPH~ms{QtRw`d=iuY^%bN6w862RF8g>Ba5}*_3)Z4Y^1T3=A|XeB`oN zt@hWKiO=U%p9AHgm7=p2FbYTsOupvcFK4^NbF$jDZ7=l~a*FH6O{x0&>SomMwUeW_ z=jqB?mu<NUDv!4xVw@CZv5+%~HBrX0=m<C+ReXG8lzB<z_*b=7P*O_x^e2F#Lk1eu znOf8;7EN(`w&dvrmdVbaudWWCZho)g@W<F|hgX8KSB!n?DUr%A7u|EOUtbyQt{1;A zXSd$I1qBZeftE@f|LQ6FOUoqj!GXq2si(yj?_CqM)$85f@8D7h+8}=$v9oAtkCf@D z6`-u*TEE9KNZTaw!UD%lm7mk{^N#9QmA|~?8nrDaGh6qc&@2I2S>37wcT%=wUG)<B zzxVr+>C*4RThvr^-%j)1UH10LgM-cU?wnJ3E}|Xgqvk*F4K31#)GPsU@$_2ZKds#2 zGIurA*>i;BGoGB7xT)%EmizT<i@v?RecJy2PygFrudWK6JY$B$?b45|Qdbr<^5*fy zx2k=4dD*?}-JQ%Wpo;nQ-SYb=6}ENRn+f}Be@mHW-q^74%d4xWp{e7+vDYd~_x?Ei z{%b+yY_r@P-J|hN!v8+c|L@T&Wty}0@3oUHYAR>1LmPj&w~_OWlkgYgJN@?mUR21o zs97vC)_ZfI@d8V-ixfqz=?P7sg62!dlB*Y5{{H^%eY{Ur_WsF3t=!(*a&F38pKntc z^yT==iccriLEXmfq3hT!zA7v~sS&qlhtDjNlS_`~Zr#V_`{LT#*)JBRPu^Jg*o~8$ z+c>i@Sa%`kx<ISEFQ3obpFXX>|ILm#Ztc)jD#~s>2CpUt6=t=n?f7WrnW_KpLp86@ zg$FFwhvS`u*TwEuySh4j`{pmVp9#&HU=qKeU9IHZoyc!*Z$JNWQ^Dk*;oL&Sg`CG) zOc1px87u`?MknDQ6)$VyOIaC*+U4ssE-&-tz9GGo{cHHzC{@s4+VScg(B?R345J3x z_;j<))BP5j(e!d*@!jL6rfRDeKRdIoQef5tsilwI#Pwn({QCOZdfoLy>~a+jUv_?b zW>8zF9llP-xt-6quv1EJv7&KiZAL;9oB9pO7PUVLvAaq(I+xwPvo3bGSGSmMPnAme zn`8HFoP@hhJ~=sgZ&7_vR@CmY+|Ir}KX9ibboDeB7Z;0l-%Ax2a_-y593zj`l_Z6$ zAi=`n%h9&`&;M$l)eAZA?k=BhTm6mY%iNmpcgvTSyu7sS+lM!s&!77G`g-nFm3ec_ z^W!?Zx{6}vhb&z0BwY3Vo$l_kw??;4A8O@REq`|hRG|oi0wPfP^5I<z7cShCch_p? z>vg+(t`#nSbcM_Jg7e2;G0VO#d?>Isdi%DmzD~ktoQ18*-|6V@`Ou_W?ynxdyUcf0 z`1*IC!7@S6Sk6V}lmMTMCPulXl(bGcDl{B2n%V<06QiPde0NlRU3Fz`ba+xy64NiS zmyW@<1zG7=przjOC(Cwzzgs>ZG_+7y8`KJ_1}q8|<lNkJG(*4m*_nw=tlUyxJz{(^ znzE<3^?qUa`|t1X-YV#<TwuSo=<=|PL)z>2DBZ99KKJ^!hx)y{%id~%X7#tuN#OUr zaJ^$+m`|G=PyNTE;=WNT(Z8?9*L$vw+S*g~{pDr%dDZVMZ`-a4S*f&f<Hl{TA92sI z>GzEFu~&X`d;9s1R$ZdXCI=1YB`PlDY-^YTpI0O&Y#uZ+Eaa3^SUOcR)6gXG_O{$h z`|JNV?00qT5}BBJdD+cd?vvGgpPZR#ye&(}pO2e+GOx6mhlfYUW4Y~Opt|72g@v2y z{#Grn1uYW#bR)T65)mq}zVoYv?+vAb9<7}iwUD#+_qVCC)@2ph(sh@^?QfW5T{&^B zs>v4K?TJp??g!dS_M+eX*wJqBrEz<!+}0{9Dao+v3(QJ5k|%n7U2OEC#fxRlFCF07 zTi<BK;mdKwnyf{y@Zy5Wv*ALE!>;JIY~SvMobUJl-=`C|=SIM>?@vLAH|M6&$w{i+ z$GbDHu9`Z>qVUk;pPs%k8xk6yoSb}oh5MtV_*S(ZN#kRmj3t@bcsB5r?K0&6P1mjQ z4+)v#GsoiM3eR3C(<fiA$D6-`q<;y!njLFmcVEl?{bBmCW;WhQ^?x4AZ<{9kW+A7# z|GX*Fbfa$>?Jg~PeQoX1<l}vAwv)84H7M|M8A&#?^G{n9y82e0V@6Z%rrTT`zAqHm z`D6-sA{V)EKHi_)r|(DBTr9laU{rF*aB8@tVLol9n6vPg3C})0K7RMX$IAYN&h1`L zPffLrbKjnK*M<Mrte%UD-Mx1fJ@tvY6Y_fXg_f6>m!F<vS={q&A$!~Il9x$WlnV_( z<-U~ZuWz^Wm%8`Mx!G<?J+0<FUC$I63>Q9d@J=+4tZJ}v?~_r}-4hqRzpl3O#lrTS zSoIsu!gn}SGoW?mwB5@m_sdu+<=)!zv7~C!=X-U(b5{l|Y<er#qIN@V_u2({cXt)N zyrg=(H|y#uRY5_)zSp&}Hx@F3ibi(IipICx0<$K3dtZ2n?{ZYep_iAJgT@aspYh$Y zEwCzj;t{#GYU{;+UpJI}es&f%<}u4OJLO1+pxf^YhqqL%xVF|YqbYh)TJ566i(UEO z96NSQ%5;`x@iLn~9}a_}7Sw-r?G`)v<KyGrZy(NCzxTMgDYduiM{?nYcC{CcWwmo> z^uR`sE-BrNGJkje#>V8QE0@pPwAao_IA`+Rum$t;&&{=dzC&;!r>cu{z63et0HPZ| zVGp<+Py(uLA3b`sMt1-Ad(}chLP8gI$8St(?UA#!TJU{B#YgD8Zsnf&mc`Fbe0h1< zcHaCeM^=TdKK0;WGb}9b?X7m@pEtV)G<mE(zvj`c*G(5#ChvZjm;3wM+o#Lt*BNDj zHllUxYp+UP5|(l3+uPeq<M-FOMZdVcef^cy;pbPh+l%ck)Tn=TWo6KojKIZjV|SPN zn$#SCv>4k}Dld84ONXou^IaFe|J}(iD$l3r#YWw${T_S#Yq{2+N8S36jAxsDO-D0i z#RPbYiQJr4^y-S{@m}z7_s7G|lw=%-0FD=uJLC3NMOI(^{CTpvKVMhv@q8l{Jv&DQ zk8O9?Mw^4?Q_EH-GAAY`GVc9se!nKzEccekh3XxpAAk9N*je=SQ-=Ti+HW)We7zP8 z9&TOcGc)Dqr>B$bYO5C8eLT94%h#g*-yV~U3kNFr^JJ>};#n4Q9@~C+E1P`HhsK&e zACJ5JH3>=n_~_^)y;!TocAnt+Cx8E6wX?I$&7=0$CD;66XJ71A7bf#&A!n7f5C1lC zjR1#d=jOhiYQ1`We68&4o~hd5UeC_V%-ybFa?tE%F6-Lp?b99~@3+od(kS<9rhb6? z@jltq|Ns8>O<$j=^Xq2|cvmeV-H^)i<bLt9^6#Y#*{Zs_LoJ++uA(IiIjb(1T3OxN zb@Ff<uduCw{0isKdatgp*B951<GG@%vhy7yGn>cTTU%{!T|U^%4w^BNJG=MtlETNw zJWozi?fsp>9N((;V(aTGE0w3~$D7@9pKX>KV|dk7U{*qjc8u=5t=ZGRyt{jQ$MSvo zcAw7}AFIvFoe;H<v+8cu*H@Bz^PioY8!e_2k)W!(bg5%TlgIUSu}^=$-(Ox6ZJcsK z0W=F9Q@{Ms#^mFtKxui$_LH|bd<)LZ3s^Bf^ow!#<-mP4m6E1eQ!W?Hzh3(C($QZ& z4@zvlTyQq3{+6@+=@rUWBs^pN^5@S2$L2M)uYUggey>{p?0d_PY|VNmib_gO=jPdF zOTOqmKhL)Mz`YOi>wbCO+MX}J;kAF>!>w6Yh4%W->$!0wVrBI9JSTxRbyLr?nO9a! z-1F<zYQNL@t3Ib@G^rhUb7SM-4Ea1c9~F~>FT!?2)%^WcTKR70^B!kYE^$4b%gg<z zU$_tuetr6^g`Dg6ew$VE^=i1=YkA9}CE#(R_Wh#5vlKo(o1K4ZneXhLyk52}Nc|Xe z^zN=w;l1vD$C>$U5?X&*NVce11n%B>>`Se>jZKV_vhrE+M~nHOjZTYwpv6e~^Xq=C zd|XA@*qX;{rmDKQ{T9*f^XAJNCb>l2|K$6dd)I}QhlkribH}<ZaeJ#e<&=1?80O!z znQ2p5v_Q}PX6ftgJM?3ATzFgyTAR5o|Ngs=f0n4dGB0@TcpbDjVnx5$ZzGe3kNfSX z@!S14P{F_0y?<KK(^Hb)6-^G#xNw#2*YUi&yGoDQ{{H@6zx34=!*`Q+IA*nhx;PgL z1Z@w@v8$~Lm#w+kbAe?dbX`GjUUS`qHQ>RP=x$Sm6=iR46+JyAdb}38(xWKEKch)` z+w3k-wHLWHYwBaSUzVw7XPK^Jzh)6P;jGi;^I3|DilAl~sFj@)H}fS$H2_Qdflgud zCwsr&+iVuSz=2WHq9CCl=g<Fg$&!VfkB|3@+n!jv*twlAXidb%hP@B>R)3!sySt3_ z&9C=cKCD=wadNi#diUzfJB8K#zGS?ctG4&YqwZ_QiB>g|vkD#@U=05ju*iio9JJiI zcGjJ>|6i?M@3Q~xosx`07uG~>R>{7$X4zVySHZ?64?jFS{OOXnzU2D7m7kw2dhMs( ze1T=6?`*S^v-9_5mUz!L%~rd+tJL^aVfM%G_v`gzcbA#Iy1C3(I`jIvxr^mm)GU&A zugv)M<)u;jIhn<7zxGA12vA%sw@*tBI-c|5(_}T@Nso?pOMhKJ)|ye+jC<o2tquA2 z?Pi+g&f02g+kSa(_4h5iuBv<o6=<8&&ri#}y)9CrYD3`uN=pHEAD<pjuVY=@-d7br zy{G9+l(8(bSm(d4;Mtj(i|o~$_fL%Y{`{mx#fJrtn-_HcPCqrp)8vCf^tPONF=jU{ z_wo2%$X8w;zkeTSv@wG}>JO~N@C(#DeqOcFP9Ah#M(}b!$?tlxyS9AoX=!Vd`hJOR zrR1yy*R${L+A3pTcc<cQl||hDX-iriGn!7EoUFbSH2<*ubAJ8r+2Fe5X!|;52IyJ< z+dSQChaY`@e%}0*C3I8}9=bO-r5dH3kyz{|^=1j9f1`!TmYj==T;06+pZt~1os&e_ z)QZ53eYLxFA~qbD6}ixf^`ibG-erO%3pr0u*Pkw`9TxF@N7dI?a`I=sZ*PBeJAeOF z(8NmIG&W|P*j-l&|IX#wo_AM^nT^NbRqW<8UrCFC1;=ecE3ei4=6tBAD-!<doABhs zL?I!eM?0qLI}4XwteOxzzxeV*?Qp%BhRJOyCnp^()OHe<xm>w6VE@aQ{U7i2emumj z@A3TH+`Ac5UoGU6S|BVb`SR2)Q<H_>)Ac~rZuqaCt2h^ODiszM1}*oK?d<C_+r<kj zAHH_z?<;!RW%K{f=c12~To>1Mi|bFDV_9tV$`O*g_x=A@{qok<)q#s`DnCU$lx+MF zXI%a+W~No?s*C^RD;_ZZ{BW2*mix6~6wgtL^7oIK2To1ZPCeYldu`RLtE<y%J*y3R z7jXMtn9>uuIW6-0kCW>2r_}%ZJfE?0|JMtf<?70;z8EZ*d-dg*Me(y9lgvv;R&15K zvHf%J5$H^Tbgc2d9hIM-U1Q8!e)#%APWyj97MHxba`NS;{8iO|J|172f9%`@#pcCz zpgj3GYogqqyjxpV#_X-SI`y?l-kpeD<?r)qIzr=%tG~Z1-Lve}RPECj7CPImv#<WP zrc~hXudlD=uHVUgbeP{hXK(%#t<Y0b>*kqQR(@LY=hJEZplvyk{>zqIv|niXF9bSK zuI$~NnTxK^RTI&T3Q_Z&_2ksUZ!?Y4yZ+7SxwEqvG)5r{YTy{gIz5c9|Esz+`}(#f zOCPu2-`>XlepB`DPvynZr>Cc%Pw|wyx-NeIy=&DaMZVQvU#ap+n|*mPt4wXKb@@3i z;maR%YX2I+3II|DTi`1yI7}FA%m2OIen0AT-OHuZm(=|H)VPgx@mIFkj6)9(x2IlN z5hylGPU!OCiH#OtZg+i+?w-rX+kK(A{GL?R0$=_GGkZY$VE=vFzQ6K{6aT-L58q0g z=T(^4FZBdf`L;8jtLPlKzL4`{e%h}!yA8j5crZcH*=7I3TkjN14z7!Mb!NUnViPEL zZS4+S72+9J{nm8n|9`(_zx%wsz!LjnL*n6-ySqyJuFnZs$aV=dJZn;*qM~x->OHBF zg$IRpm%pDTYh89?qO!XRq!y3e$+wX6f9jP3^FBU4E<Jl&&ds1*pnhOFXyMA{bpOuY zUei~L>nDHBpLN+WqbYdj?AIn!UT(i%XPhM_C8Y)G2EV$x+WOVvg}lG)HYFY9y1Aop z@g7j!QO{6Wy+ibch?rPfZC|<a0=M|^`1-$FL4(g``S)}T4GpioJ|ex4=iaxa_7pAn z`K9{mSL#`-UteFVw{nScX-!$c?YpDsX;&#jV7r`6_4m8w%<tM>%e}g?GFe2xpyo$G z<*%2^_ip>Xul9FTdzEk7K2Q_!bzwJX1O2`qkGT7vFE<HvX1cXCTOBlV{N?54<tDZd zzyA}MwISuCkfeFuoa5PknTy)ox8&WuW#utL)qC2MW$J(CU0~^78C1Hct!GQdMW-)& zkF1?&S)BIr%F4-K@1;EdDpX$^-=YRe`qvs0w;u`<ihg!#>glTY7gW@E%}z|woUEJ0 z>tRv&s71!Q%!g0LBBAxkpD&mFuPwZH#5sO;_Vsn8stXz~wEREys@;j#rXblQ^OB3n z6A%8X+p@pD`}_}ky*a_ktzS-8>cztnfmshi-aWH2Z;tx%c_LfF)3dY9j~<QPQxW*> z?QM1I@^@1}yS@D8T1^f33>qMe&fhyViT^TZ{ok+CL5KL5Y&lr+;(2*(u4&d4k5A9f z=dZpy(>Q(2_u#EJw&l)#asTj<#hI6vftEEz+s^EP&3M5_BS<La8tgf~yt`}tkh|t< z&qv$ucOLVf_S$O75}VO<iciKO;NOqO{M<YJ=i5!vkKY%<T>jWe%5A|y7PaJuhgv6D zm*-6uD_=9$u6Ea%na0Og{I~!2k^lAWDYmk|*1pcYz0LHW+q>xX%M}?@PfwfbE?;}a zYR>ZZ`Ckvrle4()-0*90`@6dTf6HG#e{it5=+~D_|LJp|>{;qP-3v5q{(VQ;+gV?8 zzweSWKOS3tR}~b+$K~r|KntEDH>YjoV}8BxUIoAH9LfB`KR*gBOI}R4D0Hvpv+wH< zJ7*_Dngq&5MwhI3<X0qrdvkM9bwTx=`u~5!3YzM;e>wBprtA%~k*wMf!@tQ&cB*#x zw1v*?xAf$#%huF<I;p<x^&7Dl2cI2k<vv~e{jR#CaoQBn`WKTA4)N9>-z)z*&n>Rk zu`ln7>64caAFWuS(a-0%d`p^>@IUn>iiTD4cO<IbZ=G+qShMw9hDKZ6=e_@WK|Ltx z>D%XR7S#^x*jH~2nt+(Pd#4|>p9#m|vkU9nyF@gTYL{KEUaM#@T|a(W@$++$4>_dv zEplW$$?Mxa+cbOHY;Uh^(`T<={iFNInVG?$)xDNQPd3EGe`Na=b?Lln*24K0uQ)Up z>Ba6UIlgzAUaXY@^VOiIY(;{Uv?lh8UeFhoGfwN-YG<4M_?xBL{<{^6T3J&w4o%Sv zelk0M-$sd9=J|PF-k#pK<D{^<pNOr>>yj6a-=ChIZms)$Mc(IUXSXr&Ps&=w{!mOm z?#;!okJNjmOufR^#bmBNCa*rbP3^_JYipy`f33aNXvg9E;hgNB^Y#Cfb8l^#2s($^ zT3lcwlUtXlwp!(<Clk-iG>*3a$X;c-!;OFAvH!u%c0O&FFR<8#tWMOvS7LB;y870| z?)_y?-%Bjy{D1k{1$o~8g~dy}r~7?r*!Ay4yPxmNF8&7>H}oua?>}|k{(nwu#tzF@ z*VbzP{q@y2%QK@%Fy3jS+`ar88x|gK)OZ*3^<1pUkBq;+zRI!RnXyJwz;3bS&o`M# zPL!>V%;R`-W25rJH#_SptCsuCy^|pwVB2J5;<*21`N>JD*Lt<W*Ub@~BjB;P_V>3> zm;LQ6<BGCsy4Th1F5H}UR%X57zJh;$eooSlx9k7?g7J-bT*bj(-@ZA>fz~B&zf%6< z!oe4jAK9Iqg!hz-f02G0U;8!meXN40wKcEr1=Xwwhwtz1s+yUZiH5(qw{#a|WZfXo zBjeD24$~tGJSVFqNj*!f369AysQ#7%8dL1C5}cKAq&)cJ{(oQfZ|*K%U(Fl)!X*Em z&B^)p`?=@7yYmRN&VKv7s?)Ep8}4oRSKib%%Yd@_U8Hfv3XO{oSY&&p&8N*W&1O4w zDK<JipiNE2rXt{2k7Tmqvr|*O*?1%#NUhi|9lNh464V+i*|EL!^|ebIlil<6uSPvT z+AZF@?(+Wn`jx@U`_{^Ji|J1K`1ttkRUfyX1O?T+Z}0ExS2-A~sU5q&?Zw9`4&M(m zPF*|#8=_coZGM-JlW>VVY?SEV7S;aii{4NC6_;tn;kzTU;L3`?O+`<=g2U!to30tG z_V9DxNhc0pgNwU&mi_(p)u`k}z;~%#7c!4@2nMYTQWdwlyVJF#WD95<>iuDlWqxzD zT)V}-?qU~*52lk7W(RZ|Cn~#xmNBj^1I?m;_)xGtirr`a0v_KByDzVe-rmyu1k^xy zb8|EM5#QgRPV1{GDILmK>)gg8Xv^^O?ZwsM`ZxDhZ@-v2M~>}U^S9Y%xkkIT>384d z^1WdDqOrnOLViW_1(x^sEP1cIxV3e)j77nL-Qu5$$}eANkv7jeA)UWRF?w6h$4_2& z^W*na6wWlsoK%?XB%G&aQ}<`bmfYKB3C`(GPEJqm|Npn$=HHLU$Ii2X<{mkDzu0c~ zoUHcg`TY7_*RN~{UhX${N$BdZwpbf&&~b4&cXnLde9~@~X~Ba73w$np7Brtu$%<|R z5sT_?Yj~v1&b$&56H^mb^D%fMG2^MD^sEK!ocsU(tA4%CH2a#*sp<Oi0_6eM_ZB>K zTD;ZG)z$Ofp32^;iXfZHPbo9a^XI7tPo6tjKi&>>D8*YjP-R{6;)0{!9E-%=*W|hG z@c3T%n-OrVjaT|lV)nM{4jE0kMz>k_|NpleG$j0mKY0P)<qIr#x67ryyT5<`n_FA8 z7f2YTo>EyIzTPa(cp>L@;d65=gTJT?xHq%$E-8P1Z=KHE3oPLh!n0mH-_R+nzU%gt z1<_|`nYuPJ1tq_^zdzop?9B|R=|wfY*Vab={wpP$-{(X@S>I@)zM=MaS>%R<#;xm* z%T@ctRX&|+vfbU^Ok~SK&R@FQKk_?t3aLJMIz9f|k<-tMOXh;sxjrsUIX5RVY+cOD z9ryemF7uu3!oO!W-*QH#U%C%%tG`XL|M%l?3FpeV_a)~~>VA23b@eCEX_n>pYp1`e zHr%VQkaJnnysPpy6&HRvuV_?mw7A3Jd!hDq_EP`(c8eI98coC?>(ET1j23ck{~Wu& zE*8`*bnlZf+~oWA5vXSZT1=mOtY=-!EJ$G8*-_|xYkR(aJD+UP_Kk=0pfhroYqrII zyB3{)GJSq++J1wnTJ!3DWlGxBRA|Nao+hX11aEdFsDTzxg389LOCmR?1+9%T-Q30) zCA(!I=W@TfUKSVRrKGg-_y672(%Sm-Ywn(kkBhFXkB@)!=#k9&&nuVDo3t_cxYfGt z!4=TO(sL)NJm-_Mi2!YTSkb@k;nnbX(Y^N@P44jdUfBEpx&8l%9UUAuw`PYc1V*e6 z-hO|<-5=k6oH*gZ$<NQPae9i_@5B7|5si!&FJ9F2{kr@9ZqZo_q`NyiCxVVj{q*$o z-@N%JbzkiLes6NnQZLE1(=W6v`DqfcBzk)uX!K0^{uQlj=Z!$;>e+leBD^kk(gl|5 z8p2X9f3LL*ms;@P^+ZKyw#eOOYg<}cmYfO#t+ob@cY9CQTYBp2o46$ojZ8-6?_zeR zo^glw*vKg36t1#<u}S&=@2{$v*|lBU=AAq@S>1ot`or>i5?dB>cCEj!RQ=~i;cGik zM<-}gif8=}^^@xoKR-KblyN~}v1wL^<8-~)o~nwdH4phfqltD6cb9kyzr47(efjjg zx%WWxQQ_<3IKSU2TpXhF#Vw;rFaG|YFVge2=iHpswcBvF$U@Gvy0X>$G8PJ;V=0TD zpS!91^<|B@v+yHx(E65(228v%AHQGRTU`!X#&yw%)7N9(``7FDPXl#o-Y@)Tb7`r! zI%w6Y*Ho>YyL_C4W1jkCY%6-|1sdospLP4qu7rb4A%FW9@=BXUoL}WBFypLll}&8C z`|IoLr+;~QxjN>s3k8{(k)=lQ!&&qDC)(xfGGe3l`;<I5(6}$6Ek4G0g|l$j+9*}f zP;sd;s2Qoh|IeoQJ5!#B8P@%&h}@Df@uJk;LWaM7+?Sg7RDXM87*$+RvBSm9P3r4~ ze2#E?+XWIFhocvA?kcxku%qCi6KJ3%W_Q`y_m+D;o&lF&$5UPyuRNa?B?H=s)zQIm zk)hQ=@*aopg}w52H4(>prPKe|J<C1L#w+FV{@&hRJ?D%=bAOubc+qQq&%@)6(V=fn zg&rOqUw5sI+`R1dT~6PExh4x2O4s+_iMadX;^L(-JB#wReA>~@X6iG;;Nat*D=h>6 zJAXXLF7I>JyGWO!K+EAiGsDpN+q=8jS6^C!&Q8DaZekc$la<NCD=UK+v2S{O{K3Iy zRqts!b=CQ|w`Qxe^UIk;-3M)ysQ>rJ&GwCm{~U|JMT-`_nR3U>+{EMxmo=zk87QxN zZ&Pabi-QNa#q}h<e@bJ{Z&N$6{`ZNA%0@Xi3?8SSn$34>_63%FZuPtNYHDuF{O9NG ztxHZ$uHDQb9sV^e!|9LEzCWM5LDeg0BK_E^pnUMzIzPYf|DRjp=p-EU?Dx0Z`L6cb zbF9nto}OH3@p#|wcat5P**s?&rS2&TbrRllXx4?0|Ie~FT>kp{`rhh=)+O~%r-ncI z`Fy_r*VnI~2k{nu+P>fT*UuL-)8~1X^6PcLi#Jl|r#KWE8kRGO>&NYRJEvxzO{I;l zfAQxgD-*}}&#K?=o&F*B)z?>7Cudz<_4BFkzLJ-duB?y0{~};!8y{$3;>+z7!P#r# z_s6yI$!68;EWcOjerlR-_8oWW6-(=Oe_Z6+tzu<$YwEl_(~H%gPbl|C+|POM=HcS? z`V#Z3?Ca~M?ks+O>f~hg;92ut?LR-;e0{0F4wp`$b#b?Q^S|}=^i28ip&<PF)Bdw{ zKOVBbuCyt5&|t5ppXhs!&-ViN-5rI_poO8Jobl%V{`>hhMrmg>OtY>`xVN`jdTr+g zmh(SM3>=$<O&ku&AA8(ypI5u#>`de3*QYsWG+oaSmZ}GxMVxX%;G)C&D>A?SfJXed zI6S87#b(7>J&c-_vV6X1aP|9>xn|+(VlM5kuh$G+HO1d%hXzH1FY`EZ?(7HztyA{Z z4O-FxS}HerlZmzZ3uobNxwq9er=Q=Jw?S@_ltDs6{Jl48qqj?~f7_`(Z^OQm7N*BH zCLafF2shcc<lBo23!4k)AK?Z2@C(Bi`T9Q(v-16CXL=lJ=C{+R$_U)A8OQ(PZvFqi z^QP@K^WXn4l38!jqD4=h&#y0AyZ)|Q)r)Xup(~F-6&e#O*NxnV7i*k^ZIZlZEIEIC zSLy2~hxzTN2&?<u(Ej%6&6}H>yX9V73z+HD%2oL@>wk9riwla8`)YQ6-E~o6+7-FT zO(_$*M76uxTtU;)hYlU;neLF$^t|QQtPA^PrRFWljM*pgiwCsF=F)~lXHH(;udjqS zd_QRAJAIxpLn3ll$;z*Bzn{;quX?*^me}(5vY@TI?ecXuvafHv{NvTt)z|75ynMb1 z)Wh^!sa?D|^|YF(R>*`^p{t|j+wb{1t0?uNi6aHo7e^MXU9Q_~mU}DWd2&-FOKnEe zy_&ye?@mwGk3N6UTYqng?2T{R4GSN+ymr`qGUM8snI*5Uon6xUHp(_)Rr{we26Ikc z2x#OKR-3WKW1E?to*!uJD0*AY#Iv)_PwVgh^Jwbplv7hYxx{obT2)>s9{up4;I;ez zz4pD6)%~ORUM<wC;=e0bez$bG&4&Zb(~dgx+p6^2eCn8*w76X?IQfP7k@q(@AAb=9 z+AX^EtCa4Qqe-=5Uv`2P^nx~-#Z{UGMXj^5KH4q5op0+j&ER8Ic_uYS!kv9VJ*WFM zpL<^vFTFn_?^oUQD{&@Q-0!nLuK!Z{_}e~C-wppo{(ik4A69Yf(b4XwS5^jpleSoK zV!Hl((5V}*uC4}+r<7bcSjV}L^V?Y;t#vUwlm5#7`}6sH>h*Q8MQ?AJPA&^uacXhD zotD(RrT-rWuZb{RTz60B+V_yZzdv0Kk3V^CuJzLw7Z=CvjCprw=i2jf9~Xx1`xpIa zs_!KcvPP64?GuHwT%dJ(M%mYNvg^O!t6sn7_q*MhW$WkV^;}>Pd>vgIzCJE@=1awI z>tc6Ty_%l&8B|v6|NCwB#jmHP>+8FAi<!Q9xFlkK@9#T1i~YQWv%V}SSsk_(+z83G zt@%-KsJ~6a#oayHzRDqt-}u$SeY@Z9i#AF*k?_~}U;S&wYciHa9dZTdW*RU5dj7}! zHIbXEcCqZAxxCu0=!r+u(T&N+*W`zWv;Vz#KYo8*?3aIcvKIcgum1MNJo3ow7yF+_ z&-wez%sT1>XrPdxb#3(aDqRhS`4j*A{2Z;QTy^66#^Z9E`F6fyOsJRr<@@p1yuwFE zI4?2?{k{L|y!Ujy$oH~RD;E5}A}{;$($dY}iqG4A_jq<@Ca9|8Tt9nH<!3dP?j>#u zPQ2g$UvG8TTBAj4<M;3TDwkoDcV~xU@v}3AnTo1jQzn2~lwUUluX$)KHRIz^@%R(( z?(Sau-FJIiTe65=%ndHCl`%UviAqhn<!o>BT5fLNrKR4{>*FtPOghSS@w?n|=l^V( zH(V5WYuEpH*e);hPwf7$@`(GvUus?c^JQ~P-WUGjenjp63k6f1TDc<6_t*Jx9$7fw z@{94!h0g6yetdjf^zBXL&&U1tYtB#2THGk~Yv1bmr>`h{OgH}9zxT)al#la|n&>z( zulb|9K}+C0Z#MWoDM;j#oY_CjJpeksoSk28ix}v@9ndo6_hOIL!_`b2k62ZhCLCyJ ziN3V6IQ{kQ(~x6>HMw6Xmj8YH>$1Onr`(IH3m9x~fTm5fBb@oSWbJ5cQ&{3Z-|nHi zvzv*A1OK+Hhz7a5tITVwc9_QRs|ibRSRnVsH?mhUGtz;-O5UQtq3++$bZrx7=l(BW z3mzV7ogF7E)v;hbC+|5AnOO_j?|n60(0<qSjAy(u4@E5^@UX;}H@BXgoGh&1)+du$ zE1A84-%0r2f6gB-7Wb!oes=cSf9<F(D@tBn(Y!IA_gg<D4F^=c57e20m-$Tm`}=$J z>dI#`(?LT7b(@Ut>os3!`TyO%^wpF-KcCI!EQe028{WSsyRHw_2r?Qka03LsF#Z1a zc5>$BWvUjSZGE4foD}||$K{aWwCH%ky*-tmj*7=e{9l%Eu<6obcYZk`%EK8P*kGbY z>%+g_?@wP`?7r4CWL->TT*X7y`Rk6)*YnG8TC}_H-5tx$jt<a%me=>qAVU}L{l9l_ zrKlf^8dfY54}5!jJM~}_>$N^-CnwO#yh*yz+Z2R$d=BIE-ElPi=clKj>898B)6UJg z$rX5Ff+90N_z)I&0HPX5vfEZ_6?}aas;%<y(o*khrLV89R{#3?y8l(vAHR=s_<B6z z1JzvT=2#~GU6ypT>(Z9Y;QIajYxpUs0niEog<ejbs4X7b^6qB6)k;4%$0+B<29s^h zpWh11n$Ys_-QC@(x3*+*?tgh<VY7&K*qNBwd?*ty>rdXA%D^Bn0dy_^g+WrGup$5c zzT4;aPS*-O)qLu~ET;@7qwm&6MnRwr6o12n%|X+UoZQ^p>y|g)rDWF>S|lym<>2Gf zv*+_U>!N38Bwyc3JvC)w+1p!7e_1g-Y-&+cDW0wuvqJ&2y!OS5jBK}^MNgMhety<i z;2)_>QKJ?mARQREU0hvH_Q_hWkp;DQK+`-YXPIU*ygyOxt#0y=Z(Drr*QsY_7%C^a zZB9G8q~_<Rd%LAeC@J01Dg}<L#<#b(pKfC17UGGk`<bd4y)7qT_MObnEow_XWYm1Q z=)S4)^Rt#n+o~@Unpn9%IZ(7@4K3R|SasmyVt3Hq5&suI&lsQgSRJ-DX0KaRwp&IM zdwI!`4#A=~Hw?4W*2U~xQvLniB+Xzoeyy2J6ec<3gy3+B>EgwUMs<HGENg#lG5vXv zU4BYON5>TI<{GwzoN_h{pfdyZ{QY)YNLV=etRAE?IN9vA4A~G$-7{g+fhn57pdq1a zM>cFQczJ*S{wL?>+dn;|FyAqwsh$4-EJJQSJw;PlH+tKb4YM*)(h-F&P|-E0|5tN! zXL0%=ee04J3QN7FHl1c>bP~34=$a4ON*%c=#nZ`ks#fR{$7VJ&D+5vL6-5k<|2b=Z zy<Gn3=kxjMf4YzLN_(H3WvciIvJLjpa^0960cJTjCIp1;tttiWsXVLaL(%vfYEj5h z);Lu={9aid=tyY(GO_62>Lv%puGg!dpJyArE%)}c0MCLZW*0AT)kO`WQ9*2nslh_0 zR<29Sd}k|&6>cka5}vcuGbLron>#y=7w+<!sBBXj#*4KlB`L(Ab{E{9m7zy043 zyZ?Vax4fOE8SHjzYqq$~?efz3Eou@4_oU`5;7>X|O_$dysEfk1gp@HROk;g^e!jkS z`8%H*N{yUp<+Cra7~9XZt=^V%dz<b;?~99EmzKW12Flil&r!B#1+`#VBHH-kMFwb7 z=bQWc?GwF0Jz%rkTT7<u{z{Q=QQL7~U%^ACn;R0HotDS!Eb=@(O?PR+!6v<u<*ZaJ z+7-BEY^y>*0kGVEzTXYEudl8?{rP-8|C8LGM{jZZ7Q8fD6T3TXnoeX<@b<K`vpj!( zdK$ZnDVG{)44ONcd=q|ud%G#&VAJercXt#fuZ-NBwjlSY{&nw+rta;j-{0K@^$0sV zJ3U`St&6d|$Zn>ibLOb_MJ}j*Dmdl9eAX{_eu7SHIo>DBdHPE6bN#(vCV>`g&7Uq8 zkgaTT@agTZr}g)rm}6P|<i^Hi&bh_U&S-)TIY~O&wX??b78R?TAF~hatNoqw^3u|x zXJ=-%EVcddp!w7J`hUTno}Yi8f13BjSAkg%mfrq;(Ov%Jv$M1FU&U=qa$Om|eqPFn z2?xEymr^!4j#6GXtY=vlw^vI$Y|VtV(cABBX-S_~=@zv$>*?y$r7vF#&3bV3_V26V z@tz?eQ(WBL)ninPpPdQXU6!jEzi*HDdY^3SwZ|K;h=A5qu8G?lr5C$vO2JK^nMR(U zpPgNrb92+mol_R<5?ja_x9=`!`=V>N7-)PVe^=1KCf22Hy;4DIA`JD{H+)0!8fC@D zJ)s-h^XG#`N&Dn%t1hdanxd)fJKJn3XvpC8r7xm_PQpPi4R7qN-mVk7E9Bf9%i_zT z-D0|0p{qhBD!Fzox#YEjiVgLKl?NJ`*`ItqZ$JI-@9+1ofSSsnQ901)=1bKT-yJ|l zHB7iOXH(73qR5>^OOG5qdiRQ%jZF;bz^eNHzwh7OBeRzZxd>Ke#fX6JjZS%eZEewq z2M1^GYHMlnxVx)#Y2DvndU3sBnw$c&CQO<jURVF_j%DQLwBDMJN5!|7o}a2ceTrtV z8|d7w$W1994_(a!UzmhiW+Ii_BuON=KX`PsdsFsxy_-9Wm(Q`Q{k84Vsj1rDYooTR zL~qL}yJd8pmC;E!#-Zfaqbn<eHx)j1ySb;bc#<w?eg<@E(F^;-hYrn&YoqMc71U6k z&17h3xT*Yo+|AAD{a?>7Ic9v`Mj5o=&ZhFyjW_2?wzF`6_Tw!$zq9!Hng=bq(c4Zu zJv}}DwTP6I7U*D0clp{7xymPkC+FGjK6q7wk{Nn%^@|`pydJ!{xf!(j<z&D8KMngo zADWLGJ9f|P?Y-*vQ<u-Li!w0)tvhh|713~kMgD$6wEq6w+h#X6Cb!F26e!%B`t;OP zZ!S?S6@I%P3qYfvpye|5w^>h9GNy}g9f<WO{=t)zlZzf5;j}D!GegF%Cc<yN-P|{e zx<xdVo}QXInM+jb$NytZ8Lcg9KVF`-D}6Pk=JQ$ePj9#1KlSnP@%KAUUAPbcTJWDS z!|B_bn`=!bt%=+W+C-$9e5_}ZqB9$4LxM`}uP>l=*2}HaBB@q-H0*SUiJ23#zb+QE zQ#^cq+|>R5etGM~?ot7jUd7MPoxHg@eQiMt=w{HQ<mC4i2SMl0O!l|a1TDd{sr)oU zzmIPnx4^6iRx5w=nmRmem#>>p`}^C;MrL*uHML`ZyDtb*t!CsXYTU5FKr?7b2k0Dw zE^&Ro04D|;{uVWs1HQXTJK6c=rW|hP2aS?E{qgbfr{nVVED!V|jHuQ=c@W(wV_D?U z$ixadtTt#xfFdV9|M#~|J9gzVg0>L;j6XP4JN(J^`*oA=*Z;rE6<|^RZcfaO0!L7I zUc7j*=<BP{on>!lfr9(dqep-8nb&YoEpQ4v6;xDQE-m-h2MzM4oS5JUT1+z2IDHx@ zEp5xW>C!Az^!%J|<>zNptKaQBzI64aW8qBy*~L<4##YNWG&3+TFnGH9xvX<aXaWGc C9imhK literal 0 HcmV?d00001 diff --git a/docs/report.md b/docs/report.md index 6f9b068..de1fcc0 100644 --- a/docs/report.md +++ b/docs/report.md @@ -3,70 +3,79 @@ Name: Name: -## Question 1: What is the nature of the VHDL process that describes the register bank? Its sensitivity list? Did the functional simulation validate the module? Justify +## Operative Unit +### Question 1: What is the nature of the VHDL process that describes the register bank? Its sensitivity list? Did the functional simulation validate the module? Justify -## Question 2: Give the results obtained +### Question 2: Give the results obtained -## Question 3: What type and quantification did you use for the internal signals? Justify. +### Question 3: What type and quantification did you use for the internal signals? Justify. -## Question 4: How many processes are used and what are their natures? Sensitivity list? Did the functional simulation validate the module? Justify +### Question 4: How many processes are used and what are their natures? Sensitivity list? Did the functional simulation validate the module? Justify -## Question 5: Give the results obtained +### Question 5: Give the results obtained -## Question 6: Did the functional simulation validate the module? Justify +### Question 6: Did the functional simulation validate the module? Justify -## Question 7: Give and comment on the results obtained +### Question 7: Give and comment on the results obtained -## Question 8: Give the architecture you propose for the address generator +## Address Generator +### Question 8: Give the architecture you propose for the address generator -## Question 9: Did the functional simulation validate the module? Justify +This diagram is to be completed in order to then complete the VHDL file `addGenUnit.vhd`. To do this, you can use the file `sobel-address-generator-student.drawio` available in the git repository, it is the file `docs/img/sobel-address-generator-student.drawio` with the tool [https://app.diagrams.net/](https://app.diagrams.net/). Then update the file `sobel-address-generator-student.png` by exporting the diagram `sobel-address-generator-student.drawio` previously updated. + -## Question 10: Give the results obtained +### Question 9: Did the functional simulation validate the module? Justify -## Question 11: Complete the state machine diagram +### Question 10: Give the results obtained -!!! info - This diagram is to be completed in order to then complete the VHDL file `automate.vhd`. To do this, you can use the file `automate.drawio` available in the git repository, it is the file `docs/img/automate.drawio` with the tool [https://app.diagrams.net/](https://app.diagrams.net/). Then update the file `automate.png` by exporting the diagram `automate.drawio` previously updated. +## Finite State Machine (FSM) + +### Question 11: Complete the state machine diagram + + +This diagram is to be completed in order to then complete the VHDL file `automate.vhd`. To do this, you can use the file `sobel-FSM.drawio` available in the git repository, it is the file `docs/img/sobel-FSM.drawio` with the tool [https://app.diagrams.net/](https://app.diagrams.net/). Then update the file `sobel-FSM.png` by exporting the diagram `sobel-FSM.drawio` previously updated.  -## Question 12: How many processes are used to describe the FSM, and what are their natures? Their sensitivity lists? Did the functional simulation validate the module? Justify +### Question 12: How many processes are used to describe the FSM, and what are their natures? Their sensitivity lists? Did the functional simulation validate the module? Justify -## Question 13: Give the results obtained +### Question 13: Give the results obtained +## Integration of the processor and prototyping -## Question 14: Did the functional simulation validate the module? Justify +### Question 14: Did the functional simulation validate the module? Justify -## Question 15: Give and comment on the results obtained. What is the percentage of resources used by the Sobel processor compared to those available on the target Artix 7 FPGA `XC7A100T-CSG324-1`. Comment +### Question 15: Give and comment on the results obtained. What is the percentage of resources used by the Sobel processor compared to those available on the target Artix 7 FPGA `XC7A100T-CSG324-1`. Comment -## Question 16: Give and comment on the results obtained. +### Question 16: Give and comment on the results obtained. -## Question 17: Is the prototyping and demonstration on the board conclusive? +### Question 17: Is the prototyping and demonstration on the board conclusive? +## Performance analysis -## Question 18: Identify the maximum clock frequency achievable on this FPGA +### Question 18: Identify the maximum clock frequency achievable on this FPGA -## Question 19: How many clock cycles are needed to process a pixel? +### Question 19: How many clock cycles are needed to process a pixel? -## Question 20: How many clock cycles are needed to process a 396x396 definition image +### Question 20: How many clock cycles are needed to process a 396x396 definition image -## Question 21: How many 396x396 definition images can this processor process per second? +### Question 21: How many 396x396 definition images can this processor process per second? diff --git a/src/DualPortRamGeneric.vhd b/src/DualPortRamGeneric.vhd index ba0da50..b66e36e 100644 --- a/src/DualPortRamGeneric.vhd +++ b/src/DualPortRamGeneric.vhd @@ -9,56 +9,56 @@ use ieee.numeric_std.all; entity DualPortRamGeneric is generic( - G_MemoryWidth : integer; - G_MemoryDepth : integer; - G_AddressWidth : integer - ); - port ( - I_clk : in std_logic; - I_ena : in std_logic; - I_enb : in std_logic; - I_wea : in std_logic; - I_addra : in std_logic_vector(G_AddressWidth-1 downto 0); - I_addrb : in std_logic_vector(G_AddressWidth-1 downto 0); - I_dina : in std_logic_vector(G_MemoryWidth-1 downto 0); - O_douta : out std_logic_vector(G_MemoryWidth-1 downto 0); - O_doutb : out std_logic_vector(G_MemoryWidth-1 downto 0) - ); + G_MemoryWidth : integer; + G_MemoryDepth : integer; + G_AddressWidth : integer + ); + port ( + I_clk : in std_logic; + I_ena : in std_logic; + I_enb : in std_logic; + I_wea : in std_logic; + I_addra : in std_logic_vector(G_AddressWidth-1 downto 0); + I_addrb : in std_logic_vector(G_AddressWidth-1 downto 0); + I_dina : in std_logic_vector(G_MemoryWidth-1 downto 0); + O_douta : out std_logic_vector(G_MemoryWidth-1 downto 0); + O_doutb : out std_logic_vector(G_MemoryWidth-1 downto 0) + ); end DualPortRamGeneric; architecture rtl of DualPortRamGeneric is - type ram_type is array (0 to G_MemoryDepth-1) of std_logic_vector(G_MemoryWidth-1 downto 0); - signal RAM : ram_type := (others => (others => '1')); -- attention initialisation � '1' - signal read_addra : std_logic_vector(G_AddressWidth-1 downto 0); - signal read_addrb : std_logic_vector(G_AddressWidth-1 downto 0); + type ram_type is array (0 to G_MemoryDepth-1) of std_logic_vector(G_MemoryWidth-1 downto 0); + signal RAM : ram_type := (others => (others => '1')); -- attention initialisation � '1' + signal read_addra : std_logic_vector(G_AddressWidth-1 downto 0); + signal read_addrb : std_logic_vector(G_AddressWidth-1 downto 0); begin -- pragma synthesis_off - assert (not( G_MemoryDepth > 2**G_AddressWidth)) - report "bad value for G_MemoryDepth or G_AddressWidth" - severity error; + assert (not(G_MemoryDepth > 2**G_AddressWidth)) + report "bad value for G_MemoryDepth or G_AddressWidth" + severity error; -- pragma synthesis_on - process (I_clk) - begin - if (I_clk'event and I_clk = '1') then - if (I_ena = '1') then - if (I_wea = '1') then - RAM(to_integer(unsigned(I_addra))) <= I_dina; - end if; - read_addra <= I_addra; - end if; - if (I_enb = '1') then - read_addrb <= I_addrb; - end if; - end if; - end process; - - O_douta <= RAM(to_integer(unsigned(read_addra))); - O_doutb <= RAM(to_integer(unsigned(read_addrb))); + process (I_clk) + begin + if (I_clk'event and I_clk = '1') then + if (I_ena = '1') then + if (I_wea = '1') then + RAM(to_integer(unsigned(I_addra))) <= I_dina; + end if; + read_addra <= I_addra; + end if; + if (I_enb = '1') then + read_addrb <= I_addrb; + end if; + end if; + end process; + + O_douta <= RAM(to_integer(unsigned(read_addra))); + O_doutb <= RAM(to_integer(unsigned(read_addrb))); end rtl; @@ -73,15 +73,15 @@ end rtl; -- G_AddressWidth : Integer -- ); --port ( --- I_clk : in std_logic; --- I_ena : in std_logic; --- I_enb : in std_logic; --- I_wea : in std_logic; --- I_addra : in std_logic_vector(G_AddressWidth-1 downto 0); --- I_addrb : in std_logic_vector(G_AddressWidth-1 downto 0); --- I_dina : in std_logic_vector(G_MemoryWidth-1 downto 0); --- O_douta : out std_logic_vector(G_MemoryWidth-1 downto 0); --- O_doutb : out std_logic_vector(G_MemoryWidth-1 downto 0) +-- I_clk : in std_logic; +-- I_ena : in std_logic; +-- I_enb : in std_logic; +-- I_wea : in std_logic; +-- I_addra : in std_logic_vector(G_AddressWidth-1 downto 0); +-- I_addrb : in std_logic_vector(G_AddressWidth-1 downto 0); +-- I_dina : in std_logic_vector(G_MemoryWidth-1 downto 0); +-- O_douta : out std_logic_vector(G_MemoryWidth-1 downto 0); +-- O_doutb : out std_logic_vector(G_MemoryWidth-1 downto 0) -- ); --end component; @@ -94,17 +94,12 @@ end rtl; -- ) -- port map ( -- I_clk => clk, --- I_ena => ena, --- I_enb => enb, --- I_wea => wea, +-- I_ena => ena, +-- I_enb => enb, +-- I_wea => wea, -- I_addra => addra, -- I_addrb => addrb, --- I_dina => dina, +-- I_dina => dina, -- O_douta => douta, -- O_doutb => doutb -- ); - - - - - diff --git a/src/SinglePortROMFileInitGeneric.vhd b/src/SinglePortROMFileInitGeneric.vhd index 6c6ff09..2393b18 100644 --- a/src/SinglePortROMFileInitGeneric.vhd +++ b/src/SinglePortROMFileInitGeneric.vhd @@ -1,67 +1,67 @@ ------------------------------------------------------------------------------- --- Generic Single Port ROM initialized with a specified file +-- Generic Single Port ROM initialized with a specified file -- -Library ieee; -Use ieee.std_logic_1164.All; -Use ieee.numeric_std.All; -Use std.textio.All; +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use std.textio.all; -Entity SinglePortROMFileInitGeneric Is - Generic ( - G_MemoryWidth : Integer; - G_MemoryDepth : Integer; - G_AddressWidth : Integer; - G_InitFileName : String - ); - Port ( - I_clk : In std_logic; - I_en : In std_logic; - I_addr : In std_logic_vector(G_AddressWidth - 1 Downto 0); - O_dout : Out std_logic_vector(G_MemoryWidth - 1 Downto 0) - ); -End SinglePortROMFileInitGeneric; +entity SinglePortROMFileInitGeneric is + generic ( + G_MemoryWidth : integer; + G_MemoryDepth : integer; + G_AddressWidth : integer; + G_InitFileName : string + ); + port ( + I_clk : in std_logic; + I_en : in std_logic; + I_addr : in std_logic_vector(G_AddressWidth - 1 downto 0); + O_dout : out std_logic_vector(G_MemoryWidth - 1 downto 0) + ); +end SinglePortROMFileInitGeneric; -Architecture rtl Of SinglePortROMFileInitGeneric Is +architecture rtl of SinglePortROMFileInitGeneric is -type ramtype is array (G_MemoryDepth-1 downto 0) of std_logic_vector (G_MemoryWidth-1 downto 0); -- 2D Array Declaration for RAM signal + type ramtype is array (G_MemoryDepth-1 downto 0) of std_logic_vector (G_MemoryWidth-1 downto 0); -- 2D Array Declaration for RAM signal -impure function initramfromfile (ramfilename : in string) return ramtype is -file ramfile : text is in ramfilename; -variable ramfileline : line; -variable ram_name : ramtype; -variable bitvec : bit_vector(G_MemoryWidth-1 downto 0); -begin - for i in ramtype'range loop - readline (ramfile, ramfileline); - exit when endfile (ramfile); - read (ramfileline, bitvec); - ram_name(i) := to_stdlogicvector(bitvec); - end loop; - return ram_name; -end function; + impure function initramfromfile (ramfilename : in string) return ramtype is + file ramfile : text is in ramfilename; + variable ramfileline : line; + variable ram_name : ramtype; + variable bitvec : bit_vector(G_MemoryWidth-1 downto 0); + begin + for i in ramtype'range loop + readline (ramfile, ramfileline); + exit when endfile (ramfile); + read (ramfileline, bitvec); + ram_name(i) := to_stdlogicvector(bitvec); + end loop; + return ram_name; + end function; -Signal RAM : RamType := InitRamFromFile(G_InitFileName); + signal RAM : RamType := InitRamFromFile(G_InitFileName); -Begin +begin -- pragma synthesis_off - assert (not( G_MemoryDepth > 2**G_AddressWidth)) - report "bad value for G_MemoryDepth or G_AddressWidth" - severity error; + assert (not(G_MemoryDepth > 2**G_AddressWidth)) + report "bad value for G_MemoryDepth or G_AddressWidth" + severity error; -- pragma synthesis_on - Process (I_clk) - Begin - If I_clk'EVENT and I_clk = '1' Then - If I_en = '1' Then - O_dout <= RAM(to_integer(unsigned(I_addr))); ---- uncomment to implement on BLOCK RAM - End If; - End If; - End Process; - - -- O_dout <= RAM(to_integer(unsigned(I_addr))); ---- uncomment to implement on LUT -End rtl; + process (I_clk) + begin + if I_clk'event and I_clk = '1' then + if I_en = '1' then + O_dout <= RAM(to_integer(unsigned(I_addr))); ---- uncomment to implement on BLOCK RAM + end if; + end if; + end process; + +-- O_dout <= RAM(to_integer(unsigned(I_addr))); ---- uncomment to implement on LUT +end rtl; -- The following is an instantiation template @@ -73,13 +73,13 @@ End rtl; -- G_MemoryWidth : Integer; -- G_MemoryDepth : Integer; -- G_AddressWidth : Integer; --- G_InitFileName : String +-- G_InitFileName : String -- ); --port ( --- I_clk : In std_logic; --- I_en : In std_logic; --- I_addr : In std_logic_vector(G_AddressWidth - 1 Downto 0); --- O_dout : Out std_logic_vector(G_MemoryWidth - 1 Downto 0) +-- I_clk : In std_logic; +-- I_en : In std_logic; +-- I_addr : In std_logic_vector(G_AddressWidth - 1 Downto 0); +-- O_dout : Out std_logic_vector(G_MemoryWidth - 1 Downto 0) -- ); --end component; @@ -89,7 +89,7 @@ End rtl; -- G_MemoryWidth => 8, -- G_MemoryDepth => 10000, -- G_AddressWidth => 14, --- G_InitFileName => "SobelMemIn.txt" +-- G_InitFileName => "SobelMemIn.txt" -- ) -- port map ( -- I_clk => clk, diff --git a/src/sobelProc.vhd b/src/sobelProc.vhd index 47d8591..e801a32 100644 --- a/src/sobelProc.vhd +++ b/src/sobelProc.vhd @@ -1,156 +1,154 @@ library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.NUMERIC_STD.ALL; - - -entity sobelProc is - Port ( clk : in STD_LOGIC; - reset : in STD_LOGIC; - I_go : in STD_LOGIC; - -- interface avec la mémoire IN (lecture) - O_enM_R : out STD_LOGIC; - O_ADR_R : out STD_LOGIC_VECTOR (13 downto 0); - I_pixel : in STD_LOGIC_VECTOR (7 downto 0); -- Pixel from memory IN - -- interface avec la mémoire OUT (écriture) - O_enM_W : out STD_LOGIC; - O_ADR_W : out STD_LOGIC_VECTOR (13 downto 0); - O_pixEdge : out STD_LOGIC; -- Edge to memory OUT - -- signal de commande vers le contrôleur VGA - O_StartDisplay : out STD_LOGIC - ); -end sobelProc; - - -architecture Behavioral of sobelProc is +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + + +entity sobelProc is + port (I_clk : in std_logic; + I_rst : in std_logic; + I_go : in std_logic; + -- interface avec la mémoire IN (lecture) + O_enM_R : out std_logic; + O_ADR_R : out std_logic_vector (13 downto 0); + I_pixel : in std_logic_vector (7 downto 0); -- Pixel from memory IN + -- interface avec la mémoire OUT (écriture) + O_enM_W : out std_logic; + O_ADR_W : out std_logic_vector (13 downto 0); + O_pixEdge : out std_logic; -- Edge to memory OUT + -- signal de commande vers le contrôleur VGA + O_StartDisplay : out std_logic + ); +end sobelProc; + + +architecture Behavioral of sobelProc is -- déclaration des sous-composants - -- unité opérative - component operativeUnit is - port (clk,reset :in STD_LOGIC; - I_pixel : in STD_LOGIC_VECTOR (7 downto 0); -- Pixel from the memory - I_ldPix11 : in STD_LOGIC; - I_ldPix21 : in STD_LOGIC; - I_ldPix31 : in STD_LOGIC; - I_shReg : in STD_LOGIC; - I_ldPixEdge : in STD_LOGIC; - O_pixEdge : out STD_LOGIC - ); - end component operativeUnit; - - -- générateur d'adresses - component adrgenUnit is - port ( clk,reset : in STD_LOGIC; - I_clr_PtrLine : in STD_LOGIC; - I_inc_PtrLine : in STD_LOGIC; - I_clr_PtrCol : in STD_LOGIC; - I_inc_PtrCol : in STD_LOGIC; - I_selPix : in STD_LOGIC_VECTOR (1 downto 0); - O_EndImage : out STD_LOGIC; - O_NewLine : out STD_LOGIC; - O_ADR_R : out STD_LOGIC_VECTOR (13 downto 0); - O_ADR_W : out STD_LOGIC_VECTOR (13 downto 0) - ); - end component adrgenUnit; - - -- automate - component automate is - Port (clk,reset : in STD_LOGIC; - I_go : in STD_LOGIC; - I_EndImage : in STD_LOGIC; - I_NewLine : in STD_LOGIC; - -- signaux de commandes vers l'unité opérative - O_ldPix11 : out STD_LOGIC; - O_ldPix21 : out STD_LOGIC; - O_ldPix31 : out STD_LOGIC; - O_shReg : out STD_LOGIC; - O_ldPixEdge : out STD_LOGIC; - -- signaux de commandes vers le générateur d'adresses - O_clr_PtrLine : out STD_LOGIC; - O_inc_PtrLine : out STD_LOGIC; - O_clr_PtrCol : out STD_LOGIC; - O_inc_PtrCol : out STD_LOGIC; - O_selPix : out STD_LOGIC_VECTOR (1 downto 0); - -- signaux de commandes vers les mémoires - O_enM_R : out STD_LOGIC; - O_enM_W : out STD_LOGIC; - -- signal de commande vers le contrôleur VGA - O_StartDisplay : out STD_LOGIC - ); - end component automate; - + -- unité opérative + component operativeUnit is + port (I_clk : in std_logic; + I_pixel : in std_logic_vector (7 downto 0); -- Pixel from the memory + I_ldPix11 : in std_logic; + I_ldPix21 : in std_logic; + I_ldPix31 : in std_logic; + I_shReg : in std_logic; + I_ldPixEdge : in std_logic; + O_pixEdge : out std_logic + ); + end component operativeUnit; + + -- générateur d'adresses + component adrgenUnit is + port (I_clk : in std_logic; + I_clr_PtrLine : in std_logic; + I_inc_PtrLine : in std_logic; + I_clr_PtrCol : in std_logic; + I_inc_PtrCol : in std_logic; + I_selPix : in std_logic_vector (1 downto 0); + O_EndImage : out std_logic; + O_NewLine : out std_logic; + O_ADR_R : out std_logic_vector (13 downto 0); + O_ADR_W : out std_logic_vector (13 downto 0) + ); + end component adrgenUnit; + + -- automate + component automate is + port (I_clk : in std_logic; + I_rst : in std_logic; + I_go : in std_logic; + I_EndImage : in std_logic; + I_NewLine : in std_logic; + -- signaux de commandes vers l'unité opérative + O_ldPix11 : out std_logic; + O_ldPix21 : out std_logic; + O_ldPix31 : out std_logic; + O_shReg : out std_logic; + O_ldPixEdge : out std_logic; + -- signaux de commandes vers le générateur d'adresses + O_clr_PtrLine : out std_logic; + O_inc_PtrLine : out std_logic; + O_clr_PtrCol : out std_logic; + O_inc_PtrCol : out std_logic; + O_selPix : out std_logic_vector (1 downto 0); + -- signaux de commandes vers les mémoires + O_enM_R : out std_logic; + O_enM_W : out std_logic; + -- signal de commande vers le contrôleur VGA + O_StartDisplay : out std_logic + ); + end component automate; + -- déclaration des signaux internes -signal S_EndImage : STD_LOGIC; -signal S_NewLine : STD_LOGIC; -signal S_ldPix11 : STD_LOGIC; -signal S_ldPix21 : STD_LOGIC; -signal S_ldPix31 : STD_LOGIC; -signal S_shReg : STD_LOGIC; -signal S_ldPixEdge : STD_LOGIC; -signal S_clr_PtrLine : STD_LOGIC; -signal S_inc_PtrLine : STD_LOGIC; -signal S_clr_PtrCol : STD_LOGIC; -signal S_inc_PtrCol : STD_LOGIC; -signal S_selPix : STD_LOGIC_VECTOR (1 downto 0); - + signal S_EndImage : std_logic; + signal S_NewLine : std_logic; + signal S_ldPix11 : std_logic; + signal S_ldPix21 : std_logic; + signal S_ldPix31 : std_logic; + signal S_shReg : std_logic; + signal S_ldPixEdge : std_logic; + signal S_clr_PtrLine : std_logic; + signal S_inc_PtrLine : std_logic; + signal S_clr_PtrCol : std_logic; + signal S_inc_PtrCol : std_logic; + signal S_selPix : std_logic_vector (1 downto 0); + begin -- instanciation des sous-composants et établissement des interconnexions - - -- instanciation de l'unité opérative - operativeUnit_1 : entity work.operativeUnit - port map ( - clk => clk, - reset => reset, - I_pixel => I_pixel, - I_ldPix11 => S_ldPix11, - I_ldPix21 => S_ldPix21, - I_ldPix31 => S_ldPix31, - I_shReg => S_shReg, - I_ldPixEdge => S_ldPixEdge, - O_pixEdge => O_pixEdge - ); - - -- instanciation du générateur d'adresses - adrgenUnit_1 : entity work.adrgenUnit - port map ( - clk => clk, - reset => reset, - I_clr_PtrLine => S_clr_PtrLine, - I_inc_PtrLine => S_inc_PtrLine, - I_clr_PtrCol => S_clr_PtrCol, - I_inc_PtrCol => S_inc_PtrCol, - I_selPix => S_selPix, - O_EndImage => S_EndImage, - O_NewLine => S_NewLine, - O_ADR_R => O_ADR_R, - O_ADR_W => O_ADR_W - ); - - -- instanciation de l'automate - automate_1 : entity work.automate - port map ( - clk => clk, - reset => reset, - I_go => I_go, - I_EndImage => S_EndImage, - I_NewLine => S_NewLine, - O_ldPix11 => S_ldPix11, - O_ldPix21 => S_ldPix21, - O_ldPix31 => S_ldPix31, - O_shReg => S_shReg, - O_ldPixEdge => S_ldPixEdge, - O_clr_PtrLine => S_clr_PtrLine, - O_inc_PtrLine => S_inc_PtrLine, - O_clr_PtrCol => S_clr_PtrCol, - O_inc_PtrCol => S_inc_PtrCol, - O_selPix => S_selPix, - O_enM_R => O_enM_R, - O_enM_W => O_enM_W, - O_StartDisplay => O_StartDisplay - ); - -end Behavioral; + -- instanciation de l'unité opérative + operativeUnit_1 : entity work.operativeUnit + port map ( + I_clk => I_clk, + I_pixel => I_pixel, + I_ldPix11 => S_ldPix11, + I_ldPix21 => S_ldPix21, + I_ldPix31 => S_ldPix31, + I_shReg => S_shReg, + I_ldPixEdge => S_ldPixEdge, + O_pixEdge => O_pixEdge + ); + + -- instanciation du générateur d'adresses + adrgenUnit_1 : entity work.adrgenUnit + port map ( + I_clk => I_clk, + I_clr_PtrLine => S_clr_PtrLine, + I_inc_PtrLine => S_inc_PtrLine, + I_clr_PtrCol => S_clr_PtrCol, + I_inc_PtrCol => S_inc_PtrCol, + I_selPix => S_selPix, + O_EndImage => S_EndImage, + O_NewLine => S_NewLine, + O_ADR_R => O_ADR_R, + O_ADR_W => O_ADR_W + ); + + -- instanciation de l'automate + automate_1 : entity work.automate + port map ( + I_clk => I_clk, + I_rst => I_rst, + I_go => I_go, + I_EndImage => S_EndImage, + I_NewLine => S_NewLine, + O_ldPix11 => S_ldPix11, + O_ldPix21 => S_ldPix21, + O_ldPix31 => S_ldPix31, + O_shReg => S_shReg, + O_ldPixEdge => S_ldPixEdge, + O_clr_PtrLine => S_clr_PtrLine, + O_inc_PtrLine => S_inc_PtrLine, + O_clr_PtrCol => S_clr_PtrCol, + O_inc_PtrCol => S_inc_PtrCol, + O_selPix => S_selPix, + O_enM_R => O_enM_R, + O_enM_W => O_enM_W, + O_StartDisplay => O_StartDisplay + ); + +end Behavioral; diff --git a/src/sobelSys.vhd b/src/sobelSys.vhd index b71dc88..6cfad74 100644 --- a/src/sobelSys.vhd +++ b/src/sobelSys.vhd @@ -1,216 +1,213 @@ library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.NUMERIC_STD.ALL; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; -entity sobelSys is - Port ( clk_i : in STD_LOGIC; - reset_i : in STD_LOGIC; - go_i : in STD_LOGIC; - -- VGA Output Signals - vga_hs_o : out STD_LOGIC; -- HSYNC OUT - vga_vs_o : out STD_LOGIC; -- VSYNC OUT - vga_red_o : out STD_LOGIC_VECTOR (3 downto 0); -- Red signal going to the VGA interface - vga_green_o : out STD_LOGIC_VECTOR (3 downto 0); -- Green signal going to the VGA interface - vga_blue_o : out STD_LOGIC_VECTOR (3 downto 0) -- Blue signal going to the VGA interface - ); -end sobelSys; +entity sobelSys is + port (I_clk : in std_logic; + I_rst : in std_logic; + I_go : in std_logic; + -- VGA Output Signals + O_vga_hs : out std_logic; -- HSYNC OUT + O_vga_vs : out std_logic; -- VSYNC OUT + O_vga_red : out std_logic_vector (3 downto 0); -- Red signal going to the VGA interface + O_vga_green : out std_logic_vector (3 downto 0); -- Green signal going to the VGA interface + O_vga_blue : out std_logic_vector (3 downto 0) -- Blue signal going to the VGA interface + ); +end sobelSys; -architecture Behavioral of sobelSys is +architecture Behavioral of sobelSys is -- déclaration des sous-composants - -- processeur Sobel - component sobelProc is - Port ( clk,reset : in STD_LOGIC; - I_go : in STD_LOGIC; - -- interface avec la mémoire IN (lecture) - O_enM_R : out STD_LOGIC; - O_ADR_R : out STD_LOGIC_VECTOR (13 downto 0); - I_pixel : in STD_LOGIC_VECTOR (7 downto 0); -- Pixel from memory IN - -- interface avec la mémoire OUT (écriture) - O_enM_W : out STD_LOGIC; - O_ADR_W : out STD_LOGIC_VECTOR (13 downto 0); - O_pixEdge : out STD_LOGIC; -- Edge to memory OUT - -- signal de commande vers le contrôleur VGA - O_StartDisplay : out STD_LOGIC - ); - end component sobelProc; - - -- Contrôleur VGA - COMPONENT vga_nexys4_2regions - PORT( clk_i : in STD_LOGIC; - reset_i : in STD_LOGIC; - -- VGA Output Signals - vga_hs_o : out STD_LOGIC; -- HSYNC OUT - vga_vs_o : out STD_LOGIC; -- VSYNC OUT - vga_red_o : out STD_LOGIC_VECTOR (3 downto 0); -- Red signal going to the VGA interface - vga_green_o : out STD_LOGIC_VECTOR (3 downto 0); -- Green signal going to the VGA interface - vga_blue_o : out STD_LOGIC_VECTOR (3 downto 0); -- Blue signal going to the VGA interface - ---------------------- - -- I/O internes, pour lire la mémoire de sortie de Sobel - O_clk_25MHz : out STD_LOGIC; - I_StartDisplay : in STD_LOGIC; - ---- - O_enM_vga_region1 : out STD_LOGIC; - O_addr_M_vga_region1 : out STD_LOGIC_VECTOR(13 downto 0); - I_data_M_vga_region1 : in STD_LOGIC_VECTOR(7 downto 0); - ----- - O_enM_vga_region2 : out STD_LOGIC; - O_addr_M_vga_region2 : out STD_LOGIC_VECTOR(13 downto 0); - I_data_M_vga_region2 : in STD_LOGIC_VECTOR(7 downto 0) - ); - END COMPONENT; - - -- Mémoire d'entrée - component SinglePortROMFileInitGeneric is - generic ( - G_MemoryWidth : Integer; - G_MemoryDepth : Integer; - G_AddressWidth : Integer; - G_InitFileName : String + -- processeur Sobel + component sobelProc is + port ( + I_clk : in std_logic; + I_rst : in std_logic; I_go : in std_logic; + -- interface avec la mémoire IN (lecture) + O_enM_R : out std_logic; + O_ADR_R : out std_logic_vector (13 downto 0); + I_pixel : in std_logic_vector (7 downto 0); -- Pixel from memory IN + -- interface avec la mémoire OUT (écriture) + O_enM_W : out std_logic; + O_ADR_W : out std_logic_vector (13 downto 0); + O_pixEdge : out std_logic; -- Edge to memory OUT + -- signal de commande vers le contrôleur VGA + O_StartDisplay : out std_logic ); - port ( - I_clk : In std_logic; - I_en : In std_logic; - I_addr : In std_logic_vector(G_AddressWidth - 1 Downto 0); - O_dout : Out std_logic_vector(G_MemoryWidth - 1 Downto 0) - ); - end component; - - -- Mémoire de sortie - component DualPortRamGeneric is - generic ( - G_MemoryWidth : Integer; - G_MemoryDepth : Integer; - G_AddressWidth : Integer - ); - port ( - I_clk : in std_logic; - I_ena : in std_logic; - I_enb : in std_logic; - I_wea : in std_logic; - I_addra : in std_logic_vector(G_AddressWidth-1 downto 0); - I_addrb : in std_logic_vector(G_AddressWidth-1 downto 0); - I_dina : in std_logic_vector(G_MemoryWidth-1 downto 0); - O_douta : out std_logic_vector(G_MemoryWidth-1 downto 0); - O_doutb : out std_logic_vector(G_MemoryWidth-1 downto 0) - ); - end component; - --- déclaration des signaux internes -signal S_clk_25MHz : std_logic; -signal S_StartDisplay : std_logic; -signal reset_h : std_logic; + end component sobelProc; + + -- Contrôleur VGA + component vga_nexys4_2regions + port( + clk_i : in std_logic; + reset_i : in std_logic; + -- VGA Output Signals + vga_hs_o : out std_logic; -- HSYNC OUT + vga_vs_o : out std_logic; -- VSYNC OUT + vga_red_o : out std_logic_vector (3 downto 0); -- Red signal going to the VGA interface + vga_green_o : out std_logic_vector (3 downto 0); -- Green signal going to the VGA interface + vga_blue_o : out std_logic_vector (3 downto 0); -- Blue signal going to the VGA interface + ---------------------- + -- I/O internes, pour lire la mémoire de sortie de Sobel + O_clk_25MHz : out std_logic; + I_StartDisplay : in std_logic; + ---- + O_enM_vga_region1 : out std_logic; + O_addr_M_vga_region1 : out std_logic_vector(13 downto 0); + I_data_M_vga_region1 : in std_logic_vector(7 downto 0); + ----- + O_enM_vga_region2 : out std_logic; + O_addr_M_vga_region2 : out std_logic_vector(13 downto 0); + I_data_M_vga_region2 : in std_logic_vector(7 downto 0) + ); + end component; + + -- Mémoire d'entrée + component SinglePortROMFileInitGeneric is + generic ( + G_MemoryWidth : integer; + G_MemoryDepth : integer; + G_AddressWidth : integer; + G_InitFileName : string + ); + port ( + I_clk : in std_logic; + I_en : in std_logic; + I_addr : in std_logic_vector(G_AddressWidth - 1 downto 0); + O_dout : out std_logic_vector(G_MemoryWidth - 1 downto 0) + ); + end component; + + -- Mémoire de sortie + component DualPortRamGeneric is + generic ( + G_MemoryWidth : integer; + G_MemoryDepth : integer; + G_AddressWidth : integer + ); + port ( + I_clk : in std_logic; + I_ena : in std_logic; + I_enb : in std_logic; + I_wea : in std_logic; + I_addra : in std_logic_vector(G_AddressWidth-1 downto 0); + I_addrb : in std_logic_vector(G_AddressWidth-1 downto 0); + I_dina : in std_logic_vector(G_MemoryWidth-1 downto 0); + O_douta : out std_logic_vector(G_MemoryWidth-1 downto 0); + O_doutb : out std_logic_vector(G_MemoryWidth-1 downto 0) + ); + end component; +-- déclaration des signaux internes + signal S_clk_25MHz : std_logic; + signal S_StartDisplay : std_logic; + signal reset_h : std_logic; -signal S_enM_R : std_logic; -signal S_addr_R : std_logic_vector(13 Downto 0); -signal S_Pixel : std_logic_vector(7 Downto 0); + signal S_enM_R : std_logic; + signal S_addr_R : std_logic_vector(13 downto 0); + signal S_Pixel : std_logic_vector(7 downto 0); -signal S_enM_W : std_logic; -signal S_addr_W : std_logic_vector(13 Downto 0); -signal S_PixEdge_1bit : std_logic; -signal S_PixEdge_8bits : std_logic_vector(7 Downto 0); + signal S_enM_W : std_logic; + signal S_addr_W : std_logic_vector(13 downto 0); + signal S_PixEdge_1bit : std_logic; + signal S_PixEdge_8bits : std_logic_vector(7 downto 0); -signal S_enM_vga_region1 : std_logic; -signal S_addr_M_vga_region1 : std_logic_vector(13 Downto 0); -signal S_data_M_vga_region1 : std_logic_vector(7 Downto 0); + signal S_enM_vga_region1 : std_logic; + signal S_addr_M_vga_region1 : std_logic_vector(13 downto 0); + signal S_data_M_vga_region1 : std_logic_vector(7 downto 0); -signal S_enM_vga_region2 : std_logic; -signal S_addr_M_vga_region2 : std_logic_vector(13 Downto 0); -signal S_data_M_vga_region2 : std_logic_vector(7 Downto 0); - -signal S_mux_enM_R : std_logic; -signal S_mux_ADR_R : std_logic_vector(13 Downto 0); + signal S_enM_vga_region2 : std_logic; + signal S_addr_M_vga_region2 : std_logic_vector(13 downto 0); + signal S_data_M_vga_region2 : std_logic_vector(7 downto 0); -signal s_douta_not_used : std_logic_vector(7 Downto 0); + signal S_mux_enM_R : std_logic; + signal S_mux_ADR_R : std_logic_vector(13 downto 0); + signal s_douta_not_used : std_logic_vector(7 downto 0); begin -S_PixEdge_8bits <= S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit; + S_PixEdge_8bits <= S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit&S_PixEdge_1bit; -- instanciation des sous-composants et établissement des interconnexions -reset_h <= not reset_i; - -S_mux_ADR_R <= S_addr_R when S_StartDisplay = '0' else S_addr_M_vga_region1; -S_mux_enM_R <= S_enM_R when S_StartDisplay = '0' else S_enM_vga_region1; -S_data_M_vga_region1 <= S_Pixel; - - -- instanciation du processeur Sobel - sobelProc_inst1 : entity work.sobelProc - port map ( - clk => S_clk_25MHz, - reset => reset_h, - I_go => go_i, - O_enM_R => S_enM_R, - O_ADR_R => S_addr_R, - I_pixel => S_Pixel, - O_enM_W => S_enM_W, - O_ADR_W => S_addr_W, - O_pixEdge => S_PixEdge_1bit, - O_StartDisplay => S_StartDisplay - ); - - -- instanciation du contrôleur VGA - vga_inst1 : vga_nexys4_2regions - port map ( - clk_i => clk_i , - reset_i => reset_h , - vga_hs_o => vga_hs_o , - vga_vs_o => vga_vs_o , - vga_red_o => vga_red_o , - vga_green_o => vga_green_o , - vga_blue_o => vga_blue_o , - O_clk_25MHz => S_clk_25MHz , - I_StartDisplay => S_StartDisplay , - O_enM_vga_region1 => S_enM_vga_region1 , - O_addr_M_vga_region1 => S_addr_M_vga_region1 , - I_data_M_vga_region1 => S_data_M_vga_region1 , - O_enM_vga_region2 => S_enM_vga_region2 , - O_addr_M_vga_region2 => S_addr_M_vga_region2 , - I_data_M_vga_region2 => S_data_M_vga_region2 - ); - - -- instanciation de la mémoire d'entrée - rom_in : SinglePortROMFileInitGeneric - generic map ( - G_MemoryWidth => 8, - G_MemoryDepth => 10000, - G_AddressWidth => 14, - G_InitFileName => "dancing_spider.txt" - ) - port map ( - I_clk => S_clk_25MHz, - I_en => S_mux_enM_R, - I_addr => S_mux_ADR_R, - O_dout => S_Pixel - ); - - - -- instanciation de la mémoire de sortie - ram_out : DualPortRamGeneric - generic map ( - G_MemoryWidth => 8, - G_MemoryDepth => 10000, - G_AddressWidth => 14 - ) - port map ( - I_clk => S_clk_25MHz, - I_ena => S_enM_W, - I_enb => S_enM_vga_region2, - I_wea => S_enM_W, - I_addra => S_addr_W, - I_addrb => S_addr_M_vga_region2, - I_dina => S_PixEdge_8bits, - O_douta => s_douta_not_used, - O_doutb => S_data_M_vga_region2 - ); - - - -end Behavioral; + reset_h <= not I_rst; + + S_mux_ADR_R <= S_addr_R when S_StartDisplay = '0' else S_addr_M_vga_region1; + S_mux_enM_R <= S_enM_R when S_StartDisplay = '0' else S_enM_vga_region1; + S_data_M_vga_region1 <= S_Pixel; + + -- instanciation du processeur Sobel + sobelProc_inst1 : entity work.sobelProc + port map ( + I_clk => S_clk_25MHz, + I_rst => reset_h, + I_go => I_go, + O_enM_R => S_enM_R, + O_ADR_R => S_addr_R, + I_pixel => S_Pixel, + O_enM_W => S_enM_W, + O_ADR_W => S_addr_W, + O_pixEdge => S_PixEdge_1bit, + O_StartDisplay => S_StartDisplay + ); + -- instanciation du contrôleur VGA + vga_inst1 : vga_nexys4_2regions + port map ( + clk_i => I_clk, + reset_i => reset_h, + vga_hs_o => O_vga_hs, + vga_vs_o => O_vga_vs, + vga_red_o => O_vga_red, + vga_green_o => O_vga_green, + vga_blue_o => O_vga_blue, + O_clk_25MHz => S_clk_25MHz, + I_StartDisplay => S_StartDisplay, + O_enM_vga_region1 => S_enM_vga_region1, + O_addr_M_vga_region1 => S_addr_M_vga_region1, + I_data_M_vga_region1 => S_data_M_vga_region1, + O_enM_vga_region2 => S_enM_vga_region2, + O_addr_M_vga_region2 => S_addr_M_vga_region2, + I_data_M_vga_region2 => S_data_M_vga_region2 + ); + + -- instanciation de la mémoire d'entrée + rom_in : SinglePortROMFileInitGeneric + generic map ( + G_MemoryWidth => 8, + G_MemoryDepth => 10000, + G_AddressWidth => 14, + G_InitFileName => "dancing_spider.txt" + ) + port map ( + I_clk => S_clk_25MHz, + I_en => S_mux_enM_R, + I_addr => S_mux_ADR_R, + O_dout => S_Pixel + ); + + + -- instanciation de la mémoire de sortie + ram_out : DualPortRamGeneric + generic map ( + G_MemoryWidth => 8, + G_MemoryDepth => 10000, + G_AddressWidth => 14 + ) + port map ( + I_clk => S_clk_25MHz, + I_ena => S_enM_W, + I_enb => S_enM_vga_region2, + I_wea => S_enM_W, + I_addra => S_addr_W, + I_addrb => S_addr_M_vga_region2, + I_dina => S_PixEdge_8bits, + O_douta => s_douta_not_used, + O_doutb => S_data_M_vga_region2 + ); + +end Behavioral; diff --git a/src/tb_adrgenUnit.vhd b/src/tb_adrgenUnit.vhd index fd1bea3..540852c 100644 --- a/src/tb_adrgenUnit.vhd +++ b/src/tb_adrgenUnit.vhd @@ -7,81 +7,77 @@ entity tb_adrgenUnit is end entity tb_adrgenUnit; architecture archi_tb_adrgenUnit of tb_adrgenUnit is - - signal S_clk : std_logic := '1'; - signal S_reset : std_logic := '1'; - signal S_clr_PtrLine : STD_LOGIC := '0'; - signal S_inc_PtrLine : STD_LOGIC := '0'; - signal S_clr_PtrCol : STD_LOGIC := '0'; - signal S_inc_PtrCol : STD_LOGIC := '0'; - signal S_selPix : STD_LOGIC_VECTOR (1 downto 0) := "00"; - signal S_EndImage : STD_LOGIC; - signal S_NewLine : STD_LOGIC; - signal S_ADR_R : STD_LOGIC_VECTOR (13 downto 0); - signal S_ADR_W : STD_LOGIC_VECTOR (13 downto 0); - constant clk_period : time := 10 ns; + signal S_clk : std_logic := '1'; + signal S_clr_PtrLine : std_logic := '0'; + signal S_inc_PtrLine : std_logic := '0'; + signal S_clr_PtrCol : std_logic := '0'; + signal S_inc_PtrCol : std_logic := '0'; + signal S_selPix : std_logic_vector (1 downto 0) := "00"; + signal S_EndImage : std_logic; + signal S_NewLine : std_logic; + signal S_ADR_R : std_logic_vector (13 downto 0); + signal S_ADR_W : std_logic_vector (13 downto 0); + + constant clk_period : time := 10 ns; begin - S_clk <= not S_clk after clk_period/2; - S_reset <= '1', '0' after 2*clk_period; - S_clr_PtrLine <= '1', '0' after 2*clk_period; - S_clr_PtrCol <= '1', '0' after 2*clk_period; - + S_clk <= not S_clk after clk_period/2; + S_clr_PtrLine <= '1', '0' after 2*clk_period; + S_clr_PtrCol <= '1', '0' after 2*clk_period; + + + process + begin + wait for 2*clk_period; + while true loop + S_selPix <= "00"; + wait for clk_period; + S_selPix <= "01"; + wait for clk_period; + S_selPix <= "10"; + wait for clk_period; + wait for clk_period; -- pour le "shift" des registres + end loop; + end process; + + process + begin + wait for 2*clk_period; + while true loop + wait for 3*clk_period; + S_inc_PtrCol <= '1'; + wait for clk_period; + S_inc_PtrCol <= '0'; + end loop; + end process; + + process + begin + wait for 2*clk_period; + while true loop + wait for (4*clk_period*100 - clk_period); -- 40 ns x 100 - 10 ns + S_inc_PtrLine <= '1'; + wait for clk_period; + S_inc_PtrLine <= '0'; + end loop; + end process; - process - begin - wait for 2*clk_period; - while true loop - S_selPix <= "00"; - wait for clk_period; - S_selPix <= "01"; - wait for clk_period; - S_selPix <= "10"; - wait for clk_period; - wait for clk_period; -- pour le "shift" des registres - end loop; - end process; - - process - begin - wait for 2*clk_period; - while true loop - wait for 3*clk_period; - S_inc_PtrCol <= '1'; - wait for clk_period; - S_inc_PtrCol <= '0'; - end loop; - end process; - process - begin - --wait until S_reset = '0'; - wait for 2*clk_period; - while true loop - wait for (4*clk_period*100 - clk_period); -- 40 ns x 100 - 10 ns - S_inc_PtrLine <= '1'; - wait for clk_period; - S_inc_PtrLine <= '0'; - end loop; - end process; - - - adrgenUnit_1 : entity work.adrgenUnit - port map ( - clk => S_clk, - reset => S_reset, - I_clr_PtrLine => S_clr_PtrLine, - I_inc_PtrLine => S_inc_PtrLine, - I_clr_PtrCol => S_clr_PtrCol, - I_inc_PtrCol => S_inc_PtrCol, - I_selPix => S_selPix, - O_EndImage => S_EndImage, - O_NewLine => S_NewLine, - O_ADR_R => S_ADR_R, - O_ADR_W => S_ADR_W - ); + adrgenUnit_1 : entity work.adrgenUnit + port map ( + I_clk => S_clk, + I_clr_PtrLine => S_clr_PtrLine, + I_inc_PtrLine => S_inc_PtrLine, + I_clr_PtrCol => S_clr_PtrCol, + I_inc_PtrCol => S_inc_PtrCol, + I_selPix => S_selPix, + O_EndImage => S_EndImage, + O_NewLine => S_NewLine, + O_ADR_R => S_ADR_R, + O_ADR_W => S_ADR_W + ); end architecture archi_tb_adrgenUnit; diff --git a/src/tb_automate.vhd b/src/tb_automate.vhd index 228df48..fbb9c62 100644 --- a/src/tb_automate.vhd +++ b/src/tb_automate.vhd @@ -7,68 +7,68 @@ entity tb_automate is end entity tb_automate; architecture archi_tb_automate of tb_automate is - - signal S_clk : STD_LOGIC := '1'; - signal S_reset : STD_LOGIC := '1'; - signal S_go : STD_LOGIC := '0'; - signal S_EndImage : STD_LOGIC := '0'; - signal S_NewLine : STD_LOGIC := '0'; - signal S_ldPix11 : STD_LOGIC; - signal S_ldPix21 : STD_LOGIC; - signal S_ldPix31 : STD_LOGIC; - signal S_shReg : STD_LOGIC; - signal S_ldPixEdge : STD_LOGIC; - signal S_clr_PtrLine : STD_LOGIC; - signal S_inc_PtrLine : STD_LOGIC; - signal S_clr_PtrCol : STD_LOGIC; - signal S_inc_PtrCol : STD_LOGIC; - signal S_selPix : STD_LOGIC_VECTOR (1 downto 0); - signal S_enM_R : STD_LOGIC; - signal S_enM_W : STD_LOGIC; - signal S_StartDisplay : STD_LOGIC; - constant clk_period : time := 10 ns; + signal S_clk : std_logic := '1'; + signal S_reset : std_logic := '1'; + signal S_go : std_logic := '0'; + signal S_EndImage : std_logic := '0'; + signal S_NewLine : std_logic := '0'; + signal S_ldPix11 : std_logic; + signal S_ldPix21 : std_logic; + signal S_ldPix31 : std_logic; + signal S_shReg : std_logic; + signal S_ldPixEdge : std_logic; + signal S_clr_PtrLine : std_logic; + signal S_inc_PtrLine : std_logic; + signal S_clr_PtrCol : std_logic; + signal S_inc_PtrCol : std_logic; + signal S_selPix : std_logic_vector (1 downto 0); + signal S_enM_R : std_logic; + signal S_enM_W : std_logic; + signal S_StartDisplay : std_logic; + + constant clk_period : time := 10 ns; begin - S_clk <= not S_clk after clk_period/2; - S_reset <= '1', '0' after 2*clk_period; - S_go <= '0', '1' after 4*clk_period, '0' after 5*clk_period; + S_clk <= not S_clk after clk_period/2; + S_reset <= '1', '0' after 2*clk_period; + S_go <= '0', '1' after 4*clk_period, '0' after 5*clk_period; + + process + begin + S_NewLine <= '0'; + wait for 4*clk_period; -- wait for go = '1' + wait for (2 + 13)*clk_period; -- traitement du 1er pixel + wait for (2*6)*clk_period; -- traitement de 2 pixels suivants (pas besoin de répéter 100 fois pour ce testbench) + S_NewLine <= '1'; + wait for clk_period; + S_NewLine <= '0'; + end process; + + S_EndImage <= '0', '1' after 100*clk_period; -- just pour tester le passage à l'état final EndSobel + + + automate_1 : entity work.automate + port map ( + I_clk => S_clk, + I_rst => S_reset, + I_go => S_go, + I_EndImage => S_EndImage, + I_NewLine => S_NewLine, + O_ldPix11 => S_ldPix11, + O_ldPix21 => S_ldPix21, + O_ldPix31 => S_ldPix31, + O_shReg => S_shReg, + O_ldPixEdge => S_ldPixEdge, + O_clr_PtrLine => S_clr_PtrLine, + O_inc_PtrLine => S_inc_PtrLine, + O_clr_PtrCol => S_clr_PtrCol, + O_inc_PtrCol => S_inc_PtrCol, + O_selPix => S_selPix, + O_enM_R => S_enM_R, + O_enM_W => S_enM_W, + O_StartDisplay => S_StartDisplay + ); - process - begin - S_NewLine <= '0'; - wait for 4*clk_period; -- wait for go = '1' - wait for (2 + 13)*clk_period; -- traitement du 1er pixel - wait for (2*6)*clk_period; -- traitement de 2 pixels suivants (pas besoin de répéter 100 fois pour ce testbench) - S_NewLine <= '1'; - wait for clk_period; - S_NewLine <= '0'; - end process; - - S_EndImage <= '0', '1' after 100*clk_period; -- just pour tester le passage à l'état final EndSobel - - - automate_1 : entity work.automate - port map ( - clk => S_clk, - reset => S_reset, - I_go => S_go, - I_EndImage => S_EndImage, - I_NewLine => S_NewLine, - O_ldPix11 => S_ldPix11, - O_ldPix21 => S_ldPix21, - O_ldPix31 => S_ldPix31, - O_shReg => S_shReg, - O_ldPixEdge => S_ldPixEdge, - O_clr_PtrLine => S_clr_PtrLine, - O_inc_PtrLine => S_inc_PtrLine, - O_clr_PtrCol => S_clr_PtrCol, - O_inc_PtrCol => S_inc_PtrCol, - O_selPix => S_selPix, - O_enM_R => S_enM_R, - O_enM_W => S_enM_W, - O_StartDisplay => S_StartDisplay - ); - end architecture archi_tb_automate; diff --git a/src/tb_gradientUnit.vhd b/src/tb_gradientUnit.vhd index 7d0fe35..1eaba33 100644 --- a/src/tb_gradientUnit.vhd +++ b/src/tb_gradientUnit.vhd @@ -7,48 +7,47 @@ entity tb_gradientUnit is end entity tb_gradientUnit; architecture archi_tb_gradientUnit of tb_gradientUnit is - component gradientUnit is - port ( I_Pix11, I_Pix12, I_Pix13 : in STD_LOGIC_VECTOR (7 downto 0); - I_Pix21, I_Pix22, I_Pix23 : in STD_LOGIC_VECTOR (7 downto 0); - I_Pix31, I_Pix32, I_Pix33 : in STD_LOGIC_VECTOR (7 downto 0); - O_pixEdge : out STD_LOGIC - ); - end component gradientUnit; - signal S_pixEdge : std_logic; - signal S_Pix11, S_Pix12, S_Pix13 : STD_LOGIC_VECTOR (7 downto 0); - signal S_Pix21, S_Pix22, S_Pix23 : STD_LOGIC_VECTOR (7 downto 0); - signal S_Pix31, S_Pix32, S_Pix33 : STD_LOGIC_VECTOR (7 downto 0); + component gradientUnit is + port ( + I_Pix11, I_Pix12, I_Pix13 : in std_logic_vector (7 downto 0); + I_Pix21, I_Pix22, I_Pix23 : in std_logic_vector (7 downto 0); + I_Pix31, I_Pix32, I_Pix33 : in std_logic_vector (7 downto 0); + O_pixEdge : out std_logic + ); + end component gradientUnit; + signal S_pixEdge : std_logic; + signal S_Pix11, S_Pix12, S_Pix13 : std_logic_vector (7 downto 0); + signal S_Pix21, S_Pix22, S_Pix23 : std_logic_vector (7 downto 0); + signal S_Pix31, S_Pix32, S_Pix33 : std_logic_vector (7 downto 0); begin - - S_Pix11 <= STD_LOGIC_VECTOR(to_unsigned(15,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - S_Pix12 <= STD_LOGIC_VECTOR(to_unsigned(15,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - S_Pix13 <= STD_LOGIC_VECTOR(to_unsigned(15,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - - S_Pix21 <= STD_LOGIC_VECTOR(to_unsigned(80,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - S_Pix22 <= STD_LOGIC_VECTOR(to_unsigned(80,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - S_Pix23 <= STD_LOGIC_VECTOR(to_unsigned(80,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - - S_Pix31 <= STD_LOGIC_VECTOR(to_unsigned(150,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - S_Pix32 <= STD_LOGIC_VECTOR(to_unsigned(150,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - S_Pix33 <= STD_LOGIC_VECTOR(to_unsigned(150,8)) , STD_LOGIC_VECTOR(to_unsigned(15,8)) after 200 ns; - - - gradientUnit_1 : entity work.gradientUnit - port map ( - O_pixEdge => S_pixEdge, - I_Pix11 => S_Pix11, - I_Pix12 => S_Pix12, - I_Pix13 => S_Pix13, - I_Pix21 => S_Pix21, - I_Pix22 => S_Pix22, - I_Pix23 => S_Pix23, - I_Pix31 => S_Pix31, - I_Pix32 => S_Pix32, - I_Pix33 => S_Pix33); - + S_Pix11 <= std_logic_vector(to_unsigned(15, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + S_Pix12 <= std_logic_vector(to_unsigned(15, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + S_Pix13 <= std_logic_vector(to_unsigned(15, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + + S_Pix21 <= std_logic_vector(to_unsigned(80, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + S_Pix22 <= std_logic_vector(to_unsigned(80, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + S_Pix23 <= std_logic_vector(to_unsigned(80, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + + S_Pix31 <= std_logic_vector(to_unsigned(150, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + S_Pix32 <= std_logic_vector(to_unsigned(150, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + S_Pix33 <= std_logic_vector(to_unsigned(150, 8)), std_logic_vector(to_unsigned(15, 8)) after 200 ns; + + gradientUnit_1 : entity work.gradientUnit + port map ( + O_pixEdge => S_pixEdge, + I_Pix11 => S_Pix11, + I_Pix12 => S_Pix12, + I_Pix13 => S_Pix13, + I_Pix21 => S_Pix21, + I_Pix22 => S_Pix22, + I_Pix23 => S_Pix23, + I_Pix31 => S_Pix31, + I_Pix32 => S_Pix32, + I_Pix33 => S_Pix33 + ); end architecture archi_tb_gradientUnit; diff --git a/src/tb_operativeUnit.vhd b/src/tb_operativeUnit.vhd index 0f7ff99..a5aa0b1 100644 --- a/src/tb_operativeUnit.vhd +++ b/src/tb_operativeUnit.vhd @@ -7,66 +7,55 @@ entity tb_operativeUnit is end entity tb_operativeUnit; architecture archi_tb_operativeUnit of tb_operativeUnit is - component operativeUnit is - Port ( clk :in STD_LOGIC; - reset :in STD_LOGIC; - I_pixel : in STD_LOGIC_VECTOR (7 downto 0); -- Pixel from the memory - I_ldPix11 : in STD_LOGIC; - I_ldPix21 : in STD_LOGIC; - I_ldPix31 : in STD_LOGIC; - I_shReg : in STD_LOGIC; - I_ldPixEdge : in STD_LOGIC; - O_pixEdge : out STD_LOGIC - ); - end component operativeUnit; - signal S_clk : std_logic := '0'; - signal S_reset : std_logic; - signal S_pixel : STD_LOGIC_VECTOR (7 downto 0); - signal S_ldPix11 : std_logic; - signal S_ldPix21 : std_logic; - signal S_ldPix31 : std_logic; - signal S_shReg : std_logic; - signal S_ldPixEdge : std_logic; - signal S_pixEdge : std_logic; + component operativeUnit is + port (I_clk : in std_logic; + I_pixel : in std_logic_vector (7 downto 0); -- Pixel from the memory + I_ldPix11 : in std_logic; + I_ldPix21 : in std_logic; + I_ldPix31 : in std_logic; + I_shReg : in std_logic; + I_ldPixEdge : in std_logic; + O_pixEdge : out std_logic + ); + end component operativeUnit; + + signal S_I_clk : std_logic := '0'; + signal S_pixel : std_logic_vector (7 downto 0):= (others => '0'); + signal S_ldPix11 : std_logic; + signal S_ldPix21 : std_logic; + signal S_ldPix31 : std_logic; + signal S_shReg : std_logic; + signal S_ldPixEdge : std_logic; + signal S_pixEdge : std_logic; begin - S_clk <= not S_clk after 5 ns; - S_reset <= '0', '1' after 23 ns, '0' after 64 ns; - - S_ldPix11 <= '0', '1' after 102 ns, '0' after 112 ns, '1' after 142 ns, '0' after 152 ns, '1' after 182 ns, '0' after 192 ns, '1' after 222 ns, '0' after 232 ns; - - S_ldPix21 <= '0', '1' after 112 ns, '0' after 122 ns, '1' after 152 ns, '0' after 162 ns, '1' after 192 ns, '0' after 202 ns, '1' after 232 ns, '0' after 242 ns; - - S_ldPix31 <= '0', '1' after 122 ns, '0' after 132 ns, '1' after 162 ns, '0' after 172 ns, '1' after 202 ns, '0' after 212 ns, '1' after 242 ns, '0' after 252 ns; - - S_shReg <= '0', '1' after 132 ns, '0' after 142 ns, '1' after 172 ns, '0' after 182 ns, '1' after 212 ns, '0' after 222 ns, '1' after 252 ns, '0' after 262 ns; - - S_ldPixEdge <= '0', '1' after 212 ns, '0' after 222 ns, '1' after 252 ns, '0' after 262 ns; - - process (S_clk, s_reset) - begin - if s_reset = '1' then - S_pixel <= (others => '0'); - elsif (rising_edge(S_clk)) then - S_pixel <= STD_LOGIC_VECTOR(unsigned(S_pixel) + 1); - end if; - end process; - - - operativeUnit_1 : entity work.operativeUnit - port map ( - clk => S_clk, - reset => S_reset, - I_pixel => S_pixel, - I_ldPix11 => S_ldPix11, - I_ldPix21 => S_ldPix21, - I_ldPix31 => S_ldPix31, - I_shReg => S_shReg, - I_ldPixEdge => S_ldPixEdge, - O_pixEdge => S_pixEdge - ); - + S_I_clk <= not S_I_clk after 5 ns; + S_ldPix11 <= '0', '1' after 102 ns, '0' after 112 ns, '1' after 142 ns, '0' after 152 ns, '1' after 182 ns, '0' after 192 ns, '1' after 222 ns, '0' after 232 ns; + S_ldPix21 <= '0', '1' after 112 ns, '0' after 122 ns, '1' after 152 ns, '0' after 162 ns, '1' after 192 ns, '0' after 202 ns, '1' after 232 ns, '0' after 242 ns; + S_ldPix31 <= '0', '1' after 122 ns, '0' after 132 ns, '1' after 162 ns, '0' after 172 ns, '1' after 202 ns, '0' after 212 ns, '1' after 242 ns, '0' after 252 ns; + S_shReg <= '0', '1' after 132 ns, '0' after 142 ns, '1' after 172 ns, '0' after 182 ns, '1' after 212 ns, '0' after 222 ns, '1' after 252 ns, '0' after 262 ns; + S_ldPixEdge <= '0', '1' after 212 ns, '0' after 222 ns, '1' after 252 ns, '0' after 262 ns; + + process (S_I_clk) + begin + if(rising_edge(S_I_clk)) then + S_pixel <= std_logic_vector(unsigned(S_pixel) + 1); + end if; + end process; + + + operativeUnit_1 : entity work.operativeUnit + port map ( + I_clk => S_I_clk, + I_pixel => S_pixel, + I_ldPix11 => S_ldPix11, + I_ldPix21 => S_ldPix21, + I_ldPix31 => S_ldPix31, + I_shReg => S_shReg, + I_ldPixEdge => S_ldPixEdge, + O_pixEdge => S_pixEdge + ); end architecture archi_tb_operativeUnit; diff --git a/src/tb_regUnit.vhd b/src/tb_regUnit.vhd index 5cee612..a09ee8b 100644 --- a/src/tb_regUnit.vhd +++ b/src/tb_regUnit.vhd @@ -7,73 +7,63 @@ entity tb_regUnit is end entity tb_regUnit; architecture archi_tb_regUnit of tb_regUnit is - component regUnit is - port (clk,reset :in STD_LOGIC; - I_pixel : in STD_LOGIC_VECTOR (7 downto 0); -- Pixel from the memory - I_ldPix11 : in STD_LOGIC; - I_ldPix21 : in STD_LOGIC; - I_ldPix31 : in STD_LOGIC; - I_shReg : in STD_LOGIC; - O_Pix11, O_Pix12, O_Pix13 : out STD_LOGIC_VECTOR (7 downto 0); - O_Pix21, O_Pix22, O_Pix23 : out STD_LOGIC_VECTOR (7 downto 0); - O_Pix31, O_Pix32, O_Pix33 : out STD_LOGIC_VECTOR (7 downto 0) - ); - end component regUnit; - signal S_clk : std_logic := '0'; - signal S_reset : std_logic; - signal S_pixel : STD_LOGIC_VECTOR (7 downto 0); - signal S_ldPix11 : std_logic; - signal S_ldPix21 : std_logic; - signal S_ldPix31 : std_logic; - signal S_shReg : std_logic; - signal S_Pix11, S_Pix12, S_Pix13 : STD_LOGIC_VECTOR (7 downto 0); - signal S_Pix21, S_Pix22, S_Pix23 : STD_LOGIC_VECTOR (7 downto 0); - signal S_Pix31, S_Pix32, S_Pix33 : STD_LOGIC_VECTOR (7 downto 0); + component regUnit is + port (I_clk : in std_logic; + I_pixel : in std_logic_vector (7 downto 0); -- Pixel from the memory + I_ldPix11 : in std_logic; + I_ldPix21 : in std_logic; + I_ldPix31 : in std_logic; + I_shReg : in std_logic; + O_Pix11, O_Pix12, O_Pix13 : out std_logic_vector (7 downto 0); + O_Pix21, O_Pix22, O_Pix23 : out std_logic_vector (7 downto 0); + O_Pix31, O_Pix32, O_Pix33 : out std_logic_vector (7 downto 0) + ); + end component regUnit; + signal S_clk : std_logic := '0'; + signal S_pixel : std_logic_vector (7 downto 0) := (others => '0'); + signal S_ldPix11 : std_logic; + signal S_ldPix21 : std_logic; + signal S_ldPix31 : std_logic; + signal S_shReg : std_logic; + signal S_Pix11, S_Pix12, S_Pix13 : std_logic_vector (7 downto 0); + signal S_Pix21, S_Pix22, S_Pix23 : std_logic_vector (7 downto 0); + signal S_Pix31, S_Pix32, S_Pix33 : std_logic_vector (7 downto 0); begin - S_clk <= not S_clk after 5 ns; - S_reset <= '0', '1' after 23 ns, '0' after 64 ns; + S_clk <= not S_clk after 5 ns; - S_ldPix11 <= '0', '1' after 102 ns, '0' after 112 ns, '1' after 142 ns, '0' after 152 ns, '1' after 182 ns, '0' after 192 ns, '1' after 222 ns, '0' after 232 ns; - - S_ldPix21 <= '0', '1' after 112 ns, '0' after 122 ns, '1' after 152 ns, '0' after 162 ns, '1' after 192 ns, '0' after 202 ns, '1' after 232 ns, '0' after 242 ns; - - S_ldPix31 <= '0', '1' after 122 ns, '0' after 132 ns, '1' after 162 ns, '0' after 172 ns, '1' after 202 ns, '0' after 212 ns, '1' after 242 ns, '0' after 252 ns; - - S_shReg <= '0', '1' after 132 ns, '0' after 142 ns, '1' after 172 ns, '0' after 182 ns, '1' after 212 ns, '0' after 222 ns, '1' after 252 ns, '0' after 262 ns; - + S_ldPix11 <= '0', '1' after 102 ns, '0' after 112 ns, '1' after 142 ns, '0' after 152 ns, '1' after 182 ns, '0' after 192 ns, '1' after 222 ns, '0' after 232 ns; + S_ldPix21 <= '0', '1' after 112 ns, '0' after 122 ns, '1' after 152 ns, '0' after 162 ns, '1' after 192 ns, '0' after 202 ns, '1' after 232 ns, '0' after 242 ns; + S_ldPix31 <= '0', '1' after 122 ns, '0' after 132 ns, '1' after 162 ns, '0' after 172 ns, '1' after 202 ns, '0' after 212 ns, '1' after 242 ns, '0' after 252 ns; + S_shReg <= '0', '1' after 132 ns, '0' after 142 ns, '1' after 172 ns, '0' after 182 ns, '1' after 212 ns, '0' after 222 ns, '1' after 252 ns, '0' after 262 ns; - process (S_clk, s_reset) - begin - if s_reset = '1' then - S_pixel <= (others => '0'); - elsif (rising_edge(S_clk)) then - S_pixel <= STD_LOGIC_VECTOR(unsigned(S_pixel) + 1); - end if; - end process; - + process (S_clk) + begin + if (rising_edge(S_clk)) then + S_pixel <= std_logic_vector(unsigned(S_pixel) + 1); + end if; + end process; - regUnit_1 : entity work.regUnit - port map ( - clk => S_clk, - reset => S_reset, - I_pixel => S_pixel, - I_ldPix11 => S_ldPix11, - I_ldPix21 => S_ldPix21, - I_ldPix31 => S_ldPix31, - I_shReg => S_shReg, - O_Pix11 => S_Pix11, - O_Pix12 => S_Pix12, - O_Pix13 => S_Pix13, - O_Pix21 => S_Pix21, - O_Pix22 => S_Pix22, - O_Pix23 => S_Pix23, - O_Pix31 => S_Pix31, - O_Pix32 => S_Pix32, - O_Pix33 => S_Pix33); + regUnit_1 : entity work.regUnit + port map ( + I_clk => S_clk, + I_pixel => S_pixel, + I_ldPix11 => S_ldPix11, + I_ldPix21 => S_ldPix21, + I_ldPix31 => S_ldPix31, + I_shReg => S_shReg, + O_Pix11 => S_Pix11, + O_Pix12 => S_Pix12, + O_Pix13 => S_Pix13, + O_Pix21 => S_Pix21, + O_Pix22 => S_Pix22, + O_Pix23 => S_Pix23, + O_Pix31 => S_Pix31, + O_Pix32 => S_Pix32, + O_Pix33 => S_Pix33); end architecture archi_tb_regUnit; diff --git a/src/tb_sobelProc.vhd b/src/tb_sobelProc.vhd index a5cc580..e0ca655 100644 --- a/src/tb_sobelProc.vhd +++ b/src/tb_sobelProc.vhd @@ -7,56 +7,55 @@ entity tb_sobelProc is end entity tb_sobelProc; architecture archi_tb_sobelProc of tb_sobelProc is - component sobelProc is - Port ( clk,reset : in STD_LOGIC; - I_go : in STD_LOGIC; - -- interface avec la mémoire IN (lecture) - O_enM_R : out STD_LOGIC; - O_ADR_R : out STD_LOGIC_VECTOR (13 downto 0); - I_pixel : in STD_LOGIC_VECTOR (7 downto 0); -- Pixel from memory IN - -- interface avec la mémoire OUT (écriture) - O_enM_W : out STD_LOGIC; - O_ADR_W : out STD_LOGIC_VECTOR (13 downto 0); - O_pixEdge : out STD_LOGIC; -- Edge to memory OUT - -- signal de commande vers le contrôleur VGA - O_StartDisplay : out STD_LOGIC - ); - end component sobelProc; - -signal S_clk : STD_LOGIC := '0'; -signal S_reset : STD_LOGIC; -signal S_go : STD_LOGIC; -signal S_enM_R : STD_LOGIC; -signal S_ADR_R : STD_LOGIC_VECTOR (13 downto 0); -signal S_pixel : STD_LOGIC_VECTOR (7 downto 0); -signal S_enM_W : STD_LOGIC; -signal S_ADR_W : STD_LOGIC_VECTOR (13 downto 0); -signal S_pixEdge : STD_LOGIC; -signal S_StartDisplay : STD_LOGIC; - + component sobelProc is + port (I_clk : in std_logic; + I_rst : in std_logic; + I_go : in std_logic; + -- interface avec la mémoire IN (lecture) + O_enM_R : out std_logic; + O_ADR_R : out std_logic_vector (13 downto 0); + I_pixel : in std_logic_vector (7 downto 0); -- Pixel from memory IN + -- interface avec la mémoire OUT (écriture) + O_enM_W : out std_logic; + O_ADR_W : out std_logic_vector (13 downto 0); + O_pixEdge : out std_logic; -- Edge to memory OUT + -- signal de commande vers le contrôleur VGA + O_StartDisplay : out std_logic + ); + end component sobelProc; + + signal S_clk : std_logic := '0'; + signal S_I_rst : std_logic; + signal S_go : std_logic; + signal S_enM_R : std_logic; + signal S_ADR_R : std_logic_vector (13 downto 0); + signal S_pixel : std_logic_vector (7 downto 0); + signal S_enM_W : std_logic; + signal S_ADR_W : std_logic_vector (13 downto 0); + signal S_pixEdge : std_logic; + signal S_StartDisplay : std_logic; begin - S_pixel <= "00000111"; - - S_clk <= not S_clk after 5 ns; - S_reset <= '1', '0' after 64 ns; - S_go <= '0', '1' after 164 ns, '0' after 264 ns; - - sobelProc_1 : entity work.sobelProc - port map ( - clk => S_clk , - reset => S_reset , - I_go => S_go , - O_enM_R => S_enM_R , - O_ADR_R => S_ADR_R , - I_pixel => S_pixel , - O_enM_W => S_enM_W , - O_ADR_W => S_ADR_W , - O_pixEdge => S_pixEdge , - O_StartDisplay => S_StartDisplay - ); - + S_pixel <= "00000111"; + + S_clk <= not S_clk after 5 ns; + S_I_rst <= '1', '0' after 64 ns; + S_go <= '0', '1' after 164 ns, '0' after 264 ns; + + sobelProc_1 : entity work.sobelProc + port map ( + I_clk => S_clk, + I_rst => S_I_rst, + I_go => S_go, + O_enM_R => S_enM_R, + O_ADR_R => S_ADR_R, + I_pixel => S_pixel, + O_enM_W => S_enM_W, + O_ADR_W => S_ADR_W, + O_pixEdge => S_pixEdge, + O_StartDisplay => S_StartDisplay + ); end architecture archi_tb_sobelProc; diff --git a/src/tb_sobelSys.vhd b/src/tb_sobelSys.vhd index c578049..7f243f4 100644 --- a/src/tb_sobelSys.vhd +++ b/src/tb_sobelSys.vhd @@ -7,49 +7,45 @@ entity tb_sobelSys is end entity tb_sobelSys; architecture archi_tb_sobelSys of tb_sobelSys is - component sobelSys is - Port ( clk_i : in STD_LOGIC; - reset_i : in STD_LOGIC; - go_i : in STD_LOGIC; - -- VGA Output Signals - vga_hs_o : out STD_LOGIC; -- HSYNC OUT - vga_vs_o : out STD_LOGIC; -- VSYNC OUT - vga_red_o : out STD_LOGIC_VECTOR (3 downto 0); -- Red signal going to the VGA interface - vga_green_o : out STD_LOGIC_VECTOR (3 downto 0); -- Green signal going to the VGA interface - vga_blue_o : out STD_LOGIC_VECTOR (3 downto 0) -- Blue signal going to the VGA interface - ); - end component sobelSys; - - - - signal S_clk_i : std_logic := '0'; - signal S_reset_i : std_logic; - signal S_go_i : std_logic; - signal S_vga_hs_o : std_logic; - signal S_vga_vs_o : std_logic; - signal S_vga_red_o : STD_LOGIC_VECTOR (3 downto 0); - signal S_vga_green_o : STD_LOGIC_VECTOR (3 downto 0); - signal S_vga_blue_o : STD_LOGIC_VECTOR (3 downto 0); - -begin + component sobelSys is + port (I_clk : in std_logic; + I_rst : in std_logic; + I_go : in std_logic; + -- VGA Output Signals + O_vga_hs : out std_logic; -- HSYNC OUT + O_vga_vs : out std_logic; -- VSYNC OUT + O_vga_red : out std_logic_vector (3 downto 0); -- Red signal going to the VGA interface + O_vga_green : out std_logic_vector (3 downto 0); -- Green signal going to the VGA interface + O_vga_blue : out std_logic_vector (3 downto 0) -- Blue signal going to the VGA interface + ); + end component sobelSys; + + signal S_I_clk : std_logic := '0'; + signal S_I_rst : std_logic; + signal S_go_i : std_logic; + signal S_vga_hs_o : std_logic; + signal S_vga_vs_o : std_logic; + signal S_vga_red_o : std_logic_vector (3 downto 0); + signal S_vga_green_o : std_logic_vector (3 downto 0); + signal S_vga_blue_o : std_logic_vector (3 downto 0); - S_clk_i <= not S_clk_i after 5 ns; - S_reset_i <= '1', '0' after 2064 ns; - S_go_i <= '0', '1' after 2264 ns, '0' after 2664 ns; - - - sobelSys_1 : entity work.sobelSys - port map ( - clk_i => S_clk_i , - reset_i => S_reset_i , - go_i => S_go_i , - vga_hs_o => S_vga_hs_o , - vga_vs_o => S_vga_vs_o , - vga_red_o => S_vga_red_o , - vga_green_o => S_vga_green_o , - vga_blue_o => S_vga_blue_o - ); +begin + S_I_clk <= not S_I_clk after 5 ns; + S_I_rst <= '1', '0' after 2064 ns; + S_go_i <= '0', '1' after 2264 ns, '0' after 2664 ns; + + sobelSys_1 : entity work.sobelSys + port map ( + I_clk => S_I_clk, + I_rst => S_I_rst, + I_go => S_go_i, + O_vga_hs => S_vga_hs_o, + O_vga_vs => S_vga_vs_o, + O_vga_red => S_vga_red_o, + O_vga_green => S_vga_green_o, + O_vga_blue => S_vga_blue_o + ); end architecture archi_tb_sobelSys; diff --git a/src/vga_nexys4_2regions.vhd b/src/vga_nexys4_2regions.vhd index 8c1a260..8e9d3d6 100644 --- a/src/vga_nexys4_2regions.vhd +++ b/src/vga_nexys4_2regions.vhd @@ -3,58 +3,58 @@ -- Author: Albert Fazakas adapted from Alec Wyen and Mihaita Nagy -- Copyright 2014 Digilent, Inc. ---------------------------------------------------------------------------- --- --- Create Date: 13:01:51 02/15/2013 --- Design Name: --- Module Name: Vga - Behavioral --- Project Name: --- Target Devices: --- Tool versions: --- Description: +-- +-- Create Date: 13:01:51 02/15/2013 +-- Design Name: +-- Module Name: Vga - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: -- This module represents the Vga controller that creates the HSYNC and VSYNC signals -- for the VGA screen and formats the 4-bit R, G and B signals to display various items -- on the screen: -- - A moving colorbar in the background --- - A Digilent - Analog Devices logo for the Nexys4 board, the RGB data is provided +-- - A Digilent - Analog Devices logo for the Nexys4 board, the RGB data is provided -- by the LogoDisplay component. The logo bitmap is stored in the BRAM_1 Block RAM in .ngc format. -- - The FPGA temperature on a 0..80C scale. Temperature data is taken from the XADC -- component in the Artix-7 FPGA, provided by the upper level FPGAMonitor component and the RGB data is -- provided by the Inst_XadcTempDisplay instance of the TempDisplay component. --- - The Nexys4 Onboard ADT7420 Temperature Sensor temperature on a 0..80C scale. +-- - The Nexys4 Onboard ADT7420 Temperature Sensor temperature on a 0..80C scale. -- Temperature data is provided by the upper level TempSensorCtl component and the RGB data is -- provided by the Inst_Adt7420TempDisplay instance of the TempDisplay component. --- - The Nexys4 Onboard ADXL362 Accelerometer Temperature Sensor temperature on a 0..80C scale. +-- - The Nexys4 Onboard ADXL362 Accelerometer Temperature Sensor temperature on a 0..80C scale. -- Temperature data is provided by the upper level AccelerometerCtl component and the RGB data is -- provided by the Inst_Adxl362TempDisplay instance of the TempDisplay component. --- - The R, G and B data which is also sent to the Nexys4 onboard RGB Leds LD16 and LD17. The +-- - The R, G and B data which is also sent to the Nexys4 onboard RGB Leds LD16 and LD17. The -- incomming RGB Led data is taken from the upper level RgbLed component and the formatted RGB data is provided -- by the RGBLedDisplay component. -- - The audio signal coming from the Nexys4 Onboard ADMP421 Omnidirectional Microphone. The formatted -- RGB data is provided by the MicDisplay component. --- - The X and Y acceleration in a form of a moving box and the acceleration magnitude determined by --- the SQRT (X^2 + Y^2 + Z^2) formula. The acceleration and magnitude data is provided by the upper level +-- - The X and Y acceleration in a form of a moving box and the acceleration magnitude determined by +-- the SQRT (X^2 + Y^2 + Z^2) formula. The acceleration and magnitude data is provided by the upper level -- AccelerometerCtl component and the formatted RGB data is provided by the AccelDisplay component. --- - The mouse cursor on the top on all of the items. The USB mouse should be connected to the Nexys4 board before --- the FPGA is configured. The mouse cursor data is provided by the upper level MouseCtl component and the +-- - The mouse cursor on the top on all of the items. The USB mouse should be connected to the Nexys4 board before +-- the FPGA is configured. The mouse cursor data is provided by the upper level MouseCtl component and the -- formatted RGB data for the mouse cursor shape is provided by the MouseDisplay component. -- - An overlay that displayed the frames and text for the displayed items described above. The overlay data is -- stored in the overlay_bram Block RAM in the .ngc format and the data is provided by the OverlayCtl component. -- The Vga controller holds the synchronization signal generation, the moving colorbar generation and the main -- multiplexers for the outgoing R, G and B signals. Also the 108 MHz pixel clock (pxl_clk) generator is instantiated -- inside the Vga controller. --- The current resolution is 1280X1024 pixels, however, other resolutions can also be selected by +-- The current resolution is 1280X1024 pixels, however, other resolutions can also be selected by -- commenting/uncommenting the corresponding VGA resolution constants. In the case when a different resolution -- is selected, the pixel clock generator output frequency also has to be updated accordingly. -- --- Revision: +-- Revision: -- Revision 0.01 - File Created --- Additional Comments: +-- Additional Comments: -- ---------------------------------------------------------------------------------- library IEEE; -use IEEE.STD_LOGIC_1164.ALL; -use IEEE.STD_LOGIC_ARITH.ALL; -use IEEE.STD_LOGIC_UNSIGNED.ALL; +use IEEE.STD_LOGIC_1164.all; +use IEEE.STD_LOGIC_ARITH.all; +use IEEE.STD_LOGIC_UNSIGNED.all; use ieee.math_real.all; -- Uncomment the following library declaration if using @@ -67,27 +67,27 @@ use ieee.math_real.all; --use UNISIM.VComponents.all; entity vga_nexys4_2regions is - Port ( clk_i : in STD_LOGIC; - reset_i : in STD_LOGIC; - -- VGA Output Signals - vga_hs_o : out STD_LOGIC; -- HSYNC OUT - vga_vs_o : out STD_LOGIC; -- VSYNC OUT - vga_red_o : out STD_LOGIC_VECTOR (3 downto 0); -- Red signal going to the VGA interface - vga_green_o : out STD_LOGIC_VECTOR (3 downto 0); -- Green signal going to the VGA interface - vga_blue_o : out STD_LOGIC_VECTOR (3 downto 0); -- Blue signal going to the VGA interface - ---------------------- - -- I/O internes, pour lire la mémoire de sortie de Sobel - O_clk_25MHz : out STD_LOGIC; - I_StartDisplay : in STD_LOGIC; - ---- - O_enM_vga_region1 : out STD_LOGIC; - O_addr_M_vga_region1 : out STD_LOGIC_VECTOR(13 downto 0); - I_data_M_vga_region1 : in STD_LOGIC_VECTOR(7 downto 0); - ----- - O_enM_vga_region2 : out STD_LOGIC; - O_addr_M_vga_region2 : out STD_LOGIC_VECTOR(13 downto 0); - I_data_M_vga_region2 : in STD_LOGIC_VECTOR(7 downto 0) - ); + port (clk_i : in std_logic; + reset_i : in std_logic; + -- VGA Output Signals + vga_hs_o : out std_logic; -- HSYNC OUT + vga_vs_o : out std_logic; -- VSYNC OUT + vga_red_o : out std_logic_vector (3 downto 0); -- Red signal going to the VGA interface + vga_green_o : out std_logic_vector (3 downto 0); -- Green signal going to the VGA interface + vga_blue_o : out std_logic_vector (3 downto 0); -- Blue signal going to the VGA interface + ---------------------- + -- I/O internes, pour lire la mémoire de sortie de Sobel + O_clk_25MHz : out std_logic; + I_StartDisplay : in std_logic; + ---- + O_enM_vga_region1 : out std_logic; + O_addr_M_vga_region1 : out std_logic_vector(13 downto 0); + I_data_M_vga_region1 : in std_logic_vector(7 downto 0); + ----- + O_enM_vga_region2 : out std_logic; + O_addr_M_vga_region2 : out std_logic_vector(13 downto 0); + I_data_M_vga_region2 : in std_logic_vector(7 downto 0) + ); end vga_nexys4_2regions; architecture Behavioral of vga_nexys4_2regions is @@ -98,20 +98,20 @@ architecture Behavioral of vga_nexys4_2regions is ------------------------------------------------------------------------- - -- 108 MHz Pixel Clock needed for a resolution of 1280*1024 pixels - -- 25 MHz Pixel Clock needed for a resolution of 640*480 pixels + -- 108 MHz Pixel Clock needed for a resolution of 1280*1024 pixels + -- 25 MHz Pixel Clock needed for a resolution of 640*480 pixels - -- To generate the 25 MHz Pixel Clock - COMPONENT clk_wiz_vga_25MHz - PORT - (-- Clock in ports - CLK_IN1 : in std_logic; - -- Clock out ports - CLK_OUT1 : out std_logic; - -- Status and control signals - LOCKED : out std_logic - ); - END COMPONENT; + -- To generate the 25 MHz Pixel Clock + component clk_wiz_vga_25MHz + port + ( -- Clock in ports + CLK_IN1 : in std_logic; + -- Clock out ports + CLK_OUT1 : out std_logic; + -- Status and control signals + LOCKED : out std_logic + ); + end component; @@ -122,20 +122,20 @@ architecture Behavioral of vga_nexys4_2regions is ------------------------------------------------------------- ---***640x480@60Hz***-- -constant FRAME_WIDTH : natural := 640; -constant FRAME_HEIGHT : natural := 480; +--***640x480@60Hz***-- + constant FRAME_WIDTH : natural := 640; + constant FRAME_HEIGHT : natural := 480; -constant H_FP : natural := 16; --H front porch width (pixels) -constant H_PW : natural := 96; --H sync pulse width (pixels) -constant H_MAX : natural := 800; --H total period (pixels) + constant H_FP : natural := 16; --H front porch width (pixels) + constant H_PW : natural := 96; --H sync pulse width (pixels) + constant H_MAX : natural := 800; --H total period (pixels) -constant V_FP : natural := 10; --V front porch width (lines) -constant V_PW : natural := 2; --V sync pulse width (lines) -constant V_MAX : natural := 525; --V total period (lines) + constant V_FP : natural := 10; --V front porch width (lines) + constant V_PW : natural := 2; --V sync pulse width (lines) + constant V_MAX : natural := 525; --V total period (lines) -constant H_POL : std_logic := '0'; -constant V_POL : std_logic := '0'; + constant H_POL : std_logic := '0'; + constant V_POL : std_logic := '0'; --***800x600@60Hz***-- --constant FRAME_WIDTH : natural := 800; @@ -187,32 +187,32 @@ constant V_POL : std_logic := '0'; -- Constants for setting the displayed logo size and coordinates ------------------------------------------------------------------ --- constant SZ_LOGO_WIDTH : natural := 335; -- Width of the logo frame --- constant SZ_LOGO_HEIGHT : natural := 280; -- Height of the logo frame +-- constant SZ_LOGO_WIDTH : natural := 335; -- Width of the logo frame +-- constant SZ_LOGO_HEIGHT : natural := 280; -- Height of the logo frame --- constant FRM_LOGO_H_LOC : natural := 25; -- Starting horizontal location of the logo frame --- constant FRM_LOGO_V_LOC : natural := 176; -- Starting vertical location of the logo frame +-- constant FRM_LOGO_H_LOC : natural := 25; -- Starting horizontal location of the logo frame +-- constant FRM_LOGO_V_LOC : natural := 176; -- Starting vertical location of the logo frame -- Logo frame limits --- constant LOGO_LEFT : natural := FRM_LOGO_H_LOC - 1; --- constant LOGO_RIGHT : natural := FRM_LOGO_H_LOC + SZ_LOGO_WIDTH + 1; --- constant LOGO_TOP : natural := FRM_LOGO_V_LOC - 1; --- constant LOGO_BOTTOM : natural := FRM_LOGO_V_LOC + SZ_LOGO_HEIGHT + 1; +-- constant LOGO_LEFT : natural := FRM_LOGO_H_LOC - 1; +-- constant LOGO_RIGHT : natural := FRM_LOGO_H_LOC + SZ_LOGO_WIDTH + 1; +-- constant LOGO_TOP : natural := FRM_LOGO_V_LOC - 1; +-- constant LOGO_BOTTOM : natural := FRM_LOGO_V_LOC + SZ_LOGO_HEIGHT + 1; -- Constants for setting size and location for the Accelerometer display -------------------------------------------------------------------------- -- Original Image frame limits -constant REGION1_LEFT : natural := 200; -constant REGION1_RIGHT : natural := REGION1_LEFT + 101; -constant REGION1_TOP : natural := 190; -constant REGION1_BOTTOM : natural := REGION1_TOP + 101; + constant REGION1_LEFT : natural := 200; + constant REGION1_RIGHT : natural := REGION1_LEFT + 101; + constant REGION1_TOP : natural := 190; + constant REGION1_BOTTOM : natural := REGION1_TOP + 101; -- Edge Image frame limits -constant REGION2_LEFT : natural := 340; -constant REGION2_RIGHT : natural := REGION2_LEFT + 101; -constant REGION2_TOP : natural := 190; -constant REGION2_BOTTOM : natural := REGION2_TOP + 101; + constant REGION2_LEFT : natural := 340; + constant REGION2_RIGHT : natural := REGION2_LEFT + 101; + constant REGION2_TOP : natural := 190; + constant REGION2_BOTTOM : natural := REGION2_TOP + 101; @@ -229,33 +229,33 @@ constant REGION2_BOTTOM : natural := REGION2_TOP + 101; ------------------------------------------------------------------------- -- Pixel clock, in this case 25 MHz -signal pxl_clk : std_logic; + signal pxl_clk : std_logic; -- The active signal is used to signal the active region of the screen (when not blank) -signal active : std_logic; + signal active : std_logic; -- Horizontal and Vertical counters -signal h_cntr_reg : std_logic_vector(11 downto 0) := (others =>'0'); -signal v_cntr_reg : std_logic_vector(11 downto 0) := (others =>'0'); + signal h_cntr_reg : std_logic_vector(11 downto 0) := (others => '0'); + signal v_cntr_reg : std_logic_vector(11 downto 0) := (others => '0'); -- Horizontal and Vertical Sync -signal h_sync_reg : std_logic := not(H_POL); -signal v_sync_reg : std_logic := not(V_POL); + signal h_sync_reg : std_logic := not(H_POL); + signal v_sync_reg : std_logic := not(V_POL); -- Pipe Horizontal and Vertical Sync -signal h_sync_reg_dly : std_logic := not(H_POL); -signal v_sync_reg_dly : std_logic := not(V_POL); + signal h_sync_reg_dly : std_logic := not(H_POL); + signal v_sync_reg_dly : std_logic := not(V_POL); -- VGA R, G and B signals coming from the main multiplexers -signal vga_red_cmb : std_logic_vector(3 downto 0); -signal vga_green_cmb : std_logic_vector(3 downto 0); -signal vga_blue_cmb : std_logic_vector(3 downto 0); + signal vga_red_cmb : std_logic_vector(3 downto 0); + signal vga_green_cmb : std_logic_vector(3 downto 0); + signal vga_blue_cmb : std_logic_vector(3 downto 0); --The main VGA R, G and B signals, validated by active -signal vga_red : std_logic_vector(3 downto 0); -signal vga_green : std_logic_vector(3 downto 0); -signal vga_blue : std_logic_vector(3 downto 0); + signal vga_red : std_logic_vector(3 downto 0); + signal vga_green : std_logic_vector(3 downto 0); + signal vga_blue : std_logic_vector(3 downto 0); -- Register VGA R, G and B signals -signal vga_red_reg : std_logic_vector(3 downto 0) := (others =>'0'); -signal vga_green_reg : std_logic_vector(3 downto 0) := (others =>'0'); -signal vga_blue_reg : std_logic_vector(3 downto 0) := (others =>'0'); + signal vga_red_reg : std_logic_vector(3 downto 0) := (others => '0'); + signal vga_green_reg : std_logic_vector(3 downto 0) := (others => '0'); + signal vga_blue_reg : std_logic_vector(3 downto 0) := (others => '0'); ------------------------------------------------------------------------- @@ -267,222 +267,222 @@ signal vga_blue_reg : std_logic_vector(3 downto 0) := (others =>'0'); -- Signals for generating the background (moving colorbar) ----------------------------------------------------------- -- Colorbar red, greeen and blue signals -signal bg_red : std_logic_vector(3 downto 0); -signal bg_blue : std_logic_vector(3 downto 0); -signal bg_green : std_logic_vector(3 downto 0); + signal bg_red : std_logic_vector(3 downto 0); + signal bg_blue : std_logic_vector(3 downto 0); + signal bg_green : std_logic_vector(3 downto 0); -- Added -signal S_inc_adr_region1 : std_logic; -signal S_inc_adr_region2 : std_logic; -signal S_adr_region1 : integer range 0 to 9999; -signal S_adr_region2 : integer range 0 to 9999; + signal S_inc_adr_region1 : std_logic; + signal S_inc_adr_region2 : std_logic; + signal S_adr_region1 : integer range 0 to 9999; + signal S_adr_region2 : integer range 0 to 9999; begin - + ------------------------------------ --- Generate the 25 MHz pixel clock +-- Generate the 25 MHz pixel clock ------------------------------------ - Inst_clk_wiz_vga_25MHz : clk_wiz_vga_25MHz - port map - (-- Clock in ports - CLK_IN1 => CLK_I, - -- Clock out ports - CLK_OUT1 => pxl_clk, - -- Status and control signals - LOCKED => open - ); - - O_clk_25MHz <= pxl_clk; + Inst_clk_wiz_vga_25MHz : clk_wiz_vga_25MHz + port map + ( -- Clock in ports + CLK_IN1 => CLK_I, + -- Clock out ports + CLK_OUT1 => pxl_clk, + -- Status and control signals + LOCKED => open + ); + + O_clk_25MHz <= pxl_clk; --------------------------------------------------------------- -- Generate Horizontal, Vertical counters and the Sync signals --------------------------------------------------------------- - -- Horizontal counter - process (pxl_clk) - begin - if (rising_edge(pxl_clk)) then - if (h_cntr_reg = (H_MAX - 1)) then - h_cntr_reg <= (others =>'0'); - else - h_cntr_reg <= h_cntr_reg + 1; - end if; - end if; - end process; - -- Vertical counter - process (pxl_clk) - begin - if (rising_edge(pxl_clk)) then - if ((h_cntr_reg = (H_MAX - 1)) and (v_cntr_reg = (V_MAX - 1))) then - v_cntr_reg <= (others =>'0'); - elsif (h_cntr_reg = (H_MAX - 1)) then - v_cntr_reg <= v_cntr_reg + 1; - end if; - end if; - end process; - -- Horizontal sync - process (pxl_clk) - begin - if (rising_edge(pxl_clk)) then - if (h_cntr_reg >= (H_FP + FRAME_WIDTH - 1)) and (h_cntr_reg < (H_FP + FRAME_WIDTH + H_PW - 1)) then - h_sync_reg <= H_POL; - else - h_sync_reg <= not(H_POL); - end if; - end if; - end process; - -- Vertical sync - process (pxl_clk) - begin - if (rising_edge(pxl_clk)) then - if (v_cntr_reg >= (V_FP + FRAME_HEIGHT - 1)) and (v_cntr_reg < (V_FP + FRAME_HEIGHT + V_PW - 1)) then - v_sync_reg <= V_POL; - else - v_sync_reg <= not(V_POL); - end if; - end if; - end process; - + -- Horizontal counter + process (pxl_clk) + begin + if (rising_edge(pxl_clk)) then + if (h_cntr_reg = (H_MAX - 1)) then + h_cntr_reg <= (others => '0'); + else + h_cntr_reg <= h_cntr_reg + 1; + end if; + end if; + end process; + -- Vertical counter + process (pxl_clk) + begin + if (rising_edge(pxl_clk)) then + if ((h_cntr_reg = (H_MAX - 1)) and (v_cntr_reg = (V_MAX - 1))) then + v_cntr_reg <= (others => '0'); + elsif (h_cntr_reg = (H_MAX - 1)) then + v_cntr_reg <= v_cntr_reg + 1; + end if; + end if; + end process; + -- Horizontal sync + process (pxl_clk) + begin + if (rising_edge(pxl_clk)) then + if (h_cntr_reg >= (H_FP + FRAME_WIDTH - 1)) and (h_cntr_reg < (H_FP + FRAME_WIDTH + H_PW - 1)) then + h_sync_reg <= H_POL; + else + h_sync_reg <= not(H_POL); + end if; + end if; + end process; + -- Vertical sync + process (pxl_clk) + begin + if (rising_edge(pxl_clk)) then + if (v_cntr_reg >= (V_FP + FRAME_HEIGHT - 1)) and (v_cntr_reg < (V_FP + FRAME_HEIGHT + V_PW - 1)) then + v_sync_reg <= V_POL; + else + v_sync_reg <= not(V_POL); + end if; + end if; + end process; + +-------------------- +-- The active -------------------- --- The active --------------------- - -- active signal - active <= '1' when h_cntr_reg < FRAME_WIDTH and v_cntr_reg < FRAME_HEIGHT else '0'; + -- active signal + active <= '1' when h_cntr_reg < FRAME_WIDTH and v_cntr_reg < FRAME_HEIGHT else '0'; --------------------------------------- -- Generate colorbar background --------------------------------------- - - bg_red <= h_cntr_reg(3 downto 0) when (h_cntr_reg < 100) - else h_cntr_reg(7 downto 4) when (h_cntr_reg < 400) - else "0101"; - bg_green <= "0011" when (h_cntr_reg < 100) - else "1001" when (h_cntr_reg < 400) - else "0101"; + bg_red <= h_cntr_reg(3 downto 0) when (h_cntr_reg < 100) + else h_cntr_reg(7 downto 4) when (h_cntr_reg < 400) + else "0101"; + + bg_green <= "0011" when (h_cntr_reg < 100) + else "1001" when (h_cntr_reg < 400) + else "0101"; + + bg_blue <= v_cntr_reg(3 downto 0) when (v_cntr_reg < 100) + else v_cntr_reg(7 downto 4) when (v_cntr_reg < 400) + else "0100"; - bg_blue <= v_cntr_reg(3 downto 0) when (v_cntr_reg < 100) - else v_cntr_reg(7 downto 4) when (v_cntr_reg < 400) - else "0100"; - --------------------------------------- -- Generate addresses to the memory frame buffer Region1 --------------------------------------- - process(reset_i,pxl_clk) - begin - if (reset_i = '1') then - S_adr_region1 <= 9999; - elsif(rising_edge(pxl_clk)) then - if I_StartDisplay = '1' then - if S_inc_adr_region1 = '1' then - if S_adr_region1 = 0 then - S_adr_region1 <= 9999; - else - S_adr_region1 <= S_adr_region1 - 1; - end if; - end if; - end if; - end if; - end process; - - O_addr_M_vga_region1 <= conv_std_logic_vector(S_adr_region1, 14); - - S_inc_adr_region1 <= '1' when (h_cntr_reg = REGION1_LEFT and v_cntr_reg = (REGION1_TOP+1)) OR - (h_cntr_reg > REGION1_LEFT and h_cntr_reg < REGION1_RIGHT - and v_cntr_reg > REGION1_TOP and v_cntr_reg < (REGION1_BOTTOM-1)) OR - (h_cntr_reg > REGION1_LEFT and h_cntr_reg < (REGION1_RIGHT-1) and v_cntr_reg = (REGION1_BOTTOM-1)) - else '0'; - - O_enM_vga_region1 <= S_inc_adr_region1; + process(reset_i, pxl_clk) + begin + if (reset_i = '1') then + S_adr_region1 <= 9999; + elsif(rising_edge(pxl_clk)) then + if I_StartDisplay = '1' then + if S_inc_adr_region1 = '1' then + if S_adr_region1 = 0 then + S_adr_region1 <= 9999; + else + S_adr_region1 <= S_adr_region1 - 1; + end if; + end if; + end if; + end if; + end process; + + O_addr_M_vga_region1 <= conv_std_logic_vector(S_adr_region1, 14); + + S_inc_adr_region1 <= '1' when (h_cntr_reg = REGION1_LEFT and v_cntr_reg = (REGION1_TOP+1)) or + (h_cntr_reg > REGION1_LEFT and h_cntr_reg < REGION1_RIGHT + and v_cntr_reg > REGION1_TOP and v_cntr_reg < (REGION1_BOTTOM-1)) or + (h_cntr_reg > REGION1_LEFT and h_cntr_reg < (REGION1_RIGHT-1) and v_cntr_reg = (REGION1_BOTTOM-1)) + else '0'; + + O_enM_vga_region1 <= S_inc_adr_region1; --------------------------------------- -- Generate addresses to the memory frame buffer Region2 --------------------------------------- - process(reset_i,pxl_clk) - begin - if (reset_i = '1') then - S_adr_region2 <= 9999; - elsif(rising_edge(pxl_clk)) then - if I_StartDisplay = '1' then - if S_inc_adr_region2 = '1' then - if S_adr_region2 = 0 then - S_adr_region2 <= 9999; - else - S_adr_region2 <= S_adr_region2 - 1; - end if; - end if; - end if; - end if; - end process; - - O_addr_M_vga_region2 <= conv_std_logic_vector(S_adr_region2, 14); - - S_inc_adr_region2 <= '1' when (h_cntr_reg = REGION2_LEFT and v_cntr_reg = (REGION2_TOP + 1)) OR - (h_cntr_reg > REGION2_LEFT and h_cntr_reg < REGION2_RIGHT - and v_cntr_reg > REGION2_TOP and v_cntr_reg < (REGION2_BOTTOM-1)) OR - (h_cntr_reg > REGION2_LEFT and h_cntr_reg < (REGION2_RIGHT-1) and v_cntr_reg = (REGION2_BOTTOM-1)) - else '0'; - - O_enM_vga_region2 <= S_inc_adr_region2; - + process(reset_i, pxl_clk) + begin + if (reset_i = '1') then + S_adr_region2 <= 9999; + elsif(rising_edge(pxl_clk)) then + if I_StartDisplay = '1' then + if S_inc_adr_region2 = '1' then + if S_adr_region2 = 0 then + S_adr_region2 <= 9999; + else + S_adr_region2 <= S_adr_region2 - 1; + end if; + end if; + end if; + end if; + end process; + + O_addr_M_vga_region2 <= conv_std_logic_vector(S_adr_region2, 14); + + S_inc_adr_region2 <= '1' when (h_cntr_reg = REGION2_LEFT and v_cntr_reg = (REGION2_TOP + 1)) or + (h_cntr_reg > REGION2_LEFT and h_cntr_reg < REGION2_RIGHT + and v_cntr_reg > REGION2_TOP and v_cntr_reg < (REGION2_BOTTOM-1)) or + (h_cntr_reg > REGION2_LEFT and h_cntr_reg < (REGION2_RIGHT-1) and v_cntr_reg = (REGION2_BOTTOM-1)) + else '0'; + + O_enM_vga_region2 <= S_inc_adr_region2; + ------------------------------------------------------------- -- Main Multiplexers for the VGA Red, Green and Blue signals - - vga_red <= I_data_M_vga_region1(7 downto 4) when h_cntr_reg > REGION1_LEFT+2 and h_cntr_reg < REGION1_RIGHT-2 - and v_cntr_reg > REGION1_TOP+2 and v_cntr_reg < REGION1_BOTTOM-2 - else I_data_M_vga_region2(7 downto 4) when h_cntr_reg > REGION2_LEFT+2 and h_cntr_reg < REGION2_RIGHT-2 - and v_cntr_reg > REGION2_TOP+2 and v_cntr_reg < REGION2_BOTTOM-2 - else bg_red; - - vga_green <= I_data_M_vga_region1(7 downto 4) when h_cntr_reg > REGION1_LEFT+2 and h_cntr_reg < REGION1_RIGHT-2 - and v_cntr_reg > REGION1_TOP+2 and v_cntr_reg < REGION1_BOTTOM-2 - else I_data_M_vga_region2(7 downto 4) when h_cntr_reg > REGION2_LEFT+2 and h_cntr_reg < REGION2_RIGHT-2 - and v_cntr_reg > REGION2_TOP+2 and v_cntr_reg < REGION2_BOTTOM-2 - else bg_green; - - vga_blue <= I_data_M_vga_region1(7 downto 4) when h_cntr_reg > REGION1_LEFT+2 and h_cntr_reg < REGION1_RIGHT-2 - and v_cntr_reg > REGION1_TOP+2 and v_cntr_reg < REGION1_BOTTOM-2 - else I_data_M_vga_region2(7 downto 4) when h_cntr_reg > REGION2_LEFT+2 and h_cntr_reg < REGION2_RIGHT-2 - and v_cntr_reg > REGION2_TOP+2 and v_cntr_reg < REGION2_BOTTOM-2 - else bg_blue; - - - + + vga_red <= I_data_M_vga_region1(7 downto 4) when h_cntr_reg > REGION1_LEFT+2 and h_cntr_reg < REGION1_RIGHT-2 + and v_cntr_reg > REGION1_TOP+2 and v_cntr_reg < REGION1_BOTTOM-2 + else I_data_M_vga_region2(7 downto 4) when h_cntr_reg > REGION2_LEFT+2 and h_cntr_reg < REGION2_RIGHT-2 + and v_cntr_reg > REGION2_TOP+2 and v_cntr_reg < REGION2_BOTTOM-2 + else bg_red; + + vga_green <= I_data_M_vga_region1(7 downto 4) when h_cntr_reg > REGION1_LEFT+2 and h_cntr_reg < REGION1_RIGHT-2 + and v_cntr_reg > REGION1_TOP+2 and v_cntr_reg < REGION1_BOTTOM-2 + else I_data_M_vga_region2(7 downto 4) when h_cntr_reg > REGION2_LEFT+2 and h_cntr_reg < REGION2_RIGHT-2 + and v_cntr_reg > REGION2_TOP+2 and v_cntr_reg < REGION2_BOTTOM-2 + else bg_green; + + vga_blue <= I_data_M_vga_region1(7 downto 4) when h_cntr_reg > REGION1_LEFT+2 and h_cntr_reg < REGION1_RIGHT-2 + and v_cntr_reg > REGION1_TOP+2 and v_cntr_reg < REGION1_BOTTOM-2 + else I_data_M_vga_region2(7 downto 4) when h_cntr_reg > REGION2_LEFT+2 and h_cntr_reg < REGION2_RIGHT-2 + and v_cntr_reg > REGION2_TOP+2 and v_cntr_reg < REGION2_BOTTOM-2 + else bg_blue; + + + ------------------------------------------------------------ -- Turn Off VGA RBG Signals if outside of the active screen -- Make a 4-bit AND logic with the R, G and B signals ------------------------------------------------------------ - vga_red_cmb <= (active & active & active & active) and vga_red; - vga_green_cmb <= (active & active & active & active) and vga_green; - vga_blue_cmb <= (active & active & active & active) and vga_blue; - - - -- Register Outputs - process (pxl_clk) - begin - if (rising_edge(pxl_clk)) then - - v_sync_reg_dly <= v_sync_reg; - h_sync_reg_dly <= h_sync_reg; - vga_red_reg <= vga_red_cmb; - vga_green_reg <= vga_green_cmb; - vga_blue_reg <= vga_blue_cmb; - end if; - end process; - - -- Assign outputs - VGA_HS_O <= h_sync_reg_dly; - VGA_VS_O <= v_sync_reg_dly; - VGA_RED_O <= vga_red_reg; - VGA_GREEN_O <= vga_green_reg; - VGA_BLUE_O <= vga_blue_reg; - -end Behavioral; \ No newline at end of file + vga_red_cmb <= (active & active & active & active) and vga_red; + vga_green_cmb <= (active & active & active & active) and vga_green; + vga_blue_cmb <= (active & active & active & active) and vga_blue; + + + -- Register Outputs + process (pxl_clk) + begin + if (rising_edge(pxl_clk)) then + + v_sync_reg_dly <= v_sync_reg; + h_sync_reg_dly <= h_sync_reg; + vga_red_reg <= vga_red_cmb; + vga_green_reg <= vga_green_cmb; + vga_blue_reg <= vga_blue_cmb; + end if; + end process; + + -- Assign outputs + VGA_HS_O <= h_sync_reg_dly; + VGA_VS_O <= v_sync_reg_dly; + VGA_RED_O <= vga_red_reg; + VGA_GREEN_O <= vga_green_reg; + VGA_BLUE_O <= vga_blue_reg; + +end Behavioral; -- GitLab