From ac9306ad7dc12a578a60bfc8c80110087038d544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Fr=C3=B6jdh?= Date: Mon, 11 May 2026 11:08:15 +0200 Subject: [PATCH 1/5] removed legacy patternGenerator (#1449) --- patternGenerator/deserializer.cpp | 110 ---- .../example_pattern/example_pattern.alias | 4 - .../example_pattern/example_pattern.p | 97 --- .../example_pattern/example_pattern.pat | 25 - .../example_pattern/example_pattern.png | Bin 305947 -> 0 bytes patternGenerator/generate.sh | 34 - patternGenerator/generator.c | 183 ------ patternGenerator/plotPattern.py | 610 ------------------ 8 files changed, 1063 deletions(-) delete mode 100644 patternGenerator/deserializer.cpp delete mode 100644 patternGenerator/example_pattern/example_pattern.alias delete mode 100644 patternGenerator/example_pattern/example_pattern.p delete mode 100644 patternGenerator/example_pattern/example_pattern.pat delete mode 100644 patternGenerator/example_pattern/example_pattern.png delete mode 100755 patternGenerator/generate.sh delete mode 100644 patternGenerator/generator.c delete mode 100755 patternGenerator/plotPattern.py diff --git a/patternGenerator/deserializer.cpp b/patternGenerator/deserializer.cpp deleted file mode 100644 index a77fe1077..000000000 --- a/patternGenerator/deserializer.cpp +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-or-other -// Copyright (C) 2021 Contributors to the SLS Detector Package - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) { - - int iarg; - char fname[10000]; - uint64_t word; - int val[64]; - int bit[64]; - FILE *fdin; - - int nb = 2; - int off = 0; - int ioff = 0; - int dr = 24; - int idr = 0; - int ib = 0; - int iw = 0; - bit[0] = 19; - bit[1] = 8; - // for (iarg=0; iarg 2) - dr = atoi(argv[2]); - if (argc > 3) - off = atoi(argv[3]); - if (argc > 4) { - for (ib = 0; ib < 64; ib++) { - if (argc > 4 + ib) { - bit[ib] = atoi(argv[4 + ib]); - nb++; - } - } - } - - idr = 0; - for (ib = 0; ib < nb; ib++) { - val[ib] = 0; - } - - fdin = fopen(argv[1], "rb"); - if (fdin == NULL) { - printf("Cannot open input file %s for reading\n", argv[1]); - return 200; - } - - while (fread((void *)&word, 8, 1, fdin)) { - // printf("%llx\n",word); - if (ioff < off) - ioff++; - else { - - for (ib = 0; ib < nb; ib++) { - if (word & (1 << bit[ib])) - val[ib] |= (1 << idr); - } - idr++; - if (idr == dr) { - idr = 0; - fprintf(stdout, "%d\t", iw++); - for (ib = 0; ib < nb; ib++) { -#ifdef HEX - fprintf(stdout, "%08llx\t", val[ib]); -#else - fprintf(stdout, "%lld\t", val[ib]); - -#endif - - val[ib] = 0; - } - fprintf(stdout, "\n"); - } - } - } - if (idr != 0) { - fprintf(stdout, "%d\t", iw++); - for (ib = 0; ib < nb; ib++) { -#ifdef HEX - fprintf(stdout, "%08llx\t", val[ib]); -#else - fprintf(stdout, "%lld\t", val[ib]); - -#endif - - val[ib] = 0; - } - fprintf(stdout, "\n"); - } - - fclose(fdin); - - return 0; -} diff --git a/patternGenerator/example_pattern/example_pattern.alias b/patternGenerator/example_pattern/example_pattern.alias deleted file mode 100644 index 9ac446f6d..000000000 --- a/patternGenerator/example_pattern/example_pattern.alias +++ /dev/null @@ -1,4 +0,0 @@ -BIT0 output0 1 -BIT1 output1 1 -BIT2 output2 1 -BIT3 output3 1 \ No newline at end of file diff --git a/patternGenerator/example_pattern/example_pattern.p b/patternGenerator/example_pattern/example_pattern.p deleted file mode 100644 index 809db9456..000000000 --- a/patternGenerator/example_pattern/example_pattern.p +++ /dev/null @@ -1,97 +0,0 @@ -//define signals and directions (Input, outputs, clocks) - - -#define output0 0 -setoutput(output0); - -#define output1 1 -setoutput(output1); - -#define output2 2 -setoutput(output2); - -#define output3 3 -setoutput(output3); - -#define input0 4 -setinput(input0); - -#define input1 5 -setinput(input1); - -#define input2 6 -setinput(input2); - -#define input3 7 -setinput(input3); - - -#define PW pw() -#define SB(x) setbit(x) -#define CB(x) clearbit(x) -#define CLOCK clearbit(CLKBIT); pw();setbit(CLKBIT);pw() -#define LCLOCK clearbit(CLKBIT); pw();setbit(CLKBIT);pw();clearbit(CLKBIT); pw() -#define CLOCKS(x) for (i=0;ig{>%=en=!yw3ByZeE)EcQ2f` zavlo{%R<#XN?I%|%V)8$%&Y%(4qo~0HoF0T{9?Id-wqa*lz{o;M`q*W)#iJ&_OY;> zU(dpF;a@B)qj>4UR~D9Yn^;)B9cE#Xxz57EemWxifGj>S$4q^<63Z0*?^a%X5MKH1 z^d5t=EG(jH>Ax9HaS9H2ajw1UKIOS>GiEPl|1Dc^EjwOXVt!;lKE-~Tg=Kyg3(HIn zytZsHi~b;f8jGsZ4jrfZ&PK=J6}tHfowmEAq~~6{l^}R&hB)8qnKG9cTYan+eARtu zb^4{u9fddIz6Nujzk4Izk>ELFx%avi;-6UV2+mRbMd{2Uzlfp5rnx(Zq`AL#f3u0U zd|;w}vgcmj{p`v_H%Utm;SC{baWnCwFU%7PQ7an#(ea#hF+QCB_1)!KNXQD^dpcf8 zNlCFe^mUqisX^V$&t48wi!=N2?On>L_o@0Brwo#eb0phEXZ-wD7M68)PQ1H!AjhFA z!7$V2?L*`3_w*jzv=5`td-Kze4eb7fKA3IzH#N}ny0 z-f@`zoc?t=EHaYY&^GU!PO^zy`$Kw>)q4~DfD30fVg)jr+_|1SdBSB~Sz79K{>L}v zNSSkd0s;c5si}e8!qe}8-xY7{iPP%suT&_xr+eS*eX2#unU*ry#l{bea~w|P{isoO zT!F8;rTN!lwLdV)lhIhB-NeFpH0IiD`O5e4 z$=b<7`DR7lFDfehn72d=qj^hM)sepQ!a%5qVaA)Owl80Po%!!o81}=GD|gg9h*1mi z3#$+{NL|(kdjy&5M0q%Xyr?T-(-_ULDxoeC&qw*<*WeZV_sI70IPAF`)hS zp6-U5TTik*IP}=tZScLonKNesyZOR}Hf-2n{r<(ZwK2N`ct%2he0{T4C4eW=_Wjmc zqvf;aF4{Z#_CnK*GIx!;UwPaH-fWu~sO}dziSXJREuW|K;jC>^goIy6Zl+@If>ql# zJRl&5_fUVK}`D zL)D8WhJJ6}RFe>~e|uNDQ)fy^pGd#_{37%5ofhUMMf!8`*e`tfjTts9f+chnj!kZk zvQy*z;zyqSD;=BvKKoo=*V7RmlOu1id17;nkKw5oK#J%zg&-vq3@v}Ka zxC)Y9pPMTuEjXuP>*~ruF43$tqtOit?b@p2vfsK5q}sI^j@>?D`JQrvb!%&q41zNJ zm1nUi2Aa72c<1!}&$;Hq-#@2dpSgDEBx>=?ocqS=FDe_Vdw@A6eI08EyK> z9UCnLsj!68GGZx~I#H9cjOA8yIcvUw4!fzVU4z31Yt?8il~!HaH@C(U1MO)kkraPN zMo(8zl}mB_{^`#*4~=s;HXT+hUj4|^Gfq9M7!kmZSn|=J;rBRq`Z0(&5mhgUg2H=3Lxib?EU4-BT$=Y;O>}9NSJG z&K+qDzdR}B)6mf1)E4R3tl=@L-I+hu-TUWU-gRy=EG!{`&Xkf_1f&0ji^Q+sU5*WQ zyH~k%ru05vtiWnjpd-9OL$+6`vtVknml2?_-fgAgZwVWB913ZXJ^XvY)I?8jsX+9) z#)T{wWb=oceZE%3sps|Q-3+G8`^*C%RO-&v8k@IQ#r1aQ z^c0tcZ0LV5^zNW(QCyhG%Ej`-hq23oFH8zdr8=EOtVq`9f1Z*G4s*mZ4o{S!Xym(% zso2=q(9e1iV_M)YZu>Dey=CFbEuNyr*-8~Rw=$|V6#T5J@3t7)A_(6kn-*M`uu!A& z*j_ChxPISFCB#OIvJYFzv5K45w^(Vp4mCQ??yfEHnA-OB*6(-ls%rF1%{jvA7xXNo z7rQGQNI3zvH|W}N=~Y}@28gR;U%cmL~Mi;INf zBbMR1)koiYZ*08uWiL`|sD0*b9o^}t6?>4gyR_ZNvGJTZo?C3rju|R`D?{wrS#G^V z#xWN+EA&in5r}d!lSK+S5Whdt(^DTswE=t5?$6omO2Q#!+8*5vPwd*`!isk-mJ1$8 zT#>Nj_c?a0H!M}6<=xDB@`n6{b?=?hkv~81^=oaisq4g#TC0HGiJ_*FlgW8($P=og z_VeuPt>TNY1w-wnZaurVaR$YC!uU-oTOP~Eb9$@Jy*=;-apPB}m8g?DP^E77O1iDE z;mO%*9tJjtKc%3-`jg4A8f}h$>d#`49DKRCvJe~2FxKr`ZF01I=KP9WCYTH6{aLKb zyaE&^x0#|XjT#KCWFlE256{kjpptmK= zv>10C-Q$j*?9|}I@I%HhT<3Ov5sohCg57t*YUY zu|IxUKYbpnsl{)v?`>?`(US2_&#(x=&rTWt4pPuaO=($~cZ|P`aDApN?^tJ=#zw=8 zja^i5gaL^56owkw7zh;<95$iGf~Ac2$YJ_Z@x};lmyy$x@AE#*vIMJY{_dV`3V>OH zN#1#2F|n0fjxPc9@)_*<5O2((bz`E#bV|)o@4nuHuT2V5%0^U2(_YDJm@e$59uq%k z0nN)rGWU+MZg}wS{=t&rUIt^Vryv0Pq^P;bCx*~?vPs@?gl785T2U->PHc`Uzm~zJ zbm4Mm9i{G44n4tII(Az|90g4<$>&LpCSq%RJK<=?Q;R(+DtwnVy=H@7)DfaDE$MI*n^#@5A z$L>|=Duf<8AlHulRVE2S1MWL_rk0DQl<>F&>vN@9R{HlcN=kB_`^`Q-yL>G?oXcTq9#aXxIf=%*ZVeT$|8g&2(N53%G!j$-*V!u;L5Eh zSh;2FJ-Hp~ZojQ`K@Jc<_VW65z_@Yb`8SV_Jf|hK@A;Uw_hY5}`1j|-3L)7xRA;v%7>=n|h3vP(zirSCKIYSk58B-zY6&>ouZQsfUS9{P^(* ziy2looU*Z4c*DVmzCzk}3u{e1xcl2G16FL%Q$o%qu!-HtOV5em>6^Rz!V?h3H^%qZ z$xau9-3FUPRgW2IJwEX+tM%r|=Du>V0K%syq8+;Gi%_|Er5aA}s+U>OE-&XXIZm0` zb*w8h?pC^}Z-s>GgZBFCn~2 zO-^~JhvKe!)-O@*|k0P&*W-d`If7mQ08qgp% zM_Ib>>8!=Ee0)tvm7_-+G68x=x}|U(>0_?FMeJ4|P9jM2$MATzC#s9(ZF%>=FjMFE zISZ@03)(f%DSf*zYtbILz87l~aSJO(Z>HNc%5;hI0^$38!*0!dJyAMPjXPU5;`Y$A zK>i)#BfV>tL){V1AzoD2V)u`3LycBLkpR@iZoBe6m-F~8f?Vmnn_9KahbgL0<*{{4F^ zQ=eKB7wZ$)NSCt*Z{PBZrL1evc!GxB9fx$>kYq6U+9XSzhogwsnsOgTf&s$}7DIoA#(?hWrUZJYc) zR;oQWo$L$qoiKiMct`OB3Vdz)ST{-{=TL=x(?pkBlI-=ZC-sUu-ey>TSa$OMt%BQk z#*wtFW6aqdPwCe6wxVg$5{Py^a}S7Mq^1K|^#stcvww7WczE{YXoohEUzuY80^=^&-A>gm4|#;MGVNfp$!wmr zrFNx&c-oF1oh?sb!>NruajTA=vv6fBU~5!1z@)ZqZm&u)gT0j}DjNAdPR610y4@7Q z%Ra_U?POBQk-ce1{mh4TqAFIkUi|sB-8?rax^6#ob9VNl%=`n$bo1k${4uuSNp0lw zw;mI<9&sPfcRVngs*uBqCt}I&TE`&IB_4VH$HXCp>TzwW$_G0wEXD&(oSkh&?=?4^ zlnQeW8NYE*JUR7=>(Dan{)7azo&$xH2NV;(p}^OtVp)^{pfXPZvWq)*H@KFo_^-M# zczvyk?;b;k*E{C6tuJk(i$0ya2a*k=9!HSK0{3&1zW@{o@_ez z?X7<{>8t%uM4NSPvBAty3LdFCr17skz#54{#~%M_w$<-E6kXqYMbN^YoufOs>~fcjXz z1OO-VUX8Quy+-=m*hhz{Je_?dEs)XVK9+?{YmTHcyL&S*Il#mAJ75*W4?n$-UdyL| z{?LyK58jFkProAb6#zWr&2C=5NXL)TCeAG(75RTCwmXlsgvB74*%fnI7NXJA{M1Gt z7VYMBVE0J>0}5?&x(FV7p$dh* zc(RyVW{bl|=QbxiPO85nH3pz6WdYKuVRriQ?x6bDdu<`@XFZ5=Luhdhq4{d84g~@c z0NFtS(=__eCbv1Dk@0 zL9H9rs+P!7DdnO$h1`w}*BrX}fOSmHx5rVR$Up}ye9b|9Y-=B2(QaBOYWZv$vSv1U zV2xHFryLsi_HIMAL)W2%-ikRJ^pZRg!`t@D{djvFNuvHdg}}!=mlA9a<5*{|Tcw8b@vCdTa%CUDr-SdsWeES*0U@tEW0H#~L-97KgUw$b)OhIMftArssp13N^hrnfwX9+NzhhTqPU zAdt;Ks(BK}hkIQaA8|%4{rH)45V3!j%w4X(c0m$rYV!JqagGA&^9U1 z<3}oSOQ|p`F|wfbwtRHKLt>w|w3yNH$&4ogdh})9b$WgZ(UVDv;@(0pmUh5WFMU_@^XsKc)k8OW#RSO9M4?68*6g{~ zyV1to9aW#0g!;Zqt*rCzrF|X-?=SquT>#t9U2yQ+upEb!jnOz|z>p0G+4LO&*zL-M z;tM4|oLWwqWYy`XGdQ0Mx)XY|D_pv}u+VFH3?3wBN9a3!3s9xZ7hQVt4wfCfk*a4f zlbWvJ^^CwianbjyR{W5cvwRh??bC%>Y8yG?VqZo`Z(bz({i$o)#)wK?v4W!RCThT_Xn_zE zUxXjwd+y*vBTj%w(W+fsJWii3>gT&U>wtf*bBi6Gw|%bOHDYBMyYBS`g@+p+7Tk-a z2$X*;VL7g4S1cB0>h4TxO{G&DdexM%?ws9dNf^l6#ggz+}YMt?%sOC)44yez5nS&>_DTu^FP$a_$QG*S4cY@MQ9K$^0h97q4GgH zQO9@XR^cx9x!m@eiBWC9Zj6K&e{TSVhfhym^cJqZ)9C3*71qfYzsD_{6^@LNWRjP? zQ_kyLq32TPj5w{t>)Rb|C>DqXK4^SScNKU)I|LK!x0TlZTTj*$5+3Q@s zUO6?c5w#>^A#uZ$-Y#m~7E>kO7O9=xxqw=JDnRr~XXl-%lM0bFaFbY^vh*?#@}XD$8KLo<|4o)bQ@N$)*ZO zciHLZXdNlhP`4i5_z_JffC$%0}pkeqgD*a#P}-+ zUuqudX&jC45G+qA!%|rOd4gZ(KQ_qb=?&u6^|&@PXZ0fxgGDpuu3CbOS(%xOEk<=+ z3GH`zx+x{ql-6ycS)VQu-A+`Ps2=T!CtvUQNN)J`)bGS@<9TzU$iCuOcNQEPn-E@( zk2-&E=LFXgi#}{GfyT?rGJ#4;*pyw%>d|R5BiB^w$6HoLsYV~VA>p2=&j=$vzNrh4 z#E&}kuWw=)Jswjo_FeT`!NfkS1JPEN?qLyk$G^7B+j+$_rOLl!n$*=fjG*^MGLULY zr7Su%$tCuSTAbGGIUK&Lq$M=Izd-gNhIpi==k@Jfr=GNgUjAl_9cqTf3c%A>1~&vq zv64cMh#v;}MIQj0_(sRc@e#X9xuHVJ=Mwp47Up(ceIxq~@N|5-4Bm;Boj1>tBR)u8XfA1cKEXp+hEo2a~F$#w`$|>%Jk7q zOG}GE14l5L@OLgc7Sf^9$NYH}#L3x$yHgPx6?!kF+?U zXfV*qRc4OI2JJ7)`gI)ujg0-*B_s}i`SPU@NQxb5&fc*cXA%^^m-%c+&Xs8D1JFr& zT67E`)$dj0_T5BS6D_8pFtG)oI&mUzMo~X1VhL!@@Ra>%+3p}pNLafrWozQgyGs)MV-@aDT-J=`f zKg z*}z{HO+!RVBy=1RViAcyC4G+)Qj=@{K14~{p80M<+kX;DgfvZoG;e}3lLcE~Ri63& zSorXB-pQ->QvD(AJX#245*>*Y0^75kHr4F;Y=!85%}s>lIIT#1_;hh@F;dZ0Tj!wl z`X+}Ryu(P`3)$A>*%0KjO{XNNVO<$Mj&{r2CZ-55=1=pln`~ClGoYUNm5VxsrM3WqDCA@ zDJFEce9s!@1+Og@3o#!Lj7C4GK%^#7V^3U{l(%k5*4orB-2Op4nN(~|r)diO*31qh z|D%?cZCnytKqA6Jz~$C{vhPdjY*A4T=`%--AR(b<1qrz(s)Yy>LADLuMhp^9O7;Hj zaSw7(?47{oGa}BuQq58P3^XU4^645Lf(VlOaL1G_L{+N}`Tm!iQ&1#Z4fV7%-n?Rc zwsh$MWSp4+*P5!Oq^x67e+fHv0!*vjmutI=5$`LIR!qHkr|u``3x6-|=HBk$OD!aU z1z8IMZ9^zJ(%nny0(8 z=-|ihQm&1r`Lg?=a?6@3DzsiVZ!TP}vGGktV6fHFr^b$rD^Tv-^L>5=d%Dn7y`zzjnWAMw+0MYmgturyo`C}6kJstsAbY%ctsrpIkHLx3_dRKvs8)fF0L*He< z8Pj7@|5Exxu@ujg1kIyK{qYJDLfs%R{XV9JZZud%H(NY(sbKO)vK;34` z6W5qbaNRr?wRYe_n8=qd z!?j}y{i`@wkUG@x{@{=w`uvUhX+d3aT_kL%iTA)H%b=I5(dp?*TM>Hb^1VCT2k6}r}4HY3^R)T?X%m0&|5+?iv zf|PeF>~3 zZ)o$RMdh5wSQ@m1&^;cZqQ*B=3fuR7h zR#Xnoa9rrQLt~LzwoAyMY(tPwa&BXg6v-fcvequ>hy^#TO1)!{cm7=dhYq+nJVwe* ztK|3PBL7j&D7X7eYP z88tM%K2h%YBnJe%lzKTdRn170WocLMBDwd1hA6>f4{>OsicQS4~K4SheX3hCx(9j4A3^fgJ zQRMY&7YRBOy37*14>p!dFEK0KhKAc6;m~Y?{aPos$ufBr6YzRS|mvV@kQck6KU)VM%XmxY|3s+1@=rkH9`eLqi9(x}O`0}L-FZ4niM zn7I{WqiG}4N_#-nF{3`8zAd6c_lWJ>k9^@fW0(l-h||x0^ZFqkWIq((={Y$uX1Sp7 zI8x0jIG1`+OxB_nF6BisJNBbRVQNGJ_Jy_9OX}zmAph;#^6N%Evlmy_IA40o=l)x) zprBH2mdE|L-j&YS5B)E>Z8WjxK}p!Jav%N-&COa6{Y*zQvYhINkLCe#p_U&&RBnE? z0ccl-cD&!Er;_PI$XwK386};Z8!XERGu8RhtA2!#FR@dxIS2S&-e-++4)MFebYuw1 zOl!BAe*&DsnswJlfOPx#S9dSY2A+NYwLD&7YW!?28sZV20>b9N5b@Rp*qzGq(e^up zv3F(V^6se|PVVWwf6lRgnrwZ$>gdDQ25_ z81d2W!Xb|yAPLD?8=wPVfCdoKQB;P7&K?kHK&;gkyF~2#U?(T4rfPmmMYvP|_}ind zBHFz==}fOkcWFooRs6-W-xZ^}==UvFRqNWjLlW%QoFL$ZV)Nv6Ng@E!#T{pFEa2F* z`eFX)H`j9TSItnfy$EYCE?r4I4aGGbo3oI{m8k4-slP(4Ht;- zk+`BffiEQyJI_F%UEfD-zWJvSTo@OwUhGT`BE58=M@1mgUh5QE8_ux-f)>{AL2d`P zIZ9*m__m>=35#E-N_K>f|;1>s!Ig`WJkHe`Ukw5oTeK&Qi{$jXHD2$8y#-1Q0RCg;_ zlm*LvAhSXGkDPNIY*?KaPX3@OovtNwYsyG+myFjCGYKUBGHVK8I@B)Z%ia0!iv79C z-E7st3wzJ(L22zsWE$wQi@jaB=bez+zJ2>5=`UB)Tadn;Q`pK|1xlqadzuz!w-<{s zFFnHC4kd0q6_6~Xx9XbrcyBXUpNi&HKJb;8s5o}$U&gQVZ?x_sU}0&v%sj-N(JWRl zEti{`DpJ@D6-D$0sI-4)uB75fN#f)&}Jj6*3OVsQ}~la(ax z4%n5SHwr|H2q~#Fvy+!M5PkB1Xcxx zZeiN1vbVYATn1lC=|GKKN{+mV(WdsJ^W?mSTYREPFK6m_8Ch$Le^paH`1)BRR*l`s z_Yzxo=#|Sn;olHV7fp{(K0u|HAwz2&U`Dk`ko4JBBCLJv8}`!1NXgyuyh^Pa8H*cz zPImk~y)z^`T>E5DkjP9C-tsAdpo17 zxbuBlb?CXTuWxIXFzt#6waYT@cL(QvIJToFZua8?5#}mK-FrZ~kqo@-$(2cyHdYA( z$i1r&E6!{?rfR_9@b={P??3hUot~;=WMXguhcUub85N#l@rby|R4uF|;+EE+R6ktY@@&dT z&Zq;0CD8a1Ea$#a3FX4psRt_K5+y01GsCQM!t+%S+@`{}Z3-T@JMmY$>;hz;w_@Ni zeR_1;e8KAoZ-35faMO@(XWxi|SOltf1tkQgJ*FcMme)9kWHFIeUGI`yP@5FAftvj7 z%=U#PJRXrsWKFAKhEs3zbvP%Kl$fNZb7d6MR{o+tZUnqjPi_43*370kH!kfa;)n=Q zAJOatrGh0>U|YjJ7VXspLB2V(GFqYFsX5^qYXe|`X&30mrBsdyK5}*(J*1?gbK~Jj zB_$xI!2ESZsc0LVclPusO$CjWEM#xEYB>hEtnik=T>i$q3i*J(LhzC=Y%jK=78|W$ zi)O1OfsEYfw>#ps5{JPOK|zi3#M_8~KV&;-WT%{D^dwbj>>X@LzVijj4((t(UMSIM zDz$Lt-g}LgilxF&RtvmgxBqyVGk#^J;>fjjx!83d(yjb}5c+I+g5wT;HQQTlnJ&I@FC(4D)TqMTD<`_OaIvV}}Ja2s}oEE`f%_>rP z?kg#6vHd7J2|~is=x|OV2^Y8=CNJ6Dn6n!k7y}%;(7XJggVTP+12w+tY7ZL&SB9~E zAwN6FO3R4n3M9-!J5StnR-6ik5ms+l>5|GY$IR4e1Vo-ekWl=jSEI7SBSQDR(lDkeChwRQ-aC^*+EA_{Xl{{ zKuVXL!H0}NG??cw|AjA^riw;jpfZySnxf)`7yt z@u(z&U>S1#f}>jJc9Z`Y`C@_WWUQT4-Jghus99`GPS9BIhG7FfP`^Atl?hr!X}g4T z$h&;p{y)9T?XO~F?KB=n5J)rY*^Z$O*&%OY?gMz_0_7i=ZUu%e_TyqFDxd)=UL0Z` zUsnNeP8NLW4Dw{)Q}_3n4pbh6{Q^lnfatzrfjipvv;Az#vh$w##tVPDeqUmndkG`x zrxto`=>5HqdLey>G^IgNEII&Vj6Q^z{1ybzk^|p!m7U4qs)EjsjGi!wP)Y?=r-aQE z*lqJ9$m+<6_552WKio?lA; zcUi~50{00%3{(+p8sNXDQ)ZTwYQ=S=qMCV(kuvg9*_^Y{BChfuDN=Ui~-}hp4Ofniyd4h9XKP&!QU_9GVo@%IpjLBj{N$|826H2 z^&}gD5))u9UV6~f?Hp|_CRv3s9`c;`l1m;Unz`|ss`DkjoXe?T8zHSKpV(fVcLGSU zV9q6!P6scO81Ub$_dY(mJij`0t8np^$g1Ox&t3Mr6K({1CH7|Z`%AC3Yd86v=N5GK zJ1Mz8dw$E#ANStHoUaHp4%R)e6>HMfRvGA2SwA2rT{9!z}aQb;+v7AK*2r zIFY$+=<+yp->oE)lf0eZGP^=ZX*{(q?G_`p9@k{C^&G54?va#8^e!nJn??l1_@ zb-$0T#pF^@j+p8Z%Cr=DQE3&)8GBi#n6MAc-K3v*Cw#4A$mPH^&sNVh!`W# zo;1R35J0N_2vboqf;FZWZC~EASG%dnMg?6#f&v*M#2q^8$ZHBQdMhBG-ls`8Kz%?x zZ-y&W^UKMrHa7f-wke3Od{h_53n$eba;UHk*j=mi2~Jg>DsD{_ppzoTM&&^p9;%uFgfV>MEg+`!XwmLuWm znOQ%E9$`L$jxi{I6=x)@3@HH0aU!r7m&DjM4IDba7 zs_{c-zu;m-=~oIRvT;DElq4wlm+%Js?8|{oL>(4Wb!eOd=e6NXI8CT=+3cCRISFPI z8H{K4$0_v>urzVO&b9H;$1kNp)uAiWvxF3=LA!X4L_N?Fmu)g3I9hc~f_Uo%QV)5t z^}{XTiZ@wyql$@pYm)@eT}Va6JPNk+vW&{z^UBVZ!l%M#zY}^e)V8py{pJ>{ zWi(Pjq5#vq4NCxN6BMtY^}GtkTf}Ho)pf`i3AR}CnB-5-|Fw0DK-1t%yVAQnNT1Zm zR?oSpi@C3EpmfUZ8%`~$v$aN7&YX`}t|7aWsF#fp>F?whBNjcb(Ghnzd(uVI zy&GPQ^ynNY;SuL*40@5a*ST3qj@fR#fm3g}S&)5Mv+4t^x*b9(UWA!XA+uPIfV+yw z*oYpH(HsaTz;2+i`e@KwA!X7UHzfEqR_{MTGr&x7a6d`JNzvOoAMGj@@Fxq@W%o-~ z%VS$C%Y;1Sw>_h|!`SvJR z6JOj6yta2trxz;6M)=)~zeqlWf|3R5w>q>E$~5$arIarCYF9Uh&0Yq=p+esh+FCDq z=QxojJbIsoZnP2fJ}>nxK~!@lkKOHZXs_aDT#7`VN~o)~dU;)Z#HNx}tDk0@FgCH7 zN2=P1UC@wlT74>Ro1MdC69k{@@^0sE2Q@B$8ELl4lCvj<0t*iH8`8-4VrLVf36 z*uV7jBpV|3SZIbTWMqGW>rWc(N!{^nxzT-uyjIEiqr%oBssfS0y>-};d$zkvL%&q( zTvZKjVRtjC%U-T}12W{J=Vsguw^7@2I2PE#s$6(%TV_Ha$9+~6(1GUk{zM*;0b#hd zU@|158wL?0N%juMgz4F{JvZ%C|19wp9J4F6W!gEBC*vYr9>N4q`U)90msyFm+o{UH zw&;(KHj@pHDV3ArXo!+=6~f(CiWai&=eIzG!eCGYUD@)SIZJ1w-8ecq4vXK!aS%ja znT8Rydx$5g;e|aJQx%W&Yrle0tB|VOP@Su$R0wG*FlC%Zd!UT6-`7wqm2ejtzP{8# z!TpAUhkMG@1c{tw`X;X(*#mhBt{+TvoraP+r+(5>fqU3xmo0UUx_%w1tdElmm+kpW9W5FQ#@ga{XxPwvp zi*D^0xiYZvP`V%i!t^noGcVQ@onL8d#RY!<6q*D(NK-3>SUaI5RSeH=Lyb~KH>;kW zd}Y;{J@u&=v?#=r)cN`;sLF}YbqB^fIG$fw96)YW>qyv4g!fCguwFb|usno+NmA|^ zjgPV|pQFZIQh}_gT?BN=e?3O?Gz{$`c9BCmN%=G?My-CF$P`+`J4n2oySmjrkiDQc z%Hy5xL5qe0yjXO?@#%#bRvzTB^Z_zsOGKa9QS3g}6_zoH1vdD^SJgBM;6iP}$hjkD z4^+CryU?3iFdme41&16EySj*4N+?`48_n7G>MH>y?EPjy94boATW^o z)D0)Woga18=zt)c!WJM8VV`qWI@%Rh_%ikxnl!lVlz|9QHhiN8a;h(OL5raSwAa{1 zF{BVILh!P#ld9S6cf*^>r&b+hi2Blu4de^metY}Fm2GT0Kp)vLiY>-{gQLm+EwaIe z<<}d!)BJ18MY~e5vJYA7_{_*%2cfliYRqFw%sP?^ED#sNbFIH%?_hZqQr>~XPk-E1 zWALP6tf&xXjT?iufW7z-8A~%3rYLTdKUG~KN#w8satSXpU0kSOxAZ6JO1a+%lE25ss z(lu}x#5@C@)sM$N5Ojksx(iJ3l`ssU-heD1k5P$Bgv6lxCOctmvzEJ8<@$-4f^i33OoXdgg<0yc{ zhcMWMqoGi4YmW{3<0{Ay0ywm|U_*UJ-6Vzrn0+860(W99GhoG3!L=&V8q+B{F@(M9g$*NJ*>eo$DPoy@=UWVc+#{1p|EU6a z$*Q_(8jei)1fRN^o|83^+9eQH8#C%p+$UpcGnDRqE-%R{$KdF~jIAe^4HVIn&d>h! z+nXH69%|-N9&&5;QRN~XqP`F7ObT^i+XS)mc6hWURIweJ{JFQc=3MUwd%8DA0|0kz zfULwvm=h-x;EMRB0&D#?`pzFdI&4r4ouOEfg`c|IEXd4eXni2MoTe|gvynT$*g1}K^RYsjPbq>! zQmQ^5E~{+}-_3n)rZWSNj6?sFbO#&zC)Z-R0Zqd9B-A?r@~qkBh* z_J0FQ`Ldpqs*qfs{LBJbsZvu*m?Via37d6D&70*PpZk40pC$XVSJh=_wI4g?atEj6 z0z33#>NZxS0Pa&Wlw;;m3@Bo*uvu^xEHGuGVb*kws7OHO`q{st_w}*Pcz?HWv={uM z%9TajW(XALGThd35|>C@XWICow3z`2(LiQ;$#$5DVxa0+xQP24frdwNGyX5T6ti6P z)kM49LEMtJ8-@e1KDT9~cd_4=<59SI4cWrm={q$NJ>>=E0@;~FcTy;6zy0kkq!VCn zZrwlwessEo=L?Quy?UzJ)QHePzSS=GD5PIHbOq_iVu51JnXevwVm^E4Hf%i{(?z7T zv@#006T_`J+HJdlg)Q>h?*Rhv>8za>BVA`_?0%Nc*NMrYY4I5X?vqqj`z+ zHL**V0wH*T^|R44B^X6G0zT|nBcWg~x6?jdyW8KFxK=pNKt3#o9BOUf-5`A^;}j<; zx8wvve;R66Ks`nH3jI-%58=rgBO9S?ve{7f=oAu znkP025mUmXW{R+NOusNf2aGD`K*>K?+=r*InHnnD56MqjZ_-&1UPJM@8_@O@iuoJ? zFyclY@`sAmN6(7v9Mpx7(~(LPG|FaJ4l0w+%8k6oyh>31zY6BB5K&ZLqF=gMbVLCP zuLP1H2heM=48}vmPMd5{X!+6qnG*hGb`wwXQStH7np3lbi4H!B{jDe7dbX5@m0)=o zWFB@(s>r)S!_;K(pc-^jQhy9dCjf)omJ5!GiBRn9g7{WjyQffW$0zDziYI8OeCmhk zly0Yk`sh}&NoHY8g^^ypUp=Si`{(E8kOc#vr-;&&QUd1nX!@K+pvg^#<63U*X**rY zA9i%X9bUNEC>fDSk@|SDR}y_XxJFh{!q;?C!+B-FxE|`t=jT^S@Xl-b%pgyCLYmo) zhhdKHf=+TFHvjg{WXz`cyLt$;Tm&&PJ>;)gWU*qJ7~uo=D6I2+54KDHsguY_w8zEW z$A^8#Y7!2tWum2XblgN1%x|0BInRL(b&lH4y_9M8fx>a1wYK}ZxxW`VvR{5^)FECQ zd%zE?s9+sQ6DGq&A3RNGCc(%Q8mp1`0@uini6p@@9Q(*CfN*|;{H4`iOHvHgIdVWG z4Z*f|%$4tK6*lU~$<=k(r_r{N01cv~_EpOE`zk(ansM=P98Al@W#w`sLpE@eSw%ZV zmjWx9@O1&^P0)E0P9XgtX<=45`Ql-$%Z8wnTDWJ^S%x@mWB#h;<24xI<;0Ej9?Q%@ zSeUY}UQrC(&O@fe`aU9{v+diL!M(0wXo>G9N`%JL(%;v9Cw~Pb!+gN{GDq?>^!k zInghlN=g3HwkcX*e*_0C%^TmkgI-hTaxz#(4#KZ+QPh8bMRReevU;EFprtcVJuRWN zJbF7i>QW7|i|jhZhjk_OYRp6Sk?EfXrgqMLJEaE=Kf=CB)xzzGyQA=-3!$qYRhb)U zxtH)4SQ0N()noQM4OpR;X20*^g@dSEgc0X~~Rvkxgrb%SZ zY`M~_UbM1+we9SYLb1g*+kwK$(vw4OIEUQ%>9iAH(PPRS3B}P8G~rs4h|?nKKV2Q4 zsVYgc-gFXIu?#t93eX`dcY8elW1%@z2@Ctjk`4enyKy4NGAkEtI?09-N}B&0%u{h} zJ)uK3g!XEoq+(dWM<#?``@g+%D*|24^oGQ{NGPY_xt8#U8ENsAAUk`5I^4$ehMpsf8x@V)JGIoG zVV7~C|2MfdbQ0Ko9D`i`kYUUo<9M4A3O|!C6PVwMCwq!SjTL}&F1iOw=~YjThaU$Q zB8$^2=(G{Ou7fzNi0A{|^=`k+>wz7=lH;f`E4GSF@$5%Smy$m|7Y{!LhhbPdxX_F! zm`4$s=jb#ivP*f<+7~!H4XxIxw0e;}7;rZG^5PmHIWyk1=>5o?NS;fz2hjz)$>26M zG&N~j)tI0O8C6S*>QEhuNKm&*oZg$6>AzeIk;j;nwCL^QGzo?6;s^0`nY0P%9_Zl8 zxAEHH;GJTc4m;LHW(F0Y8lT)Iav0N*94Q|}Dr#S#G_e!q+HUm7l^m}{^L)n`yi*)> znKyncC*`w+r+^x}od?yg|3|z`pE`9x?I`I-FqR%mq9+o+&{KHt_dQ3R?L!Eo`5~{t zyv89qVFqBD8?&}zIr9g(0LJ`Ck--eYGAj>lQgCHa%P2$f^|(~23KZc9P9NK`MdAeT zx0mYyN6c+|(ord|fGf3n&Z50#P)mYnd+=fnTMMAIHOc>+?4FA`C6rdz^>`{i3T%lo za&75~+WVQQ^WgJzl!zC18syksL|Tb>$*Q1?SJ>*r-1dS72rG47gu#r5xbmH1FB@t6 zfG{7pcJ`bKxT}k)dxITUWB@MLG!4?$ZsO2_1o_D}g()xcRDr3?HmJ44se8hw_tud4 z30?5~cbT4^KV{<+tzGd zpGU>q4)~Yd`Op3y11J@eyRi)k9rLqYRiB*BP^rjJ@+JJN`%!jD3>E4fc?4EaHVR6S z@6c&$$1zJn*{JRQnYG|zJCL6xf?o&PmCQt82TP;R&?)f|>m zNXu-;lL+mW9MEj%ZMN}|>)jVmUL1K<>b{3!>1KB!1x6T|a_RQomskOSQ&iAE*+{49 zJopYHf3mtIope?tiw++h!bmP#^GF;36)OTV#_*!)FJfh3<+ea}WIpXg2Z`<%LI-AM zc!`4da(!~EO7ow7VN(-40uXlQ|a%LqFaq8G^f z!y)T*ngmLQJjNKjh=74riw)}LK0{kd`IyC$q`a_f;rF>}p}p!O90l~{FgFJc)8I4y z3!vPw5(;X98-zX{IJA6GRyN|Xuu*wQ{IR@Wxai3Axin^_@Ej$^Zl_b;6itY$rGs5! ztkFIEE-15;BS&SjvJ4Cqk9onpSjd1DaYFi7J?mwp`#IrU5#NKePn znv)Ay%cz7D2Lv+nuqMQI5w-Ie)}s-i1S|@r2pV)lopQUKAEB>@fL=kqP$D)klxGGb z=K(}BeJxXe0nxeax0y2pf9oz~r2$=<^<*|qw6%!vM!$Rq>rVK*2Wc_jSVly2PbZH=u>8MFh6mN0BVy#$#>S*8;de$w5HL%nX+?J}B#BLe}AT)aw zA)SJKL94=)J8-V${lbSu(8(F3A&`#^q7BUw0>=4KOSI)=%|-_hJvdIN;@Fje2k1&^ zuAR6LG(k#GxtYht()32x%uTmk=`>nb{7{-jBnuw3RMgS^$7xa8&B;9&Y+sLgGY;yG zX`T|T6R?2_y&Vnl5kv5zWED{1KjH#KD*k+Zy#_Fv=zO5X^>icLg4qH{=K= zI|}>}04yTlCVgRxuXqb2|DiGSS99ADZH|~0W^ZTZM<$m z+9IXHsyrS6jC0s3lBaM24Hq_p2~HQ4BLaiA3c^Mi(he!s(0FC@RY>qfWHQ5p;s~B1 zIzJfU=tpIO{B+bXT`Raq5+0E~f1T!pGHiyS)qx%@%^jQt!O^|ySWn#a#CcOwFz+PQ zQevP}&*+`dKXM=`-M{i)^Yb`QtL|T?y-d^R!P@y(F?FYz;k|N>o)&(aqu9RT+Z|n& z3sq)DJCzT--SjB1dFxEgNhjMmfvq`oBC(>f?(puV|2{~UYA*8^|MZcye|`A#&vi=E zV(Wju{Quai>;B`kWaqznFTac~)VFJqk&*Vb|Gthg?xwt7@S*U%pC<+X`%}!nxhGGr z(SN_Jxby#wSA(@7GBYRiV{@3t<1sHvQ}hAcJCzy2x*Ox@)iQ<6bQ&>Bi;lagd}&3+ zzHCG0*D-%%2^m?9t9=iO$JyPfku(PzvaRiD-i2k6CV5b z`!m1x*3Ko<=SusdoH)iznc@hoSS0BGyrhRX5KmNtL!Y@p*zjJ8w|^dCT=MfEWW?%k zzx+FXhNo~4v?NWnfL(7oo-_TE?!5SUAW7^&Y&+_au)j?+$y%Hb*iG4rgg?N<7_}8Q zdj7uVr#-u{9cZM6b}sBc0XT!A)%o=a?54G3$$3aarmSjuC#v5sr0*&V!50*R;^4h& z_xHQ7%nOArnNEKD-$!51Q(VnlWabwu{&^2YjJ^=R- zUI|YzR85Aiy}itVJO?^Ka{7)vCDv$7}fTLeqxn zX`cW7)YT>byhi69@)`S)qpr`lWgLC5JXlaI<*G>TMtvnN z=ZIj{b!CSR-B$=Ki+j%3(|uJW@X_*pd?JDD0{Wg>8;#ThCDffoIwk7-ZI611>s@{1 zm%^Qt(<)!xnC9`)L4CJequbp!xwetK$`RLlcfIA$a>$u}yw{o@+a~b$!U>Brd#=Af zp8iV+$MnB~@?S4sQ1hMsM=k#ARYm^dr~mZ=^MhN<%n$$XS2exF=^sJ*AHNa`|IdgH z9W&-X_VYi!_Mgk81^H)nnPKryF#Hn?%s`;u{t1SEg5jTF_)hC z-W_EA^JRapA@eVXmu(ag34ymS$u-Yy%)$Kde}9@j+O!DvKSBBzDh}qmW4y<9!2*@f z8%#&kgyMqXG)z6!l%F^Fw_I?cY?0e%&36Tpe~v8<9hudC-=xW-WKts2_Tjhp_FohB z?GBZ*ZPXt7l_l>H4*m$48hJG`^*DDZbkgQ$~)p(=yO5EKDXnJ1YN6d_8KFv$#2F@!k~h7ic` z+vg;K18RGJ&-?!I@;vumdg(cP@3q(PS)aA`KDi_Y@jShOCvbZ;0?N#dP3eHvj}x$- z>Vt8I(ye1a1#2cJZM8wc;Ilg$FGs1tzj$+0*=;7EjB)iA5wuA#AL2fDdkLD%5AIc= z-?^;uqpq$VTf8Kv=49^d^ZR(72hG>Bv&thNXiisFwvs>Ls-#g7Fs9K?9O}ByXaOIu zigM{DQSkr%)=8cjLR;9Y!mH5gt*`Y`JnDPm_aPfwTeZk&6U>XMkoGb6sHt@E ze2|H;djj(8@io|oIPh)D@AC5U4!~dViOtol7}arh()zNlT0Et2x%O$uk~vo*Hu)vV!s9nx`_*(E{L9gCEh;D|$z6$f zd=mxj9k(8nei);7@ekj3P1n+yieRjZg)YZDG&RjhHdsyY#?*~ww&auK>ShByGvTX5 z?{w@qma+;8*GTe|ezEsokk&e?iCw)HuWg>md84dB|6{c~;hWSPQ1Fk3Pe$~zLz(O_ zug-jD)3LNq4*3nfyUnVg&G-7zrsRktnlZ-Rv#loJgK)-^Pkk(6X!B3z@oT3dY4bJo z=BoHMqdx}?m!^CdIM$)8tS~qKM=AC|Mu1o77eU_)%qExF>*AflUeC~TUFg`_iwPOUKMZ;cfF~JWqp5iE^kEL zOU1>%WcK$}!v{lybxaMUU^T@Q;Tze@vh| z+<4ph6N7cKnsJOUc3A{7+Ke18NyLu_QBrh_?U)OjcKvaKysn-QI`rI|I{^lXB$znv z-{4@w@q1(DN_kOI$&6RG=eAulHH~YHN>8u#o*TR!n;XFFvdhS9=bI#Soy$R~YST43 zQ7{!>pNW|baiKP>whnVxXv1J8bmv_(X;vj?s0#@jpzzbHSFfhSUHY7P@F6c!Q`-b`uP@&2`;2O z8;eSJHlq*5N6S>|Rk==t^!ItpekUQZxi4$&Wx632f992krtc($Rab3WHkS?C`*THx zj$~ZVIgRB@O<9nM!_QwP9dHcdu-8htMt+v7sbm$d2 zJ4uhukDS?>Th5A=U~Y$3ds6;y2Ra1?8ifaPZ_&1eokUBic3vCoae#kNHn_N6Vq`a2 zYx&A9C~9tysNk0?)W7n=*>#pUPmDi;C$Co{FMkE_0O79yn;=b=m#;nx(+Z8-ot+@a zH_OY}DgB)c5c0KMZu;H~hkAln0_dLVza z#FDG`K3Dj%`S!+3QRDExv0oXif;g8A!bO<>!|jr7rBTJG$aH5T#a3|&&u(DNDnB~* zS}2RhXhFH2I+c~Q5l!7~3U)}S1986(&UNGaGbvd&%p@@9v2)iQBrs{%>E=$I!r}(%I|!O? z@2sotQ3BtI{k#C&zR9Z7C+5#;LvP1AOES679)#Tm{{Xo?OApahXU7D-#^IKGcY5EAq2kW)*!DjAR0<1=Es&2;LJ-7ooqTqD=XBX_iCo;< zwS=u$-hee_HoF@Z^_>^QVJ{W3Vb~iiJ3YJgN(A-eeG=~ zcR=@Sa9_Uf>8uSrR#QZK23tDJt0&|o01$~h-q)!YH&RpX;r@N8e6CjtEaINmsZ;qI zOo9hor>OYJLON~%p93x%oU1C7Rn%-{Fm7**7vdkFWp@K!I6kVHZCVAnRX=(1a}en6 zw3<6kDID+}J$(BX^nZ!Arw_Vqy+x+Ez(J3)!oKGH90nFxr>FDkMz;TtNeg0T{)kARaIu`*Th zG?G;eS{f+{xI^F}QC5i?U=2tB}XcR z&61)isMn08hE3|KVl|^9X0p>_ffz+F681R^#F?!Az*^1$<4Wk)r9Yr?hwIy;V@yG; zpZXWTY`%m4(HWOPR^z<58gD92ih`*ak*f!X>xx-j;I2Ab{$m=av(K-HW#s#=QH5 z)s<}3tSjIB8T(Tn9cT;^AvaPVAu{dTL9VvvHVEDHXy6<9j+yq}1N^RN(gSk~cE69y zW#Bh(OP1Ks@X=Kk*H!OTQ9bWO;=H8Uua{7*J@6N>6V{b9*ohBZ^;ncC>unU6$4G9) zZF^o^X>4!B?Cf#rhp!j_tIH^6Axc8-LSoKm0AO#ftA>sM0D;I7s=jOE1%jRKd8c?R zE{HQIXJRm+glyh#y2Hrk=>umk){;)}8M=;xXE<2|4QmqJGd-sHvUXk^0Ssf{`$IFb zbtCYr7lHRO^GXB4+RJ%N;6C<#yh%>}%P$cPOB)4SoEMa)B;hk@h-loySCfT!K?6%J zw<3%_G7TcHaD=-;D6a7F5pHVdb?U!}E5$DO@BZm0c;zmKV34op731ur5#|cNAa2GW zY}l*ERz?}ecb$5to%eg75}Z+8`vr-CaD@Jd+8rZTX9Vn5`0~p%*fP=vh4cPyao(p} zfvt7`iToamWe2PpP~!!lw?|b#I`+9YxZIOfwx(?@e7Ldze5kC;^s{@z&z&ve zq?Cis_Og4Xar&`l{*IOl_dw`)s-H5qhf^HQ?z|V`>@BRfF(C z`KEFpjx$21S!5zc3++%gB^VwhPG7<(29DJ_JLQH^=q}{ZwyF7%M{~)dBxx~Q0>6;E zqLg0+KbfE(9c zPSy=5?NUkKu+y?$vRe=It?x}p&c<1Wm+wz8I!c_$_R3yJ0iX7{bGmy#`D^ILSjUrm zkb>|ZmotO<)4kLxO2+RCV|Q5^HCB^18Q+GZvPts`l+P+O?je715`~xZxr(+M=7ML} z6uJa6rt90`bhIF(eVhgIQ>8!}h$@d@L~jqmjECzQ;Q}9)pdyO7Y-knxR+USzfAAn? zZR)R?`_-}9*zX`>Q zAW~E+ex^)LUTFYCaZi5cnt3GDMT(^>ihV{CPWd z8!|EZryjOV=*pjehsv5k9=lijo0vVYVwc0}s+Dvw zDxyrJ01d?({iIJ@5=?&-!x-?d?SX+c6n+qZ@I|*<1O7p413aED5-lAJ2#DKDN6cwz zO!(rfi!at|xwb=6?>TkjHE|dQ=F$(34^`hog{b!teliop#fyJ5BO!_73&Y`tt#ykI zHF4}W1&PFI#x-O`!sr)w&JPZ=PKQLPKJ0Pc7jd~f>^~2D2d}jAG$LYOW66QH0dUAY zv6B#WS6hpUj(2MPuv_}4`TA{N+PQ)RcuQ)Ayq9*4sHo!Xl(Gz3*Znv09rgw;`MJ`U zd+)+iVss(7j>D3G%LjjxmzXj_)DZEQgU>ACr~pA}AXL_Y@?y1ncWFETnJMeJwj=Ge za`8Ib4=>z>{6ye=F{SeCB&Lss^^X?-(@-UqI2IHG%;ryTf6~TIrH@gfD`-d?bKuR1>>~D@>5_IJV-E6b)b$;55vK+dfHY3GYpKaXa+{?BR3} z^Ly3cBCR&`WSS!cd^PLaS1L`>KknMWs}Zp}LE=5T3IF>K))-3q(?~?a;V084(;c{N za6wZQp|YU+q7Ge|LP>z#qT5*xN;_T z{7KTBDgE7($q05UQ45!23D`-PBPdg#uawlgf0WcYKzr$|M_`>>MGdJ-IuCpR)QKQ? z;z}W7IA=NY{n65ZMYX?aBKKU5tN1;6e8+{57xCR+T&wx4W#8pS^ zJfu$tef}^;M+?@XV4ETM^^Hx`sDoD`f|L+|E^{x<7||tIRFK+%x&Rp`Esh$POARUM8=jTobT=3z|yz z(y%^5DhM5sB^^Ff&d&hOvRkA3NJh!kSwJ9`10)EF1srP$aHYtkX+4G;BG?L4cF(-G zh-w%FVPv_=5)crn^`kfin|-019y+*tBs!vs^D_NKLz{`pE(hRVmXSZJscJD~%=BFK z&6oLt(1%HY;*Z5vI2JxIXKvut{za7iZ0OnDjb;SHb+YPlnF2y4<+&F@Ew_&|%&O1M zRg0(En@sS0*ogu0Lr3L?!k;5dO6c3Q5?Dbo4&&GtG9oyzaBufWi-=B2d!U`yr6}@j zqTOBL{0*0=gsZ@D0HcNR1+=Rj!N}>g8!yuv88T~#{%+@9j{r0u1+#u(@I=!$nqdv& zqSRy4uqNfK8JJ-(XRhb=Jp#e2t~&fuX_GM9nyq4xG4K;5R#N2z_G=m7NF z*Y_uMFrHavo*xDd%|N4vmW+{C)tX)4u^zb_E$clG){ijda%o{5V!CZ=(zs z5HdHK?Im-fBGP@6G*P(9w{_;Nb{-Y~rjUNvn&|!780-|(AuW!Gz#Sk6YndpX0w+Je z^P9UH2~lde5d>v{02CJq(!wghH;e$8cY>PB@D2dS?nX_aGLFkp^Nu?tXE~aoC869K zvhm>K6=DC?kT5kiuaA%fC5EseFitx=*~Mj8Uj+P~vc$*~7_$tFInn`Q7$}sWAnBcr zH7xlK7T^m(B!Hk~FyD_O$h}Gus_9s+XRW5eL0?w&w&J@6)dJt(h; zh^|H6<}wgnE3hcQfPV)QYAro;MAR1vlA{advj2HULy5D8#I znwpG}Rn*AaP{1mXm`BU4fJG9lMqJ`gHs}b|9o(NUjwudJ6NsE z|Nh4@CofsV05sSTynis)c5SbzKJ1#dz}c%t7#p^y;Sj*IF-UWrEFuqMy+3J3 zQ$>{A@YGb}wZ$r~%k>oj^n=wB51{gvMvogj z1JX(^FfGG@bMK@gz$sPCCBuCG&bYXB6f&OSOz$TcO|54GW5W$^O}`50+Gw#MQhr#D zJU<-TfJv#Q$FT8lcrGW~uL$YWdre5L`8(Loz)8ad_=Q|nF4vMXDu*d#&9LNcXe%oT z?#p1?hpSveAd2XcUF)q$oL8~A%7Czq4jtGCmtY$I<k7% zYJ$-m>{jq)=~wk0@Kb2#K(=)6GG~%`%qM1Bkc<;X76vf|%{k^V5$Z&Gs{YY-!=m*>}F3YCH(Szlbn~AA+s` zLiXdOxMo{mCozDUrf~I^oW4N72)86;V{M46*~&7%xrW5CIVmlc7ik z=qoHM{5=_D`}h2DP1g2BZeXV!VB!ty)iE=?^nZOJy)6u4ppb|o;M(H{hq z0Yw#j5ExwrpiG4>1=<-XpT*ldZQc5BSVC6{;C%J0`;|o^s%?0#lZ1EWTyA$DvHa%c zZAPdtB@TQg!VmoPUkr7uuKFY>h4+Pxb+7sCGlcLu2op~74Ud*2IpW7{r9CR%U^368 z4#2K(!U)I^PCem`6LR27%nTS6#^^|;R+P|}ZyS~Gm~H_4!!bk!zd=kww_%ZcpzKjJ zGrJ5>Ut$cSNlv5<@Y{X=8$QV(9>v$?Ah^!eeu)r2W-zZMsrNfIO%@ei*Z=z8*fqdR zOAI5-m}w<}TvN<2UL5;PSt7BBaSbU{3SS7g!DiF?CyO=UNsA+Uk+g-rx{UE-lC>Xf$hM;=B)e zAMC0&=Q|&Jb13L-nHBwxVv7s4B&*9*+3768Hx38Q&SkNlHa#XZZJ89{e`tZ}hJ*e| z1|@m(t`iR6yV{!}Xk$Ko`qX8G#^T&iI`G++@D=R^;1;Pa@~Z!w@}9TQ zvHaOI`iO;+!%RxHoT9qj$vC~qOo<}raDx=Js|?~ne!qT-hTv_fvMSy?jv8;4si8qHV#Y%rWy7pqI-Z}eA6H76zusjE zhJN?-8Y_}ESHp@GurIJ9jCW^?-H|GOy_tV3fkUy5)hE4uQqcbj6y9azM#7($oORDPTA0gc zDU&A6Iq|X>TOz-8m>N$tPu93>r#BfXVII!x)3xIF`B}$$V1rJLrA>Q({~KJGpKqJw zc$rx7pKnoC#p31%If7%*np-9g^%u-sIUzTJ7%)CHhv`y|VLz3CrxTp7Qx!~{KQW@Znukv@rZ!bi zfw6bsO|anqVwiE0yHJQAdnE46(CUt`LD)`mc z!K>l1o-@oK@bdEMr#B(#%s1s9R+k^Gu+8Yo7DqS# zPQE-d6Eq0-Ua5j>C(deQxGRfa3qd;qd=>`k`G&K(!8m?(=*~dF<1RANr@F>)eEzjV zakOOP-6I<2BS_4L12T*-Z544X^Dyu*HH2RYfYM_B?=FjC6C}BwHG~F_sLEx)+52M2 zwDv0-B!NTJP|q3e8xDVd_HCfb7G+x1n-FMo@7pIomz|~Luc1k34ei%R*=p6zKV8F) zDaf2X2)5>u^OmTX%OyDH8a7ZYs9I~kGWJK>%v{_I&Br^dkkr>h)Q!gu$i9%RBywk1 z%uFO895F0O=_{XPQ~G;xq)!JQ)LNO*uh-6yuo~)W+kKANiUBb)P3Z_Ybuf*48kK(G zDtnM(3eR9<;DGnez@5kFktzD z8^MWak0&|udA_jHG+UD2I2VE*NO!`gsrztCP0u3b*qq*PSMD_FQBvsJNWD;52$CLQtniZgiJt7XF7l^P>c6at!7$>V zE5LR?xVsYJbu%+yOHVIf1+t|#)#|FnFMynWE<){19Ma?dq5XUgH+YJFHvfjw15dY) z>CR2_x@z$wkkb?NKwckS?ln4ySNCw>=Bv&BLFwJiUD<$!0ZtV5#?w|JdQ&VTvDC`o z^9leMBb|)PpFeDdj{!mY()10 z0LLs1{P=;(=-Hk{jdsF=_qG()u)8Ra4radF34&Trpk(THa;q3Dd~Y>^@OQU2!kvFh z;Yt1z&|RzN44xGIfJT^Pz@i*QAWFDeHWn#E87j(}Oz&E&m<<~Cz@J3p+A<%FwRL+a zuYtn9KqDQSrg~6o0K)(jv+H6TT=Tn~mK+6|F&FwOf@ui*u_$SmuSMPrv_Jd-*D}OE zlBmr+(Efw49;Tq^F=S_|3fj+*_$8bOKnzt0UBEP<*Fjq>lD6jF3U(LAs{01s!)FsZ zrxp|{8S1rcGYGmk^WxeT3i}1WPm&q5dvg6+(8{O-e8Q&q_kBWmTQWF0KxDp~E@vJ! z%HJ{TQ|v8_Q?^4kX78~`mgKjWYJtPY_=Vo~{}P;7LGasGCr+Kqx8LCh;wNNYej)va zi~9n>b502`1Z~f)$dq5LBK2WIH@~%{8sTxtjyoJQj`kFchs4G0kDf8V;X7FYr?yS9 zxDhux01}HPrE?0T)d~Xhu;62rm>UvMV@?(#451*yf1esr=FN1O%6EO#u(cD5F4JH? z`2NdbF9oya;$4BRbS_|gvAL4|wjuy@!~l}d7C{qWOde%GCqiB=-{fDx=3GfZDfGQm zF9}1GPG8w0f+zqj&h+^9zbuZ{Dms!9iB?t!axy|AoJ}}|j#Dm+DxPYWZGRK?cX3Ay zY(Fr3GSfnaB!;owAmbwdBHKl99 z7#RxKT!2+!3tctW1{}b!^WVQ-+)+5(QQ+fV!;A-iEuLDndB0dLGf~7-ydd~95vE87 z6X<4!{5Tdai;!j4rjKFZ0RzYe`*-h|K|_N-ZP#~*9K-ZaOHXy5sRAw3!d+Q5iS=lu za>~<*dGl>5|J)wQH+BEwVj>B z%Y?qVzqroo9se|>tFG0;;*(Hy7kpr>QfI}1u|ddbgKe1>a$H9o*uvnrL<#XKOP|%g z*anmBh*tm(M12|7dFXY9X5R@8FCNaND&N$UVq$C-0%7L3$zE!g$I7?z9}U$ddMF=r z6GcHJd1^!ESbf6AW~2u;dTP?+efeAQ6OQ5I$gec{R{BwsSfpw`anb{%6+~ z(LIadQ-#yhKXX(`rGCBaBw|>8%w;N%no@K-6@mRa=Hwy9I(=?f+4S@u_{`5=8?Drn zqe`KJ5tj8H9?Jcd#i&u`>kgsOb4}t$(C)VORgKmn2fP@X<3h#_ZN`c0oG$VplB;Y4 z4js-Ys`C&xCf?i~`tYF;@0Eu_fZa{xcUsoNEla7tzxQ%_RCYY^&g?;hp}>5ii7Z^s zMYg1&cG;8}XFjsY`Nzm`C>u*#wJmFf4nHe6BKEya`$6nVQgwC`PZnyl$_9-b0MhVe zpz>Gs7fzudk?#rZPvemNgDpJ#C7Qr7ZktD%-@BMls=~_E0Q80cD>xB>I@Hj^`790B zK=tBQ$m*XvRvrt0;}VQ3>O0q+UD|G9y9I%0;AmM3uyO{{fhU^xw$vG6<#XLD!OrT zw06-)GosmjuK=GX{?Rh{NIaB*3?`hJbC&?7v;A=50`}|#TJ^4apm37sN5zM5apK|4 z!%=eRY84%hUY>F&LXg%`R79!%w;O68^^XsP^bd+gGXD!bP~%4jN?0}!dUI(XPOvvp zU~6fI&yKG}-&SOf-r@PI<)*Xx z2wDq{z@QfYnw-!)Wq;i>;f)UL(n~Rp4s?f zDFw?AreI>+B~DJYKLrhIo^{|!(GNHxCqAYQ=!B!TB&4mx-vAB`E6?5)^-ZP(&@30+ zR>-FMPt<1W6bTOnl0=6qVI-5k-mc_K=fna%Zj9eehU`w3#B9lI z7X+wfW|Ul^tD$D-4I)T9yU*Kf%vm~n*}*x=U4Qd^o?Kl{T*4&RTn5^;09&GSzN?o? zVeZ1LB(v=PtoEw=-6gmXPFHg+Ldw28)9bKKrs@>Pc|o+-NUFNaoxFxA1uKM{#D;9~ly2gRom$AHn(e{7+3>XBc==62Xuq}Yc zmr83C!bCB4fo=Ey!HjW?NyNSKSf2Pg`G}EfcEI$$W!(WlPw$~s{7Pp<*tEkw=}{E7 za`w#MK92U(hZ^gvqY&=~rAGhlQ_E82=B1}B{`M&Vg34Tvki_(Zj__cp4n~>!AqS>3pH6-y7&N*6-I0vjZ@1{sV$~0Alw>5l`U|DxF%H zq98DN(HFv;HH3cjtEES;uSD2EFc9twKtuYiNH?CyiTrYEY0jxD@aW2%%0>^)jH*ur zvL@B(3A8eI9(%OgvffO1eTQjuoIW+wXORL6o_%WN(w(l{``Xw`jfnjO(t5}=ntI7< zGbZ%BHqO<^4SEi6Ke&`a$tIM0h{FtX9RYM#`N`WctK0ZI_;6mN)Z2mNG;|9t^ksESrrULb_q*zdb(&L{GlhDvZ<~} z*+2oK?){7x<`%#WH=w%cygWP9IgHL==SAKJJ2MaXd+!PU`QqqI7-hfogNia%?s;_L znaZ-+e=Sd7jq9q#YlBjyP^7_&eJ0=bk=53Lkgj3f6VX zib@AC0^E5E&&6 z?%41(_e$=Xb7hUSI15OCcNHcLU!4d(nPKD;EDXHe8Kv>*H#9q8woB__aEIX&7L}n5qEgChue7%p zPEy}#Dh*149Fg_>Yw^xN!R{YTRzZ1eZ@CsI1Pa+Rn9^u7oX?m+DuDigsB_Xq0pwlL zsQRy%Ton@w*Ou3R(aw6>egtXmb0bNFPffkvExYaiIN9vQF&!Q_j=Wded(R=8Du8_A zEO8k%Fjxndl8>(}CC3@aC?~3$k`68W0C~P&HPlg2j5hYWJNqxgp~2OnVg_i(&_Y|| zu7HnOqiP>#H@If%)9}qRV^4fPmSOEmM2p)Q1=0tP&@{|TKUzOTi+kI>*rjUAnd!e9 zu6vnWDe98bP()`}x~A&}LGUcWB|Jg8K)nh*9%#>-6{up_7OB$ekwV;S4SO`^^0*YPq+< zK;Z}!X`EM^*1zbZ(Ow(l(__3rLlzi#ZDf?O714E}T`$x^MKc?o+zw4t#$e<%`Sdu4 zc%x;6w1xZj905K@v;6!5><;n*-B0xso?EE3nSkb(t2fad0ZySG(@1DrhUhfOq6rIs zfk6P8^H`gK(x)(w4+}tzG|4ov2N$%hNNXcdJ2#m5VV2?Um zsATk(#(04?G~mcLUqF~%jmmp5#$KFxP~vexm3R`%-7-Q))mMWOkL&FIc9Vfycid}5N)%ww7 z9-XRO>CELXV6*>!XXI!NyV*PQxFUFaUdvKByV^~h5r73yK*LYpgB4o|2jXeeTXuc6 zB3s+Gn9TS-WFU1Vz#0e{cd-rvCbJ(t<}CjCaj3g`KS~t6V$fF9-1O&iO@fCHMGyb$ z^5GYmXFy88yiS+t;4kl$)3qGys^(-sW4euMSDv#r&WuAz=|6qJ9$8IK+;6r1!Q*z_SeF)_^6TjE~hXaza;u;Fn zm{+oEcHgzuHf5ZI_Q6iA?L{?Rrr#o#$VK?X^pm9cy`=3mGp|pN1P}~Gm)XRMl+8KPe zh896>z|0aPKNEK1r3Ae24Mf{rbIUeS#RLTOQcqOw|{V3wwkv6=cUJ zXST^&w`)@tS^$ZR&9=hj( z0e=-ALID0@13YKZ&#rJ=NpZ3EYw^R2iZEWr9{&+h4uDy*;C@@_rS6jOuZpF`iQx}o zO%SI*tR8=Ib~Y0p8!o=ZfvwqEi+ra|IPiZgmp1edkr>46Z<=CP+d)bg{3cP*gmL9y}zH@oe(%;PvmLA;GRtzg~|9Vs&8{xiQTyS;!SzT&*9xLNHf}U&O|Du%l z`$Osy;u`NrR-6RVzMQ&5q+C1y@_x7wtU1PgDFp2(sy%%bC;(qP)94vbF*s zJqN3Onn=sz{SoNizLo1zYPZLEwwMjtqQ$Zoy^HJaxrhlVC-s$+dU(Nh7U>gmhf8t$ z(a*&#J(n84awF8(Js|;L*h}cg&&Z>8Lmj06nk$DrdWPh4AJ(9KnrT}Ui$^2jeqi9c zAgK4dGbmfA9$HWHWBo;WI)3Tbb~zC<=nFLjkG!}om&w=U{&hTM{%lZcZJ{VuGy=bPHM_*=weRbLdcZexV?9_r&NZ=PT~EYA`%JX zYwt5tyiYTC@kKBcd9`f2c6nW48U$@Ud7S<9&dBO$xfJ0oRoneG7?hW7-~_g)uDWN{ zEo0v9J%Q>QjSCxkX^`qVdt1M7`MP7xo>KO5tGvZ5>fMRg71PaDVZc_IqtxCs>qQ=?z$2zv!VI7n4=$H2wS_j14Q z0T*!VILe%+(K>YE0q^yPI&aTc1MqeowYR&r17|714mz*GCg7V_#RoRU?YBQULD06B zC|8*pV@X{yLA7FKr1jQV5e`S+B7sEwC_o4z*9Tf}P0-VwxQWt_6ZeGE9fmW&?(s*( zGb`T0YdrVzRl8o55dfY4K~2B1pj0nm^d!QL{jLAxO-nocx#EK4_mj@XoIvZEgOa>ZS4?s18FO|p7Qhol+)dt6N>Oc-azd(?;1vPrAr&@H( z4GI6fJ9ma>u36VsmN)(xjJVHj9+33|a6ZJhjrz?h9P?>@0_(+4EKSojnwm58ofs4q z`?lT@;yIDWPNx~3jHdc?Q@G%Xj44oH{5Q~?>hhZ=CI|M9_BO)~MPJ|0u0hGD3;A7F z-$9bBGzzB|z8>>W^9yhj2gra(PgR&AGwLsdNLg39PM^aNU6JOf=7-i~?j=qXGamf) z7T*`zb|&m3aWu(+SY)s+-q z7$SR%<3#}s4Q5rB#aI4L=0!AZf790#*ue4z+RRr*-=4#f+z+0|o@AI|CnqCD{1l z-b~Kr_;2|6s7)qZ*%*XUUoP%jK+(Rj6}i|pU^2&(ZYHY+2sm;SJa5ptK9cl^^x`F9 zp15Y?d3s_>*#5HFTDe%Ss<+&X_%(1ehJViPL1iClVs-vt-aA}z%&DCV?!F}8&(Kr| z3zw{o)41;*XnF--%I}+x$Nq@HG0FQmJr`WP)bR6E;>;E70(HFGiq8xPtL$MWKf<&?8p6%%jqr-d^D|D9B_l>Bww6#+}j5Yz5fqB5-C zq9YZcMRy7YTikIn(K76{KL5^xpPVeFO$ot|?EMx9u~ZY^dqay%OSrBM(WBD5Pp9nN zJiz5Te(i@^D9ACqVFPGK@zT=al()rf>xZn4ZiIy*IQer#uZ<@KU|o z+2#ECWYQL8dB)LF)|#&%$pb_TzV zVUO+ft>nHip*<1AMCKraE}kOmmZJL z;fa0jLl<&m#{n|)xv8FfC)io9x%%sM=6tqAOjTs21*fNam&#fi=OJsiCTTh!e|zxR zw0S}xnM^S>;a00)25^KxMn(-t-W#+cz#VRpczkd^Z0FiHYe=l|-IZk?vPRH~o zgBG%iMo0R}UL42;hg)WUm5Wsls&$E81Maks*_T#Bm&+v<*iYWgriAt6lGyx=mPPG7 z;_?xY`^pcRejw5_F|K`&Q*e5em^iDLqM^)VMHDbzPqLmht)Q|Jg>iblYJ75GnUUbm*yW3kGv`ZruOwVf zo(bz@;71b){`Dg@yU)`jNkh%77IxTZ3>D8}%EU$EIJ?SNDz5s;pNp4qwyrK9+32oL ze#r5rnG59AROFl|=&RZGPfUYRUqMavtdfCaA1gvLhQk{G%Uxg+s?ydf7Relp##-WW6A3~r-W#=pMCx(q(Q!OA4` z`qZzofra7~_`H@*b__bYUO{R2QA50ds~jgKv%#3|LkgUUr5DrYT2pZ2njBX__5*6K zgj7^cAaiZ|3>GsV>%y#h`@0Cq-LXE|vW#`Y{v2vn~4)lfguBOx)>g!jH zZuj#IE(x7~e4b(gZZIGeza@LojBJ6`_ZLVsnXu9&_HFq@yu;JKESc_qK_9*DSKeUc ze+OJ(EE|Itj9Ua4e?EH2Wb&0M#UpG69~%%h7m?BZ9os96d4oCJnvfW0Tg9J;?I1*zm7FYDbkFyiF6XDNq`XBey?qcvL z23SQk`}BKy?nj{+9lDX8^y!oSIX!{xk@ZsJw9;WYWB=nhT!I(RjdQ~S)8mVEHsPjA z&}T73W)Wumv1xStB#nPIA;Gxt*lEv+=cEwdS_ZXKr)zTik#fef>C+r;U%Ax%#bC`# zk6UGk;ADyLVlffBI3x0QYiu_HSW#r*b@IiCG5&dKj9{kIShcUxdCD#5)whgTCTD(2 zJj21)fBgm9cRk!vtPrrgbQPbYF60geR?%WxNob+ zXX=eNmV1K+U+1$F1Rk6>R_7(sxh>2`ceu|~HB@&;CqlDj#*q{YE<-jRxQ%O8VLgwX zb?MfEK_W|&$mqQKSs24dbE{_AX@+w&8NX0N--tChTOX1e!r4TRbPPLXf#=0zaIT!v zT;9C*Y4>L{;)h3jvQc-`;!ZWc{w7{@luQO*44DD#i}{W7(vizFu-J zoOn6}m{VW+g(jcESbf^~irwF$>qGBQA<9%u>3eD3AWh`fS5Lgf{}u9Qi`st^z zoWF+8j9iY&O-LCU7@?GH=OuLr@A36!+rdaU|E;kHFQs!e%sGNoaa(WG%l4c6DDdGO z-E*T)PwxclsJj@cRH0|TSA{eap&6H^8XCdDhj!~yqQji`QUa7Ch^L;Z>^B^}{AE zn04u2m5CRy7YKH<8-Ro7mCAy-E1LvXRx;Mg#tC?3a@$xzb`x_{^6b7eN}v9=9gQ=L z@z;~Fkr7wd_-RX@e$=9smk^cP^xU(w_ej{RD}MHh$*i&?JB{9@T%P~JDD=^lsE1)% z>vydoRtns#*`WiEH5{c=k7GMR?ovV|4M_64YT+%RhHMt@4YEn)97C3rjIydkv`oOH zyBV%KfalbS$-CX-&(75-H{o=X4$jJ+-r63@*uD?{C0un#dk__mpV;YXD1aRxT;;toIIQa4|DigD~RV4gAP7l8!H*ptoMpbQ= zZdx&yFk@AT&G6fX+@#|^JomDcl$NxB6SV)y&ZdW)%oP{0ejgkh@G!@l%0Sf#JN&2J zIL&=&^dW{<&}f&FN_r)`MOJg+Cqw<{xDo8R&H^f-_|#o)hl=C{^&KX<)+T2KeHq;f zlWTK>>;Bx`7&hNcD0@q8pASkTFekVMRf~XUmz~2@a(hf-4v%b>Lj&uN3*j#qi>UbW z;kh)7pe7?;>Ol4lsSGbWZ)9QiJa)JCAxl#wRN@*pA}(Uhz!i%jc_Ra3JN|rxXHqe@!H{Tk zrfM3aGNd-7p>KYab!CdmWPQ8JU5_>ybvfV+Yy0L#wo=%;2-Y9jOuNaHeKqm(->t1~ zkB1x*x^;UeQ&#JHZMEnw$+~Q9*Gc8pjMUF^oat9dth!&@@j=6c*s&>c{ngxx{2`>e z;;YuJty@|g6D!zv9JreUdlO8I931_9>4X}5^RwT|d>1mj8D4#kVKZ`J{?Dh@3f^Jk zM(~5>8CK;P2%~nSkrS;+u`2OYi$8yU=wID@Z(~|~a z7GaMs{tJH*Tnuu`FxdBAQb*~zrs6kMk=A_h5w65N6~U8*dRNs9rBBn|7)07;zZ>1x zyC%(ch$vxdDA;AAklg!5kTI(~)YHomoUz78kAiRds4|iR`qtw{8@FJN?p1NAd3IpE z!jRE7GO5Z})&zuMHYh0ls8H$k39bS5$8{H_D#~G_9~!1^CGQEn`h`|kZTrnMV%?_` zGvE@OJr#3?gr>)j3y$5>XU1d7M#z-237QC}DTuGYXGq6$;5=~1;u2gHPAYev{e>L8 zekR}@RIoBC|J0^1}SK9@FE$baBcnvCw@FzR+3vvX+%**Uo zn+@9%VQ1XhqfL9oepeMjwSN$0Iotu4V&C~+@tyG*;Y))f=q>sf-J*BQa0C2IXLwmz ztYH1ce%-=-n%Zrlk@&~|`^Ja;aCJ$}95>~BawIw1ms)r2w)bSi%YCkkQ0-yjM@v4C zlV9JAp_istlKptKui?c#ao#LYNm+JJP5U`e!qcxR64D*O$TC45cf|QDW1#6zeRu){!qdy}j zI)1S$`2$NcBjXli^sAnx_!c4e=_09RmDZzkzW0m*F1-02KlePc{!(Yzx7c@V!NB8h z3HYXT!*#}eI(n6FdDxw2eLER_>`r4B!L_xn8!DT>&mNLV&UE%aL*zc*a)e(QIt6b&|1(jSX ziC6J0c3~lf{ccge8goBVyPv%Iz!7)2#SFS<`Ck1?oZkT0-g+u8#*)Zk`NUTpqrDmO zCKGx{qf^lvb{-7lRk76%@iZ58}jUHnpDZno#uoHa3S%y@dh?7CzO7T9(lp9 zpqX)odb^)qeQhWQJ93|aef0KhK6c@Tm4Ma?#LF7M@VEua0ktdp3!4Thl(Yqlo-vx7W*cg0@i~pAYYr9hLv<>H)U@o5SMVcSH{|B|V zoSVClVqszvHWO`PXTq=ENH<%EQk$o}0bz{ift$U(n;t3Xm!i;&k3sF%h7wr1%()TP zI0<*Q){i)RltEyXxnjWW0LttvDcLyeT$M#!8F}p0XisQR%fh%OX>Q?x!rc-erZ8em zqF~Cjo)G45!QrOVTs8@iRkSw@K2(doscWqN zkG(gIit@_ZhASa~q(w+4-I2k9bQ`CrfFPjEiHR6dQISDrQv%8;G8aQh8}+f3q8$JQ znM5E00)os?V2Gg1b1@f+j0F@^QBVx^?)$DPxC_B2>wVwv`_{MCQ$Knc+j}}^pMCbe zu50hpc0E+KeI}0P*Onx;oB`RN#Gvv29j6#}>C%3xhkWt#&ZTlz;msPkh(p&a!&tIAW#<|KCx4x@zUe3_EvLQoRA0N#P2RV?W)jK64Ya(*XOHF$ z&uH(G&-M1r>q!afi@j1_Vda08bYO46@A572yW};JJBzB^rl#T--ZDr@$p6^CUPci%-XO4OK+nGQ4e;J=B_UG z-HzKHYC+o-<$8Q>zSg%QNquF&_kv<0_Q5K}2Dp`yVRP0sI&4!`)M-T^N!GLC;x|`0 zvrmkzEVU+I3iU0r7#1`AfUQ-^`n`=!we&uJG3IE|m`~rsJp_oJnDUhKZD+0HA8yu} zc~Q%dj~}s`>?|pHefFf?Tfi#~wsQn%%4&ARM|bQaN4q+N$@D5x=>c(2Igi zi1vMRrjKoGo;@;^=3RE6?`>p6#ikjVGc!^0qw1!V=Zy3E+FsI!u2t-c_OYD1qOZ|< zx3+$!I<9Yk!pZAPps`Opu&^y@1(Vog)lGWd>kye~ld{lBBRT80d|J}J-(lXbja?|u zqda+0WU@-Ge{SJ`&vv820g>#DPdkYGCGIpT(W=q}9A?>QsRcz!hvZw$@*|=0lQmgZ zz#mBx=Ci@KV_!@Q@>T+Xz@{8>6N}ssreaxm46@D<6C=EzT*sKzM@ffcA~;A z%8W9VXQ#E}UFTCmpNN&`M3S_+Pq#rWxQ2#CjzU7 zmQQsU8^yyEpZgGBayHKA0hNpXzEe=pI3eaNw`@K}N5TV{Zzo%9sZDEQ*G@_<0-kQq32bq}s9xJam zXOiuSV+J+f8Bn#-96Ra?F6^OAG40qhIX#s--(He-XpQ`#`h3_XL1(_ zT7@sovqB-k*~&t!AFlnWubeV>!KU;u>qe*wO(Bp%o{^N4+U+YgYT-f6(H{7@?`7E74i^qIgVonANc2NcUm@Lu%G+OM+5{|B zSx(vLYbP!&?ctc^&DR#2bkE%usn9KUkEz--Wl8|EhpQ3`mw-Pq)}${OLg6RxH+^%$ zV!L=VpR)RW3TZWj>gtA1t>=mANY}!A-y-WI(GrgILtGL97i+QmgluYKhbCX$Mi6hu zwrtnO53^h!1LE!GQ*$>bFndcjBb`qO|T8!XX-Nd|Kblr4Q}l=R{eAWVR5lOJ%x z@6y+H(L=!VJyJC@4T+<>qd9X7Q;){Bh(nd){*Cc{*C|5{QT|bft_fF)Q%3GgUXd?& zj9kCK43pg{E~{pV!2P9Hglq;v>n|;}Z0z&d8=7tqqfG8G zehAwKe_C-#Si;^jc}=Mdc{hU{nG<#@^*m7$4wSngpi)aIUMFS2f&6Pt)za<08TG`9 z2-+pP#!8@&g9Vg3Nf_nM=&457;|{EF?0m94ln(rDmVl<_8Adbl{NN~fdqi@&s!*lZS5l`PAz z;TCyA*CNcCd8%VRX$aYSOB5(G_`kZ#s|4`vzwrg|4bSd4q*Ahnw(_OBn5->De1*Zn z#r(rbI^6(c_T4M;n3Feo=pFgd35E%1jMSdN8oiLBl32j$* z&VSRN5Y}>+huUF_=rOvMeJLya)j9sf0fV`yhRKp!cL9FrFjpc9m9f_`FZ@N!%Edpf z;*xZsNVurr-&i&dhnePYFr4Ghd_42h_Tt0OfZAfQ5Z!$+_S?ore77yl<_ zmE3r>+{er8v=gZ8?!!jVpgUm{KP6{^z(zu9u0lhs8<-p*=L5!I#3YuOC1K|S4{+Rs0!9opj>$jRz;|D6Elyi zNle|)4#vap5DRLo97MG{NP!|!ZK0Ec3T63Yagm4!8{VxFHiQNY?ss>0+u3*KnEYR3 zj;tQ&(5vLzZgTd-oti`5kFv+mVsq})5d;Lzi6Eg}Q{aqO@1AZ^kFb=|30ZCSyDL3- zdM?i11ph2U)x$49pyUNY{y9Xh^V<{F_wAVwBkon zs)}l+TG|D1AUR%i?j7$}oEi+_s*#<#ygl^DJ$3uqiYZ;^^14^n zpf|c+wjc@RxV#?r`R`dE?EZZYFt5h5y= zh7vsy0aX6p^t0)HeVub549U?&h4fRy(xCi?0}hluMx-TnvB;j@#hvLY5T-aO?o%|G z5qr82a6l=?JNK901BV)K`+6UR6>sO@8sFhIUsxXjTcxGGeK5DBq58 zCvLA3VQcg=X^ZTHFx-jwdqRy}M|g5*HO1w}@Cr+&|BdnLC$RGKX`>Iqy;yDSZznLq zNMhUviy2e|{9M-hh?am~TQm6pqTn~0fRk&fSx-tn7`Pk*tyd?YjST}rk};D1uJ!Q| z?50>J!UvlW$$#S7ns`W0mavlU=^L2Pu_<1V9T|MZ*d96zm*9T>@%z*Koj8VreN+F( zn7qj2xAjJ9P#?RgMPsTibqdx-MY#Jox6S|?b!Z9Xg=?2kkay?M4j4KY^tL2~f$mvW zk|%!-NVzw3J;%LJB!*U9Q*|#>gbXVvhIXu0M*d2ixF=5qjk_GWpSW2hND%{z3pJV2)n3;)K@ z(52UP6x1QaDP6A|&kpv;9Wac)=N4}H9S*n0b$l@JQd{eQdbdHvUG85gcwNjc95mR) z@$O!DlXt4di5S0qD^l?kcR{VC1^x;Y&~74j(r2V~?zHu0_C07kxQq6c`*?0PSSJ*H zai#?=X4KG&XlC`4U?Xafq+$ z4qf}wl#SRyGe}zT6D4eZl!ufPEZ1K0=Mn)Xl(^n+HvG>P=}>}O*2^ZR0)ggh}boUX!;ezM$C-l3Ji zpYsD(OaTbJ6f?Ky4|fQUVDYbSBO zZZhb_JlC%a$0)_ z9cl;yULkQC|M$sC?e8}yc^C8N^)^ydvJ9!A*@bm3TAVnp{J&9%W8%o)BbIY<|RjT^R4e*R?3SSbOHFjT9t7F1<@~d*& z@Fnn%Cq739^IuifHKCaz!RQ`YU3Dz%#WNAE06$#IHN{a@qY0@dfSho-*!>}S?!jD! zo2T_l-+quz%zNM$YWNEi_7bRB#}s+d>-VZs=X@vU9yD^IHsf%|Z3GgTo9lpNart7G z1A2M7e!g$VqGf0*EK`eFzn`66PK9;8;;$Wk&cC`c{wwUViCsw-P4ri%WUE!xrv5_QMUt6Uy0^+m6F*01|=2iXe6M&fsWJa@0#I4 zDNxReK{Jf7vEOr@75Oy?a0RRPq2e7=yYDV=9R@-vS}i?3mp9N|099!E0+$m|J6}B8 zn=qI0=1~!TEH7rrh6gy5ByDt*+8teZ-m}kF<>6d$-vOjCKD6cXe-}hSE&#Y1Jj0f8AU^xXxoKefmgz9+5-1AmQW zm-ALrNZMGnGrcb2hN`zYr9ym)^eJM)#E(v0 zXp?Z%`i@^GeYXOBn4VuZC3p6(gu1(pYoz;qYCPAdtBHpqseG(24NdY#%h`sZ*Z1;P z#JA_&!o0JsP^JG-tY_O}gh}Q3do&+WJtLUPV`&A`)Rk1e87=?)_v*rLUeE1I%nMpn?64ABpbiFpntL9y&52ZX5>XxidJqMYO?K;&PL)@+Bv}ABWhyx2JSU0(Rf__#Si0vrqw$fBIG4deK>c+STBHaO z7o%NObx+aP`#Az!pualLDWxeJ`WrD;RZSW_9KphVTn)0QcvjVVP6QmtqyTJ@0(8VW z%>tIVn2AiA_6f0o*|%iYy$unTJ9!UEsp(vLFqtGC49eJrU3PkH&nR?09e=^Bd?79q zP@I7ow3p41ru7;KOos`wioxq(9=H=v)_+X`CPbLVW(rNQ>yICHBl5=*Y@_Q)Y|bD$ zOcx^5{!RZC8xDzMi_;_5MiaJFj(Q!3!$tdQxG6Ih_GX{P04(kC2{7ZBidBA+xSI+} zA&1wPeRq(6G34{tKSW4k-IRYSCd6#}P%S-{XgyKAQr>>_Lxd@|ebbKkCZ*-N{crTR z?CeQ>gfg=DiQh1XyWF4^6Vh-ZAq=QmS?uU|AH|H0ViUI>pNTXjck=3NXY+{&uAc>z z*Be#-RIa8_cb~#gU$)FrAef=ENd4NGTsQV3OdesztC|nBuA2m6!_|vNFf(Lg#gEHP z)j}Jy1z#NM?r`az*j>nDCflp{Daz}uCTmzJ9qVQE7w@swVJVA5vF0!f8K zGC!$+Tl`Os_dhuvcYlI*A^-o(@dSEwom|O8?yRPtY6biS%8Z=CF1Q^liPpFLRn8AR zRug&~uoo(@cQvh)t3DwX$nao1&HR;uVOd1Za{kQldpZ-HM*)3o*HU-+Q@h4b+dCI~Oj&=2D*} zP(>;boLbwg)5+<#RG}D^)!C^px9e1_Ktj0-yK$LfSoEyb+;aNY*t}6q;JQaEpo}FS zbL1Oh22xjlOg?ry_VRq}p7Z?hO4?bp`myKM>WzVxTe&-Mu@YWzmk5oVULTZORTKf) z1Eg*7w=C;H)B_4KZhu04fP3!Dpu~ZJM+spKcgfrB=};OA=OrV3^e(Ci#Jv~U>%_hF z&w5*OI@_lk5Ovz>d#Cc7AT}Y#BP9wTc+mQExlb8?ds_xZ1pAaB4Nv&Lx?fg`Sf=^N z@G_hvSdF$58}aq6q*^ACs2<|~IAH@~n-2KldsPbW^;0~li%4s@-6r`TLL{tR!a|^x znB?UQUB#VFa(a*DEq3qBVL;9H$j`cFhAzX1vj|BcAv*0+i zzKmfUlT|y3)VTG^7OQ4wjc_=eg7-dvAN3FxAMRIc1bl7iAX<&pEzq@6$7LO$OX#xl z9e3+|X{Y_%W>RXC%WI6!o?^Q~oruK{5YvY~$eub0EF}kYa+FprB>*xmH|GImf^=R? zMLRF9m+1uvG}JO#ui+dVDPTFJNu!~4>Fd-8)X8Eut_p18;=HzK6V}=y7OWo>!i2QH z8LXS?lCUm~{UauZ|DbM|%T-t@{W(p66hfKguF<{jVgvLVK{}OGux`CuGMiZY+inxi zpG%)&y(1hvCJ!{^5j0Es;@o-f+|BoC+`cYq`;7V%Y8l)HNWHE786@@-RL)?EAuM{{ zz344EI0bm{{)Y!dQ?9{8VvULCi3*vKoV*cy{x2_m?})fVXCpaE2Apin{ax1Dw=T<< zx^@nm(HSssIuC863tOT9TQ+EbnWXb!|I=sffBLKelVFFijp0ZK#uY(wx)vYU&T`+K zxTd(4*D#V|>uH!G%Y$4XS^jh`=|4_0^IXI>U*zO&eY3$6qZvF4!a_vn`qaT zF>z6n)=WOQbp!n&mq;N%+6~8kj#fq8-=%IR0y~1Ut+PeTDc*jMgnfwkC~txdaNr?6 zy3PwR*jWVU1X!?{+gk>FFG2H6l#0~(&sU9&eRpF0VPOt>>Dq~fy>XJIU#v|&vU6Zx z(Pbr*QkJK@X#2%=eY&b#We4lU2n;zF<8Sar)t5JUb zd*l&7fB*q=aIFfoB3jL{CNKBCtk2@YSwG|d0RY8EI@RpC9(V!g3g{Bp`Wx1FZjEL|!8WSOE925#(96*p?eH8h%c{9PQg88Xj z@tRt(m6)iw``jjXH3nz>6+^}Tyqby~5U5K) zMVdRY^K)-ScKhXOrew5k85={B^iQ!DLW@j(*YI$@Iq;XzYQ66Nkd&+47s{Ufe??Ma zqsa3B((~t$xSAV98_S}VEksFf7kM;K06u0=Fzq>Bi>ylXReTJ{LFa|bjz|_g8ru5t z>G!NUqi*k|nxBrz$8X2$H?=_5uJ3tWyWAoCbLg3xPt@BPU*)KE`jBp7gr%6yufbhj zkCBf4ySm-1NjuS8=s%2`^W=LQBg9mSL@yumcctA%#F!zqj02t1U*e=#C4q6rLhLAK|#FGlctEy^3gmm@yWpvlS zd6D5%`sxCylUOMG@ZYTe${Nu8#mOhw#H@QuOZNkc?&kf9Mdw|F`v(Rh=58H)DTnl6 z1Lff#4>UD^)A8;*Yt8AUMwwf(Je1H6rhp!QzSYH z25GtH!-C!eeeHIO^MBXw*Q`}PDdy}~hScg|`;aC*(8xlSdM5FZ2^<7ZUpzLIEXC);_Uu*pET$b;W=S$zHrHt(%qv|TD zbEZ(!w+9M|^^VW?E;Y_;Tg}LXTTU?}EA%PsNth6Xg;LsI5v?w@)l5RYqQ=u;q&ulk<$Q77D`K?k zQs`utvDO@PMMFC49crO#{xZs&tWcOcuWgLKk``30EXLY-vPSgRozQ5Km13s%$QdjZS{}kyz!x#av zH%b0<2hd@XP{i_tF!Rc!ZC>?Q+9xq$nb*a46Fak)!Jts)U~As%TI-Le8xDNLNDh## zf?N>cm1|Lj=Z?O2;}Mx3FWte#T(EPJ+NoYB`*BKp&7L@$jxz8lAANClzP}#Y3uW&E zH`CIwU+r|Z^SH~Nk7mJ=RXuM7-E)d_U@`l!Dn9gBh5@87v7E3p(M%25IHd%uB8F)j ztZ}NJj1L%b#XuJ=$-N^`;@mJA5nl7@Z@=4gsD@;!?3;JHzw)McAsW>A)mUq)5M10B zy=JN7QJV0%RGSbY?|MQFA$@@bOi4JP(rn_M@6Pw zt7*2A^+X9mTA?zE3wrb+t+@ zEPq8#;2iuCHhq*eSHvQvfQK=Nx^z|&uUzsGv<#oo(l{};Bz{x8(n&^I4%#Ki`1&;- zi+|{4*|_V|^U${&nj31*z9^TGRo`nSre7q8R4b+JR978y1Z2)tZ1V#-Xm8pL1;1}K+0_ z(#Fr&SF9O@49(P!kEoxN37}KEnMXt>w(ztMK_v*B(kL7|A*YI-*olc0I2XD%dN_Rz{%677vCw*q?eKF=?(a?15Q`!BB7PkH2k~>{LycbUXnrTJ1sr;(u zgnMu6jkZgJ-b$SP<>*G}KKoqD7WzQ)kUZN%tImSaf0f*3y?EF`m-bRlSrj z_66<<-c6YqoR*}t5APBEnD{m(=4$zC1a)mdP}eYvx!)D@Z6>H;o1${!Z$%9_9FHl+ zx9zteJ8Gp5w)ctz7ES)0W}4c@1im2?km=c{adEo)vF}@{@~%qaR;EShD~|d%PU$c(OI(ttRr#-h(= zk20of&!r!^3!P)5XU4;~MGmK!W*}_nm2>T08M^A(Ju6}Z2 zUYqh(v(_J$z?p~|dstPt=OrU=+AfV>5!qy=o;zzb-?i|t+U9&Od-03Wn`wT~)9-@b zT&eiNn@4ogY@qgTGZm+u@|4M!)&9SOxVk{hCXv$Nh$4cYvtxpKbr6qUNjL?I7_^3p+?}9>l@j`O( z4$=Zedv}^&->ywvs9*;83ytwESRH4Md8?W#KtLqhA}1;Ke; zq`^iZ>HE?|$1hBF&Xtz5Lv59=9R5s$T8+DeiD~%*gahQ40q9=4de(Zwm69W9-dXq6 zwZIn$%Vv%6IQj5+^m(`#Dgv0qgx$Fw7}Ai+EvPGiMCJ0>LwkwVJoTvOgRYYb>Dh3c z!|k7SL;oNvNeYLyx^Clt9LiV{`u{NZVKJ8K3Gg^{+`6GsujK{|qaKKi>hQcrLJgWN zl0X;T(-KX&Hv^|MK>L6$JPd&Q!0FPGt_INdlQXUcMoQyh>xs zS!*634plXc@I{@jY64$`HfktdWEG!~(_%chnJNwEC+Wz;Gw4v0v5t}0SHg5na(TEh z?sLk{S}WsW#a->%oH4mbX|3~l<-W2v7bZUyM~*ax*U)Z`tK|w z;#y$H9Zj$dsH`(V>h0YVok~mW!9^j3c}|0awh|`NYWadkiv%;g!4i!rZ_O&vmE~Ug zHnSHQql?=_g|2vj1h?cAaw}-Ge|ZeP6{nMiNW^sHvz#PMcIJWO96TID7)1?HWus8? z1a#r+A9~dgN%9EcYD+8$rpF1#2E`L|xrTO1LF~9D-q}9&M?7f{flh*}~zna#)F| zgcvDuOhGDgLqTAQ+5z%8K$xRvl@OmiEiF0n8tNAh>VAnY0`OGFt6f1fr5^|j_rdda z<*=yRTb^x3@<~3Za_&qj;cX(##FEXVww^qPp$=aO+@5mrS_g~&y`i1TrOdRQXr4C;@A<+@SC5g8BG|$2`e^&M6b4SJU8+z(E2stZRGPqQl%DH`I#}tZ~(k$$`fzUNBsd zg)wHKB|LKj+S0K)=UMcHxhVqGHP1CbM(xt_6dXNu9XVh3+Di$ETmQ9J;c_#aO}UQ% zh9wC%!#%G?ma0>JyM&41Q_+7d-caZKxB!1g;jnQDJ~C$#i6)6 zIMDy?UGWxOEzid?{?qk=d(&NqOjO2d59)5?+g#|+bmSD#l5`27D}UV!UM(CRY|DEv z?sB#yVhP6_f&vXS)jylj?cn_8?Az;PL9^c?91Py^Q7>CUNa*}FCsD@+u>iECJvl!9 zCHs|2K(5y0Gdt~GOD$oQ<9NeGZy5|pcl4J(^QA5Db)w|7umOxCs(kDTFNm`?xfS^0zu-?MFp4@#WhJ<9 z_*k4y2iy)p=P9ne0@afKH+R{`)4y<&s}W3aP$#Pfzw+7 z&YrxLgg(|HIPe(z1p|fBFZq=B5v;umhiceS45GuaV?l5tjh2=;zH50E*P~B-lh+{8 znxGdZXEDq!i*eCf9MU&7Y_7DN$!O2_aG>S@=fVBCk2D>$!iyAe7FpETd9kPY{oP(& zW+Duk=u#zg3nuhBd-ra%uoJpWFd;!qR?9D!E`5b^ zAYj4U&~UUpD>)%CF>NXh=w0sbR>20Vy!6Rp@lIk)zuf@+m5{D*>Ve6U+u_lXX+k+N zgKSS}uH%-@VP0MO!szn0PThMtOH0kJ^T9Da>!%*z3d9Wo+XwfJ^@tFIbR9nO-RCtS>e^2wV zJc701wSP6B@4N#wc%`bn3jD7y#nV{XIaDRP<4+62G=xgU;-ZtWFT;B+)52|t2pkhZY|$RrQtU06R&G|hKJ7LZVQjKZ)H|1 zVGgF1l*Pjntry+o^CFwoxN8TI7nd((d=$zTr#A40s=T60J&UztM{)Xdy8SH>L% zOG;=;1KC#i?X?;Z1IOXotwlu-{ej$*`@5JIbZcb>osc&_ZyQIjwvfH=%+)D*8&yc$ zAK=FqsEPc_oxwLp2-Zgb#$CSc%^pg!nhVKFo6B}dZqLi4tA9G!lIJ!sT(2u@F%@nM zDQuQgM|P^q-(w6C>=#Vac z>fGr{pyvDqS0Z8JO^l724cRW-tv;WZDU{|FP+Ain?&A5`Tu)c6jO77$T5KRI%u1f) zjUEg5po#p_?rZuGEr8fll*w@#pYI!U>9A;2U))|>a!#G(8M`$8<|`paq=we);-rIR zc3ifj+5Ef>biGi)4A{!Z{Z#(aZ3DABTKm9wcVoFQ>Dba+s#bBfGt2ir4rgBcr1ZMD z>==7nj0;&-+tSdmz;iTd=t8l#&~HgsZlNgmZesr-vjFcIr!Fp#{OmSvWn@2+1VCZm{_qx7q zy1|}h_!l16bQ?~xQZ1hDZ$CiShsw;J_OFl2HQlh%I=Ly>!hBARbA7Ad9 z4)(s8d()GWz|HoFL6U`O0JL!OdM(wHiLDHPL5G=7`Z1wGRT2^ovGN+GRtypJddB!owel^poSa0FfQ=My*9$$=L0?PvgHCP3 zEQOD7Cec@~URCoPX|14Z`p$rdJqvy%y?vr(1I{pb9L-J(sW!l^}XJ>W9j`EwJ~zeK7L?Z=A@ zZVIIhSgPlw!r;8#{FftW)A?iSp*3>N4|Hop&6PY#dst=odBn$T>wYrT|8y($6Q|LmCPTU>MnEG<JfLB>xKjVg=PojU^vMfsMR;}j(9R#6lVy=a}kksE|K#mTI4 zN_QImL}+zrudtD_Bodns4tkZ>UnjRbHFJLIuR3bx0~23jPsa=C9Z>KuLQ}u;te{J) z$LP-_15(WpB6F@IhYi;=$WB>LZ7CWCW;u=)lApkkrneKzO74gqwL-a<`ueKh%1Si2 zr=alM#ADRwuL_R!^z=NI7UseuA_|77L8{$@ZrcXciA9H}1(R;0Ze?Va znC;1Rfj2j7qE8qEQ^|99ZlGzKQ`7QPzQChe{vcT1KILJsjU_Qu;!MLsQel{-_}R=`V~TeV z5$wsZ(M*LpWwl>>T)D``ZL~Afzps*aHnXH*d3yQkG4?!qOniy$I}kO>d`s0JHK)~o zgtIQfgM>$(6K@_n2)z8N(MXLPCX5@md~^X`>z^ zu>>K8G_r~Mh&pzH#c&&Xw%$J*w8}|HmJ7r|XpYLgvBJ*$%|gk;ROs0Whb2tM_tLFq zm|5c@8<=zQq<}uy=W*2!;pI(a?o+-*)6ZwFr4p-_mSQUE8O~q9tX=NytxvgY3L7;? z$D#)>4;?ITXp3+6_{G?%E5pO)iz;M!GXhuz<&!1TZb5X=h<8%l~B-K$W`4<=Bf z@9jhvFFyoE^4;Zu`5ji1_BBB4kul`E)Fw*A4CLF06X}nj%+;n4T{goAIX{Gkq_5() z=!M~(R(n!O*7}2V3cO_*399rU1ux4ZK+ct9B>cj1p<Q2kE`n~DT$w30Jc4(z~l@b(d@zWc`n{Z#W-xkZSJJ1rYI;loj>=J&nQsT8iEa1_+7q)@Ot*1nV1kX$&F(@oDX-LM@ahORwPr z{^>88V($kwh7!l|9i;ez40j%XV5>Bl&Q zZ4~zfJ!YWQdR3#WT(2MHd%$FE%n#i^t1yHWqSv zNVA34J@F{yw4uvCXi7Kzl{ zX-@U}OWo5Ao8+1Z!J66q%JVa$$qytscX0O|?Kai4lx~-?oC-H{E{wO$sp4%>ckPb1 zBx!?XomhxAWruAAv6$Z+Z+5K6$}9zDKMu%6HWKm{asH+X#s;?E^e1WQ~jG zdKR~cZ+?QrpcmrZ@B>R#E zpM&IKs5?LqG$d++^o)xt1a*M_977PK&)r3Xk#MdIFaT(9Y36 zIOB~`=wR6$8`Jks6Ry*xDN8khEc83D{^GsRb_i0?;zhG!i+ShvoJlng(Uk8T5O!ss zTDuJbAWZK~r=TaAmwS7fUl1KB;!JA-T)ee+R>S?>GTipyS8_4CC5L*~>Hr$JuB6Fp zPY(bxBhib=BqMHss0ZGw0ttWt1%Pw~KwOxIFVRL{@R?ES!ZWd?d6!|vV%qhx)ZV-@ zrqAFj?g>{2va%DuVN)3Lr3!!hU~&*rR-(nO4{jMKUYHB{J{`U+=@#NKPYofnaM>38 z^0vMnRxaYmS#q*M^M7oYP4OLDoJT^?XY}08{o3OAyk#e{?Fou3lmaruwL`NUqpnMp znOCfg=i7@4?5Fxu8Gnm0gIN~9caNE=HZSa%$|7*cA!)MSEb%70VI`()@q(-a!^xLE zqwVAC)L!_6ZdR0#ikeqKFWU(s$?W1wzSTvZ&VBSUMy_km{J`|s(6iZq&lQf|0EEbW z+!sZgN@3&Mt~F=v|Bj%GfCqR9A?Yx(P4AM1`?=-Ktymay<}gx5{T*5Bw?O|kdv znNR$O!sSB1Vbo_MkHbnnfOwfL#dB}iugaqqZ~4wiwC?vf&FqCKTsB?@g_L^iVP_GFo?b*pVu)R3R`05M(^ z0`A*~b$#I9Uxm3 z1>qSB+EPC|mchB5>f+LcuT@S3-b9%1s6&5dKoqgUo8U?g@zPA#g^?JcB;8`R;%beE zXFJy)rA8yEWj>&R)BH2pC&`uNC1Z$#*Q7C9!o#J41Fx-#sPiy<+~pv|e`8$k*@E$q z4TgNo(7hS`7`YYrv3Ar%MyR0om{*IFOKwrWo!70G5++tWM3`%uwQ$Q1e#V~Q6{HP? z8%>@jFXIT6?*ZJ;B!uWwTm=3{)Iatnqi$k1AMH#(DY!Zn9K$eAh(m)j(@iU=V6w-; zA2cm<+H8Wlk!50VAal_NFmwJv0DE5{`x4(Dzz&5tP)Pmwd|BxXgs0yf{2qlTZSEl^ zZzRo>xXc6kmtl%ERtOMB%RqA6FbeoU z&dW!CsR*dF8M3;cePntuJ8Wn+imNDmU`&jqS77Bs2(e@nDJ@ljt?Z; zyzz;@pv#tMeXJRbMt!`U6~(4u&?l>uYMbigbm>nLqmmM%h)I@9lVQ?AS5!2YW_y_i z+DrqF$~`%!L%{GWBeg7;6T!y*Z#Ecn+A|X?vNtLW!P{ayLCmq6iJRy{!P*uBl#AeT zry0?y8-guN=EA#`Eh2IpWoCV@{R_p0^~~@$?KaV;Ns_o4jAv4Li2*%|3&<3m7AG$oK7R)W$ zlUoeIjCwBVYZ@~3il5I&w9>7tlvSzB$dBDC1;?-b`FPV0`1yE(5JAO`)8mLNdcZHW z_nH}W7|V+8{o6e>L1`Z}(a18eYilR)Vv{LU%5K1N&6TAJQ$$Hej;_ zkL-2}8ed}hkbiTxvr5?eHmY`>K;YxF#r8C1VPPlmC>K3=iyZ5%R4f=PRKg`q#MZ(k z%T}Hfhra;NS<-00;MqJ1M-+JuU^vJ0^{L%OzCnTCM}YO1Moc-#*9j0`Szs{+nESB^fb39h*1mhG_?&x4h&OfKu{kc;f05w|Uj1 z-f03$<*ES=LbBE~%v&@9p5p%^n*5)2*UzB?fZ{QDLq#xiN{*oSvlqg&ixoeE7qiYv zAXsa20h3ace zTQ6SW^fFqmUUd_qy8Bxbi%uaB%59x;_C~kW%)q7P1-iaWXxJW}OoAsX0$7ts9?dEu zYq~r3_`||WeyR*gr0X&%!G0r${U=)Ogv(046g!%xJBc*u%17@9u%jY#Pk$0YF~$%BjU8bcZ+MUk^`NEiF{|!WBjZ?Gmk%UziwfycHO~`M&da z+`ialnFR1Af~&49_Rl=y!y|I+g{Ae&|rs4~eX5(^%3Q^rF25`h+-QFm?Q}AkN zJ8Z>4t;-wTQ-F^QhL7}tK!Qb%&(!nizpa$TNbm=fLcg&=qP2MTDoJaceY0H4Kzm7> z(*;xpRZ(vF!SBJviGSw7AP!JoLMC+Rm12z`Djf?O*kJ30c}ofNWMAqSVFA_)s(y%G6m$9>~qsW}9LoDd{9W5sM^ zd!nrd#fsbkR@4j30^rGDS8DB;2o+RtNP4-7Z{pd~vKR~W1W6NkpeK$2Xf)zI2A~qM zvj3G;h9*lM9nvmoUGn#(A+C1S010X|dG}5{Rb4o=!IjIV@%(rFQ$QvC-^Pm23#o5Pm)5O1_&&IdH;;3DhY=+xoTp9 z%KG{u7#ppLx+~1v!T2ZYW4VMLWLj{JzkUd8x(7N9m^CxesH*_5a_Hg^tuD{R)%0qVt5q(uB!rI zW@cn5JdpYt$N=c_hwu?!sw32A>$ATu16#-+o?Uc(5-`eP2Zj72{X687p2OPwfW^py z#UL~d4;9x@f@N6X9WXv+Gb~|(bdu+at&uHDy+u%<+|8=(HY;XIi;ERPbg&{+T3eL} ziXS6o8SLPd0hA^W>kKgGt$75XoL=MUg3vokKNN6sNT(5eHIM~-h#Q@GSqiIaqlNveC z03ibW*B?#fC++iHz9QY~i{nEt9Dcv%B-Xt+@{flHS$HXL(j0R#7}a`$LjOtLlXm8w z0^#lm-_f4vZTqvf&_Q^y$u?WRc~|%T*}2IZ<-*!l37gf%c$^4^utAv{ALsJCn~C(h z(evkvrbe|*X>^U{7rC zm(ek7o_25UE^;8vg?@fQSy>s>DsBz|nk@YUq5D5JMkG40X1W{#j=9Wy1TAO!Z4>N< zuNGM4_EW2-k5Y3!$Ccb~)hNodov9J^+Y@P)w5K2^#m_0cyNT(Pda0*HNLgFmN>^sT z;`q{S5pvVQh#x+esYA{A4TzX156AHCed9&0m1BF9Im{_go~Y`(jIm{ znT>#I)8;>#lfW z+xNwA1p`sOYO<|o(wdOL_;OGJ2oqfOx1c?oe8E6Ks=;nxM5AZlUGbu z5W|N_55Vo0dA7>O>&W(y+b8jav#6lrd;%TbT6;DU5d|VnT5IC92z`sJ`Y8|!4}x3B zb>A(`f_vZPzxquy0O0#o{z&&+LbL}c7kGO+0(|QzfoO-P2mCV-@1x!`WhKCO@Y!_U zjZ69fXon>BF<7w%ntp^2fkcO==$q6hy^*C}iT1PZV?xrM>oMI2u<;71!o~BJ2~plX zFIQG;Xg0$9F^^z5g#-}c@KvOLS~Y!>{QcUmy%u;I^WbDKe@y-)cKbCRkp!)wnnci4 z1RUligW3ed2ZJz&H!|-@ppSX@-=vRmISPyn+SO+5*O&9_`(YU^MCF#}ZBMV{;sc%_ z*k2YjPi3l?LH3ZwmD---E+8bw$MD9Zoq0*MehH{hZ?yGfU&l6uAvw!JlkLYJ{??eN zZ^d-5wYA;7bmecC&#D!BQz+xpn}%<=>6)hss4V_Y5O2hE=lK;_Q7LSr3-oy|E74ZyU33xY`L@M9Df zqu9HieR4cn5+OWiEE$wmk-(6bG4EB(>^VNx|EfWL= zy8{T!-WUegB6uL#_oyb(pM4{c6}3>&!#LYLX-COU$eGnVio>PSnqb!y_wxU$PPIH( zHZ3X1qQJ9x`gyhH<)oy>#ALFJ#eDeUd~*N8IH7HwS2t`LepW7HHWltaKhq5LilAey zdy=`qj{fE=hv4nqmwNXo7uaN@AAj_rhFgXfGf)4iPc_|gBES7W0i+vTld()O(AD2a z@v?XAVFKJZEG_1Du)4N}dRs*J`UR|l^Z12#K(o7l0y|H6J72(9s0sqc*gOz0HZ?uG z;$CtNLdRz^oVTwH85Yj04gL1Sgh)mhU-q4)MqxO)q}kQ@F{%BqWbEy~n{w;>R)cFN zT&HDZmYe(Be!;=Eqo-|xOQPEbw0wg5hWh*OKj76p9s8J2*9yCw0_#n5bM7(R8oy9%~c6PrX(Y_!lzK{R4m$H{J@{H+ooBDB}6RZG7m1$g(BV!0QI;s4rqY^B&ra| z*v5Yb=e53CSn%_2RP{Fi+0qvb5YAXJycgB;DI1~K@7+(Tl;4(G%$AH0O%rYx8Y+jZ z3YDSB!an5!LV`1g9421K>U2$KUgFIJc6SBO#%xo`iMO0j@E2l?`oAWpPQiK3Pu7-e zNBH6l4HNZ^@tXNF%JVGa>S_=FL>%{b(f@0G`IaYfiNZAXto`G}u`D;`EdNpMtxM}_ zTMW=@7N9oQRJS;Qy5;_l;Gl}%MAP}@CQ(Sa7qP#}nB;^UN|}(5KW9E9fE~rt$$0}# zqik6i8qM`&E8JHud3@es#bnzKBMEU($Do7>6#!K3VvY(~jjwOzLPbv4+=_dT3Pxx9E~u zj!F^J=f2+MpZDHE(D@Y+HvkTfodTNOXQpARp|J)OkY0|zu!1xRsF-VhxAD_>BnS`P zhWH*8$R$nM1BZC3HscoXEP`bbe{f?@UX6@^XbyNOBjqy(zwgySmPTr`Ye%v(0ylqu z43Hi1qb|Rq@oR3r+umrw&ec`n&;Gv;Jz&^QC(|!obngmQ~YaZ(L)|~1O zBjj~erT_+rBv84v@~AR-l@wYqx)*rmB$%cpBrS=Jqv1R3&8q!;60)7!@=?e-=0S2$ zU_2C_aIu+vN=d6>3weT06Xnh=;Ds_dFQ{awuZ9!4-5(L>P#;l z=mSE4jms$rZJrvHD0C0W)RKsIX+?_)X)*hb-f$_Ezc`=sTOAdrmt&dJeY8RY{=E#>1 z-zYzx=7*mzHSn06ZBz4EaP%L%!bu%lBrO)1niTFIp8~T?v*CiCTZ#$yR}a@6b-5_B z-^#V-n<~;?=*wuEB}S`hk2_4yS#;PFEBlW#03?_IPIX1(cED@Q+#J0cs}YI`=YuhuO;vmb66pY%RHIV$i0FrN^;y|bV#VA;5 zy5@Gdn@w79r)xz)TxiBqA8&jmp)aKW1khdT`_FMXm1vfFmdZRW$AE?HKGJCfIAjGY zDmFA@u|n(`|2g2mou%u`*1f;`H>|$hV*vd?kLZhnfUE%jL*{0)xcP^|KM^3uy6+^<0PAKh%03i241}tFm$zYm%zC4?#O%4gsn4 z=(V-hE5F5HFb~#b6wr^5UNL$z3mk412pshW+ax)8J1o6rsqjY~(qljj|JNa9HtlJb zFZTlw=|0kbnii;xPTG=LNTa1Nh7Obw1Z{=k29QCiC0gZWNPlJrQVaNxMsb{>BGpgh z1jHQ&UVlTHAi*)rYdp1jM+R-cYBd4Qr>e< z0ItrtOOy_WmkUMpsejF-^Co-`OGVakF_P2%T(q*gxT3rvbWbBbdhk~R4WGPY?6+i& zJY3b)F*XrcEw9sql#bu`Jlm7$Fg~zbRr4$nS0rtt4KOOhBsO^On~n$3q=Ng8W~buY z;p_0mkhHMx82=1T)u-pV6w9p0SUsNBmTg7ov} zl0Hj;6qEr??VYzk{=jH zdJq|ma;pnE>?}LRsX$sDvFJmn=#7}yGnaqu6J$V|uAqOo3|LV!e+QJmKdj&}5Xgh1 z4dl<`5tfY3_FVUGWa+A3t#;l94Cnw-A+?IIB1Ute>WWad%HePfG`pz`pUxh|PrG#ZV_RJaHV?UNf> z?kZ%xQ6?FA*lI*_(FHAX(|isfl6!S5FVRX?2WnFO4g4rb08ATT{1GhV5XdH&E{E8w z{JSeS%>MhHxKJtu_6hjD^MT@eu!L$p+Y~YMG~qsWg4N|&monLUySlEoX~LT+rsnp# z#`2rUr}Voy2rU%zr8iz5%rq=0FV8G4BWP#_g&$iUeU%pC?265%G{wD3)4u~`L1QJ?%t`1 zZOj`ekP9>E!W`NK+5%?irUmX+#`Bzre-Dy~DuE}B43?*P$|5WFi55rBt%IbVpF$z> z^a(~!y6zJc9VPQBQ;!M;>&JC7q@a?CVM>(|#{ct-V^{f3!acH7;;pP;VK)q>rV)jW zcNWeU^@-zRo-@)HpC-lMooN+&rqwg_!MV7hZbSJ-}?0~O>_g+brd>vH0}G) z^!<7ibs+OFm(6EdGKEY-fp^gKvu5ru)xG~8I`==9PW083qSHIKH;^lXy!mY_(H@GJ zfq$Sq%?QG;y_QGG3Mx3sEJd9s0~@C2NQTgg`a3YiYp2^IG_@yFEp#Rvq?XywY6n@B z#$uVwzTf$s_Y-yQ-)taVSFBDOz?izc^R^1z+gx;RTk+1@#2PJ@wD{RtEY(c&_zz!$ zx4P)BS}i#NDhUT>K3BlHb}&Qy3#!ua#_X>yNAfNHpbS=<%6M19Fi*N;o&#a*(F1Ag zfOA>DZBgt!L9p62yX@_Ze{cPbW2BND=1#U#-MROUb0Uk<^Kyqha5#caH26q^ZZ!D& zMD+-+te%({br3tUs{3snl`oE`c2rjgqT+Y>f*+Pl9eqg?uc?rI5NYdVL-3_$YUgA( zQJ%>1li3$3Bx6Gj;d!o|;X@AlhLey<4rBVEy5kGOc&*?|{@IbaR@_awTs}00s5s;| z>LS>|ksNz4dNkMh5zSJn<|_b-q{+BcDyJd`*>@QNjQ_u82=LY2a)vM0PdyuvZEGtE zgu*OBks;0VKDlhA=ZG$6z4)!#(bQeu+5@Bp0j4$A{|wgGB%vS?X4&`n1=|Ihl>&#+ zbU+b3m98UM2-@q%nThjVlV)R?{^yz>Ca%E=bpdfeHCMbfd2zcM$-qSAS{Y;`B#^mW z10Dz@V|;*stGx^JK7YD}m*>Chvz}M!&h6_=L#>|rws*hmw9aAtVOz>^b9C#PSMzu6 zexTD8+RX+Np9c=@bQ^nS`olC^GjFD$YRwODAVEEfMFIZPcUkM}+;;L^w;e&9d(Dmh z+b0hAyQpVC(>veRbT^7)Km9t)dg7~*K;w#~bYWACtiC9Px(OA8*#1MEBXiW7&ipps zPoSwfGIwC4PvB5MGoUn&i(hN=m4??-=Qfa0=vdACIzEH{uG( zGeL&wA%t@Y&aiD7t4saL8qvmM;+v=Z7jzMWo-6t|_1FwFP9yD}S0j=P2&s5;r9m&% zpRS=h&6(-2c&WN)qQ#)58Jtm-Bn8_gD!@$KSz$pcrtnqrQ+eH%6?!e?jo_EfPR@k6 z2@6aL6!YnhnApmlMy~ABW9fXBGaH_EwoC)-;wUgwCFP;% zx!!!^HfB)XQL}ingJIXP;wM;+C=^<}+gX|k^jGL#@c zraR`nt!r-*JQ%^UIu0`^ja&OZSUw)06y*F2@lKawDYs~}=;03Vf$hMf@jBH~mzTs0 zhtw0*X7;lT#Ey(V+G7LgV(6IUQ~z3o^00!+eXEF%(j^N>C?AcqNA+xNi0d(FWBxhd z8o!bblp1}%6&4r$>NkL*DX6PYMICk~UOk9qOb*oFv}YBp31zJXU0F0zpjlGQiC<=} zMUhRjk~dMK+N}+E;LN2pUIYr`19***07%low-CPPlXC}rkPzkJXMF+wxdz!q2cH4& z&eYi9Mijewa&E}v=nxVjn$}Fj)STS-odNJy-qNr5$IRr z?f3^9G|Iwj96RRH^fmGqIvHoLx0y7Tqk8z6lla*}s=pL+bRnzzFtoX=86rU(bB#of z##R<1`;t!1*}es^?KatgAPOevd}9j6>;l54)Fq=Pc9s@HxNxHHz62iZ1G)=QrEB#s zG&N7BL85!uf9wo^dD+L*Kou7aN{!eS9V2rpn%cDr7a$V>dN{mFwWf)7MxtR8t%4zV zh>`zV0BNI=vp`!(i(|guUi=3_71oOQpu@+@X(W>8CrDGtXcT!(bwQ;cl6IJlTQIc*QJ=6r8w)i<-qy`=it}& zl5=Z|?g!g*`S%@K+wLj{CH9i7%Ig_bD>9oik%e;Jx9I}J8?Go?uj^wD6iq>8@M}F^*1v5F5OENA&x+)KiK}5>5D9WE_7-atzIAfY9xUm ztRC?dDW{$6&K4BPxHF;7zL2*3h!fouDlU}>XQKrNK6PM@J1Xl6!;LZVAL&RjVona# zvc~r%_=9`$55#(>+kS*{Nt=_C@)lR1p35xve6tLhr<$t83PsCU2EGVGSW65Q}c)9fmpfU_jiUDNR=jU`J!GN zqal1Df^>ipZP9sPKLQDp#!csvD3MPKpEG6+2Fw_C?2HjqP?A6dEd(y1DCrY$v@rgk zYF&njYXPf?3`uM?^Thqv+ncpk-QHI?@4)ib5W!8(E#Q7PG(O@~FkgBX#lW|$FO!|@ zA`B=U(cccY4p(%81fZod-PrgR6}|>18p1Sg@M1Rh$QY$K=Bs2S~KZw$o)+sTL#D zN(1W!s36w}=>Vz;l>8_(J+IR*#vA>uaq$cYGkAu#+CwBaS)e@bb;cxR+oU*iI+;Gf zQhJZ%V!WeXG@GuP6&y_RaH7_yv?_?a&hv09j3~2q6Q3%84?EL9tGjUbMG~=y=MguL~BH#w> zRgKoGN*=STezU~t3dT;FZ3Gn=L_ZcpWfmX9BZh8U?~|4~!84(J1atwX&KLwEh@9#u z=I%ztgyfu@tYs>pxeHjT5SvdN$=owe*VsWNf==I?SyrG<00J}Gx!c$gH?p;XB1J4J z)^YU_Nf}Qzd#*+pX@HLKy)X}D%FXHPtY{v zn)``APcvd~JSzzdYw?1l{9)h-&t&?{$@xd=UVocoeQg7_$8MYm8z)xnbj)P6?A(b4 zg3#>j_(U@>y0m(~V@XHh)ao5?YId6Wz=T=W%$whkdiFS|cN8*vYV1uv{uuSHYtbbA zqqR$?d2k>=<5O27m8zw9)#9oM3vdp*?zL|EgJ;^_Itgy-KBUhNn4*SFnAZ#uZY2Rt z6j7@!e6D7#c_Qqe*`mxwb8N@;H!@~2@~;hpv4JtO2h9g9jT+~uypJzZq;ZsSm)7gI z$<(JI+K6xK*a#vrJHKkn95XL5e=aSs=6>0XfbgEYURk$1owGFfyTxejIbL2!%} zysG*X;YUh91hR+3hQDAPX-1SyQBBxcbZW%*O^tccx{&a4@SJT?6)(mfovtrufU3$1 z^Fi5x6FW_X?hKmVaOS{(cKt8zxr$CiQh|^Xwvn~JbRGn**UJL%)5mrEj-|I` z{#~-dSWgCWvJq4=p-?)B1k19B<`{C{n?Drda27g7%jU`%yzk^Y@xFXrtmN!*o!hRw z6O%-xUp1{ZT{r_}mcH|C>orHc=Eer|Te7FMtHFd=|4KO~=(BXsL0qZxPezl%CZ1fh^e+toQOkZ;~nl>-64@J}x1yzBNF(%}*53~CuKay%x!O&9x$ z3rQ-7q4AYsE>|=RB)TniwvOF0SD^rc-=uebUp_|z@9=mur`STW)(ksa?bebOe6aCR zO{{BRihj|hj@E}<0b+xb=Gx%A$hx0aw>=tqU`y@(QswrS8oJhKc_Z+e_^POGUi`Us zMm0ZOID~|E(aV3Te5m^;S$9?VbB2d;`jQSVBxY!|T`x7{1apU3weebR#8@=+X?2tuK#AS1+V4Q~dFS1q)a@$ld^&EPZt*4Z$d*ZR2TByn%)f=Tj$$zGu9_G|^G=5%}lNyNo1c8^M-ZybsY@(BTVmRSGV6i%m6<9*m~n z8Y`1o-X@D48~L<|fFkz;BAW;dfrhiMsSwZ3qX)lStBuok+e>fr^7}QIB`Ao6Ncpl^ zkUIuWGtZ;$S-*|wenE)kALD>7R{(97?M!JAz5OxdFU))>f|+#Izj7lBnTQCj@{`U zJv=PkJr84QGk^Yk0*Ds<#)+LA%5CuFY8eMGXbx|k`IyVc>rd4@Nt6L(b!mE`w6L$hq8L!V0=>~LZh3V!F6&n|6kC1EkTnRmo zlFEukxqqE^wt%@5s(8(riQr@O4N#Oysj+H|T&9XuMsOc*GaYaO(*WR_7K-0i?L~+o=XC;=7yWgXp0$M(^Z^h@^~vlb6O;=vbX{QROCKFzWxoI! zG}yhqo0c3z`|e~7tn*)WUUu1jW=X9RsZpt@KV~oOE&dox)J!G@)GNg)X2=l#x+YWu zP?<@_ltGi&=GirXT)B=)zG_0xm%9XmS*TM+0%Q0zfhG0_AX*m@+CQjn_(VVmMf?k5E+#U+&%j&4%G;{x{eQ z=GA;Ys0j^&?#$j1(zrMpVgPf1AlR3;>7t2-PXYA``()KWP*Tn{z4&O6mZ5WPE}8|3 z?U*b8O{RNoTg@^rbnPI=>afn+4X_huK&^S@Y%~nLAEDK1uWfgA?&suaN6g(EE9=hW zN$vLX&~BNj>UrPo@@Q zRG(7N33QZrsAD)IH2CZOXG%;z_--11V@oi>zx@d(5&lFGjufydCs4z$9q#Mo>u; z^$Ulklj_+B=r)vM0NV%Q1Vref>zEmT^>ghcn7x0S??Fw|`!(7HfLXQ`uOE#b`0n)!Lyb`Sp3k{hH~!mhGHr zp|5s{zwxsgb?5dsqG|q&^$+iS*$=u1L-7n$uPMzHA*y?mxAFu_ z;~zJST+Hoc_4err5eqYsN_iU>>_A=laGGG!%(-&%+i_}EJ#`asJpKf0`ryXPp|exi zF_^ZViBVdX5ZM0;>`vQ?9M}Lb{ytMP;bExW*7OiR@K!t61C+q7WF4)`p1&fve?F^t z5|6SE8~}FT#?jW@>KJTCp>&eYDvSb$a>nb5D$RNjxSe$h)MU1;TD7XRB%p4$pYZ9; zx@pnX*8;wXiezg3mCI`VRt|saygduJAT|27i}eK3nka8{Wz@YPn-nehH4SHCUJqF3 zHvoJ;UD?KOOkPFmZR7gNte%g5QS+H^h;H_4@M}eY)Y-4^q&9Q{wc-3)ln+cH#*H)^ z2-0PNZORA0d+=$7G|R7mKA~1ksk~7*H!V$_4g0S4A2x;OD=amYc_tqra-zjwgGi05 zgEd(lRjy+b<|c}LQGlN9Izqtxv$0qJ4xrEZVvP!*8j4-7e<2!l2GyPYhJ4eK|NKy- z=80BX5Pc{pr(ZbcPg<^i=otvdwF~IZ zAzxa2lsnNtJ;;td1T*@84|soojm0^3MOSUZ#3 zG65g+%wX;8q%(hn$Rhm+jUp)FLa8sT;ttl={?W50bwQ4#%uRl*v8E2zX-R0fyqtct zPOAFj7(fe+cUtC)?iOuY`>OkCW4ie<#<*E@TdTaaNr-X~Qs?f+iwBZU1g>HC8mo9< zdype?v%xsdfsBahigF6BpYsO&$#kNkN*aQlg5AHY2fyoW4SvlV<7~wNf^f=e$>Rccg9up(i2q1nEo8s-AXZ{x;8?WbyhPQ?%ziWU5w5| zCN)m`;NvGxu8|`44RdRsRUF9`bOLc}#eaZ~RLKlh@{RFAVXUy|;I`$5wo(37aBgi< z%(~APm>RryBjTH7oB#g(mWUrd{fFz$@6TUcYF+VZWRabFOXPp=$orhp@(h=yA5ruD zhPy_mHn%iAb4&Z{uD>^#&j0xP!xq0{`fuy!p9}r|!WW4L|Bxl;o~_Gz+Htciu&|Li zDJZ+p_A_2)@68hXgnZ?>O-d$rGPBi8Zp_5siAL&CC-Fx6^^C+qqZizlVF`jCgiRLP(X*up?zsgedi=wsO&CqL(H7Nt!tY= zyy2;nCC%qjX|l#@egF2v=MIic@{)A`djBvN7a$RgCya^RY4#= zlZ-`K&ZXD%{4XXJTIR0y+_9#rd{8t<&#tKYE)7A9W)m!tevc^c-QyWnxHfT8`+HB0(hHUJ@vBBBJ25`%DL<0A=b1&kP#}Q*m$y~--XcnKURpQ& z)Ad(ZLy>g&z-z0`F}1<9*(Ico$Re+(VWySEA(D4}u!iR~*JQQmTI(o2;uP9K70N#_ zbD>Y|!eBPAnxQ(HFpRXY$qtG-;&5dL>MtxYvxzjmOas;cP0zrg=qZyC9C4$%Q7@<< zzy@a!Hhk-#%nf(m!wn&Qe%*rvJt<=l^!!Z{Fix1LX}-rvdTd2(H#BngP?8A#G)X>sqPo=Xm+&F)b?k)!p|t%K#EAx!)D zsJaE2he`7XTJHlPE)|4yBkKMA~L}S#ujleMXjy>hKlM-wAJC)paFPR3_{+_+=PEG>cA(bj^hq2P*c&^ z`#^V1`01(RWk9Zkg`%I6)w$01(w?BO+ zJiX5ddHU%jr45K+6AwWhcs2Jcp{2ROy10V7aW}SNASKI@zV<^gx(_2Y$smL2fMfU6 z%`);I%@6D&TMJzHAiGRu+<8 z68P4|w0v0lfUY&;Vc|@yIb`Z3P$%E}JJ1*FPa0DNTL`auY?{pnZ2qo!GrEK>>@del z{+W^~UfjYxr-x~pUt8m!XbNW}bS1_YrI1j@5z8AJ!+d}6Vb#gwiV>EgtD~4wyIk)! zl!C|gL6vr-){Js3^2uM-)|>>6rn*DZphKOltAk9ves)=r5QRm$RKsT3hinl6(Z$&d;9p|AR-Zh6dkM7D zADW4wqfvcD|I7sMJ9!+(hR^yD_pCO2U-mG& zs5LTk{8@HI$7g!#vg>!CGn%TuJayct^R^Hv&JeV_qPC{{)qU!su2HW95;ki8bfKWd z_y1R4HEsk7A#_o1MO*vbi^vBJ{-b&8DHvWxNU&+UwS{~KqUh95u(`gk>n7e4tL(@O zC*}E?y_D&yBo;?Q%P=*;(0l)3Vz!?yk=}8_AA2bZ6xL179Ps~L_5?l5@{wTf6;%OlultUj+X6HoOIFu zgUZ9}fW9-V06KJBEeiQ(bHnA6y&UGjWhal9^}y&&!`SPF{#TH3y9rqm{?hNjIDP^jcoMxkyA*4 zJ}m^X==Tj2`p5=SK%FheX+3_SG8PW5iQC_`m}w4tKqmG@)Qap|trQbhtE-$DMEYb` zc@b}z5XyP%TQ+dP$>AFWaf-J)qEX9Q#aSEFK|%M3b>m=+DX8=p?>n3rlRd(Po^yEBV=Q}Z%Jzb;`-Jj{lW{`KC-IzizU zBEcuJt4$F6vtlcZcu;rACBP%2{cb9S1P*#RmFRN3-PHq7|8I_hhAQ143k-$T4{QZhr?=ru;T!lFMY-xgRbx z=Lmxwa#y0G+xzVC(u~}NmWr))wkE8@E{S2CZBY)Jvv#EaUL<24+y9`PXPBgbIH zA}m7DKhWRb&wqY9A^BEDYAWqqwoa;JZJ1`NxE8t#(+kNJ!y%+tMm-{{=*{kv|u zPFoT}0wC^4<^pnLM?q;Y z;b5iTIN+L?c&W-@C(d@=PcY9UoIk&7seV7Gdnf^)7mJlJlR^qfZLY!cCo9vs|9f** zQloiM^@1+;(FTHdQQm3MLSzcX)E%TPc-9fqFquaCGAFhBEBJSt;{F(s%hSy{o5oWE z+rC(svYvs9KZqIy^m7DThmG_>&a;F_Tl%4ib9lkFHiG;t%&Y4S3)4bW!!i?JE=;+O zO(j*)KCCR>qeAtRpq=wL72LuIFK8Y;U$5L-(OZ^bb^HpE|1z#id~dmHp;N~J&mC>; zQ$d`}rx(DWkZ9-H@G7j4>JG1--*)kHcXI>FD(^O8*pUu^DM&;NyLq)sAo2;nrGULSad6`YGFEU<;|Nr>UDiIQ|6Zi$L+6j_gYP-Z=**X5t~(I3uv36~A}V z787+3ep`d|-yW-4&@ue@2XymcL?H%1I%UB${c+;SxebPgFA80Bi*B~jXPcy$%btj( zQ3ucb%o=DlD^a@x%%?^YoKLpT5`Os<&8qmp5wT=;uue`(>yn1QGt;*l5^MHcbsXFc zX@$;V|JJrYJz)r{@ZDd3or^du2fjcK(5M{C+G!O=lPBla8$MF#hSyy^W*@U)?XCmU z(GhOVkKbp6@kI9KJbz#Ak4(<4;8YVW=00oj#V}hbQ}I z+YFe^MaU;3=fFyTp#OLxzx@hEbcQGZ@P}7MAOC=wZ(Zt+pTAgNTe6Ag;&R8@TCBD0 z&>*)P@qgJdd!UPPMx4u+zeX{N0l`#KND=a3^BD{DLI4S7saL?gR15un3TldLRygP$ z&hj?iKD5$}kiv9KAJwnxGIzffcO&EGmGQ3~fb_vI(sKoQImmN^*97E(Jy~U`18naH zI2a);vth31{{=CP2Y-VO>OxH84-7*vga3rzd=aPbCdC*AI0?0;f{1kks>vi$?d0fV z{1A|&?t!fh)oIj8Qb)twjOL8RudU!@VK8|x)xDO(@M4-)B6fEG7{(u)wqcq+L#=SI zhy(N1g0-yxw-+||k)+%Q1Y{oV`=S;tbFLN=D!KLL$+=%4_}_j7dkG+~Bbu*3CP)`A z+O)k>DYSQi%Eq`3gwgQp;NW4f6X$f)kopx7h5P)o|2hv7@?w_P%u9byz022}xP-OC zyDV5`(RM_Bv(AK(aqRxq#IPm9ox-Y+fjfV@$YZpeDa<63Cl!cQ|L2qYNuxGqg5%Xi zf=cC!fIu3Ry7#?OPG@*^S+wehw&Og%&mo-<$(fqXr$V3|Oyws?XQE9pj=MabnuG0{ z##;2b@)8N@m7eh$x?QYr=qkr7^F~P#tfP*N0NRWL(BoYfOBHeix5o|j(&E}-NsUX| z>x9?wvI4ws1i5L!_KG*6Gl(^1f=m_7b@_`9J9r|b40g00y?446mq{t+6<`cYlgaWV zY0argt19Op(D!^>!f>-g3vW(*ES8D#X` z!ZE-zyL*mSM7hDwQ2j^{s;<)q7UE8^O65|a@&wI9@pDV{v}JB;S{=P+Y4)XVN5-J^ zDJPJt<|hNxciB<@I52}}9WF5a!LsjJ7gt+D5g)+e<*%x^HvY7m?($BWxI1n{ye8%w zwwWrpFH>Sk$>zIK{cOkWafEE%H`=d^-yNa@2)-S)Y5s8c;h5@xqy}S zVgcd;>I=HbYFgm`VVTYZz1?~N@GspXOhZMx)fXz`6RARQj6sI!leLCtmkDTVsafp65QsbLpcl7({_DR77>4IVG2)o1P%x!LbZJiDGz zeNf)yo!ULUq-&aV2mEQrn|W(r`vZ7-Nb->%YQF9z46yQ2C4$G9H((Nf-7`V3opPiqSX43_FIQG^W#yLMoBa6;Rpoq!JyF~>^}J|}oF9!> zi99dhRd1kEvE0$2PpRJ_s7D%NqW96Ah<9UvPb~4U# zs*lE!CeS=t)%+Vd>ls@5BIGLW^ak?*j5Akn2h5*O)T0{YURT{cE-Q;|>^?3Gngv;a zkBuEQ4x>3pHn(&_Oz*q1t4M?w-?1H)9GZ%rBm3GvStMf7NS$Z$lw-!JVIkeJXsb9Y zN2B**OSe$HMb%t9VKCB7xODpSo$0++!XVOo-_Ei~&*7>AjlT+DGY#Q}%2K;C07Z<# ze3Ct^CIMz7(P-Q_LAYU@i#MPVGv{J$)99F`yeGTD0G5g5zICyriiVvsz!9l~cd&$! zV{A(XlON9IM&Tow5tsS3u(jZc6L~nHr~@|G$~X#dG}=>8ueva$K52FUDa zF8Tdy!R(GeH7dC6%T)qB)=w}EqWqkW#<1-}i-4En+zN|)=@XZ{gUM@DWq6oXnZi72p}n2&+SZY3 zA=Ba5D}Q%00?f&$St{!39U(i+!$~=q z23T#jRK7e!9`jN0tATy?A@WNf8CFZq*Q>e)vN%)YpPEJ^2tg#j^;gxhm+f?#ardZl zNv?!6Vw34@OZ_h;c1e{0XV3OZr%|Qh(N=V2qp~3?k)2CY{+rEib8%a*_vpSxi%cN1ch15_q_GdCDRS zw`2-~KWT5JIw9Cb^Se>ar%I@}#IuxM>6J#DqB@gC7cU%8($AmDbDj|3xZ;%!-(nR) zoD;8_IVyF+?jbbRJ!VAL3G$d(jjEuY2V7s#Sj8^i2)2D;gGHXS1y7Ssb*8B3o!p-Q z&bYqBEPTit>J?#SDcmV;CMldvm2evwBUkG@6)&lN%E&L*gqLR-gj2@T1a9FZ4|lxG z1}n)T)VnJbd+lw!ZJA8oU*io=-KSYNH^w(@vB3#$sIJ)5&|;svb`?A=y#l7=`jE-* z*tIs0lqc<^jh;yZM|*rk^$oQRQ`*&YiRNKU^ovxP(E5|3#W9%BJ}{IWPwnt@x;1s= z&(@c88jU_)Xxw&}-YdE)Bp*!7$8#ojGzyHcuYT=th`3G}PiIvPN~^m?)V8*BTL`^k zE`-*Q(W^1fu~a^km^i(0atM=AW3pw|bynESC}4 zmdeLz0-nbi)mbH%GS*MJXUzD6f17n^M0O3BV^@Yvouv213#1~^WZo~9NK5vUPs9p#~!9ON3q8#(L7OoQLfZL#pK(wviMhu z(q$poNk<%aoVu%k+q!+?WW#)x#aG>x@{YumU7;~Qt0=+(7_9*6&NAg%*1*($wy{z` zJGEdpc@mo;3$c`v*mzaWiG2s%NE70$md!=yN|Y3#cJIOLaq-@ zPq!-`_o|vYPkU-OzRQHm1ISqf|R#8|$ z$ii{uM8~41lLa{Mj9oB70~FOtgVaLPV0&&{BxCHiq9I<0abq0gpcOO!@nP~$?2|@r zIhg$$Ja7vG(m6hqL+o8GW*-E#kDedE-|YJc2H1|_5q~hflErUY;aF59&&8Qpg}?@t z&~sx&?EUvm89Bj3a1OfNR~QcDU4tFW&&@kL}Dll;;zZHQEU3qhsJ!M(Y(2Suyt zQKYa@mQ8B))Q!}%rQQ#63fns=;?<%?)jigp2t}q`jx9)0-4%os@`UH%v^mMlI+IgR z8Z}mg+Y)&#solYz`U>b%bzvH?(bhdOkE~M|LP!)BAwR}`#QQeoJ|B+Q!2T4~)s-1X zmB!2oKF!F)GksIUh&Y)tEYEDVOL3|Sj(Z^&lsl0n`}|#46lGB$`*3G@0TiTfYvEA( zZL;Q5j~7!s*d*|;XtZE5E-@p#L3)CKsXbhJW}vRwXntcV{2Ug*9*nWDsI!xfe|kB% zr?EDyZOUe$X>^tutu66)Y9iL^_`U&Tmk_w*Z8I_c`Phg^<(gjDOj5aU@i^RyfxI2N z*p0$2-^em1cnR!@!s;<;x=NUuC$dG5NCHCZAAB%)%p?Txuh#Y;_MZXzx6pFYbId}pv?@p9X$g5a({$5t{a90|7XwiPaY z(+xR*uA>*ZgwpYW^td327>bEYJJLf`>3ef!tev*9R}xN_IJb`*J0u>?Kes@f*CH;Y z@$;z76U1r9&VNwRx{^ZsOfOoO^6_xGFBkz$rLaDbsIFSG6|AX-#d)KrX?56YenxU; z>^;0{fF|+4WeHML|8`fY98_!EL>9Q;z{rerm3KQ4L#rQmg3%kFKmuori^2y z<&22Vt08qG4&}!hUIrm9Py2p^1R{RSbe2&ZP*}P7>EKIx$K*tElwV|Xqg}djQ{|{z z7NH?>5f(dP}n_bW1aBL6! z4Y_skDPtV@CEksd1O5 z=#>JuaKUEGkuWp+-A=uW-4MF4w4}LX_bCUfB?2z?nV#t`vu*aR9u=F))YO#oW?u@b z+{s}rosi1-#Wwq-wwE?vn)o`BUrcP|Ecxrd(R8NWSpoaweBHui5d+_vact8UG*y;} zvIvr16G&*1c;v*&OCM|5=laJFOz#cwLtRy3QbArlCvzb1q5$1lm8M;cSn&uQP7DJ| zHGkq+m1mcthc^0vmY3mO7WUGNV@xjOt6~W3E37?AVms`cWn9)&$H_Ca1@ay2+<*aP zYOJ%L=%vXnU-?wHkE67VCYEnyr(ip(29LrjY(xCMYV0l%+dV_Z0KdeR&J0#;Wj{Mj zTX>2!8nQn>_;4Ig+;_&(Pbnr%?PPl{*yYq$ZIarU>a<(50_!RAq!!CLVa%)i11ehZ z%cZB}LRsq=_f&vEUjMrhko^Y_X47cphoAlw5D<_!@&P7(UgY6yND73|A}cpIf`(v{)_>oGC|$WDD7u}D z{qz90^Qa;TiN8S5kJ>C!R0xZZ&GA%7FFTudr zd5jbsOk0%wSKqh;Y~rm#@WA-b@G<>S>`cXZnz67znms%};kJeRC$^KN_p$Jey(Ty( z6|4lt3f5)*WAX1Y#(5VSMJC+k%gExt$fH?+VV4qCiEDr~?tQbZ4_EUUQUV4(=-$=yk4{!Qa+rC3G~+LAb{&7CLz6pvKrIgb^ks5*>Q z)VvWn5$8#k-SICjT6*0fntOsOv>~>Y*jcku01_4OG**g_uq41UkG^b*M``4nAW{=it7G%PXfda5c@buGOmhsK;bH^Q2H7>FYWo>Jw! zNHy^cjfr6E;k_sg33#6=#5j<;;oM^nu>)262`u9D=WMyYT2GtSaatP#KbhToywQ$v zPZ?#X#^?dLM4}i#uDfu~MadbI(#*p1NOy>SQ#nat*QK$nJ)#CHUrNLI3{TNnOFu~< zRwUfz)Z51ph5`U&Mv>kzYaB=`_Y9>DKV*$uU1@UidSW4-(m*HRxT=tqsv)-&9AhHW z*Na0``LG9%QCXhTE!@SvgGqO)7}^s-CJCd4t3&ZEs3cZW8v$cj{jMk~#7gO~;dCY6 z+RG~8clwpRVzI_bXg1?3Rd++(i#jA3v>ZyK1j_5apjmN$Buv$JktZuy+5A)7-6DH% z*roXN*oNMWJ)#0^lO!@j-i0$J7a&I|nNwz!M<0{k(3QI!H-&{~EoqBP#&$nOcQSR*G`?UKkf^oSk{ z>WBgtxuROeup)oMzKJJ~h@B-eKxSLJ2BHMt!~A?XAQszr2K~R;CJH$tl@yoIjCLPc zI9@KSoy8DvL3qQ`CnaH%I}^Ezq{pn&5Jii0h_0-sHgdn##K!B331@%buxnu^PaYRD zP2zi^D@B(T+qEe`y7)_o`(4!8Aoyz`NC9^2D#M>hkCQzMGOv>c1-Lq)Q2s!$f|fDX zh2zTV5x*X1;@jMnbl+~5)A(n&0JA*iq$hO9_QFh0(H0i2te1dWo`uVlB%9b7 z9^U^4-}jbV;ML^wMEUr4iY5zng?9&Hd^k69B)dX21-r(% z5?a;M6T(h;?qlwmNQk9jfTe(lFzGPpp8f#$EdJ}iQ3?4qe;^UfZeN{<<_`|QsWa+T z%&M}tm!OV1Zsb@O_vQRGw0pPcDt_-20k-{&WKVNPFM|B|i7UQlR=!gNi3iO>9E!_w zTCizJ=T6Zt)Lo)m-n0>k7n_{vXX;!|`FUS^E8CH_h8Z!+0hDzS#rOJ3R%j0=IQ9u~ zwVX7_MCUlbV=IzZZED3UOHbTCcdpx6_LWt>lxMul>4^AFAT|om=6T@KEGw)_1*2TQ zval}uHh_9?)yDW^Eq4##xTDe&c#{_^lmVH{2h&S*_y+8W`+j?UPyBMjRQl_A(Fn-4 zUl8^S=VcoWB;wg!4+g#13z-2up590o6kv-TG8ui}&u2})ASiK$;gf&uU2Fcxnk?YO zc6UvDso&ORStxyRs!`E>&HXxQ5=gjzGty!2coA*HVEWK#09cz>mW`(l+vD7J*fKmY z82uB|G{we)EQiit8yz%n)g|5&zINmt2JOnEMkpz>XxXolSf-0Se^>G~Vj;+N66!lzt)% zn37tX?A=j%fqiX_*GVK;Hi0HQ=};L1O&lNwy}{svFVNC-VJN+z3+A{s%W6&O@&l$9 zWtxKljdNf468Tpc|1w~)Ui|7?Oik*BqgVNnnSxvWsj&Zr9Y#=02U~l*acdt?;Vz{W zK?Loum-nq0aBoXVj;jK;logY1cQ!1Dln0TOe*~;ZX6LZvyrdAOh#y|?!00@1SimZ> zrvA*_5jS!dta~gmu32EjExoeM?ri?lO(Jk_TIX_aPUiMb3|)d_pKXo}>^*H`+Yx2B zxwd~t1E(k9Oy&wp8EO22k*!1dgye~)Ztx7!f^r0;0hE#L<_>I0;Kh{R9Rd&$C2|jl zD0wY(N!kUuEa{wQaW|nCR|LAVeMO~7A?1x3KzuMI88*+%}fpmY=0p*{-j2V$F@=aq9qnib}o;yVAVE`)iKQKZw*EZto8mx|e z-w?--F~|1OvLGz_$Re|-ksLQV-d9q)!i2%>@2pt8Sif!JIFB-GVolQzdRudC2;$Si zp~`;x`5Yr4s9(0)VLD1Fax z)t;}lcVjO9SRFk=d($~R9(_yHRbj`ljo%%t!M5f$5MX(z!)Xi5e*KO!l%qW+(~n*6 zj|5_^<_2Pi%`p?6@1kuD-kTMLCRMy8$hQFs_9&V)9Hcn|kHnc_JtEDTZcqIDn{N#J zPcFc$d8Cf=KYR|w1>Y9cZL-jfXwNStqZHE)&S*DRCd#gOujyk;*_62`geA&D;DY14 z@;7QrKz9uT$78x#rCU3ZfY0USu4xX18;(};Ta4`(pT!@aEJ^16XgSrS{DNaJ3~7pQ zRKx(AbP_$)mi^g(I#G0$&KSRXI?*kB;pL+#;q+T!l(q&m^U^ ztmk5acXVJ4ionGUiE0_74e!$>Omf6Jgh^>9lv!V3PUwHNJ$-6$g+pQ0)B(rfs7|QS z{P8CPcx63xF{rqkB^*H|HWFIaM!eYR7S|8t-leQbTZHdCn8cpO6_FWL#%{35Ml>BS zo4kRh_7-;hr(jN$1pwUvM3D_iDE~ONSsW++H3X8|8UuH#liQ9s?1sH|_AdN2e}>tz z+%5d$={e$M{+1QG03-c;v?dCe{A$^dC|%7Fl#hreUuYi`zeqP|%UE2h*YZ{t#K{C? zf74t|5xVjD1N!fpkUi*$r@7JaxGrdx{_&R_%~>R$ zBh)T5Zv^&o_0*BtHU>j5)(qrV5gz`pPmTfw?f|JDh&Iz-Ioz`gn5e;^P4U59bS zaEzYX-{L*^gBh~9WG#37sSeB%SAHcTf;)3$jEz7R*W|g!*xCu=ORzYAf`@X)Rv{$K z6ja5VJB@8XrB-kn^kM#kYtqq$ru69VGxgH!U#@#yfcf;qfuzIBgv0^_!zRhRsby#y z(Kl$f8NWMYBVnCk{(n<-U-JYqhj@^K2&DMWqbDF4q$JB^)`vut2Lwl?Bhxzn<9FvT zEQ17%hZcyMcS}_M8VCW9QZ^aphay>SP3OKSQ>V1-o?Ug$0{K|rANBdv)@=U@4(AUe zUc5Z42qj0>*}6Mz^fpWD{yXe>k1Yz4pUKW8g=C1Q2H4;Bn%FXMV7K0VbncS0C0TW- z&Xz0tU06_H59o4uS(J$HE>O%wM)lm0}%DjO{Oc$Y^FnS}|2J<#A( zY}bU{ye0OISno{gt8uXUSU<B$IqM~kDT&$+|a(r!x*}MWscls1|KJB)H!TeeL zmeU`zY*!kZPL<_rE+jPyE3P8k_L(ofP)?NJ#a8C>3P6c}D`MShu6SH@9lpDHVi8@J zp0lo0t%lTrXmqEAD-!4OEDo4D_$d>x&n714rb7OAEW~ocmm#U0R}p&KK_jG)Atc#l z1#C=cLkRFXd{rQG4PtdDd;UhIY9%6snYB1nQ-Uj$=k@sVn_`D3kyi5|kocyS_Xc8G zak&-%>Ui>IYDB)pthX|NSW(2KG=|$lGOI4%rA%v4foafZxOWb(1BufR5^Wh^Luf8j zJC?i+U+A$gCz$j2_J&;%(U}^HZ!ZE)U`!Y2eiYzIf&9<(T3_!KFEUD?{5j$V|Af^h z9jboT`78o&zLjs(a23(HB1}Q7a2}IxO*gHa=cqlCLb}%8IO^*w{ln3*aB;d9XQJYR zcopQNqJ@dz6ik0M^-s$@Nw$6SwbvuV9mtvMwXkb?ip1NQrY|j6ZS@R{pk(|+FX1JB zx&8+ykTjtSWkaT2rG;yp8?B2|*Bcrx(_$<@*6Fx9YyKe|$l~a2;LtLvd2XBk4}0Gp z4`tf_KV={7vnkuwMoIR`(_y!Sgd)_Vvb!Br5;;eqoKnu`9-9)zV=IcBvWPGwF|=elQx8Dx9Dzr$a@dA)jVT65p`b=}wXIlMpb&--dBDJeOxTI(;O zdCjz>L=Lopr2mh!nzT)Q8j>K`8*1;f`~~%-_#+y1sf%?gBK4zA5`dL;M_bv`UW;T# zUx~q$y3(z&Lz!)r_I~g!8S5K4gVXJP+eupoUhLj!V(Mh2>N3kpgHx>-ZBrlD&qqtp z9d>p>887yXkERu=>?SFVs<&QT=hAVy@Ym zN@$&_(~Xxl6{5V_3*CncTcJ3;;peIH4VUy(x&Ic4avJ~IL0AZ3vWPLwY=3$(@F-AA zx&k^zZJ@_*zD;as4O*&+td7FZljX;I*sqUh%W!>Q$1|^gD8t}C;Ig1y(Kuw@nHMrL zaTo&X!2EnGM1Kd>OVIrQPh2VE+TSs*eG~d?zlgq$S~^*98x;!>Z0oMgUHb~NsL^}q**{RrECpE+ ztKS%DXYrTb<22jz(-{+QB0eW=Tou!?Q+H@MaPnk#cQJI;=3i&W`Fl#fknCS3%@g-7 zEDV$Tsv=;^G`Vpe!RaOga%2oGjcbbO{2SN;kvK!ljL-E@e!d^VT7vBkzKlBr&flTM zis!Xh;-w5BcZ|iwh&~w$`HS9!IrIv%-o)OQSSv?d-P}GqktWy+?X?3gf6TSFLO+R! z496OBi|p!(H8h0ePIHFju|`!`7<$yPUcDtcU(`;Q2PddVL|>b!rwQktZgzfpT1bKZ zhTu0QoML{tSN#NQS(~~HFW^7qn@P^&SQo1N4)K`s zQ#cxp>S7tK8pY5S{rKEhxH!*g3c+C{2v{vsU9n~^U4LWvtvt7&OxJ`#`w=;>gwj^o zObAtW1N-F)S=Oa2A$av2)u@Tnq8TpZV+|A4Xnhwa+Lj0&R9VGKYr%&)*K!$MqYa(n zTlvz9S&Lf$l|s2C6&mMQP7;TE(v%RKd97T8gEWDfuOqAlab~3DP>eF@)tI}`*LD6Y zSZ4#KR4n&3f9UC$``T|N#cr(Q@ZdzPTUXh8voHt{<{g7_f|2cHeYnErOH9whnGSWq zP%)Vb+!GEtiXZ0NGb@x?{-13JpyUGaTS0sg5!>fJJ*{Z&H5bjjRWt41(A{LO zFmua%9=8>>-nY~A-jG)$aj%!r9om#B`UNXaDs0s_K6G-G zv}87rz&zflBb5S=d8n zl$#%}mqEMLF;e*)ZS0p`^)wglQ>UGwVzq8I>g%xMB;OkU-8%!cG)En*v<;@2^Yaqv z5hG3^R~u)hS}bNo`@}mF?9jstNDVIdZ!HbXGjK>;(jFpHt zxZ@XKAeVaio!=*qy*xFWJ#xnst5H%7tbkXM8PxjK%hHmPld7s_4KE^#ib|TH{P(wI z0r~RQ(J1L!j!ZIoHwT`YfZ%uf3l;#OO()wSBmJ0qE#3 z9wnU}0~rhQ_aRs@^M9fZ1LsvOs?#!3MAR^+j5SG*CcK4&!RC`J5~B*N9S}>D&Ke3m zW_zeEtd&==VGaTINLtu4Y=oT-WDx>~K=$keHkX{^s954pm|OLW_C&$G1E~hW`9qVz zCjrMQB^#c}&oIhOaG|9rw2fZKlzIdB)?QZN=6`7bIcWBN;l~SfddiD(bn@3_X7nKpuEROY@Oxc=M`2mY5(KD_+(LnO!cxc~d# zD4JvR)>mYvY~_|JS(UpU#mq|5?wgSuz%736IuAg>eCJ+p;-a4IMOEx%-C)UGyS&j? zJ}=^e&&lvqXs;E*=jvU&VNGtj#<#WivOc%^Z_0YigrDAM+UK z5F|zNa+y?vOw2sGNL-0*<(zgA&Mjntu+?aPKlW}JcesXz3v-vi||# zvd?SgbqH`|SCIW<+L~;NNXbfo;_utF3)5p^WRlsM1DEtz6gDMWo?)>>DOii8^J!bs zBMkIriS{hDf$G_z3RH&*vwePWE@K|9#~%^ouB&5+d0@%{$B0Nti5&)6ym=rAn@cb+ zM4$xI?~o6i803cg<>-;~t?~28W^uXME~gIC-m7iYc7(TYlH;st_C(9|NUkr7ubGaQrj3@L zuchqI&R#u7)5P$Drv~;r@u3N__||&R{opMn{T6x&*rKaAz;KV2Ws=A}tkv6FW7)CW zC9Zd1ERrSn@;g?|fhg?_dus8O@mx}Pn5DhLq#UpUE==$ar^gmP{l@mC-Jsqb^ccWUhZ4h{n1Kge!h*GPd`sBo3;94D~0*BuddDCY&{DXpEJx%lmtL?T%G|Y z1jzha_?!-0Tlv5;9zfy&G9B7$!3))(-b)nGo-GG=%zpU+zff*$H=5wNoZFjN_GgC zU!`ht0cRZx_rASMuQxV(t{BYc6Fe(4xZ-7tN9CHa8WCkPEXH{A(c`Vdph{@dD4b`l zchPK9B2!pNy{w*EnL!)!nsrwni9Su}kzg^9IP>+6*WMT@+%b12Ff56-?0c= zVP=Ma0mWV`_7{NO zyzgl@QR)Vz2B)ISKIR$?u3s5`w%RYFjgY|$HI}S$ze`=AXw%tLkVYyhqX{5d$g;*RR{vb2hGNBu{(VN)@7h`@)+QV|!hrV5NJ(^0W$Hfy zuf$5!k;ctp;l&id{??Qu(LSq}nH^U(_defQ{-kGe3`X#zY0Bdku!ja$VZlby`TO~K z&A#)^y)rNUSRh8TbiFyQ5LnP3_%Zov8(XJ=)u9P$rj8Cof+P>m`(_!?Lpdns9FFZr zV!EW{LQR@;Uo=k|P^rB(%Nj?l=PC3GjMFda{jw@b^f&C~s_U#@Gyo=jlNBR;W&oWq z02>DUlF8uFfk%r3c@hSzY8i17VEAAvF8%;Xg`HRs`DtGygSQ`} zU3%3-#-QgG*nnwToAuS(4Tn1nmw4jI5VaggO9pKi-jf8zr1!K!eS}j7==WAeft;m1 zvowF8>LZ$T5bcC`3p6*hGOc4zJB>o12h()j90W?eL4R6=u`>5Pms>DR#Xm5YCJ=MQ zRIoE0p9BUGR`m@7xv!*@M2(XErXunF$WC&xQckmFX)T|wHgwm3au%w=C*3FZRqM`J zK@HwvEUoS%_v|sK8*}F)RPyoyR1)Er2XfO@Myw~_4;>@5QvEf_X|2>$hi3ns7gTFY z{2WcpXU^B$>NV$ijn#vDDxfEC&cFH}>3tL`s{-==EtaL*qs#ak0W;RMOZW=$25yX> zZ&6hyzcQTehor|Xe4?UXam+}UmW($sr}+z*S8n@NDSs1B?+(6#p ztL!oyr5MqWmUE0WLvwaL+cxun;_`9KHIuARqd>jwy1`nH>ckDwGN{DDZVZKsf3SWc zV;wapKLqk(TDHS4!@-M<-tPXD=_^4OC58<~xqfM8NWe8*XQGjW>d9-WSOcC9nKAto z(62&C1?!^`$A(Reb|HP`mRBRI0$Y!hmWE{zW^{)GSC323mbI-7(H!5yCTNIwy{m9? z4j)EzwaT5#)-0>`;(_fe<|B!H#nx2^0%Vww@)95vJ0#El9UBN0CgGk3u>JxS4isyA z!gzYj`*{4!h61UF96<+s|Ga?12!8qidwil8#Wq_!sY|m9{W^VTCV7KefqtTR8Pmnd zzhoMB?HZ^LFmJ6_5ig*r)}hkjl@KiN;xH6gX?@Bf8EM~{N-WU6tCFqrNr2Wt;b79F z^f4UQa}h*cx@zJJoj4&V}Z?9GhpTVrADz+#0aQtNb6 za}pf#RlO1f>64XFY1XHESsGJGUL+9Zqy5r-OmoJ!XnfUSN+ZzPl-Q11X6j}6CkvKO zMHL6O0z*#m@*nK#Kc#^CEG=3grq^f#R|9dRg`r?4Vl||2O!fa|&}>OsfGLFRFms0u zg=iWr({Cq0Y_c|4=UhjCPQ&Ph6`QS{2JKp`dlEn`u*pIDR9qF%L zJ1=<&Yczv z=0gqODm%N$Aas54#z5uX%o{I?ij)MJ3>f&Mftbwk(_3Oa%dK2;oTh^f#%?;g9L$IS zjwMrBcq^LjiwOqQHJN>}Q|kqDZCL7mJ7KJP?94b$rAf0iN~-fIi*OTm=Hp9bsBn4T zF*I55<5uTY>0O$x2Jf*}t@)L?$parS`<_=i8;BMjZH`w6)SfLd1(jJ+()&nS>&q)66KA9XzXi`va(T zz=fFjL>bAF+H+EnUb9oir6^UvriLog6nGkVWO*f}rL}*$uM)DClay5DpqG05IVVe1 znZmTEz=ag{T8rZkac^@+2$K7y3K`T7H$Tbfq%DRFH`B7H3%g6{MY9>HIF?c-`0+hP zOMagn%~w}k_52ilWGg7o=D?0YoXG5*jc5m^5<+_W zl*FN|o|4c%*Q(V<5O#y$(;S!p zXSL?QyD*UBeLVN_Jr+cZpBF@23=szZ2KcGdCs{w3o*PyYJpCX~y9spF&0Yz~49^82 zJdTWT*PkiHtiFDtO?Rx!)<$O}R!vpg<|3q&jAiGx`exsZiglYTMbm1aAmDV3Plt3} zhtB9LYR4>L-nyN;!L?N-RE;d8qboGovub0u1x8t|iaSPpJS71=|Ah?a>che}uBs4) zvc{zQx`L#ovmY{GA~xs|LZG;8ju0sSqX*gInJ%?gSA(t3lHAC|imZME=F%#h8H+3c zg_k4M;|w5=QIdm8?#H5k);=~+7`qpGt&l_TAaNh7)NMxL-*3iH<7b9B5V_uDs{^@l z&nxumef#+ae3-CO_KN-Hs(Eh1kt$||eCfxv`0Tbn{F?zWcI}oPI5A;7_ARJKd{YtE zuqyY$gv+oqgtB9C0X376YEqz-dt5M7R>xK_17JdOs*c)v@=mn7M;6vV;P>n&e{PwY zLa1SvWO>|)9eb}L*ZbK67&KH>*~=mt$@4UGrRra_8SzuM4GXuJZ&RoS@4ZN9x94wk zdDhg&Q|vm*>wt<~9>8Rsr}X|-hKXK)16YT3Fk0=Qj8;CDp~jSzKWZ|sKTA%VM2(%h zCD?k?&im}oW}Vs!mcxeK$1dp8O?<>eFX6CRAHrl(R2nG&)7P1gSm8{1_89tGHqyvk zU-F#kVEhG%DS{li9&^RPVH{8Ap}t?11K$oKRaDmJ+sOHE{e8J_iPFZ=A~?7=#hp*l-&SMA9GEm3m^ zcbv$w1e*)`967`8&v%#+HQSuQ|8W^F+qs&ERYI7nE6?rPGy{&x<#L-@_JyM(MOcdx z$F1J93eydyLxY^svJG;zSh<|_&AlZEp3qwePc+HmUWr-c4%9W$ce_L1)6%&cm~KZ5 zKW1J{q=Ly((#0fcgId2iyxXb2!?uP%uOsaJ3;9?$jfM4401lhY;Y6?63qHguE7Xr( zz;QPc)~Hfo>&m>t5}!MA-FPR0OPHUq zE9@!01<1-ST<5S$0QG4sW+R#yhqIv_i8r`!bnX+^;k1lA$Rz-QK&W0NFl&%h)ZO^dm=0)dGeO@|tEwX$j z`c0{^sOtZ>!#Snv1<1#&9lMXMhmMpThda;#7A>^6Anc?gksD)m&&l07V>hwBL4W=> zDIMij`bTK!aG@DTII@m?+Ejoa(>&hyR+Q!{BN~_y*=x3PzxjOgU?`11c@_)8Y;bgm z&@~6I&uQhBHom(0hxw}>ZQx0`7@+nN5VWzSNcnS7p`g)#jnF=+1Zn;6GJ7xct3$^a$4>CKZA&Gj`Z_%w*@n)N z2wTNG-e-vt`5rU4g&xN(umf2DI|R(&7jlm^zdCe_aYPQCA{I?*7OrGMoj|Iutxga2 z7V_q_%q13_$`rC4swnS-*m3qz$TXOoD^I~}=yvPx;S}`7SpV3rd(LWf!&NN0a3s3$ z|FA)fg?}$`+3ir=e~0PL$QVk?b6N=Y+I~ls zX2C62WWIzMmPeYo_&G_PBky1&dc`joXOs+kf_D91y-7Ni zK+j;(qN-rPhbh0qVL>yDbFHEx;9RTOPigY!F+!20ygNg=hY3IT)(qVz*iG4oieqY4 ztkbQQVps6dTKE_ht6hJ`s(E`smPCwk*yVdGl&+SpGUS8ORe#Ur{|urEBmn1FgI71X zr)yJnxfm)SLY0U?KF`1Nd}dTxmN3;yiO=}>JC=>C-)Tg)AO}G<(f78Yv3~UUip@4w zC*Q`d2A#XQEVV2B-Fe|bbpMIyT#@SX5j=3qu zKS@Y3TjO#cxAMu7?Su&f>-;VqoRr%I8&RBpF~zL!k(_|HUwQUqw!Yg^kQ}Jj ztN*RzjsnO_lGldBZ5Fa{ki~6Ui@zY)bR$HP_k67rD#zEk>zX=1io+8z4eYYDxWI|` z&Z^N{2eZ0n%GH8ho*^yV;$-2&dY|`w^`n4Rs?dH=x(dlB3(6_#vOK% zw^U6~lQvRpO*G=m-YVzx$8jUIiSlCG?CuFNZ!1+`Y&51Yw;XH!D^kmP*#{C;^kCrX z5&vWBy)}J0%f#HN(05HquDV5W7&YNe$KG&1#4wSR2o_xSgZ8kOJy{{D1K$$#R zJNfZlj-g9J-y~OQzpZK3wT|t(XERbJN8W4EHYHKvPX_Z3)qyV2{$W+@jvVnj1}%>z zjLP<_;6ze0?<3SBD>}>KxX`P%!j?qwxqY)XOo7LfWOOFyiQRhCUr>cqsy7PFxfpdo7Sb^Q|GLF2MoDoOsTYgf}w~-=r`Fa zqYlLj!*SU$5zv+V1o~pRGrvkqj~Ny8jliE_<{$Eh^1B_OF1pTrx%9KOH(j5`#)iy{ zMhDEEgkwpWpSW8B3Ay2Dt+E#a7o2Pc$8?;@m%q+&^a09+!|3d}u%!ME>R6zJK>$3z zr}D(Ihd3Aj$Jn`f(%!XBr)ufJB=0~nkC?oSj&l0wj|?HpMk~XFgxJSekF?9H4^)A^ zfSiGVzV24)O)u>1tk~Nt4!OVYmoFdGL~aD9E*L>RUF)ADiWo!g@gnX&&2NLtl|yTU zg~?^Jv-f?q8m)f9;Y2W>Pn&I+p4fGeGMzI*drIjsU-{Kt?qmP@?w4O4TprRVeD$rN z{sA$G^^WVW*rp`K+Z}C4%JTQUB2IoQqoyvtfw$wP)7zd$7k~19`Mb5HlhZGTMB;9X zr|V8`y}0e{`g**8w&7{9YlS}=AR%I?NbgVtt`j(se#t#RHCwfNl-Ue|x8c!cphs#aMCrUKQS z#&`?83>^E);LrzU?I$@uo}QJ?{oaeza&aQ^Wluo(H|RN7kB`v-o4iDGCiPqRR?xcy zT&WFr@7j&!IEzb3U6|;^{c*i-^m_AbP^L^yx3eoHyZS4)vRnOr!$mG*(O{P#z71ety%<{i~SQc_fx37(2 z>oVI`G&>@k+d57y&zhhRWnDkzK9^NPn@6f8>E%m)qY&Bey*fw*KvuP@4RIEi3GDV( z&gD^^A2KW$tv{$NJAYhzUA}P8wB+iW>sIsirMC_}-*#Mj%GJ>;U|W|FIlVRM?cJo9QhH!# z$GFGl^#{mj36X8 ztWdx^^HHwyfkKxmTEdXSM;6|G_44Igu0P}k#9sN`W^5?NYOTWid8)ULMb(i2M7AC7 z+CMPiZ6gtPE*eJaORBkQr9aYf*n0C;;I~AbK9#8xx~_J3(^(Pt&&Z~;@kuc$|43BL zSMuE|r!irDB=_LWu9HWP_BW>NK7QPEaK+K1C8fun9H^X$TY5X1rjX z)Ek!D_d2DFDJu%)#EvCf5^o8LAChz`%;n1qd+c~A=K*5kGB!ZafcnLY_z^yxnN}x< z8%jL9q*?3EuvXtVWKgj2!!EJ5I;kzEV+({yXT7Uee>@#3pFQqmXjsJ0fBsKMKx7T{ z&=bRl=U%+`tz-P(ygQDjwc*+waX1w1p*UiDW0nGlft!eV+*2->|CqbD%#E1m`3T#& zBF4=vrw=T#U~yJs6L;YSV%|2Mzg>wyzit`{zjt^dRc8KrX@U(!c_4#+8T$q1`i@Ed z?DdXqGSFM+@$VPde#;nuJ62@FBZDFwWQ;Wp5#5H8BY zHEv=_Xy~1JAj!S)(ymz~C)+lXnPvH9Gt2(yC2 zz0>32aVS_Yd;4It+>X0;38M>MNfw0LWspkw)ji;X6^sk+$zOEA6Q94}3v@x-UAuN; z7nHy*nARYkxMx*V+OOC!D`N-6;UGEIt422XL=+kc?!l#Oak1UUa5$Xj69rfK(^{A0 zhVpK4iOb1pgYm2B>n}_ml2xXiCQf9HoT7M}r0S}`zvC*to$V}f^=zAIwy4d+7_Y-p(1-_rP z?pLEh5=J`I9pzM;-p9ggNLH%(6BPuDrefLkj_U)|lFWO1l&NG>gVCbj-xdh+0j zzv04G_;>poj2D=aO_Ga6%A?I6-}^9-A2j1A1e^1u@@ZmH2T?;u!G@-eet=zE7fe7- z_O|SWy$J=k2|C789|4I! zrn{HDaKXQWb~_+fIy9ttU4DM8t9Gvo+rEXZm1%I*a(l@1xK^==!TNZJ3R_NGC?l%@ndmrZdJ4!%3wu`!?L>v|A0H(fUW$fpU^5Y+4b!2*nZe;-Jffp z3p;ydh9KAT={&283|k@a+yHS9SzZ;H(BH$cou~>IW9@7=eYoZZ6e+m9Kszbyq^j?& zV?1S8F_@ZZP(Cg<6lJGUOooSOw3guZ|Bz?3iE)GAF^5GrKqdi)TmA;w{9IoA-Vjj9 zSdH2eJ(ZLT1|rgkIVKbF*@j?lS`3MKFSa~t{RxW+h!4kZEV@g~m)vDDmsig$>n=x6 z7Su}^h|A05NPW$?Nm1TD!AGskz(YKHGjKxZLpRudm&q{yxWlU6w~qMob8#6P!K3jT z=-~?C2V9sbOb2e4iYUAZsv`z-(p$vWtsm;LyLo7=M8(8i56##2f?U%*J1NT6dKsDx zNM6m)6W{It_Lp;2ysf{4=0BF7%Y7@nnx$X54!o983hT94^X%DH$Ni_yv7$y&0KDr}GoC%|kw+5q@9?H&k>FUyhs3eL}Kac8ns|A9n<0da>?QpWik#J_9uNPRd{K9~mY_#lMlp)$vJ9B=P% zr4HG(znGok%bgb0kXKN$Q5%7c`_JGa>}l=ZuO_zlRx7{szIEk*SoWsJs9W`{v|vlj zwMDBen{$=5RGb0h)P3h4VmNrjW7uY4EQ9LQa5He|&BN*rEx1{z)!*kig zb6LpbjOclv#1|O(x=QV(Q)WlJa)-S{LPI_Ba8g^jGzC|B-Sx*@fY&?5VP&QL&-52Q zP1SFh6F6VU&p&z>IjoE;%ms;iP>St2&B^h9DbLzFO8^V{dw6RmciI|xD$KLR6Yu1V zRy2OAUQleH_jv6|zRKSijhTi@4U3#>loiL~z*UHFzK&-a1hnLBnM?jdniSVdO$(m> z`=QiQ|8C__mu)i*3NusZS49#2_z~0Asw}~S8*TQ*Y$VIAo$BM*T(~gJB2F8ZB2xsn zxe13x(ycyLSqR>7d4HxQVC8?x91Qe$jINi*wf%z}p$F_B-K^kH_D-(p%54gRB_HA^QeTzn_v2Uce$Fyi*RQ z4cFr#F4nUS-V@HMnCUKXyMoXfiM=qvuYPov2V^|K4bUrK`-Qa}H_&^osJE{2u6SY; zsx1ZKwf0$?Ug6oJLcG8^9?GzIqS99916wCwCmnE_yk6{xOhm;RX5@wI@#i!f=SA}2 zcCP4lN=kcAQIG>e>(6X=z6soMikKJZ1T`8Rn83Qq0eV7;wG8SYe>uQskj zquO=*v!n8dhkZJw2tuJ%ekbmua1gCQQ^Sep8X-nop$i4-2M2rKY&TGnHqhH7n-R_t zP7$lxe{~w~l+`Of>CKxeRw5 zFDjBn2nWOo1_^Q%Hzr-=Sa<18{p*E1MQ4WcMF^O+;9;8FC3aOR*xRnPFmb0~;`-6V zCBzu$(a~9v5UIayPI@e!SRxq2Ig;W#3J$uozFcbOt4ow14IOE;$~G|_))ITl8-ndp zFzSAxc&)%Xv>3G46Z5D@n(z<=2iXxl{OaTQrws4T@);Kg_yrytZ{m`5>PdJt6eXb1 zYJyD_%UPL2=ypQ)-ei}wv`b0J(fZUC+>kJEc$2I4<_C2qt5#d~1_jh@z3D2&w|XaE z-B#hu>h&TM|>t*gSf^b%d)j5nWCg!ab%Gf=gJAmg8GM1Ay=Xln^scvBx%7l#X zEoYMLv6H82og;B$`xyQYQUC}HaBllVFD?6K{&XJqc%qRo9pUS(p9~KPU&t2yWYokUP-e&Ks zDt>hpnS`UPEzF1()okMMx8m2{I`$jdslUS8z|xP*^z^&ycgo~;=dFMp4I6wkgd>4NW)h2Y znTG4#%U1q+MO~*|WJG5ZGTV0Nb&_Z+aR-U_#!g4QTMS1eWL(>AJq>vrZ zUOY8tQ=sRDHksKfQ10xQ&}j|NiF*L~F>;@7Hs~r4YoW+z?#;(bbB}wrQIC52;t6a1 zePt_`*BfxAib}_2-k~XYRAQjV)aWhkx9jAur_4^b`MAz_DQzYV{dy`J4tT0&rIrCl zdet?wu%LbWauH-T)1NVe#s+Y%H^6>Y_&vnm08hMY2bsS_A&<3#9v7r-t)~^7!zD_m$-v_Hoxez^k4Dk|mg47R-6%OCsfH zc!dGnf99mnHNn|UlXGhR#j~{&VH%p)+?vANf_Q-}3i=JMTsgRP@_spyOV_T~q#5>f zV9mNpAy5I3pIcP>?h3*y#67#W+(ONOop-c=xRtIB@fSZP!m!yIML4^5RP)#Wu$5MJ z5^c(<$!Hhhtuw(IE6cPQ0!g5+!;G-wwY1)JyKTm(=YX3G%@E}17>1@GS3 z&{=OgkdtyGu~t0sYwWgfqSdh5#yIkrR`9wQVQ7$6tK}4b{Rc(cLf+gCZSh0R-h|!L zpfUIiyb)^wgTcZbwqAC_K=`sQN$TryrE*$jBft7@$P8J1toB0hsIUfd4kor$yjvDl zFT)v(;U9%GqkzW+HYw^zc!=GyWBXq(p}zgx8;7cXsBfh^cHH!JN$8aGKqt@povLMw z&;&^lFf96*49si$&bASiq}h1eqeu7agHdGY1~Bn8yT@2mw(PrvsB`1GAvuLnxulW6 zV2^+Qj`_G)WXsQ-6f}Si-fj#DG_4uB<$7a(&P2tBly0yaROaDoQj9Hf;jf4G(>`t~ z>*Djx_Mc8G9`VFpys9-?T2Z9=+gSD4mHXyMm+9I~IgVfkkReI99?Q;^WMS5EtfXY= zodHR(K&!mzu3ekZS0e9WFKQH$de*${wvLP2BdyP4dS*~bWp4d}b$K_4t%qe(@M=SF zfh_{<@Q=l+QJJM23vg}}pX?)TiWFW6L4vTR^t3FE0DEn_|PQ$d(??g5v} z(QKw7CYCd2WJN+8080xSCi^48S`UjumOh7hKE|VIwo}+Q=S;v9oo@ge@>dXnIe3q` zsi?$^4nRfFHjiOI4W>%qM~`F+U7T}}Fvqc9GRLr(<}PfS!g%8OIj%aTR0J2!5!%Fl zVF&a8fAz$W;mpI+zrss#(+3m;bVxDl8`*?MZox(21$)3U`XzIGg>8;|Q?Vz$!ZycC z;mSH+f{VmqCawWnr7f5zi7F8nTa|kgd&1O4zblIpck&l_kB0}jH;UIQ9%0O25CX!_ zoV+-{3m;VaU0QhIb4p*Zh~GgF!`~bphSd)ON*PZKF%RpB-}OCnTy$ZzFSszgCNKVy z@URkOx&xkK#;~CesinduhxK;F2H9dxoQqiqSRNfzg_Mh@^~@O?WXDeUVfzlU)46^3 zLbh)aR#$`e{a>xM|6{0W%ctuF)}&+2H;RjV$q8PclK#$X?AM;SMAH%WwD|;cy!y_8t08?Ue5K(gT@S^NA)#Isyj5 z+!-ryyYvp|(=vu0Wn8&7AnsIq-PE;ZJcZa3QduwcBA)D85QbvI@Q7U5gjRcN+C$3p zZjn&m%(awjQ?xCa=6gJjd-Rpzp4Fy?-+de0ku*(>fiF+~++UyUJdotA4= z%A-8Iyu_NC^F%<#-0u2?`_*SV+oB(EI4J|u%X<>qoShjz-rKx+)4il@0}C~jY?UTk1* zxqU~}ane?gykRVuiS6&{Tr>t1Vns!&KP7i()Nz9@NwpLwUvs2CXU@!7amoV zuQL{~Xa214uzqZFY{NFkMGKy|zpsk&Vx+7aNM4J|JSvRXotp)(Fs|lS3_$8eadpKb zr^1k@(TeG);N22C{oRVqAD}XG3ZyEwGhBXY%pyF#>JQBLu+kpZz~A5C0QvJR%(!=T z0obzx6eJjFYLdMwej#v-K?aZ@FPy~$J_yO&#hEYhlV;G0dlv<{OyHmyABH#2P^n$` ziXuJHq~LbBFPu6DDB)GkVo_udWo>TCrm#opd|d+edJb}oQ4WInSYTH$WM;mE#~S7J zbRBRnqZ3TboH0r@*D*D?8uekI17IuWsM;CPzvxw9pwfJb%DkdmF;qPEJaxT;BEZTv zK^GH=!{Tidq*;w7lT!!8oYQv*0iG6s*Xrxvb#tLrts4EztAKF#*l0IY%c;F@BHLuv z((}SIME@4HPJZ%F-qb@D?{4*~o>BnZW2azxP0QIje)SeXW;K(AdtfmKt6a+({VOeP zcrA2kK!X7>8C4-pj)B_828hAc@2@?nG)e@JY^vwYc15L40FueP!xqW&J==p;)Rtd)Fw_4FR;e~Rv(8y__p%hp-@{h zM1h$i&nmWNo(R|$Vz;e*wAV*S*5>GB{a4&A?d|$cP&V&Trc zMeV(XDa6}5_ZC#$JYnMdA?5?JrqQHYQCMck$yCc+=u&I1st(YQ7ZQF7P>vn(I*$)e zEmRj%G&HpE-7~}g(t4t;?&#FFepYH`XqFyI^rh*}>XhiJ->V$@z`wa~fD{l^tBl~l zaN&THf|{GSiffWM>!f3vIvSo0$pQK^ug^L4sf2p-&Ia)keRHR0!PHXg3$C+lY;r6A zqw4?Q4l6&AL`qV=-VHN_qHFSce`?QKjoGDFw`Rix$_UI*wXldaI3XRmUPKC)N z-l7>z%3TZR0YuoLYfcnhZyzdP?Fv?s$0|wYx6^Jokxj~rgni|=@H&4`DAd%QAT{PF zVRhr<$1zTH>BWl|Jx>JeO*tea?*R4V3{f6xDG(pGZPVv09~XF*Q4U`JLI2%B8NED_ zJ$r!SyHhsDsEx@QLKX7%szN)OY4=cp=0x-6`w{o8b$`O))>sa{PPgk9@U?a-HzVYV z*qk1Wn?46;kGRc&ZT&ZjM`ARi^z9twRw=G+brFl&8QoDoRClDAjqV{rid0nMmT@rY zZ2whjvhTJ($%Al>ZrW_Ar^KTSDttVtg;Sje#zxcqNrpDLv7J*`{diAz_mye@&fff@ zw0G0O`f;$rP6-<;&{kwvJ}k@hjVydP*(@|;dFa#a0M|N)$xk2rC;GE3mAvuYw2&=0 zx2&>I1)-g%pWN*Zb(Ifsotd(0A?rZ#@|{&*P0Zv&-KmGK#_BYM0r}4BTngNKCl3br z36@ol+F}topbMH$Ea=pIWPWu8w9S2Co7LP1AKx8csV>`a}mH%SKslg=R)lX zE7{2aTpSa@#1mLcy^ai3hr2@4vI^N!Uv0#q`x|l6+=h`~1If&9bizcfGjO#={Yd@xr)UvEQ%bsHCBz>zqR+C1Ytd5G3{f zb8?X1OLk_QtfAxBc|g5|I>iti;vhp+`V}7+RG65ZOrJ~&by6xeakQvEJJAWenrIK; zkU6{@^a8RWb+q@@?96lro#N{HSvDC~ZopxmM9Jct#o~_oshufzawgC8XWFziGEGdG z!uFZ>1FH-iZph#T73zkmKvU6&AHeP;4xXriDGRk)jP&3A5c32m)7F7NCmTGWUOfkn zKYZAE!1Y5Xr8Ih{ZGn=!i))8WU3CHAn^4$idizZ^_?YKV^1O`0QS+**&OMQLb{LrA ze5s7b);k05U^$4~@gmT_#@^dr0E=~&poYIipUItVne5KB`@>R@P*VftzgpK=zys!#oJP3%k=T(Jfv(L!Dk+;fecE@OdCKCw*jN(82X_ zXJBk+#Nh%0sP>C}^1^zUU}9RTE0n0rTw4M(?*18p?7D#oe94MXHkX+nLR_L-3R6zV z&gT?mJMqN*BDjuj33p=S*6CnnOB9jc1JhFf2pJ#j!(I3gFq>`i<2^+E%Qp%zt5)?a z0-HOOKQj@Q&W=#3kKJT3krYCJI4(XycW@qhhUGyl#>N6E$)d5SL&f!D)z4VrqCE8O z&h})Y0z`&Dpo$sIVBBXO$@y};yT=%K4U8mX(U724LI`wHWt3;+)+rZ6zPgOvv3K+Z zc1H)fdHDAl5kjV7{(9Ng8TTO-g`t@YQHyHk8iatD73o$2!-~mu6qA(vKCRWkoRfYNDQ20EQ}>7j;CQbqHF#=(2^@HKhe{z(TcX&TET|%7?kP=TrJjGfij_|r|0C` z3EKI7SF+%`bw2!D!oz;zi4g0xm$}<+{^nOK8OA`}!{Q@+0qrrfRx%-S2h+w6(D{-r2TLHY z_^28oerVtMcM9b!WcaioWvX(bXlk{nt3`-CkLkCJcD&0B0rba~C+{@(@ z+938HP4ML3B+~781DecWLgovvH+!ohCr1=!M_yh3@Y(~wrp&!XMMZr%=iM}dbq@%+ z4wr-$+zbe5`ZOe%nJc_QX$@%BpDAf*NFItLIQ?i?UT!{VH{xS~556x;&N+|6Z4T?< zum3cDN%6>AZ2hZZc%b2j_H(pC1EY?rDHzXG_ufLH*`?1_}Pnjq& zCb~Q&+a|q*Wac~%5^fVb#m^=1$8_aaY@u_&Pcr@+)!Nf7%2TqWq$(Y3oG3mRmpJk2 za$LBp$=Hr(V9@Uvbr{j2IavM2Mn7k$at$hBfF-LY8v6xx*cxCG{}vu*ih)Eg&=)qS z03OFeP=k8k9O9O`J0UDFZ>{`JJj8I5<;$LZ5SqU}a|Wvfo!Ep0yD@C_mQtI`P?D*c zW>&!%<%`HZ%o#6V$}xiwnRVgf3ux{(AZUm6#4T2rw{Qu3oc8l$iy0&NzTk-)fl)9w z74Zy|8Y;UilsaSJjTE<3&xA0>?8d4YkhWvy_b+PQ=Ygj+cVTnJ6OYe7v1ad^{R`2g zUSyPjJH@Qh*6#ZZbMh+ z@mZ@qM3LxGJko$|vlbg3pO-H3Iw`ZU{^jKZ(&q5nyIplwjwS;$Zmv9YO$q2!3z**o zY<;qo^H*YpUyf{P|9+_rO%~0q!*|Up_t~gi{@S!QjF&~xPc<-pY5lb+jXG36rDl`r z8p%B4=j~E|*pHe9&;Vdl8mc#<6slphoUCm|wSWdRP%q zb73j}Hzft!;j{&>{@NAHDKlCtdZSSMkqHI3K6x?ijo5}I7WIMiTtF)R%c)(W<>0@j zT`xgoTcQqR%-MKgc_n+xqR0J9nkKM_w{hRxwF|RRk;cfK+XMmlWu@n^n}PQfjxJ`_ z#=~sQv&5Hp+$8|?{~?)ri5CaR_A#EiGiTOgn^Udtz$n+9zMP|OR`p0qomQ1QGo`McQ8OHp!F$r; zLLFk`UJf%DiCsMZoW(W&;oFLW71UyKXg^j^*tf-bO?b_yGoEBmfTub zR|dxxEo9?1EU+>nBFCN_TrV!2He}#*NZTn}-`a zs-#5=-xWSgAy)L9F%@XM@KzzWjRBG?2-;?K;_KyJ%AP*tux-c8#O%~6%JeE=KQ|Sn zsg46PdjrtL5DgAJC`hXvy8>7@ux1Qx&M(IK|HWaM4`%`lIGC%@Uf}5?l-9agTvB!7 z;mVo?9N2d+?F_|3(q|t7ac+9JL)oa~wVG(0Tx#wmM;;5ppx)29h_4Dhg~N;{X; zHAKSt5ujZFvH7#C`{LngtJ6*sKRs}_%F{z^=WtQEmjFu)4fCr*jp*3^4;XL|*l-qH z3ukvx5tJa$(>Wx(V=%;$9-MpYj5@LzWNT+(*X7#l&TjvnEPK4r##@K z+oBdQeV`eoSlF3ijNmv0?(z5TP^*~zklD6Qf!-P#GktEg2}5fc?g};Y4B2<{?P~}d z;6-u#^1;RxD54pULtP{b7~nOC*||+;^H&0>gRYX%et^h5gEK?90>TERlUb&XFwD|0 z;Q$^%sQzE++2zg_g&b3I2K)UN!NLP*ad?`JiUL5tUN5TybvML@tgD1A1puG^Y}4S~ z7Sbt6$geyR)E_Mzut!i6n7>s?s%&v4pWv7SumcgQE!}FRxPUc{`qdUu@*Y^iogc%U zhvClESSSdCtnd3)9b*y2pu0tVwy==tG{5E73duJQZ$-0f1#9B-T*oW0wv1a@h6ACU zKx{VC+@vG0((8=^cil&Xdjh>0INH#TV{LVU1BJc=Ub^-liFdI;;m76pS}I+T_!%(JrxKqWj;gg1wVoX>&XL(si|(PZBN68L!<+zV)t*>8m9 zuXF|z2&kbOyESujO8)0$?In3{F+eI>SIS7qT@g=iS5(aZ9$kCs{vs7{ufx2|nm-Ca zssT%NK{7$S0EAO^$#DB;N9;R4I$I5EG#c+!!{ zeinqkhE{0QRTvM_rCtln_kSrtR=mS%13N1c!oE&HK;8u9tT&mBIu#*mWG7_5EZNdtHK0e&|-JXdLWdq>Ln0tlLQ|7; zAF{ggdLRVT7@-${Tvxu8aiM8be7bYwNW&Q{;OX;Q2)U2~3+HV`N<7cWq6J=tSPAO8DEfn@4GYF*Va|NN|FsnTx2^fd;yXDp%;*hQq zauUO+vquv9VI>|!0Na~il@6jMe;-N=XV$t%qbBegtR*FfcHQYytL|N>g%(+BCAH411!8p@<%3u+S(`+DEoV)5ZxSa*nX zjWv$F-5F}SiOb|yVr&%14j*J2D&kGz!XO%6rl$_L_XQ{1_1YR|;_GKq>DIc}{=w~w zJ$5`cx6lJ}M0PSb7`d&a7caK((%yD=+!D5R_Sk&clRKRw*hc;6i@R3Adu3l6R%LW}jvqa= zE};E)Ec*VVx)@DU;bj1Xz^O5i%IAXX*RO}xHj3ReZ;>*+0Ql%xr);y%slevhGQW8$ z76isixo*^{0KFhs3Fn7;498$FlAmL@t&s!ZVpVQ3wmSDxUV*DdwZc1XLkav_&5KA6 z>2?ZMs858ofU$)nv)n?u%B)vRM;Of*L&)+P^Www3h}7z)4^3t)#Fk+-@9?&KKi%e_ zbW(ZHxB%*I!16}gV2pP2q3>XB{vr^whCs~j>bItpne3r-B?Z#(R#eODc@u>}Mujz! z^Psx}n%ANGl&P5d**e*6+fYASIpZ|;eT-U67FKv!o&u-_H@rI;B18?Tw=V^5@-Gaq z67e&4Md9aRA*sH}JcWas+Z=m7HI9JYpfg0`SSZo%zaHB6o4A59uKYB3$SyiO>?j7r zVaVNvYV!PTWURBgmD&WlMYCwx_Q(K&AUMMR8I{opSdM?SGwwl8g@usRh6mngZ)5CZ zH+=^-uKGh6DEA16b4%@-i1=}C{UI9Vmyqx!z+|#S6fn;8nUe%I9Hy!g>gh)^gc$rW zrsIow%DJgps?HUp-&`jlA)o-qY2Nkp%phzC)7iayx443W5F9rpAV1#U&_O<__g*CT z)s}9)a$W&w?9NsoUsZ1=AN>MmCg4-JiM~eJTU{Ti}IGzgI0{vL{EQgnzpL#=EK5I9H?4XT}4^o zrBrp&t5@I7j+IE5l3ZYwwZVzK&~U@zZy`W4BYDC@(0V5q9IdxkCyQT~-ls+i z$pu+S&kqqGRuVt`I;`ypMy9YCX#8GSSlC(@baEJ(Y57+DYkPHA)z=cqez#QIYu5r|T`7xEvK;%oR^zCTl9ity9p+e~H!%N=0u< zw}gZQn5l1y@|cf-b1Md}zn9pC2R>}e{M~#7DKZG}4Sa4V1*R=vjK8K9i|H283e6WU z>k`O4S$Ju0s&Es$>^5HvKWDvcYX*s%hiN}qPZrSB&xQlTc0J1y%379_qF^jGwe{IWW*1S*WhA5!2~FXqDeA zoUa%}mE_y#-~Rgb4H1&8ocwp|gJ`+gC%lR+U0h=P$-!F$@Nbh!Pd(WqLMRyFJ$0Sa>nU5jSdB`@9A!Ehi*ic51Sp5c6(Vzc>`Hn98>!#4oKL6W5 z7Oh-%fQc8u6vB}`{HKHO0SBjyV&68sZG13(`qveG)-$xJ1D5Sai4$86T>l{|IvT2= zP&&=FlXB_yZ0ns2vCZiX28B;pnW#FdKmBQB$p5VZc`}5c^GamzUR|WDgR8))l^&yw z&9)g6C!A(x6Zw->taX1poPEzpXK!0Jzoi*Q%v{~Qu{~*3E^sQFSC5F4>(16?i;GJ( zN`L0%{2p&G1ZCHUUcoyzd3335qe%-v7clT*v7vJ}E49*7Us?LLd9LJ1RVi0kAF43J zC)hU9<~q@&PpO?|Jh0x>sD25(tJj~jQCalmA=ily+Tt&tXSKba&~%;D93qF#jHQxh zXEJA9vd9CJ*lAr)qzfC@WLY{Yux*^)ks%lYEayUhMy#JvevlXuoO z9?Mi_>O!dtC<0ThOBJPvfUI%qLMtjNDkw`Rh^UCjz9b=9zY2(iS_{aoQgC63i0qJ{ z0#OkV5yBoN$PO`VNyzq{=Lum`+kW%D*Z-gEnsM6q^;v$;Z#n0_?{gn<`9?;0tXs=r zKGym8Noz~mpkySTL5KaPSj>2p%_g$;5V(E4{Oylm^C{@T4aZX&m+9dQZ7W9ig}aGq zI#eI-@ghN$%IW;JXPIyJN@7xT!|Q#D9an9)6%`a@Fr0Uc5_TP`aNdy(e^6qpgPZM& zwIkhV8Siu)?a_hw?#<=FRh^IU7s0 zYc(HIeKJOkwGG!edUbV@R=wF3_!bi1R?R9pxagho7cs>2#8BiPjeWa}ze!r9394vE z`q1;kiaxn>c5`AA`Bp1L$(^d#1CwRG2(xzQ12lO4vV*Y5KQtiB+pXd#_#OP4Nf?|61im6_$nq$;bp)a$*(I2Go3X{liaespe2 zL0A3t74e94^|Y_g*{@BA!X8iqbK~_&bruN1cVnDpa_UPB*ZN8o4<)Fv*>zW(~SU9gXDFu%vF^(EhuZh8%<_|ROO}r6mI%oQYF(f z!pm^UiF)!wT>#gR0QE%DSkWu@0Ub&xWd)n?E8q(y%W| zYz*Sq@rk;o{h&~qU}RDX5LrF|pUC#x6GYCct_Jn%I(q#{Fpholx4jU(x zyMoW)Qhtp*o*&drZL}mPl-!6_izU<@o+rdX|)_67cOk^F5|*IYrzE5Ea(Ih zYFG57R$EE}P39Dfzgl#Wq>L3^V^e^4=!-%i<(cpy zaxV3185t}#zp~Lcu$p(SH46IsCL-uH=GUj)-6ugS>)S_Kb>2kJ#7NDpVf2!;OkuN* z38c>VX@eDT*zF#vkXjld=W3eUaj&fz`P5N`(s4?)aq$?9=4IdX<#pI!K`lH5oFMxs z5z4aK``?GEGPR8i4so5}L|Hqf9rf&d5gi=dknLi5= z0gFu-zZiNJ?GTIh9VhY&|kC-fE<3Cfx7UG{Hm4Q3q7M-IN%E+1YeM3N2te_ z76A7=1Lr~;q2N969#U!9#F>A9(zR(*ISnstR%Nod_V9{f$;ruEiR14ib|y0xDLnKY zG_b~W7eh8M%a8<*+`m?R+8+D~Z<^}q{Og28;pBDGkn5_T&=ZQzcemvv*Ni~lUB;i& z8uE_zv%nA-d$sZs4E(`Gz|bvHg`<>Rz`Oa2eCvq+`b9?sBNYcDm6;T)b^nTL>&zK2 zGtoxjf~g?@*g~-qfmpYjPCP1v58k-%zZN0w48ZT;SyLt$1cJlNjPbr&LF13CWw~e$ z_VCnb@=ypPD{e#F!{B*eqj$xO*ewDIAx2i51vCC-@ft7$sQ|nk0=Ctj^b^3l_@22m zbJePgyNMi%i3iDMw4PSSAqFadjB7fs4|kXxZ7>+w*`Yq|73{|T21#*gtuM+;Ovi@d zs;F5L22;$Kt%~>390u?TIQgr<>&3i0a2(3%RCmsdIX(P8gegH0r{HK0SAL2AfO^0m zg}QlUnj@uG->L%c1lVpwcSiAHMOg5dA9wuc(2SUN==q0;>$DjXvlV2@;8_(!*6=z6 z;}0@r@?Uzd{P`6P;ELc(6-3_S^*c=YZQKVymJGwkGw|Ayj2?!^`K)}ex z?sceMAaZFGE1y>MrIIt){Zvcd{c@dl|KXUjsyg}RP1kH291ZH_&>8@Qc6dr>yV=kK zVgL^XW>uEZUwp~Qm1z3XFNTYp_E7U&pU@2#7Ogqqv*&gE9L%;S@Bp1#zJUW{CHSFm zc&u>nxV#`I@8IS25K5iy)bW2A=BOu%!y$C8(ks?3&sE8RCIHu+ofE?x*OH;+C)*OI zV!;yckOSG!Fdr)-?AX!bE>QKx?f#nEB6{_8{3>;WS3~2y!*#R-6q!eM|BLo-+dT-P z8jFpT%Hr>sL&8zFR+T5Kwj0xOCfE^iH?OjqkftfcvZwN*xydY->Y^{*j&%!z3N@-V z8OU2CDo=!hpZ#x^HfAp=Mb_FA)^;-8{bf!K2Ql`5V&wH;YUj&0?+&||tA3^DS>9+kwcG z^Uwfu=h?qig=arQcExwdb0`qrS~d55Ut6`(eJhSAmUB^ot_e8oL!J{emNmX zarx<|ulFSwHNv2b4TQpq1Mk%vN0g#Am9w1H*}R0QYP1hOSpX#bFpdAh;k3d9Jn`N% zNyM+U&C8}07d)Lr1lt1q#y|L8H$VElR(|-s8qS$#+{P{3(}(Papp%&(rx=$?5aXKb ziHUADraMS2;Jq}tA6NX_CoVcZ+*FMX2L1nS>@Fn&8j{pQuRc>mNrxYj$SAFHe7T%T z=|yHVO2Mg1Ub~e(!I@CU2;TG4PN|BZ$;vbc<6_g_i=sg+uxnFTsYSI>_LvY%bWHHV zEUD6eH>$&2e9Z}%NMOv+lbFCu;+9cFtCwrP2XUsy2yh%J>WR~T+mNA2KvZ+(k4Tnb86*_(Dx zT5!`lwQ);@MNn5Jb!o1wHYKoBG{cClBfKj1m4-oQyOQ%03Db-Rc|j>ncC)z*Rl3>q z=Z|;KcU8a4XyL^KX9i=(JJrj+*GLmBpWvUARGpob+CwFMcdeAe7O0a(-HHvy`Z=+e z&p$c>Dp8p%87)~u?CTIt3QDO=S0QqMKtN@;o1*&FP;%5v`nH*B+)g$$z|Oxg2jQHa z!@=ubE;S6pY>S4?kWM!Ad1$oDH@qClmk|@4A-%I9na{K)$tqtXB{PnhQbNe>4C}`C zoFu02wM5)!a+HiI(7C?v`t|FaVYot{d@wo0=xQ{gFH1X?H_lXr(~{S1}5*#$>m%%gQ77b0R&UPVZ+Uy zqUPW=HSm@nQ#4L{^EyNkHR-Q?4_$~OppBGaxs!ztSuPZCPg9v_suV5V6i}n?Ns4^R z1955z+-ZU(Fv(=yL$tE{_khK&4D!!Eh(HGL_2#|{+%m%x9xVr$q%o%{fXgNlba=C7 z;QVFcb*NZCzGu%g@%l~!P;lt}z)eD3m1W@vS|Kq-?0@vBkAb%t_+B-lujwRZDV3%q z%Zmq|n#|Qb$z6qdn@xlQW`}306h8WCeV}M&>cUcMrrxRfqg#6wsV-rIZec3ljaomG zvz{{PTr6`i#vDoq_ryt6{AN@QU;!=~vIP@6@YGPP#HiubUrfd$UQ=WI z-xdgbbSQGb|8jCDP+9o?Jz#PtlZAUVUv-5d47Mp+^B^n2u$!sM_~^%L0=MZ&ZzHc} zI4N#i2bXr)lxy5=n(~2YQuFT&F=T?15By&_1$}%LgP*;I!~LM2r4*X(!~;)bdy`gu z;7Fg0o|%|KPQ|E!{5EqV!I@GwiBA_-_%wV+f154HW-;imq+Y|MQ2BPC;82B2l(_w1 z#c(T=X1L2|sbnJo4TmFVhr{5*x1lSNMIq%6JHLJIX{N}ixBdJjLH1!L;{oY6fhar1 zkq0jDrhU|ZcI!D;#f1b1+ZOtiJq@ljJ|7(1*cdFYekJeRPb_+K+tU9J;wR@Q7GFLw z{N20?m+-RM&`gh0P6Jwe)oWTsL_Z4>b28o)T2=G`5*msGzkY&81-0IAd^lP_09Cjc zCwLsKjBCkx%W@?Rk6&*rEFS#kBQexC4mUPQd=#Q}xj*>~@JBkx%4%&b+_%dNdZ*Qp zdemfkJD=!cU8S2tN^|p~z=3@hX1;`nV~Zc*KNNYJgCptbAUkkC|NX zzatK;6DW~E{de9KuTx;w&vje34&9TIf1o#Zb+ImiRc@W5B;cCL&4hCl`F6 z82A1YS;Evl^ZVWBApU%`{EO4luzI(uo8JJE^{>0p44PntJyFuVB{LKBF0&k>mr3J? zj~ZD{oqo>`je@A^jm#<_qtSc2MnX&v4=~I*UV8rnv-;@>@=U+_MdqTYJl9Tvq4*dK zRIIvOg@=7Wsx;oTtgrZBvye7#_{#un^fV}dB{F9ji)Jn|O!h#5gJZXw^sGy|4ppDC z5aI_jx40Q%)#)E13JzA0@q|SWdal-J-472O5`$BBVZ;EUjRYYh;^Z@{+s2id=hO_P z;?&{l)C=EXhXiq=Mck>7xYFYI{C))!NwfP1PMnp4>qF(24|)!p)_rh~w7+)`P>X8Z z!om0yAUe^KgIK(fns#*X_5k6Q`DCj{!6miM)qAn$;b&OW6&vr$W)i|{DY6u z`622ebAz28jMgD$L?nndJ-`71>ur;_WpU{369!ZSiRqg1#`YT@LBwRs;7jf5L?oGD zEVGM$q$TJdwKJRwg4S8YBi{r{{kZeQ4+%FSN#9q)b1xU*F7=+k^ z%)Dz;TqvE&u>w+UY`oc_tD_2SmNFMH!D(ESl}@SLlxvhIMMW$FHv%W7Tzjq7z2C3T zs&u+p1IZSmYvnfx9YePyBOI2@3g}b53V(rLDM~V8R$`x~O0RN{=9Rps8>K zPf8gy+n9!fp+<6TZ(p#+q@$I@CdT=zE(PgHh<>yEpYHq(P~<1XIAh{B-eBxY^YZHi zF6Utpb(}CtaYoZNWVl=PAy4w_YIUOkTH-QMQ6US4WnTw_DX~|+hcY_SOP)X7`pKSU z7_Xj*+KD@G$xpE}(ERKil7mhB&d+%%GiL(EXaAM2zk^KW_%!1KB;W;Eg0jX$C#Rj; zW^{7e)k|G*esO2#%6)O&!UQ?_l_@E`)Pv^({=^rkpQXz5>`SnA^zeFsU@onV`M>Z+ zIJd!RsnxgbOU52l#9G0&N8qdvAle878LhrI!{FhazTDTw9SHE1E=;|0xO zGLuwflLQ4|{AcFXvV0%yIWrZVd<)6w4o?(n0avwhNX)=2?~FTjw66k~oWCMMBz;V= zPaF==Ze#eXQ{50gbyS^x40qF>ez#Mg+Lig20T*&&z6Q`DGb2}2tt{yT*Dk%HcLGD? z1ei&POe&J6M-F?JL9GKKEe|4#r3&c3-H>7-D1(A}4bZB8Z>l)si{#t1{XH}+1$grgRbX{i$*I<%`t)l6n|w%? z{3Sv1v4d3y>YY}0AymQ9?mM9Of$|Bk7N^L{C-xz7_wHG|#^~RR2w#I$R4@TSh>qV% zA|R9L6nt>3jA_sXj^`MC*UUxIc!x#AdVW)duxTz3I!^Vtm{F}YE$;kZ^QSLqmYg*j z@`I+npRUrG7RVvR66V7CwNk5Z4WPt!Bp@>P&94q1MPFsd5!gjm6|#X|0=)?(XNAK! zqgQ!k%hSDprbD}riI<STpB!8}k8GxNw5I($&{PnD3(ooL{MEb}{qp%cj` zP;UR>AQX&|Fe0drdgbw-=nhVA{z0A=i+VcycT^~VQ~cKYv4Gmybc+`-L*8&0!13~3 zf2)f7$jMgAIlnSTM!X12E)m*l&iS=Xrr zJu~M_7^@=b#$jQ18pl@;JmkN9+k=8l5qy}FQ69q5PG4R5Hvol8Cbh zhjI*Y5+6F3$6sAC4$5H4yF|lau!=`*vP{HxnZZFc0%3rU;M-`=fe+mA$x`aS1!*z9 zjycmn>dwznG2g%EIoiX6{raR~o}g8ZYEgWPMDncLf$dO=)0SdrclR#b0m|KEcj*4~9YAlb{Kak*IPE!%tbjr2 zQub-9dm|g}>azuZ0g=O_pVxrQ30`F3Jf>anBzp8;S^oHiOfO4-Yh!+ehC1-a)1QE* zoy0*=P_FB=0)QOoih`03W>2k7$RXEnUG?LmwLXQX~j>K-IT zP7RI$Ryz%9g=amAhJ@!=e26=@rcN_7`G3Nlr(G6U=UHm?!Nb#vS^jQO23&FSN#S^z zx}*;}GZ4R8S-;JzWDs90cqKZC0wOYGb;+kE8k~fafH>+s^RjpvI{CM}XW;23=M_Sz zP3rTHppOUE7W38Rv*X>wgP!*dmW`{RG zv&9Xc-(e)1MYThDTt6>CujuUpEiJ7Bh%xDDpPzK8enTLA8n&cJQr+ts4o{eFcD6+G z6vBPPUw3k80|Litvhf5BJ@WXVkw85G#9i%rn{tep{#{kd31_kYhk$sK?*71=)WB}6 z9eg$4)4bJ=Tj}Sn05xtlW;BMDx0uA?HAXV3;!lajhYsrv1lNRAsw=ur7@tiH{iIN< z47hlD>{0{Cd{54+gRPR~5J-Y@26H~)dSW=Q*V2&I_5N)E<*OTk6dQND>M*@FD-d$M zKKqmZ*Hn&B4}6MBvgM(-G^mI>+8>wsb<#{cQ6Zb+hT#ob+&XamT)J-)w8ZRnwJbZA zM)E7&zaP~~14?dZL(m$FSM3!h@FNPe=bX+h%KNICSP0QCI3HUlRD<|cxwV7In4no^ zXJdg{8axoqnynB6>ANfP(s)m5|_ zMW(E$cmB_5>Hp>C0@K2~yZ^iW1*V5^|JyAFrY9mFahF+_@;~S@F#X#9YmEku9690; z7-*7`lA=rKZ_J`IqDxAw1KstjG!w#Y7ZvIfS{@FkD68w9kwfIf*UOU2w(8*5`|M#i zyytW>iuBje7gT+QIp_4T1_fzpMauJ(q8tQ=9bLkMgE`M?vgzd3MPLl~8u5{lHsJWS zFbUY-Sq2=fs@0&W@54HG#xIW|zosIdA_6Tcc~`m3q-7M#`lR_OX#qlwyO)t&d|JOma9HuU3{W$a`*%ESmWJZd z`SK|hQY-WBGc#qYEh6q)Z|{+q$@~Wiy7LnX^OPln9O#W4&b$cWww{z;sdcG#K5+t! zEtWt;hM?+jiXzfP3297h{Cu#G$`&zWjFnEE(D45zjG$QVdp4(R@6em`AzDBF`%%xg zd-IlTCw+~*v6Vv^iPPN+P0L*4Q@-AEHh$Yz|2*ZeeD@EpbVczk!E5tc=2l#KV|9KJ z?#uGcR@x8JYJP}Gtx`AnE!$WdPt|V1lbHBwR%T?q1Dk((gjnUfapS3%T~06~I$glo zth7mLL4o%*djB-Zz3xrlX|au?Jtj0&2ho;~L`zHfG$_%I_6aj;bHJkKJop|37*9NfQvyX^eju<m%l&|AHMt5u`v4v3F|why zTkE^(Ni`ulsq0bje+&4_okXgi=OJMy=DdeA*6c*Q!fqMEL;emd!$7^(cpXg#uDkm- zpy0;e6(5x52N5nEAH2NhpT2wq!X*Swa0!OqD~#I|waw?(7awpAjovKnWH?%oCQbEtGOq}hRhV%8w1 zOY01F0nD=(Z13#9hGBuVj*b)NB?0jMoe!%g#P17LSwW!qos;&8B79Ey0}I5!1~3H& zEscxMYv?62JOdDVwf;}%S=3L+U;`G{0bMkYApFSv0E+(rcaxuH^M#&w52emU4^NmH z(?59T*C>wlsb@Y4vgc#a*v@nx_?Nsx-XztxVq@;1;wnG;g2*Fap#oE;zW)wG*{V@> zR2CheYvjP6&W{QJ-D;YUp$6NUR7CAzRa^@eIcnGKcBdl!VV5I)wvzyj0Ydjb(-&Qm zQF#e0x!=pmOVSp@g80Ux22(R;h0>aq`Cd)bfw>ksTj=t^?FR+$k#EgxdRyil8(M>>e3zm z6qM~PH3;xC7^L+zA7+bQRxp<-Dl%;G#D2n~I(LG{ntHBx1TnSZbQ$19;5#%K3s0aC z&viV{=u*3^27bKMvr1dB>v!U94CdiQ@&h-R8xy~iMX_#0`e%uf^m%PeV)J00h?N^f z#3TFkoRTkWeFsJ}hu>L75mkQ4?nM;mla3jaH-i_*Idmx~D5!$^uakO?j*g0oTHk&5 zWqf?RGp`ZT^rYi>X@YS!r7?TMEefUI@bh&H0B`!4G+L)lbFN$X;Nai`wcUo zB`OwaJ#@Uo#{nhr+shgPtcG@Kjhqgp(f^LJI~^F1^>nQVY)r|NY%=USEN%-sa92YjIG#hUn_hL@{q(0Z4(kUStp)h& zjD@b@uCYV~koreN$H#}s$tUo$I^Vpx0o&L=9HraXq_5NzQrY`0f)Tn%4Va2iW;Uxq zx#3NxXR002D|Zw=z6WZ+R0pP6{ZwhWLk)(f*0s9$=>SKC#w~Pj47IZyMz~Z=8X(V; zN5IF%?(X3!|0U_z)n0bAAMk?83_zluwH*Mt6W;WIbk~->Ph5Y)eRs6|@^XMx|NK>U z!>gdSOY36E}wjGgZz#Eo(GG=u+|t>p+3 z4uUctBVKwE0XD@5^1JeqW66&CGauim5Um^ud(eQEz2Ep&*NqHz2=6GcVkkfjYok$=Ku^Q2(-e^$onpPUG8GqNmQZRQ& z6!@=__9m$llh^TC1uX}mTKT0$#9R11aQm#OvZ29h$By~)=kIX7P5M8deW_SeqgcbR z6quTtHv0Z+KNWfaG|)(-N|zirrdn%jD=gw|cgdA%p~WmbEbVvo8uw9Q&Ml7=t-hQb6`T(35&dblrH1 zO2mQ)3v9i2+6IBHlFmcNb>nz}<8iM)dPP@ju6DBr!f&c>cVgZGD7EPh>se1Uuh>*Q zyl2pAh;E4Uzskma=F;}!wT)3G`~A<{eYyN1YIlFe?>^xJ(l+nu4CxNAFD{^!S*W!> zVt0kN#!O%$D%s%dcu1@J@e?kUiTHt+V+}d}+Z+D{`|$O~#>TDZ-jv*BT)cP@f+Iy_ zrQQeIFKJub$>PA5C)I@|^62tk6{evofBQuHH3eh4;pI%)KMhv`Vt5xQaSI>iT=t+mS|06L8amBL?MbkN^Yo^2>>!@8j>4 z+u{)_b@;JBfi?#qA<`o*GSk0@L-)DwxN?Irj%s)|e^klg^yz!=4E8ae!;Pklq8>z| zgwo{h_Q|`L?U?XhmufrLu#_8)8Sq-aKqAbbYmW9@0)LSA!r8R_k-T~u&`S~IYsWegk6{Qg=}xiMIy zM;NSZV!?f&*ShRJ4u9u9Bd9VFKF`zJSCCMr48-)-p_7pR7@oGwm*hY4x)0thy}o7> zjGF8QUL6lm+vlk>;p3y$YVNJ_#ct$7c$}K}I9D#D*Ii^Dl?wKe&G?Z-SmDlp7nK;m zhJm|65@|wrRfDE?@J3TNte3XGm1Pv47`fFKHMJK19*ksmuU<%BNm!6OLVnul%)k$mChKoMh0tti8e!D}fq_oe z7{s{*m5bI-isNey_o>Sj4mS0%D%}Y9L+is-_MSOJ?>WZz2cNjfTS;wzSzu$g24ZeZ z32M2A^uV5ynJ4YVny5}5_c&N#k5{;AeZgY37UjT^MU*;r;s@xY2cKHA4>We2$R6B_Fj6*q#TQ&lyp)sae2 zy^N&i1>_AerI5>ff9;wgj`w}39xZ<){L!O-HtUuglTrQCPVp^z`by@+w|BRSD}jR9 zBOW-uhn;9L%ED8*cn4NWn2aP^-l!FLay@lCf2~8GMPH0+94c)Gc_ z2A}ngVyHPc7dk$rxmK!8$taJ28w@{TtA|(nYkV}lr2g?RS}eUsI{DBf^u_@I9Ihc5 z#YvCN4%G=wjQ%F@&Hza#YWO|1#rB?>j8zX9*T3}Li94iwX#VG`QGv{sTaLn)hg$TG z3I5$$rBbCgcP``-Q>I`}`D8vnKN8l*hU%ol(^U?=(k_~R8CRqqpGF`}ghgpn1kz=% zhmT>03{Xp--g5U<@XW=9yzs|Du2abn63NW0dXcWTH?9K?Bb$#>i>G6FHEDb?vF|OH zS_u91lY_KllKLt}b?*p1Aj6N3yg~%^8%@GrOza5g=!78*B4%6C#A3bwD{`X2!a`%y zt;qg~AO|-Rj!f?ttcIk$mrnsmAQRPZKt%O9M-pWvC+MydwM#0bo&4}mW#1Z6TudI~ z`^}vU;`%hyY3UeA zt#SHnK{r3l`M(_Vx@q3)6{n@rQ1;Z5SN*Z7b~f0N9Q`3^fEX)Chh4UrU|w4kLwGKu z8`Dq=cCFE=nGWOh;K~Jmwfq^6{Wm9h9bi=suHd7OYO>QFBIUeVqf?!8lGRk99BUSi z;)IMHW@;IK>T8aI=F+Ng`+uaT;ReLze*YfhDG~o&OH%;0W+8THhlr_z7eT^4nvCs& za_qFqnVos{Yo|uMxA8#d2P2N2n$z~jPpr|T zzn#b^CQk@tX(00(`J_`dXaT1o04i+)wfN`Avaaw@jWXr}R)YD$Y5+hQ`IJ6sY@GRU z^9KVjRf|uCa-SX>K(f-}(ID%gFFo?YJjc$EM=@9?oLjw+HLkdxG0_?b*}8{~WHBk4 zMjl5#)8E(!VzlNi&D53Z%i2^GjD}9y=KA5Faz4#1V`J+oW3&M^jU$n?@Ke5_=?;KEKLP=fZ9cqyiX zg#~=X^u`0Q;m-o$Qzy2{r7CiL>jWtn+3);#A-_D9RnKJ>yb%GWNp8jl;u~{sBM~Pi z?m}%)$-d`4_5u3o0HYy-@#*IsBpZlV*`3_y@4>{dQE$$`i8E(3R<4{ockZpMtgQa# zIY0a~8CWd=FkvkIv)^3;0u093Ox$qHKy$9CudgqP-#KQ{9oW3K7=}&$==1J@-i-)y zsArU(7{)xXj(BmcXc5iSD2CL0h&&b3J1ivWA$Koj=g>vKUObR>&)KX?AUyQi4+w%op5$$m0WNZ zr|ECqs(j?K>}z0dgtZb_wL#84%$&kr(KU*Bppmp>$kqU36^~>eZ62%zPRw0Dr6XqH zE|XQylPU#}-nn+K6Cmu8^mo3z;L~3??UgsfPTdd}=-rrmz^ZVfsqoB?jFjNJpo#9p z6|Ll&oTTPQ$oIdj^^X()BF}u}FPS;{`T6Db$Da4m*416As3<2VSJT*dbZh|1_Vt%# zI-3u;_zYa`?%N>PH|M#Iv9YRv%cl5Ojtw*?6&4nv@O);YW2P^`ts$1uaKBTr#oiP9G|~8EzYMjq6ZA%{S+g@A{xe0To1GN4#uZZQz%6@FU7hM#?Ms_Hv3o>lZHm0 zg-a_C9`2?WP|0}$ewGf!pLx_j$Q2WljNiU`6VZP(QB%GOPps?9NGPJ=a>fye^g}km z|4@NJ`-Q>$CdM~nLwyV;9hgYW%f)>RQ;jTFxotbVyuHhET$`(ei{?DcPuOj4qkHaX zV=h>5sPy#pgvLh=Xb6DhKDj7jG@`rk7NxhC&l+}O9*H<2b?CwSru7X5i!QD`jmx4Y z^*8@xovpLw>YO;7NWC;B_StAxMe@TZ@MQey5$D7>6M9L)TxCkpjZU42O~|6VVY2=S z{G6Eoco>_RnF+SI%F4l2`(p9Ptls8d4n2m+HAEN)x{gwLq&NZDRWO()1b}d2KK^WS zA2GexroK!yMBFA;Zqhn5wh?jSs5D%-ud;NldO%U94wdw;`+3i9r#z?r;xr815NaR7D@3jToq~Q^vI|LaX5n+7OUuCu^TcvtwOrdJX2aIx_nW!Nbe1OD* z7>qtR@rOQzFk`#vQiJ7?CzSL$t&nqJ$nZ`m6HI@7V3P2XW+S1}x;j<^ZX@1am~QS=q`^Dqwf<(a@P&e_GXS0xg{&IGpa1W0?|9PS_%A7qJbxrRz*! z3DYl4crT~E1*K`WJV4H0tKvNXluV$}jhVm;xe@!f!&JC_grGK!6O77!$sq~54O!u1 z<7#U_2?0460`?%+mdQ%r&PILfDmKr}St_j=(=kjio;wyq63TOiB|g3t-bU7`CQ#ls zxq>T>_4o}nKtcfOfeF?Gx%i}Pcw=sh0~##${EkG6_M_0Y>{DRxy>V{Uk?yUw8?Xwh z{?qOtZD#ecDUtUs(t72DjrzA)=qH3ICns`YU@j`ueA^)flTC&julhk-+Ej!%Vf}H0 z1T4@bUl)}MqB{>TRHY~t%o=*%*g zEaL(|d!#q`WH_MkQ*Qr9LsiR5rqRcH-GzRo+ZF1lov+MR)l)RlBTHL*5#pm?>4Jnj zsi~>xk@dRekWm1y29BZooS(bz^00?Nr+vcX^k%BKo8e+N{CJ+7GSQeg!GaF*Y*vuE z{p#>aWjha3g4|Td!NIX^XTqLntz~<1T?504HZp)ycfqw@>3dYxlz2gLcb--3BagW3~$zOxaf&ZYF*s z_F&@bi#j(}lgviWpedS`{Mv=(PZO@jFycJN^pR0pcYN@@jS=VW+IwvRz3q}UgThzw zx9ud=yhJolySgvSaNnLPdY!^+ao3CCMV?NiqnO=##50@J3UbG*qpq3nJzPv3acW*} z0uauW0}O1C6mgS$yFBT=yfrn+HX(>?Gx{( z%p-~T4TF9;M~JY7CZoov>^3c3ttH(4bdm83m!KSaP9-%696z7GsH!TzAXhCs>Ur+m zOJG%@tN>LPeJme(2>Vz|sm&Rzv*7N3?gNPdcp{+USIx6f#Lr?3&`B&W9+ic91kigN z?GaT(5kJf=e0Q>YQb<^@bnkdKO%s7kqLVA8iKRZ4)Ycw^d%2(fvcFnQkYzD-Uv24q z0dGuW;5tjQMRh0VijxXDP^08CNvYgs9y}a8BUi{ee7iqxy;vS@A=Pt zSHs-0+ia0n9oXq3FS|EM3blboOLo&xZ=gX;+C&-La^$XxH3(rKl%nLT(A7xSoWlm8SM+S1?|DC1>#s4So`1*y;?MKu4ufeZ(ng0!~ug+;^2Yw z@H&LZ>i!y61rB`Fwnm9D-_~*6I<%!u@&RNkynJd}BhPGuw$UnXDH`P(4Z{caQ$s{3 z6FnLnQ9;ub`u{0(t6SO1X?xlJ{hQI;c9j$$elZ1|MfQQ$l}m`${p=y5V>1kBP&wOl zZO<4=SOnRG<>C3+yRN99Ok^P$D{gr?YG;;ES#7SKe)WE)H5OSj!$f@ z;~jKqhk7r}xitZLKJ+>);YZj|)#Ov6&C90=wHJ-M(vWp~OsCLi=g4RTqUpiBwEI-BS>DoNv!_4$ zPN17ZMz1$>3GqPVe*Mvall1)~+%fvo?jP#BAzwk#7T7DESFM+p>}9_EAXo9x-DUv0 zXx-?rY;qiY=olEdiM)c?$?k*&kaY0w;&GkL-p8joNI{>t=49JQlU_DvMz#xFcqnm)l=X7&xrvI-MJ@{gI}$PO$e=l2k=xNmszSC zFUE7#$&T8d72+c5;BH~blCE-VAKNb}dB@Efm%*S*f8L(MVdm<)8$mmDk84gf;dA<> zUl(({eWGY&R^(^^QBk4})Z;}mg${(Cs~1B9`xA@DhIm~}Nzns0t#tF&;giA&Y>`_{ zxGNUFogltV(G=!WN8bAt4LkbMU-t_yvmHGGHi-q6YM~Nw1if8g=eJK-Nb+-vD?CMP z#Hq<1?tHAD&0%j%@MvR|+aIc9V)R{Y%2nP9FEzPDUb;6@@a=T(PX zXd8S$+i`o^>wkN6FPiIF4@{jl&P`XL#qKOMXup&Md=6mYk;^~4{iVzGO0I&jo}J*at9x5Y zFX_HJ;l!rEu3_dC39m=q;lyC+Z;32gt02nb%&~MYmT6bb| z+=-S#Uh1Yz!hE%5u~)GCUa?=JXEj-Y+Ed1%kh*`#Wa&H8kMRn{FjPav+*Vj=0@=q^L=#H zB*AGr7Hu~?D`r&ZBN*Zrq^gfYMe7YwMD$1t!k7=L81Ek*9w>S%RBp-n8goaN|N8ai z47bT952t6&-rXEpkaG{<(6a0wVsm=5|4_poVNDy|#g4_ahu$yC0Y!CxQ=%;)@!!0$ z2krL7YqeVAPyJekD=)(4Th0nq2&c<2^;ZZMs)gNc%x`$bP*qj!dp@|~j~80^Ijbx< z`84%VO`|PK6GiOBAI&^#E2iK;TT`iW`bS26;oS+j@Z+Fyr=$)@& zH5n8Xvq?MT{|!hxK%%WZl1~bs9s;qLrkG*LrEiyC;}Y23Hn@AfZION(-&m>4yIRG@ zr=d4gA&lN^vbmsxPUD-o-Qf>QD4=-~)kkES7bRUA$)H%0W{9U0w;!=*vXXIgJxt<{EiEE+q3J z))J+1Z1Lc4-90wq*yj{s^3~Pyl_u|#4BPh_YTjvPh;Jo|Y4eB!YKC5Eo!Qk?N|cH3 zzwO3bE_|OT@M0K~to!+$*USP51do8S#6>Vv=PY9(2zS$-mm6LBrR&;aQ&~JX?eCLSP$j2n=Fq?&C z^0}ep^YL4Jj;{|KrHD6)yO>5xX~T|%?TQUciT8#3=Py6lRy3hJ?* zJN~epFk790-9y5>+Kk=;ib7Js!Qq%_R@Pq0ID~Hr`$SmdEYD#MHJrr1a;apWfr+-d zq}>7+R!MB-^mZ+XY_+;fF$!2m9eMhk7RfX=TB1j4-@swIjVE-cdHo)LwF=qrR%7d1 z8x;*Tn{385eugPoCRG_Pd|lLeD-@U`T_8Y=^;8wq1M)g`3ac6qkGX=)`}gF%>fn|$ z+<-#8Yh0whp#!a)8god^IrAirjk)r_wza$<81Z?>>+onQtwtC;S~DsUvo+*Xs(+up z=S(WiHUny%7`)N5@3ft#!`KcB_P;Ra$GlIw_U6#W1-zDvjyjrcEeur(@lg)%tx}@8 zCULN_<^ZcYJqub7t__q_Xayc$Uw^Bok#8X>%yP7~A=Y&AqircIKs2vif*)9YK;Lyv|JBTAJZH(k26tv|;<1sg zy(<#KaFV{D_AU}{XY%LbmxsH`;B@ln9j#2{?G{!h1uZQequco(DC&z)VvI6K@0_gL zE!#%gx4P9{vS6#mCxnp%5=j7|eb8+qf7oPcF>1l5Bi zqd<;1EwkIZ>#U7>;`nWb2H#(o>z!CbBy`2e# z$JmZh?v~q~oepO+Oe7}#t!{s7rh)$#*5z(6?hx~j< zqS(-L6r`=!W8$sfyIoEY1)TQTWHMw;Tb3&xqJ?%WkIs3Lc zzahx`8zhu1tE{S`zdl9MON6J*_Z}6E`^{93Z1#EaqDm8AiK038zo0vJI>7Y<3^v?u z>$?)nqa-meJL-tf^GTwTVOB8{-}5t9v#m+Vx5#B3Rbt7$ymn2>Qc=ES)J)J0@RQJr zc{pVA$f(yYoO#z>hOth0HWC`o)8*C=FsNs&Ny0H~WA=^W+(K=!2wSkeoV=$DjZ8>` z7eeml4fip_)QftH4pPsqjTet9ciRTMOnsG^k%23$4O5T4oJ;cB0)J(rf2F4IeJHZk zdW*cVBR3Vw08M>xFHumhj&~EXe2XH%hrxTQezc3ZuyX{5O}_R&Ngncch$TDY7`^GL^@E7(5f zVpYQztJA%HRek+SiQsB-Kd<-;T-3g5@RN{LpFD@SezBhOZ8#4X8gjO~_`y_X{ z25@kX7s{E5|JVo{?VyY1(IHlBKw*30rp=3eUO@nO#l*-iJO?8$dyi)>ZNz~xPJL=3Qnw=8b$;*Nh#iT{>rt1K{>;UW2xw}F z!de73Ly(QkGxC_!;Ze8#Fhg-4Tf9PW^f|^CY)$cjx_Q6_MrfUyPHy3VN6Lm z03SEr5k)F^RvV@N==;D_)$3&y3zB%X6xM5Sv zE0w5378ka>zJX(63A6B=i`yAyKi3R{iPXzFYe20<*xH_uURsiyiOY7cv;C)^QY6}L zqD2fUIJ$ZHMf}3uXz>GIqcX`8pe?9Ck(mKAhzh5f9Ac&3;=Ll zEmaFqokWrMEPoN_9i?TFFG;KoHB`eLj#{3=9v2_UYt7O^=BOitSwA5=9g9KYM}E#m zTJ_MQug6D+Eby!r77JRk^maHiqD96nvr@J%RI^N-ql!EACu)xjebT}1}+a!Z_aTIbxpPT<1T^KL%RNen);QoZAJLwIccBw6|OYcPysZnmZWOg z4W}1AK0BOE2RNk(Rb(r6b#%#chIX?ebP{f2@I+tzd*!W{+;#YZ^?}v@s4p7aZR({l ztbVg6gQpE^w#>`x@U5(aqOJ|IPtIwX|n-qM?clow@yGi*Id2B zIS#0fqWpf%Yv_pkn$m|DUgP4`B?M=uN3?IpV=4V15>ew-3yS%Rs?w0g9_2O>yPe1u zKYQSoe_w&rF~;+y@v`Q%p=LnZI-U-j0`>_C{UNaR+Q?OCTIBP3MuuhT>FvEqV*El4 zW$c#hdvWAe*HLCxzlI=XsWz6h(%|%pKsbsv2$t3wxZfJ1XORX1x$~G;ti_DB>$qD< z5KL6JzQ4uGw6wE<33&f|A`vS5a)mk*tMFy-dSb*@K|xk(o8edq1emHSkys;-lzj{5 z7~|Jq`BU^I7}k?>c$dc=fkh>UrR9gE?&SD*Afvr z_nG))Y0@C>h`*6KJvOIdNnpDpW?hzPe&W8ZmeoXVXDPx z_?SBx9Afny7%9lo^Md(tJ2pCz!sooe72^1z^6d=q_@mX>w%SHTNl&_F2m|MD2Zu+= zdN4DSlfKq@pZz_lr6t~ShuPiiCRCM4!UcT(BF-pXAxh|E-A27=%4!&~In$jXQutClSZGEf zCW^cb@76Qi9+Z1ROIb-K0apl{8iyj`QF#~f)Zz{uxnf&R4e5clUEtf!2X0ET-SbBB z!yzcQErN1}P0(wq3em*4<#R4Qa7()H16G+c>Y1hZAdF4@CGvvSh`e5XXHEY{PxTUl zqw||2W$CmAL2HaUZM?mA&TVl*ljN5tq9F1{erC1F)}`iZ@khPSrGK5?<78mza8|rS zSjTW7*{boXb`bjB)U3veU(Kts8xbAD(cmv>@-rcX;|&Ycao!fIs6Oefw`}kxFRvydWc0Eic)wj%^TGo#nB~HHZOPMIH@XstOt*lYm zN7VeWGP)_Z3}WP+n#+lPMgfI}tkp_!0GHIq2S{QauW{N82SbABYodgow{b4dV+n9x z`|9u_<9H6I#;vTTr!44!xYIfa!Bzr6G3)L`-hcYOD{Bw};?Son#g$bO|>v&B+RI2o&$w zvm()WG#gR`>+il9<5|$#(`h=(ad?8mvufXWV_}>}dbDrqcOEhhJ%(K>$bSBv?%2qU zR+Q3+Bw+#5BhM}d{2aS#8{R+{uQ5hur~6m_30aDQ#ry9)F;$?86c80)>ZaoLx}#^; zLyC_%d7w6&(vQt)ST{+9enf5KxWIcwTug|$$%tR23qkVLza2g*$^vlF_TUGitT^jl z6g?iInV;yh+Bl6A4<)aFLb&#XVxU_+CrbYwRRcU?9y_i4*WPQ_j<_s$qOf6uCRu^h zd2=VJT^JHJ=X;q6pIItl z-M>;fYq8__XgRl^3^PK)|Z| zZyeQmHL9GHc%?KRLm<4!av#tPFEvXv{1Qnj%~fMV@Lc0%rYR>}#6{}(cRS~m)At3u zOSWd|u><^`B?@j<8!eXfQAH?@I?_)dyt58+=zscp8EL@ItF64d-zvA`WD7JfmE+JP zXW!yZT-wyOB9Xw>Im{*wvgz$N<;=pL?%dHLX?V-KfDP(1=Ph4($HL-PA zo)wgFj9+bd3ituuTBhgQWqO;sl3}M}7oB)VtI}7&w~yr(Z-HIK%r5I}Yk{&@-ZG8n zsW9SGRxNxpuli0OLQi#PxVue0_e0SCeabdqTd2z?G6N6(d(*Sw%zV}=DRKHk-M!kB z1-6_JZqZ6HiBfD-U}&kw8xeX|U6#1lZeW?(iQ}9oBCe$SUfy_nJIm3n)%!n$j(9^y zqVu~ew>m%!9fJmn+?c$RF3blEY9|c6GxPo9 z$BBX=R}n`Z5ZjCvYR{FJjDV_?JdrwW3#9F5MxqpCFL-{gOB4vW0Ix$5u9F*O72`9L zG5A7e-azTBI*j-qn3IwmTMP0!Uv1>n+g69cNxtvgz2BFZ%^5&t9< z1%@(RS>xZ+05DxGeq>e^zQ8tu*Tf29@m>gjcBxMfh1ab_HqEVKETw4cdey#mO>Uqb zRm^+46WbM9)vQb@Y;TF7oi(Kw@Tf}hik+%^5&>H(RhI(?xxTSbI z;*Tw3kx`}f;)KTvY$v6Kr5T~R^o!;zLfC2v$3|iXoZZl|7Sdr~pId!Q9X2N`6g=8)ZQ(Wt6LeVrRtnSAa*=fp@cQv!>zG#gwyPfqFmJ?IaUQD6>U-sSuD#~+f8y-WVNkoxo1jT_9 zIkCiohzK&kkYgdoh7lD61j2}*G?Csl9xF1$SP-SC1S~WG0jYyg7?mzv7)BWBb!Y<& zF#o=vXBx%C^S$4{{`If*vR2;2_uy0R=Pr9+*R`+x&xz*Jt!y`@);BQ!s4%At2HMu5X(yDSGAl+DZjdSkmgs zSg&R$GvLpLo0YN}uG}f=?xMP7wKuv~MXxulDE2EWn!EpstB?#_fNk}E&a~D4BUNB| zF!S*Qo?yVsGV zh0A<#1^A4jOaeT22*2rPU>eP7(sSj{LFQ8PHS!e>c?2C!&d#whOY(5q_JAD9zfwtK zvsDXa=)G-)m&zQg$EI%fomX5!J3!t4g+ST((vz7CUb8Tq*xtu>oR$3{h1odwJ z?Cuj+GVa`8BNX#t`N;lgmMVE5uu)BWBstMRns8e6enh97VBiR+UENxOy02vPfU3TB zRcEuD1J#)6*YPXIjhRBS=M8sRGQ-fT5q^7Vq>fqj47Cm`De$a~ouB4I(YBZ-0y4Kz z+@A}-`X2KIsKIRwQYAE5^VuT!K6U*~87zs^@%{O3Gh8AM*Yff&VIjIiVa0m9gF8eG z&sy@`=vLaKw|&H}zR3wNpjM6;L62WSXCY%GlEg~o^`_=$2mC4ch$u_G9Uw}+-EwH&%dtNy zu*9yc38eq~a6evuBliSaz!t3o#zC z4E(wz*k{SZXV)*4j0>(?HeiYPQ)8?|zAs;iJUAieFkI^16UaMSlbYH{wX&%I4KKf>5EqS57V3kM z#yjSVOjm0!+uBZ~b&V%hTG`oZky6P*cU68ty6Mc}3g{JvD7?ys+t3aU%oYO1E9l$nw6eO}JHK@XU) z!j5|n5S;V(m9oj8Gz^pfyf($j*n6~I&j2)l=w)mEuQ(Ot&0L3SWDoY{jRze(58A#< ze7$cURu{2L5!X}xA3F|wOmhgW*g#k3SXctW&2O;PgjKUc)q9|DKw&pM(&Md%*LJBO zGnE#=;84pR%xn!a@B0KHCH2ffahm|_v;D6#01}~U#s04|z)YS7|LY9Ecd2mX?-ejr z{?{2`Cf|<#bq4tR4fy|0&H(oyQF(DearT^`3HDfvZVWUpM8(p$fihSzI=ogePPHEd zX-DB5lCq5MG3v{l(KFxsnPj##wmy8LE2pD_GH%GZwGB#ujIRh=?~Up zRo~!QDloJKOi3Ks`#m}0t^TDs={9~+Nj6!p;lAxNM&Sc8>L}K~tNAglv>o6Y=Xpy% z25SWU2;qjtV-0O5W|m`Re*M0FBT(5G)_u^|e=y-zDN(itujw>Q19KtuQv<=jbYrHL zT2ZLuAUvI zl6|Pgs9ytn0x-cU00&`Q?2w=luymSl$Hz-St&v}Y$T@)>GS_TDxc93cHK5Mb`@|39 zXWH)LYW(P`i_;to)=V~gne@cS=-3B6F;tGawyLYEQb4SF!?(%6_j|bLa-#+;b2mzg zsGnwTacHv52)eAGa@BeWJub)yk>y(~a)C4-H0^)abEMZaMWQVKIGEpoG{m})>Peky zdt)@&R|H*EP`G*T3V1zNg4Z)@<7JcvQDIIy<5d2-gYhczx8fpi2r4++Rc9Y^)y__2XhAY8=>OeO8A(P#6ek!{F0xgM0q4o zn@z|PO}Lw)iwXu{6&hC;MD|7j*^AWdPdvfDY@@<0)7@+2p%EE4tR*^!w8unhAp4t~_SidJJN?W@onyV>lBRIU%7k}deoc&?^qg1E zidTK1D+)?rw?f03imvAK&lp3ajY~8A9Hub5V;{Lpj0dc-?*Wkb53eS+d}l)?LNES-P+Lh zj2Gu%kj3d#ezMCfWnCrb2Dc^O>TgH~E<^8Shu?>@s_}QU8?pLS-I=^3jyp;HW4Q%* zj0D@=ss0~X7BA%;)Hr={Dhkb~C1*KZb5c&Qx<8tADeZBUkHNrp%dJ2!28iPsA`6Kh zxQhWRD$PU2-IJ|~k8{5K?fF!P()GOJpq0sGU}N9`dSkDtrXszZ*HFeUEUU(lxKoLg z7kPHLv+lc@$~JjTBA3#SRuvwC<}|NRk6PUt=S`UPqLH0s3`L1&bd9b?n={2CQ~j@S0HPxeE&Z)n-@zK+G55S-8Za3F{L- z*(QIc%1`|@ROpts40X$!OALUG`R=Vl(0uQ|@&NcK;1jC>h6N7Duwb`yc{milS{VHz z854@^ita_IlE9VUCYc&JXg0<#Ho_%;#j{kbp5 z6K97<{4z3{G{RyJhF_r8;iojjMwYS8SN812u%+*ypd)Gj=Wx*dq^GB6;+XqwzNy5M z%0V{{UCLxw0{%cCY`4?4aWbKGjAFJWDvk)0zIZX(&E&{X?4nbMJ+7?rF&_M-ZL;&t zyCaYPBkY;&`$W7{^lep{3`wc>@Q@v7VP=Oc``qir zoq8~SS@c$nczBvr6t~lM3vHBqQB_UFtX(TM5?pXG^To7}BGxvs5fMp>d23dl@QvFE zc5`5s^7PV7zDZ@x@;cjIPPJi2dZ~>w*&#tW!sg}`EfyBV+bX==7%o+hc;l}qfiF|l zyh*OvnX0poUl16oA5sXDpK4sPoisy<`8Gn^Zf(_r@8YwjIwrI{`tHdb1@8@D3}6(e zcwY+&@V&)G+*Me9M-KOc?jAWO1a;(7HzfEBf}Ro%X>ib946Nstwsv;$-7?-FC&ee8 zV2m0IZu!C3?x(=bVqVFhX?nH~LJWGS!#W7CUJ;ysI2!kBSR__74tHt7iH5?|YFWb; zc9Hvs1l_$^zW24ZlAN zLbBZAWE0Fw0k&#>T99vq`e2CSC*)TN_Z61y!O|`2(o*wG_uM=0SFHt7FWKt$xUFAKlH*KCT4BHYb5jr~AoKSp7 zp;RpGQd+fd(UAUGbBNf$wGldnD~2CKHYkQ!$H2MyqnPy%mdwV>B;37uMEG&HV`Yd- z>0%D+V%3p<1y$#?tJ;VR3$5HjmSKLql$QKBD&#E4;5Lq5r;dAjXcmeGxjFyJ%Yj!D z)|{PyGDuCWFH`JVQicbz!sEag7WOWU#N*CbNhHcX|3?M*;=_o|OoJ>ilRBQiV(X9p z#y&dcPx{0&K;$(GZZP58wg&gX55P;iQ7@SO#4qVOR!bD3h?Dc0;`J9K%CYxTD| zA1Aa_euxFdRj)(^(I;FoJ3@OdDe8ugWS}m<$-TIZz(R~upkqTc$)6A2LNN0UoF!ut z?^&!`wFDDLNTX$PC?1R@=lix`+Lg7)7rhG132d4?o_;N2DX#9q%w|76%f81f7ZR}} z95b^uAB2iPL3g`dSE+}<^>$Zr#J9r50@2G-I>y(j!?M`r2|H&^}^n*@L&JjsH*y{7pEKa zZ>YbBzzybVn<6`iJCWF|>fkY9eBbKqFF?y)-lFcfVaL!F2)aX(iZ5l$^R~n3xU>ax z^-rAY>JQd$0c{i~c1f1rfh@I=@&gqeD3bmmlo&laCisftV+^a7;^Cyy&mL=g7m?_s z@AL&3Zd!imlS~S>=+238EGsKZ@Z*7%nk_S1D?KA4AGzWY?`SRdqT2+nH2n*cKDm9L zSEl@Z9Nm8QA6Ojy;?Ea~LJ%aHenMAd(HClfIgHq~afenrarueJjprY|$e$hDDX8!#7OC`?kK!?%CY>2^)Rp@b? zAB<{SS4D{}u9zrAg+glmpL=&PZ@nND+_x5-Bn9Qx zhwXGzU^AG|#MdByv&M)?5lVn(7qHXQt7Gzs1|MeT}z&v~$ZTl7gmI(J9Ee${erq~c;0mbA) zdPY;}b}-vaaJ}$rB6buVdW)qNo?;cv@l?PsrdBjhHWxFrKJi0i!-a5pu2DPP-)vdJ zb57=IRp>i4%~jm@gf^AztqDZ~`sC&ZEfJKh^hXL=L7W}*QR=ro^~vgsu47J4;N9VE zp`p!F(|hS`0G8)B9NhQXGTIfson=!SEaHLxuG|_$=bLhy3#G~Ig_g`O;EX^&n@p>k z|V$JRF7PEQ7Eky*YKR?nW6Jmpo zN0L%fQb9foOYHOV@|G{RFgO2)25DSz5o~{V!osNIT<8UIj62j-%3whF4+TEeoe9;X z?9^se1N*Fvo*ABK(|H>psL}7I+N{5_Zd?mfmd#htTE-!JLpzeV^nu6KyQ@k>f5S&kD4FOdprDLYhcybGH~mgE*D#KuqRpIzCnN6+|ttcs?_Ry z8s_r3|8Pai4@nV{!dMKQp@S-zixOA>+{V*!xt$|RAwEkN_xTjs_eDb~J-%xABsDBn zWJ+-{8Sm+{xu^P+sdsE*a&s|feAnrUfHRir8;rW!uKM$=TZn}BN|a)_Pm z_PisS1IuP9?yG3*R@eVttuZDj>t1v5Al%{xG+W!U!6ypeLGo>yr$PAoc>Kq=M{77Cy+o z@9#U>&D@nCV3~x!HB-z-(E@Cc#$ShqUu-ZN3;u#!g|6>>v@C|YBXH{8lE^nS5EuZO zC!@y$1p2Nz1%eOQ)(Lk@mm(M6Fi1GwJOGHgW4OSF0}bd`nL~)_)tyC}7>^&f-CZmn zpB~i-;QkG)XU~#W!?YdKpyiEIoDpZd9iqO(yWg2rEisFRmQSJ3B&S>+_hVKGCtmWI zBmWS(44yRi{C*=+(?!^79C`r9*Ay@GP82kXU>SnpI{ur9x>8v`JqD5aQ@}7#trFDH z6sPrm!G3)~9?=eFpZ%X3BY$K*AQNUT!sa0l>nd?Pc>*1svjE%hVb3+wRQ-H0yFk`3 zN}_E0(?79q2Oi8>({}FIPgyxO(`W$bRtkU&hcmIOq60<{sxb}7cYp*tWdz>9kcP60v# zCi!bJB1}b@8U#03Zhd;kVOz<9ozh^)I!9`UcjLn3c#qoJ<(nPWi>ncrgYg8< zb{(~zdj|s^JE;{PmZt-Tk&Nt1OBN+1Nza+T)^8pG|9P6eFbUYj9OnwJB)vnt@Wz$R zdp8Y+8My#S0A#@N*HjSiSC+b{Ds54&tz#<9GAjH;*J9{hrN+Mr{A*Kvp<4a2)NEem z7d<^tg;+PiuFcQZf`#2mFh3`G2BpYY@F>Rkq0)r?GsVrWH+@Ki)w`$oBb`3AM^BGF zF%I4Cl6<&Bt=-)yE7|E{J7m~NWE%J1UXyCNBg#$asj)0;6k80m8*~q4fhO= zfF!D&aR3AAKjWi3gI)`r4#smKWqfmfXIYP(m^T<#xKtve61h^Mq7(PJjbilmP8F{G9 z&|Wg;pvKK9YU`v=%s>voi7xIEtfL&e5s)Uqt_ea%qel^o#n2AGCKh*0gYss~5{wX9 z&qU)M-1?A=jSH9v|Gj0fuZ7#PU|`Z);OPH^nS>o?{bpCXT5QRK8Xa)p#R;_Gc_5{H zjT{~Y?*qU4x9#LW1-t2!<`p3M+)&;qskE%Z>BNGysH0^Vy7R`jKa;ULYyMYG!{Bue zbAX_;_3!30+&7~mE~D`(T^=zLJ}}C3G|GqD9!jB6K1zfxN^@w&$O`g$57_p4WqZ5T zo$63}Szdl1-z6mO29Oh(!jsT)9X~OH>rQHVU>^Idf0tVxg9C|&-6Gfi05y7S56$H{ zH^ZTpm(}P006_Q&*U|0WmS_Z@!OwM z;r##iyQ*TH3qnVkfto`3?t5g#r95N$+*BSKK zmk2wj>#_Hwg$woATM=dH-R$HRw)8VEaBHSu?f<6t%A;2Uik1WwOB>>e@8oMYb1{bx zyqZR{->UHW^B)1b{}LwH$F_{JQ;=XtD`asZN^5G5V<`IZ>v*TO-GJM%-@6?{UnQUJ z+oQ(nRtgOB^f@INQ-L?R6CLW6CnhB`e`Rd@*POxS*I>Cl*`Ih0uV0DY6lCVxo`r~# zi9y;Vx+RvyU}xxcaO|!GZ)R+N4ykv9 z29Q|Yyf3RZV*l|vYl{ee3&_7D5oYq(eTs6ukfon`d6AE}1YkEkTGoo+ zRD>_(TM)sLEYOYCk(JO7cir~%CG7p+eGXydD-4q=Wy5Fr1djap$N7bQyO)TNxV05* zC$iSE`0Sx{{rIH7Gs#@MmmR<5M#VHLXhukGImH|h*Id=DRkC02#EfH)AHc9P1Skjq z@K`AN>es?;HjB|NABOfp=c9O$E25M?0a*M&WA>q%eL!biK~`gUC%W8C(0hpw76mnF z0H$JOA!!?{8F)xMdU)jai7WGWtfyuT7DNpq0&d^#BoQvU`fcggurS&@o?>?L{FT28 zGZ>ysXUsTKH$Yq<`}Lb02qk`Gg^!UKukjI*;1i$xw)m5ylyKkf2vL{G!~fPr^v0&JJQ zSG(aO2dwzjxhbX#$b%{2V1Wmi!$L-FI;*k4A4ey*hqDkz^2cn(*JX30X6-MMz~#_APL|iB?g_&-CYyf^p!nPS7Ug(6|$EtO%Q;Tdq+@co(vG zfr;Gg4libEbLz1j`~PY4p?d2w5|yLuJbs9Q%1y;gRnz=qx?CWsdbXzQMUi zQnfBDfBPm{wQjqFnvB!6-%s8hQ~xk~m6rd|&6F+DU!B=z==$~Z&C0jb?Vl{u{N3-T zr2(60&b*S_Y+HxIR+3jXm+Rxl@ztz+XOoc1S;c&iZDY6TcWtG0O1WwMO7oobs6AJn zKYyO*!run?)OUhMaq+sBG{17pYCk(SH}_U>@L?ZqRaL+@)2B2lxpz%$-iM;8*=q7Y zG&OCL74v0pam5P_Uq!Z~t(V~Jue{+Q$UzD4BNXSsUzHx$T6Fy?+F=rF&@YB|i1o$W zh&X^W1z_?;$9_BBo-q}o(90;5gCBw9)fN(|`+fr0e{&gv{hjU*McqVWsOj{ax=hHw25S1xQvDT}kcis*H(*ZkZv?RASj{Cc%rlpbV$qda?sPAUW+}Z&V0~S zY#*rFw{IafJO&-lnks1slimtsbi4M3BY0XwA8nVFa3bTo1pmd4etZnCLup(o8OwWH z*;Jc2fBI~W{qUeK@0<5;;x^B|*^uMB1iy-0w5MdjxY(C*{_uMww!<-?58n^)4|-Zb zFOPi)ehbG{lMhJpo{e)8ScN?E7x9DKAc8?kDTq%c%8YSU=d<)5rhTShWGhc7nQ0st zvJ(ES(Q}PlC}oWd(sBRYCO|)JUDGyZp7i^nWj-X8dB(636Vu>7dFSeMnG^XQ5K3n zobBG!X|H>j|JeAVEW01e`&H`E|kk|Nsjli zgKGW?pGSmb4U*sHiPjGacEe#buW@DoQIXW1eE^8*#`0i&wwXfxu$nThZ5?xwms@u% zcRwhqPUp(Vu+n&=Ciyl_W+65n*&VSN7AF%kx4x2==F~flY$&)Ywd}ZuPt(X7zv8`U zg0>}7!zU`t0wnyh*;WmG!I2kjI=&ly$V_UqYPXz}E zEa`liAj(ie&CRN2y`of2Ci^B)S+)scg8>j4W6h9u5nGy9G>$1s$YuAu&236o`u48t zuDSW_F_l|N4&p?&wMu4} zZEmK(@bB^uYR}$HAb7rfUmBqsSm`5OVzW0?<6CLz47VQYz3-rFm9#X#s4Mr{j)h6g zS-xULd-nd*o`uE5^w-x`s(BX=3^-r8a-|%7)!W7){gtsb;#Co4d{7{f9S}XNOiA9+YTG6 zAfqt7y3NvOYxAKI(?xZ6`tw`M!mm*1fytS^ox=&}4`%2BXvY9x-gua z%_iS+X{n71eB@Kxk$vE_(K-{8%U0nUWkc__N|9y5#|D~sX1(PFEM=Pecgy=k-4iz@ zQ9L|W7lrz@dG)_$hbpT-OYV8Wn7kM7X;pU_vd|o8g<0Uy`rf&-mW598>JaQy@@T8N zt*@^SJE0ux1y51$PQ;F36?nq-w$~qZ0|i&lH+b>9#~PR`14_vEj(Jg}6vRm`*^_GE}50HIEMI{@zt)Jfr?Eyg#fvP=;VSRdJPdYLn+T;F387nm*1@l(Qx@; z`Eu8udg9itTV2fN>wNwH^=z1v;k#~5kGkwN)-}gY_YT9C2`swBDesN*>m8qThp&hD zXTXu(CbK@TC9oJ~7m4ZWv%9O-loR<``H6;Q_4!rz!ZoH&*!J{ut!@f^ zV9kU0QD`7xorqrJ){L(aJNv>M3y#aeb@5vLWBTkaUK#mv2CboEJ5ZD zoD@6oRh8qjXQ$-0J>MmlZB@H(q6aBxXRmw(fzCI`ZvgT4K1&E~U9vUOOmCJN`U7F$ zw=5DT&&_AttpfeA#3gIvBFygzji=HQhW4V=IuE;i8(!}brYw`w-4nxo`?XCU46TQ_ zJ_i4!TO_IT^H_@L{_X`wAz*8g)$|-_ElpSY%(L*3{sYhyaJm`Fn?A^?gOe^4&@EiK z*|+$Ng!ICNxxSh(dUtP?CH1py=;7~rwRpp^@l=}?y0G=Y|I)f-SJE!Wp_et4RYfWC zi-MooEuWn#Re8!sID>~1ZdL^n$&1l+?xmhhHVFcSbnC;)8E5bx{pas64{*L;R5^eq zD{yyt)TX9Lb+?Jgp2C%Mx4if7^OzT`I$I~#v&iEC^g!@DCacFBsxdC{x2xiOn5Ga{ zszE$y4LcM(aXSKS2!zK$fQsJVA|4amfrEw-wC^V+G@HO&GSSu6RdTHj{n+FY?Q`(! zGH9F|G-N+4?>7f}yX@r$!c%Tg^&i*`xNsU(q&%0)`k9nxtBxh!aZ%zfDO^th{J#aVIf0M5EgyhHU7xUH^R#op_flADMc`# zMv$Xqi~(L<5KNQ{IHUTAqKGy;tkeTbH%#zqGC_2FHx$c;9%5lA;i0KM2z>jXA2Djb z)CX_SY67Y-Q*F%0<(O*>6k0r`4o*H#5>4q@lbHJc#&ZrO1`*I>?b#1DQzvK2)|tWvEcZ7s!o95_1&E($x{ zN1%ryugD>fHf*4~w2FOdPnLqlDPbeAAm283UwbSSJp$_or4~~Lul`0}4mxyluj!G~ zG$wHlNWu+MQ&yq_4ASPmr;8hH{Wwg8akP|=Mo~Jjl?EY*uf{Orb2M---pE#O4foohJ<>*j zSY7Ywl{2c5lRXG+1~B>?9xC#=NFvJ4mswx@$a~gA&w=SmhZhp2207N zRN6O8URX~&cmLOEoUr^0rc{Vs@;lZP8%%iNm0$7Bgn`HXR?V!ddgCtnHcAQ-86$;U z3tNk4zjw5yf;9@Z53Sj1zNe@423LIFXroilrR5HjoaFR27K9sLe3sJv1H`<~|2pP1 zs7bl>KMZ+?4cZ9Hi$cf?1HIW-=P{kQg{ky7_7NB=0%6{hO&N=<^g`@By7a?G59Ifo zc@N7_ti4xZflU6o5ATU{C=l0Bi4I!ZeDHu5$de0HYKU)xh4;j8!TFxFe!D7qd3Kiz zZ-5|-Zc?f$-#Ib1Nd`!|jvI{%$qJ?McBPkR!%5krW0zKjUG$ex+8h^Q(0xHTpG1JlH=JN9E${Si|!yeTI6KMui-7*~( za>==S?tN`54Z_LtfpkCZiEy-Q+*7>q7;S@#u31XPm?f=MSRqI9`YG3HDIr^)38UB2+q}s;>}!oK4sl1(|Txsj(Z%8k*@E zUkoralD2J~`*)j>vNXO-*(fyAIZ%P1o?8I!jE=u|+l-c7 z{yS3NwOmO(N1MhaVOCgj>;gu2$R5847H&OJKF;(nr1rk`z zw)VF7cS2O*OGd3E1ge`gFp@&N@1x)H+a(frAYQBY?2Q#z_@v{X@v#UQr+`WSTF|)N$m`DS}RLN`Srp>+x#| z{W(Py^j_5$%8s=!+bPy9`)uW^j|nO)zUYiBJ4v(UV+u-UJ1X z;oZ789>_nm)A2$L!F(g=JP>Rw>J)*jv9>upnAuB{`}z%*tgcRCrTNcgC(t~Pz2FRk zuJnY6A6WhFDpbZWyLGWcgCE-j*-ybxOIGu*EfN;CrbI(zC*WhScD_2w46*7P6(TgK z9%cI;6-QLsj$zS};1nhhLIpCEM*eFMPTQ}+HiA`{<|`6s7oEjuszO%~9CTE1uig;f zi)-KAchL0;ih#Cu>Ermo(ECTpeMFBJ@U?7~|UWJ%1yhj(~Z3ScT z!xW&h6?XI~7=?4~F<9M_Usz(Kt1SXeVJrZp?ImGRa%36R7NR3xa-w+nh;4H4y8I1# z<}bOKgf>O~Sd^h%H5V9O0Wp|=NMmEbRH)-I-rr6LsNV&I1>b#z^RvV*6e{xtAFmBV zu9YoC$aP``6~ehG$TfBvi6OQ#4TSLw3_$L65lg#k32{l@G{hdakPt-Xgc)aBEIjZ) z&%S+!u*2XO`Y4O^#j46IUCLoxd?&$>kB}D}fgo72kXudPJW}mIHFTdmsax8rW6`2n z@kykB#&qpC<4_*Nk-T|dSYo|A7hz>01&73zUPeTm@&?W%=mO9b_*jHi!8GnVW~Hdz zAAC{C=lD3i{J?+gJWm4k|zOS~dIp9F0*n z_xP%ZUt#BWv`gmDd9}RoiH4*EPOe>tc6M8db0@;T&MX7Dyy}KNt*wa_^#&y|GWL0RYWgBO2=EyiH^9sh=DPt}y z7J&it&yLaOC3Glpa_eR0RQhB#-HG#m|2C6mQaPVhmc z?4NB`nSHY@XW$T?4qkqAV%o^ZP9Ay4HD^5X4@IL&ypbtkfn{Kgd`equ5rqd|$#e&2(SCH#`G~iEMSJ z^?L)C>U}=^_EAl`5~3I%mSk~Ev==#jkkBb8Y2-S3dH$LdC8 z$L=&(kXPvh-X^D(47pt{DqaT-Z6X544~Mu9H^^om(>SlxZ8F|N9u8BuMB~^om-r2u zs7%DPQfT9H?B`N`>gPH2C4K3Lwst<@==j~<(8Gp4zP`QQlJnNtHt5DYh%grBpy=#> z%q|G_H|G5apxa%$p!J9APA4*kDLfiH^*=%*Yp$wunPyoHUan)Y4=hgpd2x9OGtc5X zQ}RIP`JRzK8?&D+n7FS}!c3VL=HI{wXY^{#EvBiiU$>_c2#kPU=0uN~TzrPBE+c5x zzG$WJ(No?7ECu+jp3ywF+~}d~$5=8us~MWwKOhe~ci5~n=4pDj*FLat*W*kSw45>X zyKA><)$&G!$|^&~-3NHGlJi(@km(gOuAf#)gO@ftb#Y_oHip61`{LP67uAl`4Ksh` zT`SF1C-39j0C-o&VRfI@NFeXknQFiOFf2ztAAIMIKV9CdtvH|AdtObz)%;RoquuK_ zZpjED{8kis?)fd=n>Cxgi(6fk@^W77X9Rt{FZ!M#HA_N{7ybQ%n=37pXJdSbo!qU! z=Usjn*Z8uxo-anMBxPZP{mWt*8OpKdNU~D+ z?c1;uGt6;pMYLI%zySk?Ct+WlBwEVK00b)#(>7&cn+5!DFjeHyzeHz{Ai$KRm=l`d zns7FFn!TT*jN|yr2g)`qkB+(4dw1as8P6qc$m6% z9nIw0IK*)`5>6m=_Vh+eNPw)n;Th}T8DCNxMlKdBgkPGwE59Qfu5lX2>+&nISJIB1 z`e(iCaFndPOA+{+7tWY8hlTTs)acPeR}iM2jKEW!;Ek}~ZW7og8PWUdPF>MTSP)2i zHW7Xe&J7$|bxC{2`M^BIb#ct^h=)rPa-x>tYKKYNY;}6o5z-PeFVumWTJODw5%k$_ zzoJKca~*{!9(-__+LYELJC;9kOJ2c0cy7OP>eIR*1cK(}5a83T@9@#{E&TA4cYaq@ zZnUdIppRNNrY?>`x%R_u|6ff99C!`U!2d;OpU~K`V{G0cKS0$+siNBL76Q`e!{lurRG%jYVb+SMT$ola58jw7mo@knEx4KI!TvwDE@c`}c&{#H* z-N44TTXm<2-I{&5y0DpcsWIg<@_=P}1VYQ4x1IY#v>a0glaqF>D_&`T=i>9OLHWg7 zK1NLsjsogX$|dGIpJ=9%_r#iV%(%k(x~@|6Oc;u*% zhWu;}&*rCBE0(7S?^Fx3#W^ z-_P9y&QMi+XQ(}`tDutNKh))ur@`Uc1Xn(Sm0I_$A|=*}j*O5>fIONGkrA$ACLfk3 zfI-<-kEZR$l2WZaNFR^Cl{HiXZ@Hhza8^XJPEgE&XIVOFb(xsfCxGyJu^~%Vx`N9b;!(UQpIioJjKUvfw+|#@~AC> zFh@1Ti$Smt1a?s!VCjP24{;h}yA*6q=r=a8eOq4vS;e1|qxV=|*&SM-P)S-B561@K zuA~_CB{Z5Pth$4p2hM-Z#q8S+VpU(fVZbrhOmE4~RKFHAmf2XeVnBy`T2wtq-i0LO zE}HY&^=q+vt`Vcggh~v;zRlPuwC$vrhmV#&Xng%3+=TdfJ``_VMfnmHIwxbH!(l*s zn%=wVqZDSml6ppKAZ-pSo6EB_$#hR}B-*Hsz$@<(z4CPOOc~6#TWJKe;@gD# zZ9sSJ6)ya@4pY)Z@yJFn_upAV3!}b&RGT^QI-d2fbAwp-oUA5>q@|!@R^=M7hUt3m zh5=^uzP|n5eNtp;q?0jY#StZJ_UmqQsFNa&2${WI_7 z|Ayo5KkMT7d%&4N*7KeMG)sfbMk~xN&LO*b4~_s`Tc+XJ1fwdFq>LhqNfF|KSheY+ z3Y?T&`i4b%+T$PE`{^w9a50^igx_+%3wFyyfc!h2_rzegl=As-W;htEbe=WcG(KeJ z1*6*-&MV`n;(UmvaP>rnBfdg}5WSl>e}{?Nk(YL0c_`(V;=BOXJS!1jV7Q z+SG2!sZ$$g&l&%2Rta<-Y&Ejeul)cd}IlK1;MZ`Dbw?O{Ic zW}SZ|XL0nEjv9gRh2)MarfN$UrtXQ+ws-HE$L<`mVyTgNci0CszkR@RUQ18J-$>t* zo^r-cInzx&g?5bFPT@2#)`f>FRt3DwDbZn&*AbH6ZC;?9ZL?{}gq$!cD^I)}>XjO= zouW6No|BUjcVsJBU;=fxO;%3MW{HFsx3*roXFOXWj@!4H!RI!Gc6>p;J=L3^tjk-W zYm_}FJln-BpVPW9V~2%#39fh%tm}F6ws+R1vR~+~(0Td(z4`9lyKRRzd_H@D@}>=o zyi$5TW*hVk`G<@e8l>#`4!3LTpFIHlgcoP+!0z?J$xDC7kkR<;>9ypGP4Y zBbI0b4NDc$N!hF}X2mUFG9{MJ_rln}9S>>=t(aEq8^ zabTE=r5p!D6#)4+G{DiKk-_BFKkF}a+rDj+g=9=n529+EkK*0Us&8TYCnPWeIV-xh zp^dmeA1B?)xIn4?P${P1C9?nPx%j@P;48-Gw-$c(mpIL07-m^1(`uy2W9ZS>NWXyg2I-#(13+l5I~7U=^9B(VM3PD%vfNA374OmE5u!uO+rfkijRFC1CsSqqY#{jN>j9b1f;U8oCFF~*YW=i-a-o|3nMhue9 zKSoNV!ge?QYNzmU0yQ_%}$ z&MJr?1&Vp}Z050rVjw(5FX<=)8~N9)K{*->NNoiwA-9Hqy<`RI78Jzrs?${dq^~IH zS-g00<3L-PGKrMYO*wk>k0HO%`FHJQg4X8+nU3w(bZba+QCO%5@$-9`TLi))6)(rl z+Pp}RsJ85l<5sICtl4pX2Oq#_`*VMRmbT1XmATP@{ej_uxh*mV3TGFdO|Y}BJx`|I zyNkt6L3>FzmDbbGJy`$LTYJa0{FavYMG!SDeMpkNd&qz8F7_BRBrq+hKRQrmqS@O- zllBa4v{%lYu{-ChDHytxw^xr(MLqXh(%&|o3eobp*W}fE(RxJQ=cp~LiE&h-cn4~e zG35xusd)R?oA_;-L)D{!r0$EiZaw7goYk(XrY7Upx6oe}RZ%w>k}$V{x5U_IbbG(GxWyC}quKd#CXX%L3%EWDcx zvcE|REX*DlE~|Ogn+qe;m1+wRkpcNXbv=T`8S1$`!Ch5fc{zR)^>^NN=_a!QFE*iEs!^@uQp6Y zX&*&U9Dmso=65WmDfwzbWfF^PUw0f$@;&?mV3KwLnuuW=ZWMB?9(7x_3Uh|ER6%R( z@@k+g1m$dr8tp(wPA-%vM~t+HbDR0X_K0d~*|!g?THRHOZ5XyLq6=>%wJ)1?VSHH% z$h?nS7!4kC-##pK+;tVdu%+n2i6kTgnDWGU9oXMo7@_{+l_UK(Nk}AJ0!C#FAWryo zf@Z+^Pa*XrKOrJ+N2MM-f%I_5o++1_7mMX7)>Tk_c3z^)l3(}`(>{&Rx{2O$X7zwD zgFcAtRTKpH)-_M+X3f$S?!Ofjs8*G#3j`Pb`Yc@ z)>#g)413UwH|SzETgMZ0RV#dZ_mB-amVlXVHBIImWYe-c{9*wqB$$_VXSMX*3j$5> z+rH5^{Wo}FSUu0%4q`aKCxFi%ajQGX`Tny%RI{D_**!|jifT#@3OpP8%Gum=jaZx{ zNamnyCYEArp>9vw#OQmMZO{|b)dHAe{bqL%$ws)CeLiqo|H0nv+g^4vGAP!sFk@Na zT0L{|(xvqHMFjjO<(LRTj=b3d(eBIlL#HNg41<#Y%4_y(b=NV&{0=%*!5{qraFukw zok+RCx=f@fFOCnaqJw^JNyLi?kO?|ViqMqn{T^SH>^f$aSv_O~p827;s$@}WX6B-n zBHBRK$cNz~*=1`vRX3(gmni4mnHEpGcLCBkXYKm+dEgM)-v8(k$OB5|<>e4?p(c9v zyJiQFwUVGphI#|CH$&p*84by5Pcxa|1b-vTTQX+#oTzwQrkSt>X$K}x{Y`j^D2Rg4 zn!<;LFn*tkiUPoC8sQNGMszEx-!TA5QQp?@;(~F#jiluJH;{y?0;#qG|3-JJ3a3rZ zGK||7#%@TXh2Nn>309(iYZl}XTR`X)q>(}&y5->>)#O3}*d+!ee^38xWtrj=Lx zJdLW0eEsnk00MuxC#3$!8UMH^g1kfgI=yiX7j}nu-uZYNuh_5VL{**OYse#us1UwQ zsnpwpx1_=E8ilDf z=LHYQssvFtUwez5dvtpxEUacse;9$w z%K?tzZocY8uZ$#OJa6B8^;-7OgOWL8yP>w9b9)xeA-M8oNai5FHATgPgGCTtn> z!7394Rs<@J0uAVI;EI0#F#n*yj!zS)Pg}`zUJ*vxk}>K&SRYSSdC+`Ffkiq`Ica^j zdso(dQ_bPn2#`F#t}cbcDv!E%^7KeJ`HS)dgEr2~>lv%;$#cnYxYFUuly&1VXv{vX z(GT4TvP+9bw6+ik9^#zMt+_JmUz$xcndOc2w^aFl{YTam=r$TlR)9FIixU$ z+2;n?d$?x>RaU-`gI+0Z(kqROjHr9`0jCoj7Pfiz?18Mb+%)%rfe7FLc=h9XIe_VQ z7L2H{U&$!c^lGIty)#gX^!0Jb5x1!z^?6Atroy^>SUmg-asXVHKi7jvNa&D8QJG<` zb9kM4^k@#_UEe6$!ozwp93P`EJC z%LOf5RyZ$$MhE}Wl@?-+SjZLAWk|wr(_-9x8H;VvFt)-zfHJ|4K;u)(8*(=tmyD5t z)%Oq@4BUR}n5_IH%Go4fGH$KZW4J`Zc*$q}I4=IzM1ndD8jzM3sB4`ue{KsH#>!~i zw5Wg@02@?!g0xr$3(0j{ISkrjUVrL%PWu8wcmdcy{(8VbSNjUtqCoelH%Lu#YXzW+ z=seJHhT1_u9->@gpo5Rthy@L5P{)!Y*p+JajK160E%?B|M}bUkr-IMssQ6G*pD^V9 z#P8Lx3j06^Zy4p@j|K3x!bGIh<~Y{Q+wLHg#za}zRxn<|)?yBZpmtPq8~{e1)N&GV0zl-V}7xJQ7-*$c<$trF3HZay}Lz7`NTl48Pg0f@a+cFDyqHG2n-u^b=r0ve}< zCR3F;bX$F(@WOtnGqJCb)q>k3tCtob3GFVqj{8w?I59NF?lyF{B66a&JTjqID1u zWX$=#Sn;68S|z32mAu}C?ALl`6RO?NcW8ynwt+mjhlm3jpkTPqbb+eq9+)B%>ot26 zY5Gb~tqoaztY|ly%OjCyotian*K?8M z%ap3}@wn5C(?}2-^SOszw8`aFA`vIyt}QlSQ%0L`=dV7$7?_BGgm4GwmB+ussYp~G;m+Y?t95(# zACZ<0K!hW%abJRCm8Qr@VFuN&fb^H?$0A?52+Kn{CH<;L4s;L^4-w*^3tFJm!msb?<&|JHm(aX zx`^a%Abl8$q$`96^aqBT`Plk(4awF`ynVhvSOeg?mM@F#8*!hQ+hVLuUdhqRd;g!a z&N_b479v>aJ`uk2XqWG#_6Kc;CT&zY88tQeXU*icoPT!bQ2CY%Qp z57<$mT>W}Qf@bQn76lTs@7;T9WpQ5U99J+x95n?K3xT73&5U?EhRchl^30gmUaZXt zu8ilK!r6;fWMU0924QlV&Z!}zSI*duw=kltfR?Z4UlFH_K)+u zzwok6J`W;T-jfulLe&6ri4jQdE!Utt_;Q<=&^*)?61xr#mrwuT^6kjS_$in_Hs(DB zxRVP4M;aR~OuV|1f$@`rxjQ56`v|(*2nn4~ydt4fv>a!~#PJW`RF~%D2vgC$;haq4 zIT_Q7RhiAIaIf9P+FaYQJAVBR7QBgZX^7Fxg|^T*tAwjb-atSr*ec)t8*P;qZva^1 zmn>LD6Aw=l>L0}S_*&fZBDL-mcmS;`3(6jdbZ;RsmypL^ke4Ct2gKGQD+j?Od{h9L z<%FO?K#eVaM^V{R z-n)yF*M-w4nm6qay{7RD=%_#vDN9LPI+d6J{X&Kx$B+I1A=V1GM+c19G(p58IoL_Z zw+MRyU?K={`lf)YF%9x?;Y$Hvn?8U3yoI&(Dj>okIDT^!K9dicYQT4*TM2g)7aK@< zc|e6>HEx%&*Et4wh=3xv&iJ`%8vNAFpN&wedKp9K{^B+6px01cRE`z5=2vKRXEyDH zcmBc|?Bc-Sg^#9G8qlZS<@>Gppn>6zGn|^I2L*)*%J3e7D7m}~eRbU5-odStkqymZ zjg3v!Aa08LFI4>{mT=8VltswGv!QR!4=Yybe~X?URIFGDfjYbQ(lg31^;Wj4=OB{r zbU^{lO+bkb;fHTr9E7}6N-m=C!GgKmx)J`y%pV(iKV7Vc?x4W0JGfoRHN2v!^$p;v z(Pz!!!QRsfXu5K%)jg84KjNX9myE>pH^b?`Wc-wTp16Ccp;Tu`_YJ~|S9aU^%{x}HbeoPlGOfKhJMovpDs9;WG(y`cbY&6rI2 zFJ{LPm>pS=g`(orf&KKMYIzl@;-{JRFq0TNDCSaHW9Hs{W%R~J!E|HjhyWEHR|?S3 zKDx#o~duaNO`Ef5nZ;1G))q)3@0T|}fIq(4M z@7%ft9k`|F$XMj#4>3uLKACI)p?A&=sDYVoVPk_}A_PW6#3(;WC%wU0GJZz$vlPW# z6zk56)L6n1YCQx{ekRDv%Tax@bkLmVv)!KhZbruwSg$s0b)#!B`vWbk|5y?pv2JMIeYhEIeU!L&oZ#s*LTMP{Ysp#4MB_+`R>*>UPHRCdAMDUy)~5en8G70NtlhA;wH}aTb?v+*iB+ zncfYU?~tJrbXNbBvT-#s(oPb`FOf-9d6+?pCU~uiS;y>!rQ_->uB*AP7?^vmX?WOg zbo|p4sQ^iB-()rAoz|Jyjt^P_@NNp4O;n6=w5z&P*07RVIN5BaNycyF1zVTKGtaky z&qNRiN@kv%s=vSoTOy8?Z*uu>k=S%B5D{Q-j7E!>!79@F`W-SJgn;L zI|T|)GOFTL&Sa-LA75RxF2tWf$*A(Fd)g5tOT>K42-X+R<(_jN>P$*- zI@OXMSVe0eRMtLmaxvj_bjDNn)i;aQ=DsR_)vmbQ!kSakPT>aBQp}G6jK2qOUnAdR zn67#E*-*bDR1X4*#!98qa}38Jn{zQT&0f^+rOMGBW9WV z%`8IeEGH)?b~Pn1R@?7|T>XNxU`D28gr0AUOZ$Os+dAvBNDyqcXD<^x-`!*V#RXM9 zU&(2FOp4F_2KAX;NsOrC>Ke|vj6{5lpp)CjPxWT3uK(jd`oNzN{=MzT1Axp$81enT zUetj<0_Eh%Cyqn|tPolR4qc^QGQg}cQtUBnjAMtw_4e!m^1&W0PySELjj0|=xko`r z{{UQGP~m4qt+iy#zln0v_+0`35wu6qHd zYfq?0;@Qf{kC~5E70)2$BlkP_Mh%?_y`Lxu&d|Ak4N!Rn0IyJe`ykpfF8H;b4d{6G z`wBpmMuft&T{JxA7Z79oM?9UJJ=Ei8*Cj!^bJYVj1gb#O4=va_s?IVGqYGr2YR?|3 zrS;!oD@{~f&2z~#(FdEEIw5<)SKJDTVE(mpj5rK8Gj!=2(5wZyGdd&ERNToU!uS87 z?aKq2I1AR;>?DuJjVpzOPV$W91rfGpp6?@dBjwEfNZefej`w%+Bv?{dy_p7T6F`&>F+ zf5xpzC|;v&>n!YX{uk%K4ki)psW?Wb1zc8a`;=B_rK9WA;N29U@)Nd=jU7bp47;{N z3?dAaxcvPkGWPFSD241Wr%)VmjwcSU;yTQcvSjBkA-EkG5Sh)wolFJwttVK(JAgTJ zfxO5hs`e+a?H0~9_~Nt73@sgcxyk($^Zl6k(s!mO(ZtvTsgjiSNF0Bvz*|cmEpsbe zm41&o0)jzovN)FOWNn%REO97O$;jJ~6He~w(xJ9X(A$xF7v|oYgJ?2?Q6d_#UE3>U zgOd5z0NN0`*X-Ay3Ck|nBZt{Jp~AR^iHEm8r;fE^&fK}(O!f|MtO|gts?yci`Wzde zAULA;fAb;XTV79!3Q_R7fIIe>7+Rg4gdG)_1QKx4nC*{FE0FZ{_haSKq54jKbt|zB z`bKkxBi&w%I7!q^3uBq;L?It>)Uug88(v&)l0@}#%%Q!tQ`w|py!P2xa4S<_ciGC(@xK3f~QT=^#aG9t-(@Fx`-m5OLF_3?HWV$o$&~-}EH(3mldY0b*`f^fP zkEHQ;G#g2B?N_SKCz&9sqIzAm9vh>D+S>UkJ0p+yxg5l}WRynI>Fwa0b(Fao+7rS^~(@nMlMS$v1RmTGg{h!Ju2bP=%-4B+^ap zzG@Tn?_V%1Swa&wm|WHWE36!me`Eqp(p>IaP%Ln(+nh7}+Dhr8udoEc1Bps(BtZf# z1^plF=8Oi8`r$2SC}dQYi1px$1LL)9MA;P5x1Q4RDFZQ}O#Qg`47>^US1^s2n-L(I zECpcUxQ9*?E$BRH3tWeMRwOyY)94-$%xuh78&epN5+yY?P+L^hhU zlJ5N&xtTC~AFmYCJCXvYtdyqx94QFw+75V(6q{Pm3#5ih*HJA)S-B9{(CHFP?|s=u zxxA|V1N0Xb$TRZSmt8_dQ?4mS(Ud*01YDC3_KVV7>g*Au=i0>dBmyh&i0EIRY_yrB z-Gp2C0b%)J$K%Vrw)X{Ji*Y?L>XuioL|Sw3rW!=2-5zp7xELkn7i!+qH?l)qEgb~s zG?4eVWHmA{KoZk~fi1tGZ}u*c<2U=FJ^^WGKx!vR4~p~W7l77K5JQo+_@kT0HYsdM zc9^)KL=1XFAXJB5x^*cduw+=xL=hcP<#3G1uzhFL4z!V^a7KZ|r2f&C{P4ay_4B-V z?0Z8x0EPr(ISx(HJ`vIpy(Q5B(X(P%FwbT}lF?P$gH$ z!Piz;H8d00YsWgfrMqV5LoF0{H8GrJQx@Ld(+i^!`h%(*)GA~X7p@7vjzx#$c=4SN z(JQorIGC(;Vm8s6uBqIAc`g~S!X{_`GW6*Ts;2N_Ggi(JxtCy@(y($0L+T35`B_Bn zSLU7WT!SCyw!i!|13AK#)Mw=~_8^E<54Cu=N_W6HfuKu-vAQYdyl@ePtvzUdCSA`dho`hLSU zqt@p$nac-pMGQepF+rVlN#@014VQ;4kZWhd_{0vPcMTssIKh}qc5 zQ=@44fw*%NlJrs3)rh!LRMJANoeXwIe@7RFo!J9WSQu!RwH)6*N#--Op01Y8_-HpH z&YnHHAz<92sJJ+BLUr-t&RUk)+|mWJ^?yKzJK@5W+zo2rybJB#?#rqIdahP~p|wd1 z=iBZ26GS@yY_yNawU|?1GgiTwM{_sPzCi&bmodLUN5CaVi5_{V?7;g_1sbzS?5|v< z&8aC{1f6n>;4tn>(}FovyW=-2qYMdzt5ZZCie9|Pj}knKVgungi{X@%yMF6db)z}s zbs>u=p-sa0ri(0JUJ{4~9UJYomxV{7w`W=B#r#gO>dqVfCmJ|Ttgh5#Cw~xm2Bx9H z`w7Y$*=K9=eFP~bY{-=pP0Yvv+QrweS_KHsiAU7jhL+KCdY!;=5AV10n7KStse#8x zH^x);tZF(F<=1BqZGctVxxvl5S?B&vc=T328i@EWiFbFYFnRP~@*vsU+)Cb+)~NkJ zy2>#6*o)ua95xCVWU!@-iuVP=x&`GW;>|@mwvH!vLSKO1if)8}t|?7E*)Wq+-)CuU zNpFw3;&RgE;Jx7h9Q%9tg`(J3&&n7w|>vnmBjD$M#>8fv4(Qqw zb@Zf2V>HJ&@U<~{?`ZVG%0DDc@22~ycAnn9$&y?Yx!zv-7j6q$2QPb|tZ)(t;CE4v zDpJqH1R+4qITWg|o%?rfR*8=5plPS2eEH-$KYlTU{d?M9O9?V~) zv(=v$63$^(`sMI0s??=d$qARqO0TOZ*7SLloKK1T=ADFsHzIsaQq8z%81zdc_vP#;->^tQ6 zg_9)^S!Jxd&jh|G^v&F!1Gu8^!@iJHw(ecPgbA+B_48I#s;P%sY=-<6M!$6F5^$Pt z?)zV6t-9hO|Aue?R3~%NscP?@l;0uc9?!uzggT&LB@qNUU|W}FRK4bJY3*46)h@m_ z@ncm57*cwohIwbHJ%I$C?C*;D6&UPOM*UJ=%aapE;-Vg4wr*x)4J0Ytf=H6l)lok< zAx|8zwhp~=_LSI0M7%>*FBH^){4VMcZ#f;=UXgdkrs?s(EC?Tww z6PA4Y^GWao0K}6Z!ocB(%eYDNf&GQb+v<}1XeMdTDhBr0!vIAhIfWf4Ai`GvyhUIE z;sET;v#2lvi53(P=%)|$R)H;z^Zu;r$#2MHFwToD2aGG>- zSfuAvA=EDt1_Of=H%eturF5~n8RaCKvVupxy>J(GsNR8Y3aEi}ET3B42~U-F$M^Xc z+K|>%`g+y>$!(A@`Z_p_WK}DhU*R@9xXn21WZ!6jCa=>EoC-PI54J>{m^fLk0#%X2 z(H~1zIe`$2TqIQ6rwb|l!HuAqwA8Q?N0$)R7^E*C`7zs~UEC9>DQ9$UoPRua`hdJ8Q?WMR$A(;IA2LGai-8c zb)sXVf8i~bMtW}Z+u+Qya7s?OL8*pA+7`v_Ug8hu&e19ubry9OlNTlDJRD0}k@u$j zE$i)*5S0*Jp_XBtx2fW>6aS_LuD2Hn-ZEoW-Zs<>;;bLlowrC+`$j{3)o+Im8rdJT zcc-L0R3(l28&?^w`;1iin7q{Y*x^CSo;gt}4ee`x&-UNy5ndA9*FChhMKGw+nr%U; z_3C^Ty={2GM(((LEoOXC7eJ|f5{48giNAhyI^z1h*UEn{_C$zeUbbZaj`ecJ<`x3eVQeN8T_Gl|I_Cxn6vGvw5|1H#wsejAibO~yMzuD*<`z^j9cLR{cM9@Nv@li z(bzOH4t7y5kuu#Yr5oe7RmDAqKorOSMrjp_{v^MR;W*Q0{eFY3;+_CcF*5Z)zm1cv zb?}FeuwGKFYqf@NqZs(8fxiRxD?f%gtc>SDQ@1~~p0L_&xEHEZVgWzK|ASKr`vJtg zA?yI9oB$_(r_GzM^B_Ti2G( zxvWF*VX}qF_C6DtS7~9AJKxM65bw|=++4O&duvgVwa{4d&r3bR7wY5-iu?)(5f{47Ph86WnNnMoeGnb-O{gTJrzle>(KY zW6e>aa|4B^vvh7Fn;X48C=J%xBFGxaN=OIO`4TF=N`4&=TsQEQT#|HM>|!ktwFFK! z+fK>9JQcGzPR{A(W>teH2dKw9;|%SK4+*E39@Fi` z^m>%fgX3oYq=H*G;}>Z0)Bw&K&u^#L);f4zyjUn#N*HZhbOH={P-Ox7k)2N3pz6r_ z)>k31El-HzQKhDoL85x-lXssbelSqp^zj#_*Xe7&JPpo*YwiA*dbA4k#vVY073@d z%CoiLKnWeX$Q%?IZ^fx!L$}*II+kZ}T^@paA-nCL_XE89LKtKL5BM>-vQ7g+8Fy{B znS{6}s~#5(oBS;{qY&R0l&(qv7?8+_hhyQK)%&vMPQa&BR49YJl+UvhYYr`6jsalN z*HC_T0n&V#ropg5<0#d%)k#?c8lFJ7y-Ff)gBPJ3q4nm^_}CEUpf++VWoE^$U79Ec z#R2&Rdxj^gmTI2173%$rV8&?vNVilo36Wx**T>l0yA^mUF@@FrGK{Kw5 z$NeLE#Z&h3IzzLn+q}YTD`lM=vwuPtV1-JnMuq!O$N7S?gh_7t>{2&h`~^s%wo6`y ze}?LiN9`rlwZ%1+w6q||Kr1}%FI0{8g5tVN-`@;-VtEB3tIntErUOiOaSvyyMEvZ1 zhRB#z+EDV}iRI5qsoRU8;L0Bz!ibyBX;`fW?j@}&{!; zSR=PS;&1oOxG*kKG`s4r6b$M@lJ>OuA05Ix9Ts42(?$Cx%aq@w+%BGR;mE)6#9fte z;s0B$d^AI$MPLdUw`+Q(K_Mv+^b}5g_`lY=pS1}EmT*W%6xQ1aR<*0LN7*}KwVnCH zu-h2`c7NP1OA+7JE}GAzPD?B)-wXSF3me^}F8$?YVxz`nt`eAo!8^QQoIa$#I#)vM zjE{%ibsAmyuV^enQDMsv=s3f14NP!f)YScdsYfqOxwrp+5u=yY%z*;)|3ish)(13A zhTcdtRs#6<^4D-y|F5BRtZ4P#BW(`^74l5=>U?*%vb*!tn4nwwsNlb5s-Ji_VUb=L z0F*}jxA8@>iN9Aj`RUgv`C}t@U_T+KvXlFAV?}vuQC^~=LOMRei{QV}a~8x9jg}^J z< zN&|n#T+#Pz_FhQAe=eSA5{tGjjR?$)0WI50*FZF+3tAE{xVKZ5yuE>OR)E2`9R9f+ z+9dqimULkBD?mUMFmd(6hlj@|eZ3^l_2>ZBQBeS7aDRZ4hEU`XIWg|a&q}Mhdfd)8 z;cKK)0(Nv=Jw(pRTDgBzvvh{)KiIGf33k!x>1%nn;w^I7$W&eWo3 z1%Gqi|LN+FfBnz;pJN`X|I+gCEMe?}TRXVKBcJ{4pa1jKk+MH-eRcZlT_3MIa_r;p zuhuIa`PZjjq-x9cW{>8mhbo^sbbnu(r{$4o;|>uuK6Pt~VV2j()l8GBqQNU1qoqYX zJzc)N`FStx1DYW7D`ox)We4#0mZHEbHR3T6`~gXjDS0#h*JrpP8dW(ry9x=QXoUI= z&|6A=*WCKvGNQDwLc4cVr*sc+e5#E*>L?cGg;b&g<5*i)}wc#=~1}&N?SeqDlESNTIR}2bDmL`m2%FufhB{63P zNe`pD!{_|`Jo$DCFTrp`FURZn1KwyjBiAuNF)2Y5{2fbOkT`E@l>iI6Z9%_e&C;EI z^_O|iX#-T=rV{a7UT>1|g1IBQqV1ypY%4kc(z8Om9puu5N`1AdP8Jo5KFB=`vc8&{ z>yOo|ZrT*+qYw;cA#1;gR zXtx11b6D?peEkURD6OdH+J1laiOS@N03R&q=q0Ug$a=8o9br&QSA} zd`|PZ*w*SxHTj$xh6dx-rK2=j4X&NCyM#VAmbtpqfRGYB*G6YWMFUt< z8&mGy4L0^Wz;dWt59^=9ATo0OM$`ODDif@rfi8gC(epBcD%M!l9HVFCDUo~Zh3TYJBJc~>U3dU#IvvyF(n0)3N&ji!<_q!e{*qDENM z&?_tAM;AOwWQoQz+C_c~=RQWwKyRk7x}gUsP@iwJ2+oq-x!@msZ0ywwUf*cW3c7~j zzHIuQidi+(BjFX_Gq%VCGXJ0Vmr(}a3_(0mfp*VJSLhX}sd;+=+|hteOZek3NeNFtLLRW?*R$Kn`!D&8~GP|0-z z6nU~eLs*URK+NDTPkvBjQBj>tC7GBods^$=ONJ*vTkJ(-L`dG+bJW(_i-jiIwa0gd z&Znb&mr%|w>e+7O)A87noE%ug*+UeUtE%a4m`8YYB@&e2G+Q~T0gx4l6Vzz$^ z){<$ObYkR1Plt;uO*A#Pa)K5SyY&(-KE8FDPT4l8`qIw{Ty{+KYDY-PPWtJJSyW%l zilTzAv<@nf&qN6$l7pgN>X~>M1qB(3*Fp@Qi(07R$UJozO_;??mRwk6mG;n|Zw%Vt zAdF_z*|RLwU-d)a-h5TCmD4g1qU|~cTH%C^yI~G1?NH7)9&JkD3yL$=ns}DQ;xBOd zm^YfmhaG+XQLInh+49&VrZ zz_Y|qYq6~I6=wQ)YGjAThRO;`l1y0UdXHtcmrI^%bs=Ts0+@OUI^%R)^EDt40!1ER z4@vh;$Mu0}tcObor_hX*etiP|8_$Pb%KhA1`)+EQ_WXZGsv|56)BnM}M*|SANg`>` zR!)Z{HOozkK=UQ;C^v~!qVNwlN(v`I(Rc#7=wKi{AL}C3L!FLw}3Z5 zqc}VS))LkZ$PYPO?$+}cu-E(G7n z2cHgDun=E9#VQsrU&@5EX542jyv}AL@#PYRQoA!~L0~TIub!dYrMG)%5)Ll(%z?UA z{=CG-WWEu^TS<}|;L@FLhYKFb1*YHdSqz1^V zxK>ZG;G!G<>2310nVzut1}Y7t(RM??ey0L=dnh^|Z@78u=0Pl2F+)hABPDhc=hEN9 z5eTeTVXXP`DXe)l43k0)lr!e>K6#OOj9uT`&7K^KEe7xcl{-go&zH_mM0seyJCsD)lX~(qCRK$Td3(PLN-#$*Pm1(! zGt__(etaxYqR5Z)p6;&8uZPPETk^4_n9k)7&xvBF*S$Q50)0~CQK}--kCF8dv?>ehE3Ti&BMQz z>+Tf|m2dYS+@`!f z$BP@jOzj3`f6yOJ0L~Dx!J1AKRf9KVDx{J<@s2}z3Ew#=Ydnq9f4_>mXR-AM^;l_)NAVMGOXs`}TV=lN!@Wn}R$CkSG(C=~ zGE42u;Q@_m<HYwyW!7*sAUNIbzi=GEjpX9M%PpJ`wZtu`yjSm(ExyT8h=${{u}$= zFw_k8{pmX7_YP0i<{lWv&Cns=i%WD(jlf{Ar$}<4^S2}E)=dK}fG93c?)~>NgqhxK zAl;8s-X4zAK$CL-)t)vWi}CW#`$xJA&P5^UTwqc!83$WqG8|82wY7tJks}zoPxfCN z=$;{H{M9!2;GkG0i?l#jEZin-H9xhUS{4(0`gB~)v*Ef^z_rM5g==Z2#T?dy$gAZ>0 zxB`Hu6L!9-_;KM-`C`WOl?c#WkRC>J=4cjhtjLO(|KW1*9+N@RaNF~bd5?oQJz6QG zjAO@n$+chJ|J64@LN{~k^I@}m8_%n%>!cF+rcF^@k36y; zAY#1M=NkE*GaZBxix7Bvl9Yu&=#^+iNm;jM-EW{2#0Ag|^e`nZA_o6hWDrm?5La-TAz2!z^c!k3Yi7pHRJ{a=4)P4czs)`KPC zsE^;zGpbHwv^P5iU_qF_m!JBB6bwDC({U$+G1Hbv4Hgr~b~!?+Hg$>=Qpdw%XkAyz zq{T~e`UR?)qtt{Zq%KuMy8r7YJC&EKksgxA?i%!Fw{G9ih@4>sT#mauzi$*#RgDXY z20FfTOOxO71L0XdTB$q7t98*aYxNI9e4t+r6p=K$j$_(3!#&Gqv`G9Ij)E70hjiW( z9u`V+W{G%|K|&oYc&S5aIqp!3vi2b=tEykX4Dc?fqxEUroxeTmdmCIp^@awxm`~dh zyKrM>>CQzsDSfJiT60N7~!_*WE^}z=) zRaF6lwV^if)gI1K*oHjsO(hEtn`tOyw^d$i%_`{yki%? zn_Ea;?@GV#qA+9#Lm;mJR#snbt(fhB1!@ENCV^4s0_ zxVt%)+$yM=|3cS@$nwZ}fF=`$C%{&0rXCU6snb|FVBAeP3L6RlaaX7pS*#+1IhFI! z^W4@7zo&tYyV~R*rC~FS7(~)ww#kAXvz`}9Nfz}>1Voo>Wf_OQC)nXZuOkB)-I=(Cn4I7KA3bk50_)nJUt&;C7>$8Ahc^+0`D^F=1BHiC9dbX@(5$&WyuYs9G707Pu z$xy1!aC*&^lQ5SE9-zf812JasUk>2s7{jlR<>2<|N_ef!bVOHq@Mb?PsN@vod$JoU`cihAgig}8_Xj?a3)6vbwo$~g*g34CTts)>VNYa(A{Z9hND%8 zUh+z(r7?C#T+_!BQH1rctHbWUO^<`ZAOu3@sao0?n8i)Zru#h^yBFXm&=j4_RM29x zRQ=mTaTb?-*}{7NaP&g^{^cl(w?t=VJ`!zBKhso$LYAe2gYIq(N>S&#P15`Q>H!t( zDpz@_21@HDvgQ7Yfk8wa3&7e&3c<|ypdP3bCs?^*{FdqxHKeJ2j=nCg0}h2<+u`2? z8u24B6lS2AAvCKOL|e*4n<% zoee|ZVClzqIJ$G;8EE(?&1I!vXSqrL<)pcu^41{;jSEowagGu%-)Rgs~H0|7WwSz@dHrS?h*p^7rEkMyX!pIy#5TB zr~tC@lYdl)tw?9bx(Xrlz~Ati83y3T$f;C^bs@w&r`ePIg@wsPTyQYD;Q)TaQ2d4r z#Cw+|a8{WU;y;qu)fRINwE^G1tKRwp{g*$0d?V!TQaZe|M zIT=nijzt^D6futjo;iI{EYf`9$svcqq8Vi4wXk|8lLUk=&)DR?HJGzL<5=mgU2D+f z+O`b81ti*1S@Ys@C^A`uz+A~BVq2Yb@nNoulj-Q})ybKNaK60Kw5A43MUYR~jTOK-^1R+{$BJ{B|4VtWHQSJPS1;#ZyMsQHs`c;JN`ceet; zc>|xJ0Ao{Tt^|xk0`cgM}<8=ap22q8sSWNV<$Hnbvqv zB%yS_e=MGZ^r=ii`xp)=f{B?_L0ebj%8VQy+b#d>e}`Gr-Q^ZpSMiL|?>$!zY=`L7?@Ioqb|Ynx2893o!html-TYO<3! zFJISn+h_f7`1eD^oz;T>s4iYpszliM!5Nj??H3F9(XAnj$0>8D4WC!7G6^ctpzCgO z`XnGTP%81g{|M(%k0_#A%v5a>^d2H==>(c9I#*kJF4-7eskk}RMfKv2c7~2gkm)&l zVP^M2VmCMp+ua=I>PW?7zPYWHHyw5Xc^X{>C;MLZcX=hRt)dR zh|4=%k;aZ!<#&11V~0&D>B>4Lil+g=+GKirHt<(b@!k>sm|rjdxO1RjzY_Vj8WeYL z!f}Y<*96Hg)6P?q*W>O%I3!x~Nt^XzT(lE6X^2VbGGeK&w+IC$}}vUdiu`WD-GW-`(a0c0`6 z!K%}~*{yxq$LQ(KYDa|6;90}U0i_v)tKv2A>-+U)fcH2MheQ{#$WZe7r}lW-1HK~@ za{+`DHZjMt6F}xu-o6Mg`eJs?)9A1UsBVcHr(r6ClIz8Gl_RK9p6licNsEDcgf`x! zyxUrD#{S}oOE*jFkdjLg%qoD|5!{FpL!@7ho~sEk9#8$%0bk=^`En=Jd#A}mm|^jm ztY|2?*rU4!$k`FedB@>$-p?&ez;E&9j#!{RbUyM}A-UpA$Ta%cJFb|8BzFAZiYGvo zO2;!)S^fNqt*%bOtyDY0HaK7Qr7M&b;$g?bSU44?k037mB}EmaZyk$u6}UoP_jD7$ zl&^S2^GX<({K%E#I||@Kuk(Cuxk`Dv4qlXa$uyfG2GWI#n@i_;sk5&^OR*t%*IS8_ z0|Wj;bN*0x4D1L-xJ^V*1}HSyx^?RhV|AT`uAb`pp#}0!)ZJ>qCHW)n)xMoEypqU5(r1_j`?cS8&9q~Jn~|t3BCU0{~RXXu<=)< zD;He7rK^!0WDBjeNSM?2Rx7*tSw!w|3TbWXPc@v^?zW2+)F3Ppx_BMdUMgz5w86K7 z-_q(GIB|w|T0DL_!qVGo`#nR$7za9AaDHrPZp=;#5EwN$0f>OP1}uf?c<&PP>PLU|D+17@2(B-pt1+p&ql-QA-(V=q(?yD^$jVc^wc zS?|UH7Fvo+U7G6BrHKf;^5pZI`P~zutTsPe;cph44g*^EX9PmNkw?d^>RbnJC~m&( z;jsA~J{ZYQsYv5`$Xs#9JKzxbQ z*o}m9X8&Pn&+G8!FpBf_TwMghwu`huZ(h$b=5gMbIJ32+)rBlh0}b+$KeRD68>|Tl zXBv+x3_Od}uZ3{^g|~vLmIm6zHIE(A@wZk~nxK$AAXw(gS9;C1Ze|x;RFm4c0$6#& zI00VWik;!^u`$XpP~Zca$mwlNH}%*N@V24fQgY+ zCQUgfQvjOy8?513qxR=B0pxZz=icdnn&So(&ZOJ2e!naE=x&ePBII-A`K>sLxx^Gjy{+U%=SX{Sl^E`pzfEeMqJhe*}~1BRo=2i z$9H!{_y<2X>US5P*P}IEi)R9{$oFY$Nr1ngjwntyr$AuiQDK#2v%xuKFxODcmOLhS z!%4wXCf{gj_Tj}#(kx_UVNg$9kMMNAlf1tI{u z&j4Gb)_i!&#-uCPuZIQ)UsTg8DE;|`@u}co8O=8>n8$;%Gy(tZbC}ND<-E@75{L17 z!(ADO#~e`B7gQy`5imESfjiDQukb5Lm|u5*=^){IT(;5LxDV&_uNp3giE#w#O@7lB z{r$1_{u$Ppui~g2U7b7Q1Mm(Xq@<)ESnX%Gx}gJEX;rs;;6*Y8pVJul;QR3>9pEDy!6ITVsL9p4TB=ytsA zwYLolExjQkyr-?Q5}y_;NYNPU}oMv)pm09-8UK--{9sJ!`& zYV|5gmVV+yeP2d*V)haswZC%vu>mme>ywxZo|?#)c(AWckP$VT_K!wp3|v?d&n*9! z;?g!W{o+yaB>?z2QZVPQu$&DRPRRrij|soiM%D%}ncU1icTBiT@uCtgva-Y+Cp?-@ zq9p!&D(iDST4zjtJ3ysfl`mHS;wl&0wC*l=^bV>f?5t{6mtH`10^V4pn}dH>%uf71 z-(soA(I0Z?@!@Wv$>$w@=jg->C4mzuZdF>|t0sJks;TxKr7TBijfr@6=2u=U zg=Tvv#4IxTs-d87c3P3dzzBxSkcFsfW$oQk|1)3xI>V^htqk;ye zk0ZCdh1!%pKmYNw+aZkP6wD%;TJ>6zJQqGgT-x>EbSXHL6dX1FEGlt)U|+pkRu;4w z=*y~2;B;BEy`-Sg)#z3KT7J0}XG!4JsOpUMK;|CB$lTB50|T&9rn~yLs=2*+dg&0c zJ<{7YG&B@rGaC2{j@KU-EAje=@(N9Eq;(!4LE{i|i5?-=5-I$FMJ=VxkUiY+ZQeu8 zs}73O`GRn22{0s``%0~`veiHD{|eiUgoBK!Dlc#sbU6EWj|fQtK8Ja3{N~OLUI)E+ zZX;9<)$!ncEmk0lC@98gyOZ_BB;PS7`{Vc5im&$^&l|h?z|r1SO@pB!QCPt7FW?JcJqoNGvCbk4u7eO(D++`6mLHzNOe~(nM^E^2 zAZ)>?4Ss+0 zM{kl^Qr(HRF#b?N)G;3hHlYrdVL)d7UO9T~j~Y%@i5K;9`eIw2J5at**^M3nOcc-~ z;Ht{_n)@qtq;}T8SaS1qC8?mf0gedEt-Jk+t&wEb3ftqu^!!=OKewXQ{r)=v65}j* z#q;SKX5kw=PL0t+X#nY>V(2mor#Sl3ox&cw5b&nsc7zg{5lut8z za}B5i*^TVRu|b2EMmIi&cC0km&GEL^EGdRu#PuQk;^^jGRpKgi?TxH%AzpQL;3 zkAK{Tl`r%lcVXtjl4|#>^VpFg;~UMIlpKK0Mwx`f8jPb;c5$+haKY;!5$cE&m$1$i zNt_YA2ZJ?a10RNLqnpnr5Yt>v1xh{Zq!J2NYae`FX`2CkX{*Z+r z>7WwQg5R+4@yC6ftJDeVkcg3An?kf6N$#5~-mU0dZ|%8eV>Ey-($55u1E|dnw+f$P z=%Dm9G5)?B+O9ZD#RU07doD_J@?l?fR8=qx__*hPWVWOpip5;UFhk&b&v4=~9MvU$ zo7fpZ@nd<))xIu!p~`X9gk+r|k_T{9%cc$l!4dP}#=;xavqtc!<;|rp3Iv8ITAW(p z6<+uBndGf~Ld$N-!MbkL#+C%|j#N7RFMF82>g<@wMstbAc3ZqoP>X3_Y?mYQ-;2>In*pI=3O>05+3MLBAHE zce}Ps!bqS+x$_CDwGZ>janq$$Ew01uWOEL|7xPwKL5I2ekBOnQvE#||fmuDb; z-=dW{Sy-Kg3poq0ZNG1=Z0&5T(U_^G9fwN~y@v)1gz+f^XWsQ#Tj{yU))Yl6@3VsdhHTOfxN0`S~GPyoj~I9EJp2oy-f=4Iuul$x60 zXU`y0ZNvSU&B32J6~4$6GWcN1AZe}s=Rhh8VRZV%Qbiqt7OI`kKM;3%IH{sr`YfDK zrGjo9W4*VBE43#qQ-rma?m+Rs$x48t0Z>RQa3CJj9-8LdnKpIFzW92XR-;%1O|oG$ zYp?xmzE6e4C%dHPx6&2pp*3uiB7$!`g<#hkyr!CZmUn}!pXPuZIG&CTs z3q0|3;A}fgTQ|Qq_h1c&ty@PuUKkdqqjB>`INeP6FGpj+i8E2=#EIIn$dJ%YLI4s4 zeCd2Dbv}CZr~dfME_EX+i7OaP#-dYBn|}M%doHhfvd}8#&L>fiP9c;+M=RB-q(&$k1F6(vb@x z6$I7M;RcmU4b>OzFiZDGMx~V!<|%4HZDJa#0c8|s=J_IY%R5);BOcHpH0_qSC#P&~ zu7!hU1_dt;t*r#O}ug~1KqzPAyg7I3+MG|g`8zhy?h=6YOWX9TmY2JU{lVcH5w7xzt6|uXK1FL>A@)}yQQD9tk)#2RH2C!ZU0RlM zVt3;L9TeRSVHLp5GtKkEUK6&!ck|PJ19^)nY9slOEvFq0JnjZSv{=fXf;oSuO0scEr-w`9P<2o{V18X-aBFG? zNNx4YVpYomx}**)-786kYl%@JN|X)U3p*tB-`iV00y9KLN=AoH3UI`Vk_(zBho^{N zUq<5BmfuWyC2NzROHCI`Xd`cfFx^^I#C@|~cQLOaX|un>PIj)|N~69pvdU=FXT01x zt)*Fp_Fe||AWrP~uq)mLGW*$=Jam69+>IxR5}>*ZNYR)?3`Ds=Rt7A*KKV0gPK|R+ zF!33RcqeP&BIlDo2oz|bbHLlgV zF_5QX!CY_ugxF7z{v0_7rS_N&r9S1`8I4LCvX1UaWLm$5lswV{kTG;bSA;`sqTJ0Q z-Dl*iYhkK|iK^#;w)7U(uHi4-~i>iZ`Z5CWhy4TYkFxILPH8H$i`^{#y z0xi3rFYwd4F}hYoN06@KRJm8E@uBqD?nKH8m(dERd^;p2my?I2WR~wwq+;#T7S`sN zR7>8RI3~gJ@)a$WD&Y_8Wt2s3Et@MW6r`8kwaqnmB!PD$>g3L{Zm0*YZ5*B8#*Ys` z-hE5q)YXn*tdfQJyjZ3oee0k{1j3zPNUMGGG-#hCw{J41d?dZ%Mwj8|P_Tjj{M8B# z!khALY;(S)r8ac}DMH-2EA>{K4q;)!;@}Mve^M072Ru_6kyVS*5KYidFIX6uoiS~rGTg6A>G_6KvujF*{ht{2t>vwW=Bo0_ae zP8xhKwm0iDx5hSeiw~p^ur6b)P>*9CUe$X4yCk3)B0gE}s}DBL&&4gM4e;bfmX3pV z4ol#W#BdGlgl2gFhHYZ(_FH}XzZM3apng5;|DuO6ZU_e-1&QOtk{w5!XlCka|Km7Z{T0& z{?WzVyWQ;FB~`vpa?;$=csh~1)Ni!U1xmeE=><=pe)l-(<5IBeMnzQ#(zHKRiD8b5 zK0MZ%+d7i%>Nk`65^pIbN#SqMYq0{~SpY{=t@SL2qqUv>L@lON z)<_FtDX)4-8Hct-H?24o_X3K?bGe4qL$!C|99gUk|}MySgI$o zK3B(&)7gb&lQCIE?DGp>pO9zt!2-o=w$ZsIK$z*t+Lel_rrr`*E%cXa1J$&ihr_zV+rR3JT^F zn^BkQtOuh}!_~pD!tdBF;()QyBK5mjpGYT--S<&rEe@KREpdfOapOOJa7}d`wCB>)k|)Bo`k31GfoWs8 ztyY?8xh5@R=5PPO)pO6)AF@JkEzNXyJ`vbi^ zdjvb`4wlVMuU<@9LH;%6a}Hcw`Un3XAJ?qsJ&B>Lw?xV%ok63z=y^ z=_>~&{|etVO5kcv+4|G_c1!K<%L--aY}%IOq55GV&WDktF|gqp#JedvkK3_1qTOtV zrq4-+4UHCpMhi_7pB?OQ@@`M7VbS5LC!;4aRqmJdvR1Tck=2vM*UTv=%_zdb;B1o= z0f)uaRk{7SIYqV;K3Xh%&K3QTFvm-N01e~@kmtt|f4RvH7mbh}oS>-IZVY5!JvH9> zsNjrI_jqw!im8^U{n`O#z2Piw&-sjIJqyvvb4!EyZ@L%unX;~3q5Hh4Q=y3WvWYB{ z7KUic=IfT@x$P!jwajfaAO1pipsei7ucOot9cY;LNVjF*w46t5n&A5Vj+{S{Glle% z&IMeHQ`$ny>a&2EmN=ZvDL(I0pB8+H7i`M>!cCl@vg|E5=?a|L#N72Qlz?yS1@&=; z*{*%nx5X#zmbbWBY`I4!+mBxgb`2o4@Ncz|M^CdZX7B=3O2m5R79LemLJzbo+oHfc z;8WghmPWGIrn}*Tug@qKFasuP$Lke-Z3=NOu312GUuSQ}Oi22m)cvrg{jm;3?iCv! z;zshdNL&8NuI=0_i|=8=WQH0fJ@>b;$`jy^ggYUb)IxD~$)2Xx(Fg)z0cma7(4v3Y z4u?AAZ!F4paAj(P@XcJ!%Ea^hwx-&}n@FF#j`Q@)11iqu409+%_%nAr!A2=xL4g-!m$i$FRBQ!}86WSGq^c@rDic_oq_ab+HX zV0r1v?Rl(l^#j@bS5I6mlmm2HVn%hu=bh$g2HIJ$-Dw8)uYYU0-X}iHCW;TT8|%VE zIn=qDCZlR9;@1}OA%WwJt=4>jX%ub16C%F{Lw@P3Z(8)f68|$K#8#EZAb* ziF2Ct>p%U&10MEjvGAV@P950byVCyXgJHjsrZ3zMKEy>N&ZwAvA{abzFaS^v!bThD z&Wq50HEyij@Hxr*PIVPf3R%5Tj18|g98Y;$z1`Vw;B%_;i+*D^TjU7lYAzky zTG50%2XsY51pCxKZ4M63XxU%a($#K64mw)x7H0sWGSH+Z3k+2@neJpi8alFx5*sCM zqAjqWs`y&x*|qvz0~*L#njJjj3vy>uq;6CI$5E(G=Az(+t`3#PC_Rc zk3|dYWR#eh)=!KDZwtKHRoPd^bAPePF4mW47!HMY*d~Lz0B|t$THUgZc#%KA(Xt)5 z5$uwbG=72L_>;#$lN*80h88y|lyZaS%(WjZNGawoJr$_;;PCPr8<@kPTqsHYUa6$S zsobGf!e0tGioM;z9ifz0e69!mV#0nwiG}U){er@C;w^&8C_#JBXt|t8g_-xg#U?7P z*H{e$#tK^Iv_*tCy$u;(uRpfb*~jIeL1 zkmjy#c_zL;?3ZS=%D(liigHu-5Qmi#+jYS=B9hJz5$o9>`?^Kn_1oS;=GY6Er_6!N zE&+X~pKY+&g|e`Tg9sqyf!uYRNO}v>?`Z$@-w~j$$`Dseh{V_0R0LAl3}`ytG|`CN87fR z4sn1Yup3>2{ z#EwLwAUb%Fphp~VLeu`OBfI<{`wS(7UqCUfAJ&_fq|=_%w3x?Uw8i}EW zeXe zqP_m!10qw3`T;ed91ee#lp(YB#!vX=PsO%iPrdjswV9S~l)r0xudDF;?)6_xv~(BS z!rMMQSkc*F!JkNT8)Ik$WOQBVTT=J1e?!9-3sYwr6^J)=SHX@7 zi@!^6d|&h3LE-Io1A^s&B=v|{8Ep_J!j{CEV=uT~$=xu%D>=zy=u#Vby;tA!#G`>R z!yLwTFM(Rh(X%X9WgT&{r<#SRd*sPz;$^UeAsTx+n-BcOS_Dstb6%{vi%JGUJDIp;V@mp zRzw{fRB6i1ooKpy*|+0HaH}cI&bh2C0mn?tj9gdR5|}#P2;yh`-sUuieXhMhFl^uS z2S6-`|GtZnd!F+5KF{h;wWuoXWT!E2fly43xOPNn&KzMKpb7rnu4_Uxjvt;-4s;k} zG~^n#bZm-WevI^ouJ=7*l3&*6?kY5KctX=)ZqimGf9?R0R-YD4aUB*K`p`m{HNi=u zlM_15WM0>=r19yTjKV3R7c3Wt!ygbse#s^?RYEX61L-NDrfQ-%=KiVTdV6TnmK?R zy#MsRNGe$x0+F@md~$}M-DG63%1*zU0iw88e4$!=F`ArqY!7>_?QTJ~H&;nzwBf#h zLlpS3Qvx;Zk2`iU#9|TjWqzgtC$&cM*xeUNwBeF)qRKV>&ystGx6yj$iS=8Y98?wR zc=HNrJ_NtF^A)|e~jm&K3sWef9 z%7?+;TSX-qQ{Gx~pluQ?>gwYwaOSbR-<8lmp~U}y&#{l3=v=%-U{TG;crfpUdF+RO zto5`Trrq+E4(@m+H84gjRrsY`d| zjlF$wP0UrT20)~Guu1c+L%68O&ox+eF{9e|5c}$BQ%aNgMX;FbbU^uli(deH4=sb2 z`Z7gx#D9bR;iH`;nc~Xe5Zh0aMFLZb;ZQ^HPUiZSI*PN+NdV0K$cuQ7nzV(fGMP{bki9SQ5)eA`LUI_w@fG*2H8ryqhvk~v?ycf$*BwNn9$bY^pOk97SvpHu- zPisyXpLm5R=o)A`cQ-&Kg`=hI|4;T+-FZnbO19Jwfx7WYi_O;^g+ic2t`GP}OWH!( z>z3?v)9b?#XDQt3Tc#}U6prTBWlNeSEDW_w#Me~31^e0MXXZ6UCA(|QnG+_ijT)~B z)(LnxJWTFhrU}s19gLQXFSplwXV&a{t$HVA_jZ7RjUpmaq>VWik|36t2nqsWR5Ub^ zUPq5dMSo!d=2L_)X3*D!rvL9lD{Vl86&1nV(}ej$5Atu$a@Ymr0Hu~xTS)j)Dl zx=s3^Ei0}^t;OHBh?#mpzb8Mq%XCHINO3Up+yQdSs4&Slz=`cY_Bfa>?11guS>a+g zuBxe1;OOJ^b>5?ErCsjSkTk6nwpqDs?2n1x?{l^PUmd3Tqkx=U4YUo(7C6e*3eN>U zs({7+ynaubtfSsqo_7zxi`@QD{Rd-ZwR-x?-HNH!f$HLTwfSS$0`%P7lZR;W!)YPttj+lK7Lwz;s|AHFYMwUrEXWs zC$8AJR@kC*S~gX{lI=KHI839x3>$AG9(6mWzG6{;Lu;+y8>^%+%ANg!Div;Ma8iL2 zCp?u%Yzv{vx!JoMW+W#SKFE37qPU_z@0Tc6Z)XCv1oG#33@{+>><`Y-<}D2G2(&E< z7kCvt+(2$DDhXLp$YY=RCGG7F)!@3ZkzhU}_)63_qXi+sbto!09oM&KG1djVxC}Ai z#g<>Q0V>$_IFbLC4COO>?00Edfss8eNaJMK<#G;!Y_v< zL*JicV|1{*(7tGhocKp-mS4$3@%TEqH^UGJ1dJ`;F2hjcHK;UKUg(9@XV>BNH|CyY zvsfkjadPunsO!qg0tqjU!(1Tb7-pq74RrmXu`4`#^pfl@KXw$upRKb-QPqEx7(TA9 z8aiIW*c!lEV@Byy zVgwFTv%W{=JJDxnMl_U|1j?U3{{c-QT+(m!4(P#@0v!SGHr#k?7S%;Wl0YJsDZV$4 z+O2Qf=4v}G-{Eh9&Hi5M?GXzVm5}V$TzQj@XTq=SUqstmJn#xE+QmCoBoEt8rt3DP zK%et^clM7rX!`jB8mif0sHMM{9o~|4ynsB$4(7U^_knrSb$S8w;Nku0E8FIKZ8Pec zzd}GKhh}%Uo5`evxt_0sM@r{Lo%uHNMjSUHm}b44t(UiAv?X)cU)RW_?Ro9C0HKwd z)H${OdJA5UX2&s2t88^!flpC0{0r;0tf}e+eUl}!>K6jTRJr`%Ji(FHAr@7m?X~v> z;e=w`7wk8YTaEfmSHz7!t{x+lFOe}(U<<~wg6J^}rL@Clh;wo0$vGKX9Eg<{Iy7cF zqh4bq>;9{-g3o3f5YZ9wR__BQClIx*nW6cose&mjg%_qI8>p3h*K2?ZOb=p{3KCZWlX^^V33QQ>z}X1?)1rtoAKjHNFt-1711v3SiK80QUN3f zijPxKySnLBVQ-0BX2@Mi9pozJq?i?PLy2ch4Rvj@*Oz4WjX>X{(S!9*ymIFWeXlA!Y1U-wMF}&$fSG zA`#2V1V@{1rMTP@C<7{S{H>)LrRiEqWILX5{@ZZ>9M>Z`Tv-avg ztfgzT4|83Rn;)(e+Q=#_c*(E94s^kT5aYc*Thd=8 zm$#@35gXX8gkq-aav@}8l2wpkBGM)Nk%rZ+mxMoGm8IqQ3>2O=PmTSx%9p9Naj=u6 z=`TV@OA zw~-^9Y}sgNsK|wm)qq0Zp(7-_+xF6-hauL@E!(b#y1_{zHA!}}f8kP$bQBNmy>@R& zcKa9YNR7Y>s?0LvF*k#QHmS3>56GTt5er~WE>5lvEF@ep`|A#=2i5TJfvDGx`H2>I zyTYCwS+iD>dTb>@@`ullyz?G_Kkf$xH&96}z?s1}NOr2cPVQdiD=rq9s4jfyMnX2| zY|Q9;-GFxy13l&P3k8Kzw7$*Bx^Y3x|YI=xbF^mcx+r(FkGo! zIR6^MJak8q%)x;z4goTN!)J7*n7h5mbObn#KzQ1Fr*@sv*?LY(?84OefS^Gprew6P zpoZ-rnafh?Iu|#OM{iBG=`;>4}fM~(Gi4sf8}T7DYjBJ7mfp90VPbV$PG zLwAg@Vnt%&iqYO<{5a=EkS`4hgej;amR&e3c;P|t)Y-UxaZHW#uN;Nt1E^D?I7~XM zh!gYDl>=Vh$rBr(6mdQ$IY<9N$8M(Mx%TC8;h-IUT3KJ|{$Gk3GgOe$xn-}VfA4YY zjhmVW1AA{){Hh+l-W(dMQ#o)YCMrCG`GkE@$hKu3q)rTJk?jjx-KSH_ z%INfBjPY)wm09>Zk=!+7c(-V+zqb;k9rTQJiGmc6@SiU=|5o7+Xx%>Q<)u5?*O)aP zFx38{dk0$Mk&?psUF8mwFv8Y9&Q~cETBs+rh#E7kMMp(coB~?S zGl<2WER576)+CTraK8u^lQ#sY?;rFQV-ZvF0SgsIo($zGT`@@(s~p}k1m5lK+=R8$ z!k#b2xRNfJVqD=*VKWtM9%pnGH+X~RWbC3Hro$yb9pn6!yynFa)EqMB18{-|FaiP! zm}wZ&zql5t4$LOd$*=&*8>&q0Hvn}E zSl|P#L|mlWkDJ$Aq>{cS*+m)d!(}wYxklt+!!m6GVfV+9gt{X$S|J#{-5)4J5`PegcfwTj{+R$ayV$exFWdQa3y+b&gb8A0B=lc*;e& z>C6tnh-S&nUF7Xg=$&eg^GSBcA+3@kTss22eeTP@BoMy3NTN}SmA#vw9}DvGkk-~# z$g;2fcrIL(LM>#af_#4UE?>{kyNY)}wE?2>xkbi{^Tv8zIB~SA{3{BoBYMjL`1MDw zQ>`&GU8hj0$nPGn$Qf_H11kBtus?n>6cS(XwbZ#2N=E&EMf}>7feew1xaT#Y4O$t~ zsrCA~iryJnFyN-O(VA~dnD>|NQnS{b*o1i#O*7>6mtpd$o|wKqb;PIbaEHxO(i0N? zTHFSnKFa3zH^QwilP9X_hC2U=-TJB73sKLYl5{Xd;~h zB612!0mJc^JiGMera_9Hze;s_x-;v;z^@yYYH5DTvvM{+`&ZKzBzYJ1%3`` zNGov617vX4nFxmWl9$s2EMZ`uAho!V9hlZv-w3kYlReiSKIAffv!|9m)Dvk%GSsi6 z=sHqT!&$I)^SuTPF^wyP-QUe?)pl#{SQ-@WkJ18z6@JX1PGmJN$}c8FBK7xi#fWQb zbe%8wl!5}dm=o8T-)jCOZA8OL(S{pOM34FOfaFHNzXW-IvR4ZZfb|=x%D+Ul#R@mzGpS^0?+>IOAO-9 z#rtL3M<>@}8MnB3WR6}l zVD?WrntNc)xzLp}DP8z}S1I-?6eT8mX=is!_CdSC-?n^PkCC=wago?1Q;m&lYuPX3 z8A~*?{b+4Ny&&ciL`2kWG22@0eMcXbJUTL8+Px!d$|dGlH9MCqD8ZZ<9Wl|7AUOCI zQ<2!&k&=fJebRHh0U+T|Hf0)AU>%7rQyqyX5|Pd00nlD81`Cep|HJ%`#*?aJ+mlu0L>Qo|Y#K zL?DLU6147l**&AfRK`Hf`wf(wXV2<{4wu|I1!fU}DgLe1T0Z>|xAuPYO?C3r+-vB1 zsxMVTADdS1HN*Vhrn*r#8hWg1o9I!aDD4-x6)%xxGUx1%1lzi{i#@96bJUAq(zWij{?aK)_TAwzzZXK64?CHE#(*B!AD5E z{)Rq%H@giOQjuC9xCtZd`Ts+tPXEX3NgU_rhAVf18qWXU&7M#|oGH-;-b8C}5HaJ9}|rDwqC_a|X=%rIu|LIY$1vIXEGk>Cd?Xa>cQ8jt|ZzyEy~Cfq@F=Bow;TSx7>V7e~q*Z$Ka z4gTVko8XjI0QW%W9nj^BMw(vW8f;*1^KcNikhuY-Pf$_5abIjSVKD1$C2#qVbD`FL zLxiHj>aXc>Re$|4G|(VOyYL=|A*sD^XoWObe{ievWOweY*Va8K*Kfj~~l5;htBsC>obQm)uJ8B`5sbj80)20-q8n(LUWJsHll z6V8NiY3xjSf{7l*IBIu8BrT?89D4CH?inDjF=Wv^7erh=Ef1bMKB6RNLLTb&ERVHXmNfmq_^-* z>jP`YV##!w7okT=e*4E-l{XsPc`+g|I*lO zUipRkwwAa*HhuPHcjx2P_lmAx|MwqVQVo}`{#)*s)X$biI0qGZm2ZEfYd5d*ZwU-y zd##`~mTk?5s_^a)V2yDFEnJ`BCU-xUbr^M5U{zP>4Z7L15C*z{E28x1t|VxQg%w_upV#j0e@T{46I-+Agns0wf@gw7=b`` znZ1ml&gY}xxdxhsetB5u^O~?z=FZd`Z+#&!kQ^psf`7OMRHyXeZ33zJP@g4B z!Lo)jf^P-I#D=#|sN6^6x9LrdgOi59-=IQ7ESg(07XWj>&ySW!-jzA@R$qo$fMQHL zWdy=xzopEySzv84aDA*eFQ_A{?Ur)wgDDH93ot#7igl1AoxAq#g?KV3p>Vypst9hx z0B!^heTcQnKq{gjVb%1rEH&JImIh9Zqb(;KdvhmlMT~)+9^slC)PYvO3j*2EIacC7 zVD>d3@cos!sWsn0A6Z>R;bd6}ly;$0NE!kQSgWD`eH*-z2Xp4O=OJKi!Xyp0b0&f-~Ls%8t{y zeur;TF1DtPpH~&;+!R}ak#1_;J9P#=xth{`FHrXbbmUBQ-zIr@Jm@bKReYeh=`|?0 zq$vEy5?=<3s_EiScXmz{PEaRCe7G^u?ng1u>{+Fj&*1JIO&poppsL12TYG)ns;S!u zUB>Q8DJ})b(r}UTi{2|yIbSfMg95rZOCtM1&11GNuT5J%{oU47r7>@5c-pQb5R6~< z)~B-vp2%n#Q%4&dNk(*VkzEh{FstQ=XxVm)9YllhJN_2lSmET|I{v<9}GvPnR zdcEhLv7gnE?Z~A)T$$eRXYB7$t$5Xohi6DygPo>usr|s8xpJ!~>+`SfRMF_QfuEU8 zuwQ#0f!DGp9`Pj6OaJ}FKwcw7M zGX2%7=~houx|%;pX!qZ1>dRudU_6JeR~XU39hT=w6-_FP-7(|iu1$g-R_IWN71c}k zIw@x*G+BWPu&Bioqzti@OIkE{L>GMWtqYYu8Z0tW??%{7c}_0qtny!bV-UlWHif!C znI=W=mIC4;Rg)$#9{QcK&77)=>bR36A()JqzAuWMq9YURawHse?jisp_V$!{bvQiq z?4fk>GVd1ttFi1-2-CBCnQkywV+V!@JpI6MzhW&!Wt5y7Skz7-AgY{Ba;U$m{=MM< zun{>nt0y-O*@~Y;Lhop1i?239ag&Mts#Tw%L3*)9@T53O z@PvG!@87|R33smf2}8)-K~GD3>3BRV$ZA@ySHNq(qQs~So~6v_3Gax2%mt>uMtpqW zupurynj`onWa9}#hC_DQ06?ycGMOs)Fe61UH z*?nt~ccV3(0-qGeN z9Cc-uMQPtQiR1S=&_K4K8HyFR_sZ`qc2E^M8Ts}<`&m`9MbM_e*l06$^J7B!7qp!! zA@o3wyW8L^^luF#H|h-fZ8s7KuiK97Dl17N8ZXs0b%;>upn91ciNAW#FO+)J=&Y_x zah&34(VOu@y~KOex9;#OaV1TiL|^FN{c<&?cv+E_%TW(6InO7{Ydd7#oydMOf2^o{ zk)z#aa^7(--NMn=Y5Ly39_e!He&+5bDC@0cR<2oT?{nzr6QPC}a9dY{sBYrFZVNu=z4(`%qviw3N9(!4{rX z#mx?|kAN7gh}L|=K!di|k1`nP{#lTjEs$SVB)7{bt=-?NzX`T=o&F9E^pY(!6&O#o zwqBT+>F0)S?OTn;tLN7S(9Pn6Uy|&Aim<`kZ{1E6qxy-4XE_laa<%5rkeIaStitEd zvEaWtkJLKuah1!HuL+<>sDhW*diS7p6eF)2eHm{viT=!~P_ek{=wk&-VsrRP$^C&x z0;<}?@!Gp0YPXjhpi@|N8DOqWAoM^e{p-ZCM|o-*{&)o2*WHpZV>)UIb1x`Q6(_fe zB3v#qup*pvfoy6C{8#=G_#9d#crH%ZT#rr7#GR0Li35_z@d}7~;(&BNZcfLmbZjTu z3~BIRUvaENsbqBmmf-{VGFd7qP==kx#7NK~N%i?IFSs)TAr~G9TCz7A!Yi4jNv69& zYUwYlR$=-whZAtnzGf;S#d;h9r^F7fNJbWKhP!zItwID3;3@s}mc$vD>f&lZ>2{QG zESA(THJB4B{uu|fmP&3ww24I34tjj}`Sa(0R*gL96~)p%Rj8M>UOwr_&f?58=i4TC zTl_pj7lqXzt(A>MWxYF;Hu?S|bBD|R5%!HWwu_kwQVt&xva^vGqxj``;CpNi=S()t zHC@{c_lJXn6_gndhU@MJu04Bp{(?Xg@g&o&ym)M;-rJ9dX^(mTEVI7i%2~#%ETvfm zZD)8DZy9Xm3O&gv~JsY!leCbPv3EejRj%vR;>rd)5WiKk}m zbf$D1db(OpH+8fk!|Js1%N;Qq>OzuhH@wQ{BZemliP>S>{ z$Z@T*T;zo5?T-j``Vub*KWe!q!0{5|oFhn_v$M$$6LxG7?VxT$4mX3F7ln~(kqXx2 zwo`mS%#$a6%eQ!SXB#SvdbogtXVjt{uK&iUNC^jHXI-QdHjKo}I<{rT57;RWw(}vK z)a%!9$)gqMiv|`jR2xrqiFV)n_Cd-v18gH)Z{yxzPEEhIlBpJg7YDDpTHZmFPLfi#FM`1zFDFx0C31I7pi|rPm%f z(7>bxqzFz)a)xAW2Kc#QdP0phqxj`sv;7Hq98C&vx*8Aav7?o1?{XZ`k(~f4E}NfN zi&w?n+(0;f#*y#8;^AkhxgnaSd>X}dW=4XHX5a9INhDRl~ z{~drdI6ekHcRV#L{&^NsdF+S3eo@tsnim*OVKL=74wO?m0I-X;!8J*ZvtH3kq>qQY zVu`o);wSkEJ;@l@&39w|Q~JYi{n6k&%2BYq1Ppb2bCVW?qV#k<&W(4lcz+l+G~y5; z8cg8afUtV-G`$GDOn%9vUS4vx-$YY13$n?3_aP}wRK8+^YZ4@A!$_WaWSlW_*b>6k z53(Rrvm$9{?1j_v`*$@J_6^f7<2416<0d3{#u;lin`UV;~4y8kmNFXe4>#4F0 z4<}DB9Sb`a3Og6Ny*+G!#nj__T**~?&ymo+TO(C-GVudQnKv%O^D*M+2`!qDjY*W8 zeA}bE!ivF$E@lU_kjo15X9>tmaxOcbCLAhHYI~K#+P<}aUKQ+O5e0T~6F9kFtKQ`8 zw^Go5N=+lxc;anWL`N-|;Z6!DMTr^^R}~tv!0aPe^JBjk!^3-tMX&+aID5{yAEkXJ z%5E2(W9kYF#Tnn31@dj@)#EIOj19f}Lodn-%|5KH79o z9c6UFQ+$n7mPC3da0Y*~a}-N`6XgyQ;Tau9`rC7(MdcJ_Pq1CObL1tx_#$oRgM2S~ zNB?<4R?vh{#;3RQdiHw%b=5Gmqrp!G2P)#@L-snv3F-r|#LiRTo;^J%0gQtj*5Byu z%F5T>P~+znK)b7vcI<(_5UF$dRYA|MlChsh7w6Th-@)GoqU&D(dLSEEp$G$c5J0sm z6k!*qS1Q!80*5IP9pTExi>ZUDWF5G+kYmrWip$3IgtA#CcbBjjUJfPUzXrg5M?`B5 zoCy)FFHN55pm%fiAkWj)&y&|=CD_&s0-l%f5KdP&)VDYULm(0d-XhB^p$>zTO1OaRL?Hdn=qdfqXGp(u=XCTE*Y9M-?_Vy~?}XJN{l`xTKiP9fgR=_y+CW1F`C+t4g6W_{Sj{5;n(Ai&h?6w>nKlE9phsckD>v12>EN%}3qd zt&h+6K&*n8{4&;%bm-6@5S0F`t_Se3JnbC(?MUQ7Rc1^{4<4wCqU6}GEmWk+hGZwJ!Rq4G+^zV0s#odbq^hC`HlAl4YSXz9DJ)g`hY zDJ2Ph;ez644m`y}^Qx(IC(S{R^@y4=G)V6rq{u*Ml39xbKb3D|41q)I; z*BQqvF}~cgWeqvDtSJq8O2mU3eJkMg7FLKi|D|j3&xUu8`3ACD3N+~6y$!Gdb?5I` zMA#fO#|9MWBIx~NW5%iEA&k(>1&sXNV_&DN;)(_$>Gk6@1>fNWN9wULI(%`$MvnH- zuM6gy5zMuMgiZy^QOb=e6bWHf`+F6ZsW>j1*XUn*C#|RZ_JI~?Dg&O77;?J?8(^%u zBHGcFJEIB?ZXczm+>Gp_t|WqNe*?V#O#sJzro64>VRZQ(JQc-vN3imj8b*Yl>MM9# zligJkLpqc)(hJrFz@37*itxy5~cJ;)ZFj}LdJEq1aGn|cthBjW6g!Vtj&&}A$z5mv=ud(1nZK~Ul#9>deE zrW|zos(%B1WrD;+DM!3gfEM(CQaydf+&@5bres zzRSWlmvJYXAI@U&=a9<0o^$XLJUWjap=r||3QEcRC*yj;(aaK0qrH29w%If}z;4zmft3(GvrCtKm2aK>#-Q`@e3<=GQWo!JgOEns&k* zd|U=60qw{j#DJSxmcS}u=7`N=1o>}Oz^w61Jh7#3B}hIKm3b~7BMA8yH|gHO`Tb#r ztQOUCGO8}iP$lR_B0%z+CbKa!DxUX>*Vs8`<4gp-7%5{wfw~?YL}h5m-L1nxxS>Cv zo6K^H3_qoltad{W6bl2U9+xUg00@&A17Y^Ff~5+`oAB_TCQ z#|_dZ@tXeOu3&oLy0!{a3-S*0ZFQL+O^Az*lWg<;VQVE}6I*|*Gv_AFeV4Ib+<1(7 z+XbOes1(j*%g+})#$wNp$+;u};8vX5^V^!dy;CL>II6ZwPB+5+@HHfgD$sRxu0@^| z#BwcOU_1W!W-XK{lvv|uY#pslQ=6a$GC3d2i1@}z{JIl_P(Nx%Zv{a$)Zv8>G>crb^y-Ww@h3plAb%J#-i#K5p@4KYu6b{Lh znMW3kN0aO>5$~y=_3HhToAv3neG;{ri>3Cox;jfZ7O3#)uxsK4oLo)UW>Fz%J{me$ zfatg{G?rJFiE|3Zhi(gLKNSQ=R+JvRIjh2_7N;B@AZ$!RW+?IJr>BoG7? z|E3kL4>(J&T@fMmNYKkBS^)|msw~|?mKeKt0Ei&2N*JY+pvfPd&RmnaX(cUdqrG&B z1q)V6U>o7Njn9SmBWpEq4xeAYaH5$TwpERhbKe@{p~XB44gAG>B??1pJVV36is^z^ zR?NgmhLUUrDpXAOZ#o9koX|N97@K*6xphc&j_A`z48B8e_*Gmo!rWgjBukWxsttnr zBFBo?xYp+l8*vpZXNa*uY$p)j4M)PNxAJaGutl%$nd{fKqB$MufM1HRXrup+M6j@O!V-dss)aCpaqM@y%;5V#UlHkcV2O~1X>Hm zJZMenYM;8|p1!9bC7(K`wq`O8z-AE}$nSZD4*&+6WZ)~}ennYRT=T9!)X?I@2oIfH z7$C}sT!1E{AtVR0ws^-9uu|)NEY;M-ky2=<7h~;}$4p^!22OMJlR*|zf?Ly9&$;;^ z%OnnLFw0@d>5n-amT(EEshEhKA8a3|SpZ)KfJ}_E-@JsqyWb_O$hI2-+iV8hCb9y0 z_Z~C~E_cdisRcjqdu*0G(M%#-d*=gA?uE_ml>W>vY<@hKD3hd6W<$B2(-Viexg(0` ziZ?C(9UG-TA`j!uT8he()r^~E6oXk9F_y`^?~1L^fq_kriH7|62Y%pXQwQ#)R4 zV|JFIO}4YYwQ-=!3tLxM!P2$vNy79_OP*@Vj26rac$Ev zynAq{7D!8$;J^_vuSyYL*s`-h8emR%elk&;J5pD}EwIESDlZDM;@$laq?^EErsZ#V z(9oLgb#?zkhRbsViUKzh2$rtsWvxo=RH!=_#NsC}+Tr~Ta$zypP_f4v*t|0yP3Q+a zdr(kXd&3(MnaY8HjpprYAUh;e!7`m2W_ygAfgw?9F}Don@VlCkV$N9-G=PGRpF40! zfzVLtsC=$40DQDhe!Nas%8S7tE1_~_sLSP#&@=Lr02b}JJc7EdmvvfFq19(bG!Vi1 z@1C^pLXby+Ff+!$2s0{%et!ZQ_vBR9$Wug(qU3gU&Lww(QkC~a_@6r9)w{yp40Y2L zRI+cBCbl(oQ17+-!_TGwzXMSi!T$<$TjVeEv1an<`U< zAiSkwke8NluFXO)lA36+K2XaX&=72si=z2-wT@#yV&#b3!#B0ouh~Y}4C=Dyefk_V z1xVW1z+ibTK%d)?=J86?mCX5fCr*VFLbv6GhM;Go*`8x}KS_;ZOp=v+i zZ<5oXo96PusnB&#oSSzM<4*u#wI{NMUMc*6ujRh7KYDZ(_?y=RcuZ(keKh=A>!a4X zLSJrlcyH$uhyHlW4x#d>CCTnI z=Bpegdx4OvSwb)PngJ?m8~Xq)Is)AIv#6I264f`AL%_7_5pW}cV?9lyW>5U1N2e5G z>Rt_A$sPPH0(4i-N%bJzmE}lx->Ax^k5$GCuee&U@=}1 z4c!dLa~rEMZSFt}y6q}g`VnOowEzGb43ydKI#ECtled=QniJysD*^vJJb~tbBzw6$ z=TyCUn9+Lv4h&?5J>j9APDmU9_m#}v0A_3XB@P6;XEE7IA$_e#k>C!$JjmrmRtJ7| zW(1XkU_WODxGpRjULG@KF&wJ6>W5o&{;w?>{RZTpLbPbu+39O zT8q}b6y=`jm~`n6%I(YMB7Ql+LjM8>Pq4M7(;D^wejF@n4SJ_INUwFL`AKG!9&hgd zdd^phK=?sa92Q*~!Ezlk+7d|KEZCU#aInkzj7(b=p`B)ZBatgkgec zFFW}*W+9R80E$Z***pGorjfmM3aPEKB3Eo=k719Z<5{j7g3D_`m$#w3!ng#=;E|rv zDPWzVhpbb6>Va~Jc~`cAM7|G!;R2pF&Z270!WZ3_!L@b0_Lf7>Y6P~zjz7{4Odli? z4))XNj*h_d*;t(K+7)jzqO}1CAE^+TZV$P4Fe{khCEhOs9ja+XPq#|TOh|!b znf=aqqOxt!a4EaUJI-<>&C}iy3ss0>@~|le*C$2L!h#bwf zH)-w~#M7o*f!(D>+M=bu(b5}6KqwCAc;js^e8h+H z@SvGy`1y+Sc-7&Gp_aUAwiikTjMBDtMHfnNaB}U=;@3x8PX8UNAA8KI zAD^Y{jUvR&N z6j0@Z)ugvv)puW^!s|W_&*f`6`Fkg2#sQ2vNN`W;XnXVMk_Ik2@RS)|)R|aO=gWC{ z1*;-=m?+%uIBTr6$z&N<=D{K;F->s<3%3H;v@w4gEY={m#n9^&-|Exdw}H^-_9jiv zIaMQzUoWR+^kW}9o=FrLp|9O#dxNZAm$sM3|V=_lkX3pK*F`#$^TQ2{E8)rpT=fl+HBh>LwB8iDMNSA=<91k%C zgHWKK#fvd-tR&W(6%N{*Sx_3iN!n8dDEigO&~TIS0cqfa8U@Ruy{GLMb-XZCVu8sf zmfuiBsMr+<HB2);Ap1o1)p$h;Af<=8 zIM?+Tll@-r!mA&bZ=sZY@ukBMt3lBnTh{Oj8+9zJ?TltXYo#N=`V?>8<5ZoyGhBjh z#(zLQ{{V{rOPCgDtls?g-WIo25-=}x55gwGC70y*Dxbn2FyHdA!r7^#>3aH zAOTEX#%Nq4_>T3t{#w!+Ror8p?*db^lW@(yBrCM&Me2ka=YXL2ZiSN-edF62m4QUDejL%Pc>{KN(Muca@ zIOP;99eMU4;NV5&<-40BbNea5E!j9R{USDlNX~MRl$uy%-gpH(;Sx;4p&%R`{rQ@0 z<)5n2sNh92&y;Q&8u}`56Je7QEXxIbD_Fi8RO?qNkp<)xfLjQu6KH zT5B>T(0`rj(88-3uNh{Vr5<#ve_8k77*zFbye9_)&H~?4M!B8&D)w*i@bvvhos4(` zPt5441)~iLDcl>POTd2nGhX~&rYDV^V0|(%N%6zJ+UfpI5!=l|pr=Y4x|}99zQJ)U z@s0x?rQgkYAi;_HQYJr7kJ;aXht}!)&T|k-9!~xQ;bcHb(uxwzJKS#we((14*bGFJ zsh|5QL0*uMn@YHrG$NAonOg2ev1RxN*fFnNewRCGMgcz_5xUD*=abAnUr*c5Hq*OB z#&X!mki0`=mq)M!)W+kHh42|oZADv-p*Qk!Y>u4wpC=X9gX=O!{abiU*}d+bwyQ;# z@NIHbWwGGE|8TA&&t1lJRgLAf=+zXu37IVmxN8SZ$j=cP3MMM3HY4n- z4#w&wrZk-PVh82ft42QeM=~zCYtYr9{&fAtmNO;{$wrG2KG=w%u8W*sb~QhPuv=cS zhsLYt=noAoKZJr%wZqXMNRRXqeu9iD_kj^v?#?n&xop$rTO;rl&{Q)tE4K z!Dt>N;_-rh4xj|;Sz*NkiI2jBG>G$S@SLhj=u zwKlZb{!?nAF?m5!TY5NIH_mA6&8={GSF&5E>xNfA?$nyAGo>&CV>5m<2N8Q!`{Vlh z@rKj1wx;B$o3vzgdND^k-7MTJ^-6H-#cC>ayyC(0$9<;Fv#``$1H@d+67>6&(qFr4 z4`~n+b{+Kn-f8)W!xaJ{1u)Gi{#efO)_)qYi{u;&9Xejdf=EoEw--b+xyO~>84dw!_r;`?fgVNoY6QJV|>GhApExw!Y`I6 z2`#n^H8S}!A!d7|)Fa4sA6U_W#|RY)oJqeb@zyNpI1}6bzq|bQGt$Cn#268seUvnX z5c%Sewu>~?{mVarl27^F|5{C9jpDNNbs3I*=bROZP_z**n$NRg#V$TE9JB zJ9k*Y_vLreF3Z>UQEPAGSHh>%UkP(9&T5OJvCf;N7H)J2YJQ<%OVndED4kY&8(8qk z(HkpBcJULX;j}`=_~lI79t?}RpL{C;UjB@NM+%xS615;{*eT3p2`pDy7WyJjH_OQW zE9hT;uJp0hE77$yQ>gj_^6b9D!VbEio!+L$8h;Uy8h`d7VV%i;w^%U;g9t&R&&Wx& zu#=3 z9ir(eknF^oQqB9O6{mRBM^1X(4m+i>=+w5Yz}A7{*S5o$>opM7Jb)&_m&kvhX7lg& z9{w%tdR@h}FYNIDt%AfH^uV8yxJsUA@Gc@}EW6hH1Idm$R$+J`j_5VKoA;b5sQzhw zqGsZ1F(q!c1h)C~;`bcXF^EFjhTFk^9H|7<8n|$1S+4?D6S{zg>jkxn3?p)LjEypJ zEP}je?B>#%KSazp)BO<4ynmmTnwW&@BWKJGBe6cCWpWg+|$R z7-cBvmAe4p5$g+X_HlP2k8V{166ZU?_dTi5E7I&OEWk;lFsI&08udit{4Yg5?hDYQ zY`CL~7sA36<~btXWe)JA_tLfl*6ryuojuA2?kGByTSqgOgvhciY;9B*w^q;QMoL4F z7R#buqC)J^EPx7LjjlNm=b$praRTmY6WkTaRGnnE%+O$359&o) zZ&^UV1eJW`*x%M-Y}L2$B2fR!9Bfq#)CcnfB#mG>99YjR*w(N+Z2YLce0p;uLv4eu}#2xv^e7k3d&$Qxc71sv&0 z<9r%JI_l1!zvaF-98GcrYiZiHo2mv!+y^I~DMbG%?D=|gY&6ISnnA!oGox2|8}#XU zFP>2-v8O#9K%~GHE0?f?7Pi%cHgF{b4|s(*&|Z}kznpiVw7(f1Bm$IS5DPV`b5%Ud4EyLwNqOKwS3@AH znW<;8uP3`t9_W5HevYM%*eOJM2Xmj|4g`C;ZL^%ACL?Fqs0UuzUG&QCSL|6wfsp2A680MqeGoA{JT|5?f$=1KOBMXWiy`}4F%9C9lL7gISt)vVm71tA z3Z1i49L?rbGCBZeTzB*OFCdil*cWSo2)UJl-D%|>wB#2b0HKXp>;)q@#w9Vo>AtgLFG@QId@i4#_!J@yJ0vE2dSyw8B4Hd=e$s;TnB-B|PHN5pADH|Cug;?p;6 zKM*$_$Z7R?!#0hGQ@yZ-oitzYN=($oIAHsM$2s!admkDic<>$bC$F&?e=NVQzzfte zd}x}y1I*cy&>x1>AJhuk2E68j%Rez(e6G#0>FA%!7#5?T zBD4pX0^+xd#Wy4sh1TS`#SI|1tgt`!MK4`Nn0|ALnvaPA6r-)U$e^nfYfHi6^YCB{ z3ECGSzw!gU7$km-y@L=6sD-|de|QX%wBRJEM_x@2)Jy_}NmebmCse%$u5ji#rSx+D zM?_uc_3kRraq;84kd=ijtLH5j+AvWB!P0qLTW7KxU{0!52uzf%ywkOU({&Rmch3In zH!RT<33&sLYYO3K)&}|7<_|^`n99^i~8>m-=V}$bhw_!xm1*j5{`IluMEXP^t2+m6^kb$DBzX%KV;%Tax=;8J&aTHU~?|kO}OB(@fWE6^_yZO z02FUfS57Vp0`Jq&7?G5_K>8S)wSJ!B_Wt-l4T3ebIUH-^$8uQMdo)kq-pq|>Kx#Uv zsr?+EDH4j^`*+PHCXEe%_g(Q$Sp3D}62IedPC~5vehVc9CZr$nzGUi+4dnN|LPZIZ z`uz%QVe)XCqI~Z(*g!coGQ@xS-INy7n;*A*z*3}ZFvUkctcErz)8x8i=k&V8N^$QY zsb7Z9_(`I36?VnQ=1CkKwi`fxKLhN-V&zm<)7cJF{pK-{(A^gwM6 zISh36_gyXmh9)gVdvL-xoJ)M*-zzTuG7}W|(ewiz@LU*dBJ51X^W%B(Llk3idWFP+d;bJEvl$0=n10~A`ubowb+Aj@N49o17ZXA_91couc0gj6KfdXuGFp7hyjD)U}qV8iOXgu64~ zpwCoJco7JzKl^^`w?ADpYgS$`v_Q-Km%_IW17@14Al4GtxI|7X|5^Mm9~17Gz#6)6 zEqq=D{!;D;+JmWEw-!}f*eWL^EK-I-A@wU&s&%w9-`!cj1fZRc#r>(+pbXQkbFjSG`vY5yYJ)*DDqO< zY3V9gY&5aupVokKzE@F6=W^8X8ZXn}R^ntYD}?QeK+t^A2Ck#7%e%Oa_aOvMc&}Q8 z^@toc#v;moN9nagKr+T}*BXhx&A=>s(f8(%V1r(cZNnYAcOxOhi)MJ>1MXJ@|DlJ7 zHHS6p%%JvO$1*3ewubl_t*u45gh280=Q~l9T#a{&07eph+%8u{hIE4kW=2$s#?^>t z(HMK$VXHu1_^A%YYB`Zcu@bOBFLK3ZH6wRu(*+m~ul1*yfQ0o-@-ePEJo^g!&=rDb z9>#JXzx{$x3=9Xy%2Qn#c#2k&8Z+zJCF0=vEIJ;DS%q|lqrHp==yFpVq<5DgDhkMw z;1^aAqzVpHTu=qa-|gp{ z)euovgC29j&Tmf@x>VSO0qChCwa?ph|1<<@5UZ;!6XSKFBbQcB*Z&SRp?zy`as_~W zI$aMvwz>je9TAe|)}qM4(q(CgSIDsQ8@D>%9!f197Z?#+M59TKD62Ehu+?c{TeBnU;~Th+09CqR@Bi)?TbF9%PepsFtAqW#2|Q1mL0)804f_uM zc-GG$X?OjHRL8#xzj2K9$_8JS?+FJa(XG8zTO)Ph!ODpYx6*zMt&My7YRyhMO=-da z$PUB>FD7hZ(lBD*Z`_{4;)xMuAPUrEU0iOVxNzr@nPl#X7og^RiD9HHyKCX8X21^W z^1NM3{k?F#1tHQ~5K;T)C_~Sz6+MR(u_9j_N6_{Jc&Lh3R1bj0##5qH%^Sdhpf}wN zl&b+d^z@h}Y@&7!C|n<=CcGMPk<&3sou~kdD zPngkLFiF&Ns|wSjJ+01=f=G zzYhImB&_U6ow%|*{zB`w#7M9hEE_04ZoR?xd+UOs?w?iZF@83o(u$o@pvV~w6wQm? z@GL0O9v&EQC?%y;hIeChfie zJ}6tepk_*e5G@qk>~QsOY_z8#`KP4>iO=vthXC})lVvaCK#_{b8>k#|Of9HUQ24#; z`Z<*gJ*m{7F3xH2wTGZ^usQNmiJv6|K3S%U{`^%sBr#`u3Rg+~BmV!L^Ai#h-1;(V zGmZ47vAslJU810*6#61YFRO6h*tU;m{rqO?bdH$l3p%J)GVAmIy1!ipe6eehJIu|C z4H=x55gn3uwAu428+#tnN9=z2<(KRIA(H=!|NqILjh186-U$Bp|KEOUbH97+Sz7SG z+}TsfBtXBA-{(s6E*y%jD-86v4&uCJ^E!w`m+aQFxtcPPPtx*C`nTxMn}MnFNGhPu z(Kdu3=wncJ1r1(ekED_VtH%!dzP-#=BMz#u&8Wj>?EDVn)c#V*@ptkkmB8T&eV>8X zl}rJb6@E#5*WC$$sfzDEy!sk4t_u@Ir&u}s?|h~*o8q0XcJ}Pq?w69+d9opZQ))}G6}+{joSrXJGCVw-8`QVG z&=KAv+u40(!@giq)MG207;j1s&pjtYst!RT|^~YZbR)po({+b zy8)()wxrF_u{8DBoeVcfJa0jrs5YbPxwa_5&zq6P`kS?&=aJ=Co41dj5pFd2U2j9i z?E!MB=>F3mB+t-@D-v_kG#aoWpezeJN_-K(yH)>*`x-)plByXBW`Az!vb0okhlDO>(S2mOt}cQ0KWH_^z82KS39I zNLS1Oma~R!Hd~K8q_-x>3Civ4D0;w=YTG<-R!erz-MoFgI`E8?moXW)n|_o30g6h? zGKP@Ppmx(#ecxOJ8jwXRy~F7Xbo~F++cnD*%m<1!gWRgoEA^?qZIjWSD!i!5x%e}2 zw0w(9aU_-ZHdjvaCa$TAFAt0=J|BmP13PtF!C+)6hfNiZ2?b|Oi0J6zPx&&@OYDWs z#z!(n0}rEBg>fuS+`>SfeLS{8h`-tyDjGIkpiOjAlguf-9pnUK2A*14dnzN1WD1LL z$^;v|Do=GuGVSJFCv^XY4)YWM=f&%djSISIz~uZARBasv6Xr3x#St1-`}pG^aofEU zd$^)=o{W1VdKe(Iv+DIYn+c}`Ux)Gzg=NdSI)|psidc7vlN@g=I{!0q->?j?)-Rqo zAUXa|_8*t{BD}=%3fgmllK3{!?++*RMK2jW#kyS2o?EJUko#Y!y9sz4%8W<2N%9do z@=x(VC;an3N`~N}u+mKPjv?r1PJR4-lYEK}#y$IQ2lW=6my_qqZ+;n1R8`*<*Za;J zd$Le3g~NvA0Dg5Pa~l;WcvDA*Sm+=QD!@tmw8@7V<`~3-vI+dU26(jZeEt5Tz59ol zpfe<2!yBI`V|1^b=32;Uf7b}}sV}uzsu{!%vEYvfpI0{k!1$Z!r>;UnG2v)*IGM*}lZc}v#R;XpDS7sjg>9lcxd?ZXgyx{S3Hy9qmaDB(OTOWayc7t?RONWy8+E24W4z=R%fH_}UXeJFKwJ*XFLg29zh$Vq&}r)O z34}kJ6T(fFTi6DAcE$g%_O3l1>a^|8Q_pVu*4C!|h>%((gkc)z;~v7wX+w8`IiI-$1dkx13#Vtm6fBsi-ogflRj+(S^i-+l6%%me`!|e*WR138R z4Rn)W;ll5`T=ydOX1dW}>od=bf4m)5yV>gOKVGAGpzM>u{vS{0xqUhZ;@_uZZy}kJ z|9SlX+5fZB@wt2P;>9zE!iK`V2h$zm^*Ikc|7ZhH{t+E+=w7~|dv0=mOuMPB)^~Q1 zB8%v-W)||dw*qX9V3fBx4&5v^{j^qvPq9<#u5!k$MHO28VbInVQEZ_hs5#j|JL?Ug2NM(v^L%bhqwCyicmp$+SEobyt+uvptSf8ew->GnD=RA#eZ@9ZNsQbv z%Z$Ccy1EDEVCn?cHDdD4%O(nCaq16cblv-8#4r~;e5f;7-P^s~CQUpU9Uc9CbhP#D z@4tFBU;Zx)1Ps`SrTG!2XJ3(3btI3&f6=rq{@G`rVPM8chE9;j`|)uF!-({f%F4uY z=Lc=zSMsZ?F}H5rk~20o{(O&&WNT|H?5gX~Vj_V{C0hwaG!c9g(n22(m%RJ;@ArC1 zYX?w!dwWxz2n53O=g$i}IrQlY$Hu5|8dR(&W~qkXZWFVQva!l$hgIa|9hLAC_p!I3ca&=Lp+WDd20p zdvX+yA3wGF24KoGGg?T}0j?}~yTdpR-*M9fWWcIPIc61qXoJthcy(s%S;w!B0K341 zao$`2501>znd?|xggs%3Z4$$|W4EVnO%l)9+KPp-qr-~zj{3uNj_M2Z!+e0)*C4g7 z3tGy`%7`t0I9Zf6j6`7WkFUt%jOFAY{t`#t^(w%v?j~zv_`#k550V=g7#Oak ztob6-TB?Ia+6v9$;x<&USpby*lk;_Tb=4lNI};uWn_lP0790e!fEs(SQk87&?E3!6 zRd%SLE-Wm>#a(!xWaa_x`WZZ&(@~Fm%S@4nm-d1f!u7udJ-BY|ozEuU7x(_i|ABdnF~;z|p$?xvSeX`okam z=fy_iAt513T-dm*4R)U|C@WK$EESg12AkOgZfBmqv4AgpyJm-U75&Zc}*M98d_RK4cra2Z49uL`Gti?r>3SnK$i&;R0#Z) zV|Wa9>xUO^>^r1&o?KOae!e6uh0Y+Eoj**tNtm{^uJ z@rE?99y0`eM5*Dnwzg$%O-4pQ9_4Z3AH^FR(0oGVNl-)M4E9=p!O~05B+v~pvE93O zV*=hhgq_4~+9JUYRY!c7;=flg4xg&g^zCnXUSijW{`^y_UtkT zvIe#@>?Y%p%t%h10^$MrPp`uIGBaJ;Z0cx7I@8X^Fzw}+nwpvzJS)}bmtRh0CQ4}@ z?=N?jfX(`@g$U!kyw!GVx(Gn1@$^irH=?07s-VA;8a_WExsw1Mhty-p%Q1nX+Z9<} zvjKxfm_ruBPSRCAetf6~G&$d`DQ14ArpGiOAfR{^?bc{uonw%>G=wBTVVMd_52CN2 zM{O$~rVF5U*Xpm<{Ijl3HwJ8@mjQRN&xV;SZ}FGeP(-6|e70+U3pB`lBjpF2``XHf zppom^MYzA8J$FtD>a<^Eqyzh%wm>b?U}d5}$+&5OrHmbt#(G&=<{0SWwcML8(|A%+ zQuL@c1cR`Dl${rXn0Jq_hS7h0ph$;2QO!58uz3Nwyu**NRT|T|A>xPVO?X!$4CmWq>{mdhaX*7)$ z-dygyKCy1}CYth;_<=x;8|}UvUqC-9`JccQpN@2lV! znv<)mD^*$>JsDp-TFsPAkhi#bGPE|=S*YuQ9Dc}7VTDn}UrMSU_P?2xl{L?4m2k@@ zukBd{_mzR^X>Xr=&Xtme;;*gph`a*_bxDnSfp5PZ@Ozr~-Lo3+oMI&v*<|ZH<6v)PWu?TZ7K8m$^#@_5 zksJDgArrxWGj1dSj>dv6D(GM~{=BHrfmhIt{9)>@mZdp1n}c1SPox|*Y$Hem`Uhrm zHw4}^8to_!Qy^;?Q78~V8YHMg^+5{~{TC_=#qjj{7966y74`M?FoRZEYtXO2c`7hpf#ecm3Y2P~8JXn|hNOJ^%gpJ=gasQ+-CD@~mKo~b z_}9WBC>KW49D2w6{r%@bYZMHd2@KfU5<3PC`V`&66mi;T?wvIOJ!I8`f)&~1%APrM zX47rwN#EZ@C93;UiCwW*CoqqLW;bNaGgTd{4nuY*dGU*4e~{fX*sg=N3|__a)qOm` zABJS+gQx58=68A&J2qL)+{}yGQ~>vyAkDtY#29nkSF@kd2JmL8@u%=9atEIoz7y*`6$q34Z?sF-QV| z02#&oyuZJ#0>?;}{YFj>7?>EO0M!sbN$v0N=Z$VW*gLa4o|_2fKmjLwXKcV>{YfEC zUbBwGD2s=YrdG- zK*ldrlP7zhuvn)uAJAwmV8=%OA>sNX9eVx$eGJBaf*3iRs*D`ZYpH8(dqHbjI#dh`gSk{TuT$UclPga&|t zn@7^O5RYU5%2U(Rna%&$)i(yYKPoK0vJ04C{3e$PyvX{+*VosAF7%ivl%O&awt5(T z&0Y^35Fq{*=t<3bgOih!lJOzn@{C<9y@HAgv@7&}=zxhsdR1V7IjM$7-i=F_E+J?F zhG)95zSgr6HJ$)Gy%jvJotL<{cn~Du6mY_nW$fie%Pr2CtbhO<>Tf+r@bjaZB<#P_ z1)T?pIVmRRGhr_f?a}-ypq$D#)!c?A$9Eq%ar6o}lRMa>?|LZfBo`=+`3qq?zTK9* zmAg+^mzI|1gTLu7bNU)UFq?zu+8c786{2`coisvUvaBfn)G^!2I#Ki#un2d7w?cTO zsHhm1MQqdsM`g+n%d-)u4o^0Ys{@I<3*Yga< z!w2ew`U$M6I!0Ap(;lO#cLJ-YuB)uBuBWbURR3$-CpY*LeS zkO}^H64~89@IT)pxhRE{N*B4uj_5@Wa}UO&tlY_genhe#0oJj^2a^cI04!PyeM051 j51AZD(o<9O7hQlR279Y1PDpydLr~@>)+Z~zKY!_830CxK diff --git a/patternGenerator/generate.sh b/patternGenerator/generate.sh deleted file mode 100755 index a363d5eb2..000000000 --- a/patternGenerator/generate.sh +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-other -# Copyright (C) 2021 Contributors to the SLS Detector Package -if [ "$#" -eq 0 ]; then - echo "Wrong number of arguments: usage should be $0 patname" - exit 1 -fi -infile=$1 -outfile=$infile"at" -outfilebin=$infile"bin" -if [ "$#" -ge 2 ]; then - outfile=$2 -fi -exe=$infile"exe" -if [ "$#" -ge 4 ]; then - exe=$4 -fi - -if [ "$#" -ge 3 ]; then - outfilebin=$3 -fi - -if [ -f "$infile" ] -then -dir=$(dirname $infile) -gcc -DINFILE="\"$infile\"" -DOUTFILE="\"$outfile\"" -DOUTFILEBIN="\"$outfilebin\"" -o $exe generator.c -I$dir; -echo compiling -echo gcc -DINFILE="\"$infile\"" -DOUTFILE="\"$outfile\"" -DOUTFILEBIN="\"$outfilebin\"" -o $exe generator.c -I$dir; -$exe ; -echo cleaning -rm $exe -echo done -else - echo "$infile not found." -fi diff --git a/patternGenerator/generator.c b/patternGenerator/generator.c deleted file mode 100644 index 5d8d94bff..000000000 --- a/patternGenerator/generator.c +++ /dev/null @@ -1,183 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-or-other -// Copyright (C) 2021 Contributors to the SLS Detector Package -/**************************************************************************** -usage to generate a patter test.pat from test.p - -gcc -DINFILE="\"test.p\"" -DOUTFILE="\"test.pat\"" -o test.exe generator.c ; -./test.exe ; rm test.exe - - -*************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAXLOOPS 6 -#define MAXTIMERS 6 -#define MAXWORDS 8191 - -uint64_t pat = 0; -uint64_t iopat = 0; -uint64_t clkpat = 0; - -unsigned iaddr = 0; -unsigned waitaddr[MAXTIMERS] = {MAXWORDS, MAXWORDS, MAXWORDS, - MAXWORDS, MAXWORDS, MAXWORDS}; -unsigned startloopaddr[MAXLOOPS] = {MAXWORDS, MAXWORDS, MAXWORDS, - MAXWORDS, MAXWORDS, MAXWORDS}; -unsigned stoploopaddr[MAXLOOPS] = {MAXWORDS, MAXWORDS, MAXWORDS, - MAXWORDS, MAXWORDS, MAXWORDS}; -unsigned start = 0, stop = 0; -uint64_t waittime[MAXTIMERS] = {0, 0, 0, 0, 0, 0}; -unsigned nloop[MAXLOOPS] = {0, 0, 0, 0, 0, 0}; - -char infile[10000], outfile[10000]; - -FILE *fd, *fd1; -uint64_t PAT[MAXWORDS]; -int iopat_enable = 0; - -int i, ii, iii, j, jj, jjj, pixx, pixy, memx, memy, muxout, memclk, colclk, - rowclk, muxclk, memcol, memrow, loopcounter; - -void setstart() { start = iaddr; } - -void setstop() { stop = iaddr; } - -void setinput(int bit) { - uint64_t mask = 1; - mask = mask << bit; - iopat &= ~mask; - iopat_enable = 1; -} - -void setoutput(int bit) { - uint64_t mask = 1; - mask = mask << bit; - iopat |= mask; - iopat_enable = 1; -} - -void clearbit(int bit) { - uint64_t mask = 1; - mask = mask << bit; - pat &= ~mask; -} -void setbit(int bit) { - uint64_t mask = 1; - mask = mask << bit; - pat |= mask; -} - -int checkbit(int bit) { - uint64_t mask = 1; - mask = mask << bit; - return (pat & mask) >> bit; -} - -void setstartloop(int iloop) { - if (iloop >= 0 && iloop < MAXLOOPS) { - startloopaddr[iloop] = iaddr; - } -} - -void setstoploop(int iloop) { - if (iloop >= 0 && iloop < MAXLOOPS) { - stoploopaddr[iloop] = iaddr; - } -} - -void setnloop(int iloop, int n) { - if (iloop >= 0 && iloop < MAXLOOPS) { - nloop[iloop] = n; - } -} - -void setwaitpoint(int iloop) { - if (iloop >= 0 && iloop < MAXTIMERS) { - waitaddr[iloop] = iaddr; - } -} - -void setwaittime(int iloop, uint64_t t) { - if (iloop >= 0 && iloop < MAXTIMERS) { - waittime[iloop] = t; - } -} - -void pw() { - if (iaddr < MAXWORDS) { - PAT[iaddr] = pat; - } - fprintf(fd, "patword 0x%04x 0x%016llx\n", iaddr, pat); - iaddr++; - if (iaddr >= MAXWORDS) { - printf("ERROR: too many word in the pattern (%d instead of %d)!", iaddr, - MAXWORDS); - } -} - -int parseCommand(int clk, int cmdbit, int cmd, int length) { - int ibit; - clearbit(clk); - for (ibit = 0; ibit < length; ibit++) { - if (cmd & (1 >> ibit)) { - setbit(cmdbit); - } else { - clearbit(cmdbit); - } - pw(); - /******/ - setbit(clk); - pw(); - /******/ - } -}; - -int main() { - int iloop = 0; - fd = fopen(OUTFILE, "w"); -#include INFILE - - fprintf(fd, "patlimits 0x%04x 0x%04x\n", start, stop); - - if (iopat_enable == 1) { - fprintf(fd, "patioctrl 0x%016llx\n", iopat); - } - - for (iloop = 0; iloop < MAXLOOPS; iloop++) { - if ((startloopaddr[iloop] != MAXWORDS) && - (stoploopaddr[iloop] != MAXWORDS)) { - fprintf(fd, "patloop %d 0x%04x 0x%04x\n", iloop, - startloopaddr[iloop], stoploopaddr[iloop]); - if (stoploopaddr[iloop] <= startloopaddr[iloop]) { - nloop[iloop] = 0; - } - fprintf(fd, "patnloop %d %u\n", iloop, nloop[iloop]); - } - } - - for (iloop = 0; iloop < MAXTIMERS; iloop++) { - if (waitaddr[iloop] != MAXWORDS) { - fprintf(fd, "patwait %d 0x%04x\n", iloop, waitaddr[iloop]); - fprintf(fd, "patwaittime %d %llu\n", iloop, waittime[iloop]); - } - } - - fclose(fd); - fd1 = fopen(OUTFILEBIN, "w"); - fwrite(PAT, sizeof(uint64_t), iaddr, fd1); - fclose(fd1); - - return 0; -} diff --git a/patternGenerator/plotPattern.py b/patternGenerator/plotPattern.py deleted file mode 100755 index 75c0e06b7..000000000 --- a/patternGenerator/plotPattern.py +++ /dev/null @@ -1,610 +0,0 @@ -#!/usr/bin/env python3 - -""" -Created on Wed May 24 09:44:53 2017 - -Plot the pattern for New Chip Test Box (.pat) - -Changes: - - 2017-11-21 Adapt it to python-3 - - 2017-09-25 All can be plotted - - 2017-09-22 Can be plotted but the loop and wait not work yet - -@author: zhang_j1 -""" -import matplotlib.pyplot as plt -from numpy import * -from matplotlib.pyplot import * -from matplotlib.patches import Rectangle -import os -import argparse - -############################################################################### -# COLORS AND LINE STYLES -# alternating colors of the plots (2 needed) -colors_plot = ['tab:blue', 'tab:orange'] - -# Wait colors and line styles (6 needed from 0 to 5) -colors_wait = ['b', 'g', 'r', 'c', 'm', 'y'] -linestyles_wait = ['--', '--', '--', '--', '--', '--'] -alpha_wait = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5] -alpha_wait_rect = [0.2, 0.2, 0.2, 0.2, 0.2, 0.2] - -# Loop colors and line styles (6 needed from 0 to 5) -colors_loop = ['tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:grey'] -linestyles_loop = ['-.', '-.', '-.', '-.', '-.', '-.'] -alpha_loop = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5] -alpha_loop_rect = [0.2, 0.2, 0.2, 0.2, 0.2, 0.2] - -# Display the count of clocks -clock_vertical_lines_spacing = 1 -show_clocks_number = True - -############################################################################### - - -# Define a hex to binary function -# global definition -# base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] -base = [str(x) for x in range(10)] + [chr(x) for x in range(ord('A'), ord('A')+6)] -# dec2bin - - -def dec2bin(string_num): - num = int(string_num) - mid = [] - while True: - if num == 0: - break - num, rem = divmod(num, 2) - mid.append(base[rem]) - - return ''.join([str(x) for x in mid[::-1]]) - - -# dec2binary: better than dec2bin -def dec2binary(dec_num, width=None): - return binary_repr(int(dec_num), width=width) - - -# hex2dec -def hex2dec(string_num): - return str(int(string_num.upper(), 16)) - - -# hex2bin -def hex2bin(string_num): - return dec2bin(hex2dec(string_num.upper())) - - -# hex2bin -def hex2binary(string_num, width=None): - return dec2binary(hex2dec(string_num.upper()), width=width) - - -parser = argparse.ArgumentParser() - -parser.add_argument('-d', '--directory', required = True, help = "Working directory where the pattern is located") -parser.add_argument('-p', '--pattern', required = True, help = "Pattern name") -parser.add_argument('-a', '--alias', help = "Alias name") -parser.add_argument('-v', '--verbose', action='store_true') - -args = parser.parse_args() - -Folder = args.directory -File_pat = args.pattern -File_alias = args.alias -verbose = args.verbose - -# Look at the alias file and generate the lookup table for pin names -# Create a 64 bit look up table -table = [] -for i in range(64): - # for special bit - if i+1 == 59: - table.append([str(i+1), "external_trigger"]) - elif i+1 == 63: - table.append([str(i+1), "adc_enable"]) - elif i+1 == 62: - table.append([str(i+1), "dbit_enable"]) - else: - table.append([str(i+1), ""]) - -# Loop all lines -try: - with open(Folder + "/" + File_alias + ".alias") as f: - lines = f.readlines() - f.close() - nlines = len(lines) -except: - nlines = 0 - -if nlines > 0: - for i in range(nlines): - # whether the line is bit definition - if lines[i][0:3] == "BIT": - # split words - words = lines[i].split() - bit_num = int(words[0][3:]) - table[bit_num][0] = words[0][3:] - table[bit_num][1] = words[1] -else: - for i in range(64): - table[i][0] = i - table[i][1] = f'BIT#{i}' - -if verbose: - print(table) - -# Load the pattern and get all lines -# Loop all lines -if os.path.exists(Folder + "/" + File_pat + ".pat"): - with open(Folder + "/" + File_pat + ".pat") as f_pat: - lines_pat = f_pat.readlines() -elif os.path.exists(Folder + "/" + File_pat + ".pyat"): - with open(Folder + "/" + File_pat + ".pyat") as f_pat: - lines_pat = f_pat.readlines() -else: - print("No file found - Check it") - exit() -f_pat.close() - -# number of lines for pattern file -nlines_pat = len(lines_pat) -# a counter -cnt = 0 -if verbose: - print("The total number of lines of pattern:", nlines_pat) - -# Loop all lines of pattern -waittime0 = None -waittime1 = None -waittime2 = None -waittime3 = None -waittime4 = None -waittime5 = None - -nloop0 = None -nloop1 = None -nloop2 = None -nloop3 = None -nloop4 = None -nloop5 = None - -for k in range(nlines_pat): - # content of line - words_line = lines_pat[k].split() - if words_line[0] == "patword": - # print words_line from b0 to b63 - bits = hex2binary(words_line[-1], 64)[::-1] - if verbose: - print("The bits for line-", k+1, "is:", bits) - # convert string bits to decimal array - num_bits = array(list(map(str, bits)), dtype="uint16") - if cnt == 0: - mat_pat = num_bits - else: - # add bits to matrix - mat_pat = concatenate((mat_pat, num_bits), axis=0) - cnt = cnt + 1 - # print("The matrix of pattern:", mat_pat.reshape(int(cnt), int(len(num_bits)))) - - # Look at the io: 0 for sending to ASIC, 1 for reading from ASIC - if words_line[0] == "patioctrl": - # print words_line - if verbose: - print(words_line[-1]) - bits = hex2binary(words_line[-1], 64)[::-1] - if verbose: - print(bits) - # convert string bits to decimal array - out_bits = array(list(map(str, bits)), dtype="uint16") - - if verbose: - print(words_line) - # Deal with waiting point - - # ====== WAIT ====== - if words_line[0] == "patwait" and words_line[1] == "0": - wait0 = int(hex2dec(words_line[2])) - if verbose: - print("wait 0 at:", wait0) - if words_line[0] == "patwaittime" and words_line[1] == "0": - waittime0 = int(words_line[2]) - if verbose: - print("wait 0 for:", waittime0) - - if words_line[0] == "patwait" and words_line[1] == "1": - wait1 = int(hex2dec(words_line[2])) - if verbose: - print("wait 1 at:", wait1) - if words_line[0] == "patwaittime" and words_line[1] == "1": - waittime1 = int(words_line[2]) - if verbose: - print("wait 1 for:", waittime1) - - if words_line[0] == "patwait" and words_line[1] == "2": - wait2 = int(hex2dec(words_line[2])) - if verbose: - print("wait 2 at:", wait2) - if words_line[0] == "patwaittime" and words_line[1] == "2": - waittime2 = int(words_line[2]) - if verbose: - print("wait 2 for:", waittime2) - - if words_line[0] == "patwait" and words_line[1] == "3": - wait3 = int(hex2dec(words_line[2])) - if verbose: - print("wait 0 at:", wait3) - if words_line[0] == "patwaittime" and words_line[1] == "3": - waittime3 = int(words_line[2]) - if verbose: - print("wait 0 for:", waittime3) - - if words_line[0] == "patwait" and words_line[1] == "4": - wait4 = int(hex2dec(words_line[2])) - if verbose: - print("wait 1 at:", wait4) - if words_line[0] == "patwaittime" and words_line[1] == "4": - waittime4 = int(words_line[2]) - if verbose: - print("wait 1 for:", waittime4) - - if words_line[0] == "patwait" and words_line[1] == "5": - wait5 = int(hex2dec(words_line[2])) - if verbose: - print("wait 2 at:", wait5) - if words_line[0] == "patwaittime" and words_line[1] == "5": - waittime5 = int(words_line[2]) - if verbose: - print("wait 2 for:", waittime5) - - # ====== LOOPS ====== - if words_line[0] == "patloop" and words_line[1] == "0": - loop0_start = int(hex2dec(words_line[2])) - loop0_end = int(hex2dec(words_line[3])) - if verbose: - print("loop 0 start:", loop0_start, ", end:", loop0_end) - if words_line[0] == "patnloop" and words_line[1] == "0": - nloop0 = int(words_line[2]) - if verbose: - print("loop 0 times:", nloop0) - - if words_line[0] == "patloop" and words_line[1] == "1": - loop1_start = int(hex2dec(words_line[2])) - loop1_end = int(hex2dec(words_line[3])) - if verbose: - print("loop 1 start:", loop1_start, ", end:", loop1_end) - if words_line[0] == "patnloop" and words_line[1] == "1": - nloop1 = int(words_line[2]) - if verbose: - print("loop 1 times:", nloop1) - - if words_line[0] == "patloop" and words_line[1] == "2": - loop2_start = int(hex2dec(words_line[2])) - loop2_end = int(hex2dec(words_line[3])) - if verbose: - print("loop 2 start:", loop2_start, ", end:", loop2_end) - if words_line[0] == "patnloop" and words_line[1] == "2": - nloop2 = int(words_line[2]) - if verbose: - print("loop 2 times:", nloop2) - - if words_line[0] == "patloop" and words_line[1] == "3": - loop3_start = int(hex2dec(words_line[2])) - loop3_end = int(hex2dec(words_line[3])) - if verbose: - print("loop 3 start:", loop3_start, ", end:", loop3_end) - if words_line[0] == "patnloop" and words_line[1] == "3": - nloop3 = int(words_line[2]) - if verbose: - print("loop 3 times:", nloop3) - - if words_line[0] == "patloop" and words_line[1] == "4": - loop4_start = int(hex2dec(words_line[2])) - loop4_end = int(hex2dec(words_line[3])) - if verbose: - print("loop 4 start:", loop4_start, ", end:", loop4_end) - if words_line[0] == "patnloop" and words_line[1] == "4": - nloop4 = int(words_line[2]) - if verbose: - print("loop 4 times:", nloop4) - - if words_line[0] == "patloop" and words_line[1] == "5": - loop5_start = int(hex2dec(words_line[2])) - loop5_end = int(hex2dec(words_line[3])) - if verbose: - print("loop 5 start:", loop5_start, ", end:", loop5_end) - if words_line[0] == "patnloop" and words_line[1] == "5": - nloop5 = int(words_line[2]) - if verbose: - print("loop 5 times:", nloop5) -# print(out_bits) - -# internal counter -avail_index = [] -avail_name = [] -# Remove non-used bits -for i in range(64): - # if out_bits[0][i] == 1: - if out_bits[i] == 1: - avail_index.append(i) - avail_name.append(table[i][1]) -if verbose: - print(avail_index) - print(avail_name) - -# number of effective used bits -nbiteff = len(avail_name) - -# subMat = mat_ext[:,index] -# print(mat_pat.shape) -subMat = mat_pat.reshape(int(cnt), int(len(num_bits)))[0:, avail_index] -# subMat = mat_pat[avail_index] -timing = linspace(0, subMat.shape[0]-1, subMat.shape[0]) -rcParams['figure.figsize'] = 15, 5 - - -# ============= PLOTTING ============= - -rcParams["font.weight"] = "bold" -rcParams["axes.labelweight"] = "bold" -fig2, axs2 = subplots(nbiteff, sharex='all') -subplots_adjust(wspace=0, hspace=0) -# axs2[nbiteff - 1].set(xlabel='Timing [clk]') -for idx, i in enumerate(range(nbiteff)): - - axs2[idx].plot(subMat.T[i], "-", drawstyle="steps-post", linewidth=2.0, color=colors_plot[idx % 2]) - x_additional = range(len(subMat.T[i]) - 1, len(subMat.T[i]) + 2) - additional_stuff = [subMat.T[i][-1]] * 3 - - axs2[idx].plot(x_additional, additional_stuff, - "--", drawstyle="steps-post", linewidth=2.0, color=colors_plot[idx % 2], alpha=0.5) - axs2[idx].yaxis.set_ticks([0.5], minor=False) - axs2[idx].xaxis.set_ticks(arange(0, len(subMat.T[i]) + 10, clock_vertical_lines_spacing)) - - axs2[idx].yaxis.set_ticklabels([avail_name[i]]) - axs2[idx].get_yticklabels()[0].set_color(colors_plot[idx % 2]) - - axs2[idx].grid(1, 'both', 'both', alpha=0.5) - axs2[idx].yaxis.grid(which="both", color=colors_plot[idx % 2], alpha=0.2) - if idx != nbiteff - 1: - if not show_clocks_number: - axs2[idx].xaxis.set_ticklabels([]) - axs2[idx].set(xlabel=' ', ylim=(-0.2, 1.2)) - else: - axs2[idx].set(xlabel='Timing [clk]', ylim=(-0.2, 1.2)) - # axs2[idx].set_xlim(left=0) - axs2[idx].set_xlim(left=0, right=len(subMat.T[i]) + 1) - axs2[idx].spines['top'].set_visible(False) - axs2[idx].spines['right'].set_alpha(0.2) - axs2[idx].spines['right'].set_visible(True) - axs2[idx].spines['bottom'].set_visible(False) - axs2[idx].spines['left'].set_visible(False) - - # ===================================================================================================== - # Plot the wait lines - # Wait 0 - if waittime0 is not None: - if waittime0 == 0: - axs2[idx].plot([wait0, wait0], [-10, 10], - linestyle=linestyles_wait[0], color=colors_wait[0], alpha=alpha_wait[0], linewidth=2.0) - axs2[idx].plot([wait0 + 1, wait0 + 1], [-10, 10], - linestyle=linestyles_wait[0], color=colors_wait[0], linewidth=2.0, alpha=alpha_wait[0]) - axs2[idx].add_patch(Rectangle((wait0, -10), 1, 20, - label="wait 0: skipped" if idx == 0 else "", - facecolor=colors_wait[0], alpha=alpha_wait_rect[0], hatch='\\\\')) - else: - axs2[idx].plot([wait0, wait0], [-10, 10], - linestyle=linestyles_wait[0], color=colors_wait[0], - label="wait 0: " + str(waittime0) + " clk" if idx == 0 else "", - linewidth=2.0, alpha=alpha_wait[0]) - - # Wait 1 - if waittime1 is not None: - if waittime1 == 0: - axs2[idx].plot([wait1, wait1], [-10, 10], - linestyle=linestyles_wait[1], color=colors_wait[1], alpha=alpha_wait[1], linewidth=2.0) - axs2[idx].plot([wait1 + 1, wait1 + 1], [-10, 10], - linestyle=linestyles_wait[1], color=colors_wait[1], linewidth=2.0, alpha=alpha_wait[1]) - axs2[idx].add_patch(Rectangle((wait1, -10), 1, 20, - label="wait 1: skipped" if idx == 0 else "", - facecolor=colors_wait[1], alpha=alpha_wait_rect[1], hatch='\\\\')) - else: - axs2[idx].plot([wait1, wait1], [-10, 10], - linestyle=linestyles_wait[1], color=colors_wait[1], - label="wait 1: " + str(waittime1) + " clk" if idx == 0 else "", - linewidth=2.0, alpha=alpha_wait[1]) - - # Wait 2 - if waittime2 is not None: - if waittime2 == 0: - axs2[idx].plot([wait2, wait2], [-10, 10], - linestyle=linestyles_wait[2], color=colors_wait[2], alpha=alpha_wait[2], linewidth=2.0) - axs2[idx].plot([wait2 + 1, wait2 + 1], [-10, 10], - linestyle=linestyles_wait[2], color=colors_wait[2], linewidth=2.0, alpha=alpha_wait[2]) - axs2[idx].add_patch(Rectangle((wait2, -10), 1, 20, - label="wait 2: skipped" if idx == 0 else "", - facecolor=colors_wait[2], alpha=alpha_wait_rect[2], hatch='\\\\')) - else: - axs2[idx].plot([wait2, wait2], [-10, 10], - linestyle=linestyles_wait[2], color=colors_wait[2], - label="wait 2: " + str(waittime2) + " clk" if idx == 0 else "", - linewidth=2.0, alpha=alpha_wait[2]) - - # Wait 3 - if waittime3 is not None: - if waittime3 == 0: - axs2[idx].plot([wait3, wait3], [-10, 10], - linestyle=linestyles_wait[3], color=colors_wait[3], alpha=alpha_wait[3], linewidth=2.0) - axs2[idx].plot([wait3 + 1, wait3 + 1], [-10, 10], - linestyle=linestyles_wait[3], color=colors_wait[3], linewidth=2.0, alpha=alpha_wait[3]) - axs2[idx].add_patch(Rectangle((wait3, -10), 1, 20, - label="wait 3: skipped" if idx == 0 else "", - facecolor=colors_wait[3], alpha=alpha_wait_rect[3], hatch='\\\\')) - else: - axs2[idx].plot([wait3, wait3], [-10, 10], - linestyle=linestyles_wait[3], color=colors_wait[3], - label="wait 3: " + str(waittime3) + " clk" if idx == 0 else "", - linewidth=2.0, alpha=alpha_wait[3]) - - # Wait 4 - if waittime4 is not None: - if waittime4 == 0: - axs2[idx].plot([wait4, wait4], [-10, 10], - linestyle=linestyles_wait[4], color=colors_wait[4], alpha=alpha_wait[4], linewidth=2.0) - axs2[idx].plot([wait4 + 1, wait4 + 1], [-10, 10], - linestyle=linestyles_wait[4], color=colors_wait[4], linewidth=2.0, alpha=alpha_wait[4]) - axs2[idx].add_patch(Rectangle((wait4, -10), 1, 20, - label="wait 4: skipped" if idx == 0 else "", - facecolor=colors_wait[4], alpha=alpha_wait_rect[4], hatch='\\\\')) - else: - axs2[idx].plot([wait4, wait4], [-10, 10], - linestyle=linestyles_wait[4], color=colors_wait[4], - label="wait 4: " + str(waittime4) + " clk" if idx == 0 else "", - linewidth=2.0, alpha=alpha_wait[4]) - - # Wait 5 - if waittime5 is not None: - if waittime5 == 0: - axs2[idx].plot([wait5, wait5], [-10, 10], - linestyle=linestyles_wait[5], color=colors_wait[5], alpha=alpha_wait[5], linewidth=2.0) - axs2[idx].plot([wait5 + 1, wait5 + 1], [-10, 10], - linestyle=linestyles_wait[5], color=colors_wait[5], linewidth=2.0, alpha=alpha_wait[5]) - axs2[idx].add_patch(Rectangle((wait5, -10), 1, 20, - label="wait 5: skipped" if idx == 0 else "", - facecolor=colors_wait[5], alpha=alpha_wait_rect[5], hatch='\\\\')) - else: - axs2[idx].plot([wait5, wait5], [-10, 10], - linestyle=linestyles_wait[5], color=colors_wait[5], - label="wait 5: " + str(waittime5) + " clk" if idx == 0 else "", - linewidth=2.0, alpha=alpha_wait[5]) - - # ===================================================================================================== - # Plot the loop lines - # Loop 0 - if nloop0 is not None: - if nloop0 == 0: - axs2[idx].plot([loop0_start, loop0_start], [-10, 10], - linestyle=linestyles_loop[0], color=colors_loop[0], - alpha=alpha_loop[0], linewidth=2.0) - axs2[idx].plot([loop0_end + 1, loop0_end + 1], [-10, 10], - linestyle=linestyles_loop[0], color=colors_loop[0], alpha=alpha_loop[0], linewidth=2.0) - axs2[idx].add_patch(Rectangle((loop0_start, -10), loop0_end + 1 - loop0_start, 20, - label="loop 0: skipped" if idx == 0 else "", - facecolor=colors_loop[0], alpha=alpha_loop_rect[0], hatch='//')) - else: - axs2[idx].plot([loop0_start, loop0_start], [-10, 10], - linestyle=linestyles_loop[0], color=colors_loop[0], alpha=alpha_loop[0], - label="loop 0: " + str(nloop0) + " times" if idx == 0 else "", linewidth=2.0) - axs2[idx].plot([loop0_end, loop0_end], [-10, 10], - linestyle=linestyles_loop[0], color=colors_loop[0], alpha=alpha_loop[0], linewidth=2.0) - - # Loop 1 - if nloop1 is not None: - if nloop1 == 0: - axs2[idx].plot([loop1_start, loop1_start], [-10, 10], - linestyle=linestyles_loop[1], color=colors_loop[1], - alpha=alpha_loop[1], linewidth=2.0) - axs2[idx].plot([loop1_end + 1, loop1_end + 1], [-10, 10], - linestyle=linestyles_loop[1], color=colors_loop[1], alpha=alpha_loop[1], linewidth=2.0) - axs2[idx].add_patch(Rectangle((loop1_start, -10), loop1_end + 1 - loop1_start, 20, - label="loop 1: skipped" if idx == 0 else "", - facecolor=colors_loop[1], alpha=alpha_loop_rect[1], hatch='//')) - else: - axs2[idx].plot([loop1_start, loop1_start], [-10, 10], - linestyle=linestyles_loop[1], color=colors_loop[1], alpha=alpha_loop[1], - label="loop 1: " + str(nloop1) + " times" if idx == 0 else "", linewidth=2.0) - axs2[idx].plot([loop1_end, loop1_end], [-10, 10], - linestyle=linestyles_loop[1], color=colors_loop[1], alpha=alpha_loop[1], linewidth=2.0) - - # Loop 2 - if nloop2 is not None: - if nloop2 == 0: - axs2[idx].plot([loop2_start, loop2_start], [-10, 10], - linestyle=linestyles_loop[2], color=colors_loop[2], - alpha=alpha_loop[2], linewidth=2.0) - axs2[idx].plot([loop2_end + 1, loop2_end + 1], [-10, 10], - linestyle=linestyles_loop[2], color=colors_loop[2], alpha=alpha_loop[2], linewidth=2.0) - axs2[idx].add_patch(Rectangle((loop2_start, -10), loop2_end + 1 - loop2_start, 20, - label="loop 2: skipped" if idx == 0 else "", - facecolor=colors_loop[2], alpha=alpha_loop_rect[2], hatch='//')) - else: - axs2[idx].plot([loop2_start, loop2_start], [-10, 10], - linestyle=linestyles_loop[2], color=colors_loop[2], alpha=alpha_loop[2], - label="loop 2: " + str(nloop2) + " times" if idx == 0 else "", linewidth=2.0) - axs2[idx].plot([loop2_end, loop2_end], [-10, 10], - linestyle=linestyles_loop[2], color=colors_loop[2], alpha=alpha_loop[2], linewidth=2.0) - - # Loop 3 - if nloop3 is not None: - if nloop3 == 0: - axs2[idx].plot([loop3_start, loop3_start], [-10, 10], - linestyle=linestyles_loop[3], color=colors_loop[3], - alpha=alpha_loop[3], linewidth=2.0) - axs2[idx].plot([loop3_end + 1, loop3_end + 1], [-10, 10], - linestyle=linestyles_loop[3], color=colors_loop[3], alpha=alpha_loop[3], linewidth=2.0) - axs2[idx].add_patch(Rectangle((loop3_start, -10), loop3_end + 1 - loop3_start, 20, - label="loop 3: skipped" if idx == 0 else "", - facecolor=colors_loop[3], alpha=alpha_loop_rect[3], hatch='//')) - else: - axs2[idx].plot([loop3_start, loop3_start], [-10, 10], - linestyle=linestyles_loop[3], color=colors_loop[3], alpha=alpha_loop[3], - label="loop 3: " + str(nloop3) + " times" if idx == 0 else "", linewidth=2.0) - axs2[idx].plot([loop3_end, loop3_end], [-10, 10], - linestyle=linestyles_loop[3], color=colors_loop[3], alpha=alpha_loop[3], linewidth=2.0) - - # Loop 4 - if nloop4 is not None: - if nloop4 == 0: - axs2[idx].plot([loop4_start, loop4_start], [-10, 10], - linestyle=linestyles_loop[4], color=colors_loop[4], - alpha=alpha_loop[4], linewidth=2.0) - axs2[idx].plot([loop4_end + 1, loop4_end + 1], [-10, 10], - linestyle=linestyles_loop[4], color=colors_loop[4], alpha=alpha_loop[4], linewidth=2.0) - axs2[idx].add_patch(Rectangle((loop4_start, -10), loop4_end + 1 - loop4_start, 20, - label="loop 4: skipped" if idx == 0 else "", - facecolor=colors_loop[4], alpha=alpha_loop_rect[4], hatch='//')) - else: - axs2[idx].plot([loop4_start, loop4_start], [-10, 10], - linestyle=linestyles_loop[4], color=colors_loop[4], alpha=alpha_loop[4], - label="loop 4: " + str(nloop4) + " times" if idx == 0 else "", linewidth=2.0) - axs2[idx].plot([loop4_end, loop4_end], [-10, 10], - linestyle=linestyles_loop[4], color=colors_loop[4], alpha=alpha_loop[4], linewidth=2.0) - - # Loop 5 - if nloop5 is not None: - if nloop5 == 0: - axs2[idx].plot([loop5_start, loop5_start], [-10, 10], - linestyle=linestyles_loop[5], color=colors_loop[5], - alpha=alpha_loop[5], linewidth=2.0) - axs2[idx].plot([loop5_end + 1, loop5_end + 1], [-10, 10], - linestyle=linestyles_loop[5], color=colors_loop[5], alpha=alpha_loop[5], linewidth=2.0) - axs2[idx].add_patch(Rectangle((loop5_start, -10), loop5_end + 1 - loop5_start, 20, - label="loop 5: skipped" if idx == 0 else "", - facecolor=colors_loop[5], alpha=alpha_loop_rect[5], hatch='//')) - else: - axs2[idx].plot([loop5_start, loop5_start], [-10, 10], - linestyle=linestyles_loop[5], color=colors_loop[5], alpha=alpha_loop[5], - label="loop 5: " + str(nloop5) + " times" if idx == 0 else "", linewidth=2.0) - axs2[idx].plot([loop5_end, loop5_end], [-10, 10], - linestyle=linestyles_loop[5], color=colors_loop[5], alpha=alpha_loop[5], linewidth=2.0) - - -n_cols = count_nonzero([waittime0 != 0, waittime1 != 0, waittime2 != 0, waittime3 != 0, waittime4 != 0, waittime5 != 0, - nloop0 != 0, nloop1 != 0, nloop2 != 0, nloop3 != 0, nloop4 != 0, nloop5 != 0]) -if n_cols > 0: - fig2.legend(loc="upper center", ncol=n_cols) -# manager = get_current_fig_manager() -# manager.window.showMaximized() - -figure = plt.gcf() # get current figure -figure.set_size_inches(20, 10) -# when saving, specify the DPI -# tight_layout() -plt.savefig(Folder+"/"+File_pat+".png", dpi=300) - -# Remove the white space around the plot -- only works on Unix (ImageMagick command) -os.system(f'mogrify -trim {Folder}/{File_pat}.png') - -show() From 225f59bdfb70e3dee5acb0169aea3a61c77056f7 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 11 May 2026 16:38:21 +0200 Subject: [PATCH 2/5] removed the unzooming at the start of every acquisition so that right click zoom should stay (#1451) --- slsDetectorGui/src/qDrawPlot.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp index e967862a3..86d43dc66 100644 --- a/slsDetectorGui/src/qDrawPlot.cpp +++ b/slsDetectorGui/src/qDrawPlot.cpp @@ -620,11 +620,6 @@ void qDrawPlot::StartAcquisition() { "qDrawPlot::StartAcquisition"); } - // refixing all the zooming - { - std::lock_guard lock(mPlots); - xyRangeChanged = true; - } QtConcurrent::run(this, &qDrawPlot::AcquireThread); From bc864496528ad8d63e80fb4ce7bcf36b7c75125f Mon Sep 17 00:00:00 2001 From: AliceMazzoleni99 Date: Tue, 12 May 2026 09:25:35 +0200 Subject: [PATCH 3/5] Dev/doc/add ctb to doc (#1455) * added numpy for patterngenerator * treat warnings as errors * fix warnings during docu build * added power and ctb to documentation --- .github/workflows/build_documentation.yml | 2 +- docs/CMakeLists.txt | 7 +++++-- docs/conf.py.in | 2 ++ docs/src/Testing.rst | 3 +++ docs/src/dependencies.rst | 6 +++--- docs/src/gendoc.cpp | 5 ++++- docs/src/index.rst | 2 ++ docs/src/pyctb.rst | 15 ++++++++++++++ docs/src/pypower.rst | 12 ++++++++++++ python/slsdet/ctb.py | 24 +++++++++++++++++++++++ python/slsdet/detector.py | 23 ++++++++++++---------- slsDetectorSoftware/src/CallerSpecial.cpp | 5 +++-- 12 files changed, 87 insertions(+), 19 deletions(-) create mode 100644 docs/src/pyctb.rst create mode 100644 docs/src/pypower.rst diff --git a/.github/workflows/build_documentation.yml b/.github/workflows/build_documentation.yml index a7fd764c4..be3dc4a62 100644 --- a/.github/workflows/build_documentation.yml +++ b/.github/workflows/build_documentation.yml @@ -64,7 +64,7 @@ jobs: cache: 'pip' - name: Install Python Packages - run: pip install sphinx sphinx_rtd_theme breathe pyyaml jinja2 + run: pip install sphinx sphinx_rtd_theme breathe pyyaml jinja2 numpy - name: Build Documentation diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 129ed8e69..25e313d7c 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -36,6 +36,7 @@ set(SPHINX_SOURCE_FILES src/consuming.rst src/dependencies.rst src/detector.rst + src/pyctb.rst src/index.rst src/installation.rst src/pydetector.rst @@ -72,6 +73,8 @@ set(SPHINX_SOURCE_FILES src/softwarearchitecture.rst src/configcommands.rst src/Versioning.rst + src/Testing.rst + src/pypower.rst ) foreach(filename ${SPHINX_SOURCE_FILES}) @@ -105,7 +108,7 @@ add_custom_target(docs gendoc COMMAND python gen_server_doc.py COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} - COMMAND ${SPHINX_EXECUTABLE} -a -b html + COMMAND ${SPHINX_EXECUTABLE} -W -a -b html -Dbreathe_projects.slsDetectorPackage=${CMAKE_CURRENT_BINARY_DIR}/xml -c "${SPHINX_BUILD}" ${SPHINX_BUILD}/src @@ -113,7 +116,7 @@ add_custom_target(docs COMMENT "Generating documentation with Sphinx") add_custom_target(rst - COMMAND ${SPHINX_EXECUTABLE} -a -b html + COMMAND ${SPHINX_EXECUTABLE} -W -a -b html -Dbreathe_projects.slsDetectorPackage=${CMAKE_CURRENT_BINARY_DIR}/xml -c "${SPHINX_BUILD}" ${SPHINX_BUILD}/src diff --git a/docs/conf.py.in b/docs/conf.py.in index 374fc84e0..827d2528c 100644 --- a/docs/conf.py.in +++ b/docs/conf.py.in @@ -48,6 +48,8 @@ templates_path = ['_templates'] # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +suppress_warnings = ["duplicate_declaration.cpp",] + # -- Options for HTML output ------------------------------------------------- diff --git a/docs/src/Testing.rst b/docs/src/Testing.rst index ad67326d8..99dd202da 100644 --- a/docs/src/Testing.rst +++ b/docs/src/Testing.rst @@ -67,12 +67,14 @@ This runs all tests marked with the tag ``[.detectorintegration]`` for all detec If you want to run them for a specific virtual detector or a specific test use the following command: .. code-block:: console + cd build python bin/test_simulators.py --servers jungfrau --test "[dacs]" You can exclude specific tests by adding the option ``~[]``. Again, we assume that this marker is added to the tests that you want to exclude. .. code-block:: console + cd build python bin/test_simulators.py --servers eiger jungfrau moench --test "[detectorintegration]~[disable_check_data_file]" @@ -98,6 +100,7 @@ If a test requires a detector mark them with the pytest marker ``@pytest.mark.de To run only tests requiring virtual detectors use the following command: .. code-block:: console + #in build python -m pytest -m detectorintegration ../python/tests/ diff --git a/docs/src/dependencies.rst b/docs/src/dependencies.rst index a64d7a219..3e0e7b364 100644 --- a/docs/src/dependencies.rst +++ b/docs/src/dependencies.rst @@ -53,9 +53,9 @@ To build the python module the following dependencies are needed: Refer :ref:`pybind11 notes. ` -------------------------------- +------------------------------------ Dependencies to build documentation -------------------------------- +------------------------------------ To build this documentation that you are reading now the following dependencies are needed: @@ -76,7 +76,7 @@ To build the GUI the following dependencies are needed: Qwt is bundled in libs. One does not need to pre-install it on the system. ------------------------------------------------------- +----------------------------------------------------- Dependencies to build Moench and Jungfrau executables ----------------------------------------------------- diff --git a/docs/src/gendoc.cpp b/docs/src/gendoc.cpp index 2854f6d22..156d04c9b 100644 --- a/docs/src/gendoc.cpp +++ b/docs/src/gendoc.cpp @@ -45,13 +45,16 @@ int main() { for (const auto &cmd : commands) { std::ostringstream os; - std::cout << cmd << '\n'; caller.call(cmd, {}, -1, slsDetectorDefs::HELP_ACTION, os); auto tmp = os.str().erase(0, cmd.size()); auto usage = tmp.substr(0, tmp.find_first_of('\n')); tmp.erase(0, usage.size()); auto help = replace_all(tmp, "\n\t", "\n\t\t| "); + + if (help.back() != '\n') { + help.push_back('\n'); + } fs << '\t' << cmd << usage << help << "\n"; } diff --git a/docs/src/index.rst b/docs/src/index.rst index 035167215..498543384 100644 --- a/docs/src/index.rst +++ b/docs/src/index.rst @@ -48,7 +48,9 @@ slsDetectorPackage pygettingstarted pydetector + pyctb pyenums + pypower pyexamples pyPatternGenerator pattern diff --git a/docs/src/pyctb.rst b/docs/src/pyctb.rst new file mode 100644 index 000000000..a942d253f --- /dev/null +++ b/docs/src/pyctb.rst @@ -0,0 +1,15 @@ +Ctb +===================================================== + +.. py:currentmodule:: slsdet + +.. autoclass:: Ctb + :members: + :undoc-members: + :show-inheritance: + :inherited-members: + + + + + diff --git a/docs/src/pypower.rst b/docs/src/pypower.rst new file mode 100644 index 000000000..095edf637 --- /dev/null +++ b/docs/src/pypower.rst @@ -0,0 +1,12 @@ +Power Supply +=============== + +Helper class to control power supplies on the Chip Test Board (CTB, Xilinx CTB). + +.. py:currentmodule:: slsdet + +.. autoclass:: Power + :members: + :undoc-members: + :show-inheritance: + :inherited-members: \ No newline at end of file diff --git a/python/slsdet/ctb.py b/python/slsdet/ctb.py index eff315da3..1b601356c 100644 --- a/python/slsdet/ctb.py +++ b/python/slsdet/ctb.py @@ -27,10 +27,34 @@ class Ctb(Detector): @property def powers(self): + """ + [Chiptestboard][Xilinx CTB] Power names and values of all power supplies. + + Example + ----------- + >>> # print all powers with DAC and info if enabled + >>> d.powers + >>> # set DAC or enables for power supply VA + >>> d.powers.VA = 1200 + >>> # enable or disable power subbly VA + >>> d.powers.VA.enable() + >>> d.powers.VA.disable() + >>> # get dac value of power supply VA + >>> d.powers.VA.dac + >>> # check if power supply VA is enabled + >>> d.powers.VA.enabled + >>> # print both enabled and dac value of power supply VA + >>> d.powers.VA + """ return self._powers @property def powerlist(self): + """ + List of power supply names on the Chip Test Board. + + :setter: List of custom power supply names to set. + """ return self.getPowerNames() @powerlist.setter diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 56e29800f..47ad9220d 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -833,10 +833,10 @@ class Detector(CppDetectorApi): Note ---- Sets up the following for every module:\n - \t\t[Eiger] txdelay_left to (2 * mod_index * n_delay), \n - \t\t[Eiger] txdelay_right to ((2 * mod_index + 1) * n_delay) and \n - \t\t[Eiger] txdelay_frame to (2 *num_modules * n_delay) \n - \t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules * n_delay)\n\n + \t\t[Eiger] txdelay_left to (2 \* mod_index \* n_delay), \n + \t\t[Eiger] txdelay_right to ((2 \* mod_index + 1) \* n_delay) and \n + \t\t[Eiger] txdelay_frame to (2 \* num_modules \* n_delay) \n + \t\t[Jungfrau][Moench][Mythen3] txdelay_frame to (num_modules \* n_delay)\n\n Please refer txdelay_left, txdelay_right and txdelay_frame for details. """ return self.getTransmissionDelay() @@ -1313,10 +1313,10 @@ class Detector(CppDetectorApi): @property def zmqhwm(self): """ - Client's zmq receive high water mark. Default is the zmq library's default (1000), can also be set here using -1. - This is a high number and can be set to 2 for gui purposes. + Client's zmq receive high water mark. Default is the zmq library's default (1000), can also be set here using -1. + This is a high number and can be set to 2 for gui purposes. One must also set the receiver's send high water mark to similar value. Final effect is sum of them. - Setting it via command line is useful only before zmq enabled (before opening gui). + Setting it via command line is useful only before zmq enabled (before opening gui). """ return self.getClientZmqHwm() @@ -2312,13 +2312,16 @@ class Detector(CppDetectorApi): @property @element def threshold(self): - """[Eiger][Mythen3] Threshold in eV + """ + [Eiger][Mythen3] Threshold in eV Note ---- - To change settings as well or set threshold without trimbits, use setThresholdEnergy. + To change settings as well or set threshold without trimbits, + use setThresholdEnergy. - :setter: It loads trim files from settingspath.\n [Mythen3] An energy of -1 will pick up values from detector. + :setter: It loads trim files from settingspath.\n + [Mythen3] An energy of -1 will pick up values from detector. """ if self.type == detectorType.MYTHEN3: diff --git a/slsDetectorSoftware/src/CallerSpecial.cpp b/slsDetectorSoftware/src/CallerSpecial.cpp index 50cd1e72d..dc2ae8c6c 100644 --- a/slsDetectorSoftware/src/CallerSpecial.cpp +++ b/slsDetectorSoftware/src/CallerSpecial.cpp @@ -1586,7 +1586,7 @@ std::string Caller::define_bit(int action) { std::string Caller::definelist_reg(int action) { std::ostringstream os; if (action == defs::HELP_ACTION) { - os << "List of user-defined register definitions in shared memory." + os << "\n\t List of user-defined register definitions in shared memory." << '\n'; } else if (action == defs::PUT_ACTION) { throw RuntimeError("cannot put"); @@ -1605,7 +1605,8 @@ std::string Caller::definelist_reg(int action) { std::string Caller::definelist_bit(int action) { std::ostringstream os; if (action == defs::HELP_ACTION) { - os << "List of user-defined bit definitions in shared memory." << '\n'; + os << "\n\t List of user-defined bit definitions in shared memory." + << '\n'; } else if (action == defs::PUT_ACTION) { throw RuntimeError("cannot put"); } else if (action == defs::GET_ACTION) { From 60442983746509d1ffa26db5e18074e57e92523f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Fr=C3=B6jdh?= Date: Tue, 12 May 2026 11:23:20 +0200 Subject: [PATCH 4/5] Build virtual servers on macOS (#1450) * macOS import guards to have servers compile * SPI mock since we don't do any actual transfer using the virtual server * /proc/self/exe alternative for macOS --- .../matterhornServer/src/MatterhornApp.cpp | 10 ++++++- .../slsDetectorServer/src/ASIC_Driver.c | 2 ++ .../slsDetectorServer/src/common.c | 27 +++++++++++++++++++ .../src/programViaBlackfin.c | 4 +++ .../src/slsDetectorServer_funcs.c | 24 +++++++++++++++++ 5 files changed, 66 insertions(+), 1 deletion(-) diff --git a/slsDetectorServers/matterhornServer/src/MatterhornApp.cpp b/slsDetectorServers/matterhornServer/src/MatterhornApp.cpp index a60b328a7..8c37df196 100644 --- a/slsDetectorServers/matterhornServer/src/MatterhornApp.cpp +++ b/slsDetectorServers/matterhornServer/src/MatterhornApp.cpp @@ -11,7 +11,15 @@ #include // gettid added in glibc 2.30 -#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 30 +#if defined(__APPLE__) +#include +#include +static inline uint64_t gettid() { + uint64_t tid = 0; + pthread_threadid_np(nullptr, &tid); + return tid; +} +#elif __GLIBC__ == 2 && __GLIBC_MINOR__ < 30 #include #define gettid() syscall(SYS_gettid) #endif diff --git a/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c b/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c index 562396b16..adc01112d 100644 --- a/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c +++ b/slsDetectorServers/slsDetectorServer/src/ASIC_Driver.c @@ -11,8 +11,10 @@ #include #include +#ifndef __APPLE__ #include #include +#endif #include #include #include diff --git a/slsDetectorServers/slsDetectorServer/src/common.c b/slsDetectorServers/slsDetectorServer/src/common.c index 2bfc79bb7..cd7adab63 100644 --- a/slsDetectorServers/slsDetectorServer/src/common.c +++ b/slsDetectorServers/slsDetectorServer/src/common.c @@ -11,6 +11,12 @@ #include // stat #include // uname #include // readlink +#ifdef __APPLE__ +#include // PATH_MAX +#include // _NSGetExecutablePath +#include // uint32_t +#include // realpath +#endif extern int executeCommand(char *command, char *result, enum TLogLevel level); @@ -58,12 +64,33 @@ int getAbsPath(char *buf, size_t bufSize, char *fname) { // get path of current binary char path[bufSize]; memset(path, 0, bufSize); +#ifdef __APPLE__ + // macOS has no /proc; use _NSGetExecutablePath and canonicalize with + // realpath (the path returned may contain ".." or symlinks). + char raw[PATH_MAX]; + uint32_t rawSize = sizeof(raw); + if (_NSGetExecutablePath(raw, &rawSize) != 0) { + LOG(logWARNING, + ("Could not get current binary path for %s (buffer too small)\n", + fname)); + return FAIL; + } + char resolved[PATH_MAX]; + const char *src = realpath(raw, resolved) != NULL ? resolved : raw; + if (strlen(src) >= bufSize) { + LOG(logWARNING, + ("Current binary path too long for buffer (%s)\n", fname)); + return FAIL; + } + strcpy(path, src); +#else ssize_t len = readlink("/proc/self/exe", path, bufSize - 1); if (len < 0) { LOG(logWARNING, ("Could not readlink current binary for %s\n", fname)); return FAIL; } path[len] = '\0'; +#endif // get dir path and attach file name char *dir = dirname(path); diff --git a/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c b/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c index e5a281875..0f1c12d95 100644 --- a/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c +++ b/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c @@ -8,7 +8,9 @@ #include #include +#ifndef __APPLE__ #include +#endif #include // usleep /* global variables */ @@ -309,6 +311,7 @@ int preparetoCopyProgram(char *mess, char *functionType, FILE **fd, } // check available memory to copy program +#ifndef __APPLE__ { struct sysinfo info; sysinfo(&info); @@ -322,6 +325,7 @@ int preparetoCopyProgram(char *mess, char *functionType, FILE **fd, return FAIL; } } +#endif // open file to copy program *fd = fopen(TEMP_PROG_FILE_NAME, "w"); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index f4d9d930f..0359bb467 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -20,10 +20,24 @@ #include #include #include +#ifndef __APPLE__ #include +#endif #include +#ifdef __APPLE__ +// spidev is Linux-only; provide a minimal stub so virtual builds compile. +// The real ioctl(SPI_IOC_MESSAGE(...)) calls are guarded by detector +// macros (XILINX_CHIPTESTBOARDD) that are never set on macOS. +struct spi_ioc_transfer { + unsigned long tx_buf; + unsigned long rx_buf; + unsigned int len; + unsigned char cs_change; +}; +#else #include +#endif // defined in the detector specific Makefile #ifdef EIGERD @@ -127,6 +141,10 @@ int sendError(int file_des) { } void setMemoryAllocationErrorMessage() { +#ifdef __APPLE__ + sprintf(mess, "Memory allocation error (%s). Please reboot", + getFunctionNameFromEnum((enum detFuncs)fnum)); +#else struct sysinfo info; sysinfo(&info); sprintf( @@ -134,6 +152,7 @@ void setMemoryAllocationErrorMessage() { "Memory allocation error (%s). Available space: %d MB. Please reboot", getFunctionNameFromEnum((enum detFuncs)fnum), (int)(info.freeram / (1024 * 1024))); +#endif #ifdef EIGERD strcat(mess, ".\n"); #else @@ -9784,12 +9803,17 @@ void receive_program_default(int file_des, enum PROGRAM_INDEX index, if (ret == OK) { src = malloc(filesize); if (src == NULL) { +#ifdef __APPLE__ + sprintf(mess, "Could not %s. Memory allocation failure.\n", + functionType); +#else struct sysinfo info; sysinfo(&info); sprintf(mess, "Could not %s. Memory allocation failure. Free " "space: %d MB\n", functionType, (int)(info.freeram / (1024 * 1024))); +#endif LOG(logERROR, (mess)); ret = FAIL; } From d94c0d0e72606e3ea4ebf91eb41720b41b3be607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Fr=C3=B6jdh?= Date: Tue, 12 May 2026 12:01:09 +0200 Subject: [PATCH 5/5] removed unused function readDataFile/writeDataFile (#1456) * removed unused function readDataFile/writeDataFile * release notes --- RELEASE.md | 2 + slsSupportLib/include/sls/file_utils.h | 27 ----------- slsSupportLib/src/file_utils.cpp | 66 -------------------------- 3 files changed, 2 insertions(+), 93 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index 927793b37..0f1ad4af4 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -41,6 +41,8 @@ Detector.pattern (python) accepts also a pattern object, not only a pattern file added patternstart to python (ctb, xilinx_ctb , mythen3), only the detector class api was exposed (startPattern()) +removed unused function readDataFile/writeDataFile from file_utils.h + 2 On-board Detector Server Compatibility ========================================== diff --git a/slsSupportLib/include/sls/file_utils.h b/slsSupportLib/include/sls/file_utils.h index 010fc640c..81aa3d19b 100644 --- a/slsSupportLib/include/sls/file_utils.h +++ b/slsSupportLib/include/sls/file_utils.h @@ -11,37 +11,10 @@ namespace sls { -/** - * @param data array of data values - * @param nch number of channels - * @param offset start channel value - */ -int readDataFile(std::ifstream &infile, short int *data, int nch, - int offset = 0); - -/** - * @param data array of data value - * @param nch number of channels - */ -int readDataFile(std::string fname, short int *data, int nch); std::vector readBinaryFile(const std::string &fname, const std::string &errorPrefix); -/** - * @param nch number of channels - * @param data array of data values - * @param offset start channel number - */ -int writeDataFile(std::ofstream &outfile, int nch, short int *data, - int offset = 0); - -/** - * @param nch number of channels - * @param data array of data values - */ -int writeDataFile(std::string fname, int nch, short int *data); - // mkdir -p path implemented by recursive calls void mkdir_p(const std::string &path, std::string dir = ""); diff --git a/slsSupportLib/src/file_utils.cpp b/slsSupportLib/src/file_utils.cpp index 6751d489d..bc375ba9d 100644 --- a/slsSupportLib/src/file_utils.cpp +++ b/slsSupportLib/src/file_utils.cpp @@ -22,48 +22,6 @@ namespace sls { -int readDataFile(std::ifstream &infile, short int *data, int nch, int offset) { - int ichan, iline = 0; - short int idata; - int interrupt = 0; - std::string str; - while (infile.good() and interrupt == 0) { - getline(infile, str); - std::istringstream ssstr(str); - ssstr >> ichan >> idata; - if (ssstr.fail() || ssstr.bad()) { - interrupt = 1; - break; - } - if (iline < nch) { - if (ichan >= offset) { - data[iline] = idata; - iline++; - } - } else { - interrupt = 1; - break; - } - return iline; - }; - return iline; -} - -int readDataFile(std::string fname, short int *data, int nch) { - std::ifstream infile; - int iline = 0; - std::string str; - infile.open(fname.c_str(), std::ios_base::in); - if (infile.is_open()) { - iline = readDataFile(infile, data, nch, 0); - infile.close(); - } else { - LOG(logERROR) << "Could not read file " << fname; - return -1; - } - return iline; -} - std::vector readBinaryFile(const std::string &fname, const std::string &errorPrefix) { // check if it exists @@ -96,30 +54,6 @@ std::vector readBinaryFile(const std::string &fname, return buffer; } -int writeDataFile(std::ofstream &outfile, int nch, short int *data, - int offset) { - if (data == nullptr) - return slsDetectorDefs::FAIL; - for (int ichan = 0; ichan < nch; ichan++) - outfile << ichan + offset << " " << *(data + ichan) << std::endl; - return slsDetectorDefs::OK; -} - -int writeDataFile(std::string fname, int nch, short int *data) { - std::ofstream outfile; - if (data == nullptr) - return slsDetectorDefs::FAIL; - outfile.open(fname.c_str(), std::ios_base::out); - if (outfile.is_open()) { - writeDataFile(outfile, nch, data, 0); - outfile.close(); - return slsDetectorDefs::OK; - } else { - LOG(logERROR) << "Could not open file " << fname << "for writing"; - return slsDetectorDefs::FAIL; - } -} - void mkdir_p(const std::string &path, std::string dir) { if (path.length() == 0) return;