From f3ebfcb9a0d4d549a72a721bd3da559eefabf5f8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 23 Oct 2017 21:56:47 +0200 Subject: [PATCH] chg: reverting old @satsuoni felica changes. chg: applied @pwpiwi 's fixes for iso 14B / 15 --- fpga/fpga_hf.bit | Bin 42175 -> 42175 bytes fpga/fpga_lf.bit | Bin 42175 -> 42175 bytes fpga/hi_flite.v | 8 ++++---- fpga/hi_read_rx_xcorr.v | 31 +++++++++++++++++-------------- fpga/hi_read_tx.v | 35 ++++++++++++----------------------- fpga/hi_sniffer.v | 17 ++++------------- 6 files changed, 37 insertions(+), 54 deletions(-) diff --git a/fpga/fpga_hf.bit b/fpga/fpga_hf.bit index 77a9331c05527339a2efbe9a5761656af61e534f..50128bbe7479cc9e8ecd3da6b841bdaf0a57e0bd 100644 GIT binary patch literal 42175 zcmZSJ51_fX}SeDiOH!cdU?qy3`q=JM#aVkWrcXMoCc8Zamz^BD~o92f!^RFWBl1Q>7wmIkmK5o#Ejz$$SO5Oau8BZSKc zkT}deAT}<{G65_j3?^|9EMW0}0*ntBBpAdP7#kQ97$h3l7BH@0_{AXCz_x(lf&CG% zn-4I4U^qU(@CnaHW*dg{0-GCHJ~V%5IM!gw$8&+%fS~|nP=mk`g-!;g6CB@}Y#O>1 zl%8;GVS2FObdyp5#|)+gECwJo9jpf$npG4Ico;G9C^Rc59N;iuI&z?yL4|?CfKQ1L zY|a7E1rD7IN(VSLaOp61GbA10*ueCnqdP$#7O*)F822&!Ww3wA|AG0B!2bhw7xeEie`0#yVDG?xllcb& z*c=CeB@C|xj1KT@WY%H0?PPR-Zwa#s!*55U2%RO&0xSw3yH2pGFmwhg-Qg$|l0DFU z!R!IYIVKH;-3>|(921y}7#u)q9tviHl*gfRccQfmQ`W z07#7jqZmVLgW>~@3MM&*_Km6^I8HE$IqYvxRN(l@u zhxk~Sc@#bi7&P!GG6z8tjsx!whQEyV2lxw`?>Ib9*ni->EB7Ck{S5n$@H;YJU<3PW z1?vlj(+oxjST`{1EV->{@POw7^9z>K40a7X3z)Sa@#P`d!_dmG@Bqh$u02id3YrIa zBb2^yv@_^5a1;nlf`sz{hIvd~4T=vstC-{tOrN3rfGdaT9>eqlx(_5YmEzOe{!0CrWAcf&2 z!=?7=7gna%{}1W5kU zU|7QNlVM*9{{-eI3_ly}9P|yiT^N2c*g5o1U_J%OUm5}n7~U`#3+fzT7GOBzU?srY z(5%RC!of&_uVFD4B!6izXfQM}DmCydVA5dXVp4ACSiohW*4JP@fh&pG3lbL^tR74a z6BaRWFfcK&Ffgu|!O6hTA=t!_aD>Z*i3^s$BpBKm6c2D1IPoyFGbuK6I5XW~=<8B# zkov%s0X2t1is4Ly;R2ovCMkw<4Vnvhe=KfdINo5Oz~{lO1<79=vMU&VGpIT6PvCyS z@RPx&fxm%Sf#EZg9RoiD^C3w7a$x<%aIV2nam@*4BY|@b_D}dv3jbpG)?oaE=L9nY zB)(P%&R}SDSa?CBglR5QD}!zickrSM4BHqqd$=5!v>@Tkz%Y}cO=4k#h9Z{)(-H>V z2I&H}8wuMP6d5=|m>3}WD?#K0L*oMlCk_E77KUa8ogLf)Oa~Y?b7(Md32<>h;(dka z3Wk#n1_e9<%qmPTALw=PpJ0B)@LR!Xf`$Y$)UF1G7Yx4`>=y7ZV1B{yiNUU+e*yE0 zhTjf$llUhxKY-*fMu8VhXBq4d_C1&HZ(+Y;& z4tfb3jZ6xVxZq&mU}yl9HVRA}3=Itm4crEN3=EqY^cXlAn3y2>i-9A9;V^^U0iF%q zIt(irHZ|~XUKZU$y>xw=612g4l(dj|dk%oiB`ffyec3poBW*)s42Fuz~} z*98Yye=+=FFlOL6z--WProo=0{|B>S)42`i9Q+l{@cQc=!~O%xUpW3c*)w!ESgCM# zI2kpxF(?^u|6o#pgmVY$8HP;`3Je|!Obiaq3_1+l3``6MnnYA4a2qti>#r38J3;l= z1STDY4hAg+?glLdrY=xGZD2Bh#Jhv&3x>Z8#u_|_m<*jxFxVOK8#F69onkQa=-;Uf zufO&%{9@R5g#SbLKZXAc)(rd)nGZ1ibJ*{||AQM|f30Eo%wWL4qsV;F;WUSx0B;lX zBc@XfMu+$}AnGp-hCQarS2%7k{bT4*&|}cp!t{yh7Q?nf+#j6b^_NG(1{Z}R93o6- zm>L*zG&oF{PB3(_EMVl`z+?f-UvdoF8x<8fGK3DXv^VH4m55-v*I%M97=8xW{ot7?tfz2-!LEUK6Z6ZaQwc@_{F}L9^_S!vhHacWQW}av z0xazex(!?fO&1iJI20MUi<*QW;e3E$9>ewqT~M9N=g{7uvxuXD=~hSE2Gs}L5ljY< z{N=%Nf?`G>-p z1=||a1jD8S`~ryjD}|x6LC=AEg3=R)oeX*o921z1ICL^>%ix~CqyVeGSQvU0 z^c}b_FqJUuWzchonxOQAsgXg+gBz*-GGSk z{I!EOf#F1hodSOcQxeF{3VaKkA3B^6Fw)>}<<^7buNksW7=Aj~1^7>4e#-EZ!9IX* z0`nENKZbS(_yd`rLGqUb>l22b%Zw6uW-+TZoMf-#VGaDng+^`UM zz_7zXNra;zNP(e`L64E6f$0G24HhK^ZczONE;l$>uQ6)y$pE)92=OP2+UMaN&xvC5*G_ZpK$zaQgYCl z!L7n{(#bBNcVhDsrcMSW2mTq{8qoTSaS6jm#XS!ELd-`Pejc#P;NQXgfZ-?0K9C5! z{@TEBromo;{{Xjv!k+_nOnfcO2N+H;7zyw+Ix5@@OpFX07<3+R88Dq=Xl78z;5J}lg5<9SjC!DCe1O}4 zNrq!PgYF@Y0;anS%?gSR+@D}&<_ZoehGPx33j7|-LJVITY#(w}FyCuBzF?z*e+{=1 zB!6+pt^w7;2lzKIzhU^zU~_aRHt+XQtPxC5Ckuxw+{_2DRNt~t;zq1nJuzy+;S7#LN04@^R>9&}iVWWMY8i zuN8u8!A(B?Da;QTelgf2@N8h#VR+wQ;K1{PTL}`U4Gb?DJ~P@K;a|c04&2`0-v;)e zodEv^ME&)L;UB|h2L21o1)#dXq2~khABOV`#tl3l7&u_{R|W&9eCA)mlmp6N2^?FP z&avEPRNBC0z@!lXPKOPwIv_O%xi>VuVc6ZEm%y=s=}kj7gVG|74NMClamvBM#juG% zfx(M`=>W?HP(C$adc!c8L7{%4mfpgOXhAsvr296C(FBhD2Py%HTc>VQ)VIso<2W|zXBMc1; zN*r85O-CG>Tpl@c8Zg1@uT=~k3`z~%6PaEpG%zG3NNsd_!O_XF$brKEUVjNbVz?n- z)WE-k`3)#LDDv%NegI-z<^|O|;5zpK;{t}apx)LA<_}CD5AuFse!}pMY5x=cKZyR< zDv&M?{srJ-(1?L=1M?Y$Qw*CNcs3&HFFuAwP!nPT^Xi5U1_cL>4NPwvx)?MZbayy^ zg2V-=|JBT}-~zV*)9Z!?78NFL1Exa^9SkZA9R^MC`b(IhtwB+NJCkXfQ`-b}1Nz7FyC|d z!(#2i_ksBb!(Wlz2lNZ!^%v_2hEoi74g3?hH5g7L7%A{>V1B^ylfmdf&z94$`b%&I zLp!K^PGAyY=n+w5;7AaTQD7JFkZm> zrum1$zZtt1`Kwht%F*GtLL~sZ&voLfrXa#T!FsU%?bTD$@nBs(} zzZiR2lpQ%PIGIiW70c3~j@U+rMGhQO5dAL}$6klUE*e+3Oqm)TRs?WQVPaXZQA5Ft zLjX~KWiL9xXe7YHz$CzMf@M=fe*?Et!;b|98axcl@cQf9gr5!I;(Zyz&qmt>{u|8S z7W`ddos~bU8D4*VVd!Nvb^woN{ADn5;GZJ=Mc^cZkVDS|W;RHB9#nsIfU;Es6BEY< z1|{B~G0z z3XU8ToKzS#Dk!;ePhdL2u&_bVl_Ln={}O!y4riSy%xVlj88!ugI$2CF8H@^eCNLxF zFO8oJ`#kt3a6f4H*V))yz`9Y6|H&XwrT~LvMyO8OQ!gdBz5AFh{I}Up# z%#ZLoFu#JNc?O0p4E+p>0br^942q7@1xyzhwlF9!F0%3Un>xbfR2IB=hADC?%{24Yk@PFX8oA8ap zkb&m|Gra$mz_^cr6RDKLFop^1}7bb)htR^ zxHm8#M_QP%CaCHzUId0V5VY5pFGppA6d=bT)9q`(MjIAJ%j%SME$jt;S__B1djl-Cc{An6E?mU=GPo2Su76lgUkVskDXv;VQ6Gn z#KAFxNu#0jpppVdlh7-MUKO(g+#i^XAob1zRu`sb1%&_(4K5ajrUwf?XfQOLU}$90 zXhi9Mam=5fkie0{B*xU%q4hb}EW^YG1yJh(G0#HjB z*8dXS#njhe)S$D38PxwWp1`w&`3J+T2ICF=3%KF+*8_zg0{a;J8M+TJ{9xG6)ZgU% zfa!&U9TQUjO90gW+LXaFky)+jq=JP5&lce)948qJ9CA?mUknOG9CMh|7&;H=1#nDY zddAS0pya@V(*J5?P;$_?!ek=Q>!9t#F@fo6TPFh(sN{!_AF?=gIw(1C1Tcw!I${AD z0!&94Iu#cQ{8PA}GW~S0 zDd3;Le2w8RlYJilL`47Vd&5ZqBM1Ho+$s!b8HxgUCOH2ARU8hy6Oxa?>aW8mZY)w_ z;6A{lz|h6ANTH`e=>fwI2Bij$4z_cUa*TuZ2tzA_;sNdeCQzbPaNrPNIs&T5965!W z4#DcLr3^C}ltFz@m4;3RB}a}4Oiu)MHY@`9{TL+P7l=M#IH|D7fqw$C3e!mkB?p~} z%}-cB6&ddYrWdgOR}05aMmtas@f^cP2AhL?JDQ(3eCDtLjVPW*j31t0Fk|33z^=e> zB4HCJPYd${mLCF}1aum>yP)HTtXd4K7?dV(ED+OR=yOnN;8?-*%V8ITT?5AgME}c= zsh>gR1c!hVpKw!yf*=PE(>aC>3=0l$7%+9g>Mt3MbxMj4I0U$48QM7%4@e|5-BH-a zpmT(yf=L6CzgBR_F&%$k@_?s;iBITogK>h6hx09t4-Fe%@cdw3#RMAWXW)=syWkUp z-2wd#%x@chGuWNrU(o!5;TNbz+W;FsWMKWqaK6F#0sjr*{~(3|&k5#FOlLtgBU1ls z3n*J1;0|HBs@+I0_Kshtojy*8%PVrYoSX2a84`(}jdq289Eh28jOG z5r!reaBe!oFqvV&f=&ye11yaUN(VYNFu}(U+nV|x7#-lBp!|mEHiL43jui75hK>cB z5Ac5AhW7Ou7@mN}4-fE9VSdB#(!uTw-v;M54L=y{Ks`-({q>dMJcIcI{s+wGn9eh7 z1U0CPnvOCUA3(0ZN;ujWv>tLV5PHMVd{FrU$A+d=44n*S;Bp>Te}SqtwG-VFnBFwZ z22HgzFln%KG=OG>m=Yjy!NH=#(8ZwffLnm+4C7=5g#!^2m=-WJG%f+fDZKuwVK~jO z?EwD*rZ+4%8HyZq7BDL?oMbQpjVL<6`d@#TzA@});D5mUhv6-w{lWeZ!XG%kGT0yJ z|G>P04cwPGzzXg~9?*Hf{DI*Ni?sv)0cLPTwgAk4s1bN0(A}W?fMW&IBZiJ9B?s;n zCM|}p2BihwD`5543Dz?V%`D()uLBGVnKB%>MVMFw8bO1f9EkdB4Ocg4{BQ%)1BR6h zNlx4ox>Omuo0J;3Coow+@|T0?`-anuMhAKpC_iy}AYc{3zkpd0)RX$eKLb{OePGOJud;yZbPO$1QbstcEz_EwvIRhtyQVhp-E?tN2i%Ji;w=%)|Up@@Y4GNz) zRGCgNH8Ct{&}eXCa9F^wpn{u`=_e$AZD5phX$Q@JWiZ`hY3op3z>(=B<*;OeVgh#t zqW`7CaG1m30FMFl35LT0CLKHs%nS~X7z`Zv6&No;@|T0`9)|x6`w#GcVE)1KpV4{& zDB>LMv)DWEKSZj(4m?&cc+aDe%meO-fjTT4Cz%Wm@JwKS1StG7QWD^;EH2vZ`55N5y2G3(AuH;h$DjO2Xy>U z!9nzA;6{rnso(LWXGWS%Y~7lfdM@7b_G;_IdBLyu`FoTP;vm*1>mx7 z2X7KXM}rY)g!6$!2ZKEW4;Qmm!-)k(3_M-T?;!bWhU{mdKMr;Q{8N}g^_N{0->v2^ zpq7;b{{>}u|LYse$%ajiI-vUNB!iI)D84|GFQ5Svc>M+HZGoq~3>dl?7ASCZH7PLc zV9;amIKTw0zdS(o7o#Gi&TRxW=}5DAo^b#3|$BG7H}_N(f~E%8$8x9 zy<~XRpf`aRss8d|YHrX0wTO5aHa938(AdLtmSHo4&IJxL*!TGkJ0#)n5w78*CqNTQJKpY@T4Kz*E6|iQ!v=?E)T8#QfJ9hhGeK z4E>;{$gc#u1N;rlZy3Ne^#(-!^^f5XsN3~|>7T>@2J;7OCz!1m{xsOD@MI#5A2MuZ zSlGZF#B{-7E0ZzIVGhF{21N(%1f_c%+Zj}uxEPp37`6)N zJ9q>%!TVq56*gW_XaG-pZD3Hiz+u3|!LZ3gr-4hO30{BA0gbaY@J|3W4;aiIaP44L zci4Hr#(`%BQvb{06Ng;@zXGUV>0rko-@yEe;a7uQgZ={K@x%L|X|Eg11`K}|*fW6& z8HPU$@(el;VEwNKmK@OVngjPrCS8VI4EhJS4=_Cg4H7=^5O9Lef9WvHU{Dg|Zs1a4 z*x{gefV+X|LBlQuy%vu~C)oTK3lC_V1QMqkL32rX~Wf?k5gcP2fC+n_pk5tBwkx0cca&hN1LtAq87!y*Pf zhX{iv1;%Cu1rKfoAr*zi3<@A$z{d~QFsx$GQ{dR3q>wPXLn%Q+gGqs*lS2ul2HO8( z5Pie&ioxau&jx07hLZ<2De(W`wpDm9u;~*224)6G`|ttd8ijif_Mn-pGH?fz|AF%h zhTjeL2Y5jPZV8|Q$U&fo;S{)KrL5|3I>3m5e?#*Vms3tgC-^ro2SDpDMq3812E7M- zAB@-?ni-TFI9EAcW9U&*y1@MbQGfX|Fip_;z`cQsjbUlO4nShJ^{Bu{egd391jcD-iV;55pk_n?wAd^&6KN3@-39Fdtz$ zC}7gSZvbDvA-k8MMgS5`PVWRj)fUqShQ9*Vpc)Onegib(Vb{R3ftiiLo53!D=K?dR zt)+B;XEUPzHMe04gYE$iqb?EfKq5y0(;bCv0*V)SKXk#z59cv#YtVlnQOPH!&<qJ@e=+QEfUMtW`XOM)q2I*(K;Z{y-W+NC@Cj&LffLUJW;M{5 z6{zrh*Km4)Q3lTh#Q0$fL+1j86fOZ}b%vLqiLfb5&lx(K6h3eu`d^GJ%$*G29)~K! zP60g!?k!AD89Eu5K(plV{+9}4Cqt40*AylehJ_3|0o@`(M;RKklpHif5dE(th7%1& z3_Km&3JgCO?HKqwm>(@VuwWAdPY1IeGq_zhL-r}dUkBR*{CAYMaJ*-*P3XVF{EXpe zgN+0C97O*Mv{b+XG%jias@eiLW-xzi@Ld7wks*&C?qE@7;B8=9z_5csZGnaY(`%-# z2JnbIeEbkJRj2JBA;81~D&8G9M3{~$G-`lrVZ`_$c>ar1fN2TC&L%Zb|LceVs5i=^o6xD`51Fc^XQ)Uf$477Yfj1xgKEptP}z zLBD}}L6b#87lTp<_X1`vP%dR)&|vjoXjq`oz-hq5)3A|Ar-9p~iJzkxTyAiABl1@> zgK`6R5t9tZRtDV$?g|DOP=DtjcM)uSLxY2h;dq0gg6=whJ%fVy2e44R;EwuKBiTQp^uJR3GMEV;yK zz$5`_vw_xc+-|Tt!uvrejp3z({RW>WVkhoE%WaDIpS2Zpl@#tHl%m>Zz;Uko`6yE$|mG&V5j zG3;c}Z{Xj;^l?HzgHi$C2Bh^HjJpN&Ks_lXhMf(14ctqa&aiYdDBY0Wz_ftT0Tino zETAL`R^!L8kwK?{OM&eGLnlK*gOmX*e=%@oFzjZr1Gz_sVJDMa12?Esa}+e+{ec-i z|MiFAKZC6Ue*rUy0h;y#Gi(p=ePDjU4$gz1{?|FsEZzgq`ojiu1s>2O#UBP^4xSgx z1(5h^5O~AT%%G&evBAlXp}WB>p<}JmV}>0Ul;l7Qr6A!9TEEfFqQKz6z{LZaB();jFGEP&5{iT+_Yd%##k z=TA4Nb7ZtZr@{FR!*7R81w0DO0r2{Z;Xi{-gZ~EMH=sy)z(1k+55s>B`vUzZi1EWU zpz^SVX9G76s68*jKY`i8;j@F?1^xwy`7axWW`{)!B=&aMFdSsi`NBPkNsHsRg5Ck{ z1*hQShdxY=o(c;%W-x&o6*&ytJWR|D8;|H6;MPD|zroQyDRBu$Bxrnok}jy*CB(3` zLH7ao8(9AG;NW36C}7Z{0jj?aGT1Qi3vhEdd={`dz^@1&Ka}0W@n68cr5`j+`If=n zf&T&X51#idpcRQo{V&k^!v>!X%(@A;6*e`1=AapWL&geTLE_6pa1KK|i(&)E2Z1>a z?EOx?<8T7SM_g?h2+4kTS|c zqoA@Tk~bOpn?hRrM1ykOQ~xFui=>NEaU z`1jF%s`ndbME{H92ZJ3Gf1@yD{ULwDTr7!04dhpkd<00`Aap2{oO8tmPBng0>HL@H#Cx&|swC)1j=yaDV~a z?Rvy?qQOc*rvYjHi(&6U`vBHE%tsksGVFKYzrg&J;je>z75^>7{MR#N^`s!xrQ zI3_Twu>4H13*eu`yc|@RgBlDPko2R$xP;+1lg$VI8QgCeEF0`R`oRkkC)hdg&p=*( zc%q?5fTxLDiQxx>u>k)8<_!#IKmpat46EZn>o=H`Iy4fvG!%9*G&OXuP|gCi@EbfH zFr9+*g*8|~U3-NC9yUsR3{w~s7`!=@4lzt%P&hEdqUjW*{#w8&$I#5Q@Bl|alZ@b= zhJ^>XE1KdNCO0TPn32Hr0%Fbz4m*cq6BHlmRB%fvd}uISz|Xz9Jv1^x}pFF?a<4&XI!FClpczJBAM!ughspk=*w3`ZJ`75G7G`~Ec89^(1Id;k(Y zD+Fbj+8q=Ra3nIxGPDFNJir|&bfsZCsKw~O^a?Wm!@#hIX&Qs_0geDB0f!a_#Rl$# zraKJVKxzV-4nXo3X#K_{C50;-Elvy!4HFa+xFwhlfC~Hr8XQdU`L8_;w;hZw_-x=) zVLHiR;KMzK=>aJH9N^dkn`>)ec*F4efZYN9EsKvbeB`m4(7&J=+{!(`zoZ#He)xys z8-w8^o?Xl(OlMh)5Aa@K{sLmH@{BrWf!|7GnHx zH^ZtE9vhgn7&=*$0ysA`y#OutIKaJy=>a4zK=s!q1`P)e1tt&BJaq#H1JeG0baAo42j>Z( zI+vjzQa9Nj;6DHxD>%UV;lf$a@IEN{ooz5q;5or;#NgAU=)rRWQGY!-&7l8u%k(%0c5g91ET(Vt#DAl%790MdA-8v2}TEaB$zcAPB$1i@NgjNuPqF} zTkI3`UogJ_4Y)njzrg&9=|6-03;v6U`fHWIPX+@4{zc4hK?VK+o+Zp00;d(g3tbT7 zhYUL>C>3xoVS2#O9RMD})nI8pVs(IHDx&}8(XiQJK^iwF(*w|Y(F0rpOd1T$4tfq8 zEKENj`AdOOieY<)Vgh$2(=~?W4GSMgMQ}(lw0CGe;6NHbe$aIA1F@wPY zJq2bCro#+2pbOy;{b;dV*GGL!!Hh_CY>kT zI~h(buxsFd*nETGA82NF3G*lT_#p?ViSFOTn7{-YE8qqV;QW|i$ACP3_!hL(?Fo+z zGYi8_@Ia#Q6M>TqHlP#^8$V=7XV`f_FNkBt5SHfl^@f{h=t@Um`X&bWjN37GZnJ(C7dbIR%+t28|#7 zYOqt_>0oAJxB(gHc))Og!A60n0Wp5~Uf{2TU4i};rthG&Y6;von7@GnV>sAgl)yKgSq(Jr;BaOdtW3~gTo0VCTU*LmAu=3qW2! z-^_4=!-m19h4~?9cptoegW-&W5d%*P^C4(Ij#Y!Dk3qkIygItLo4f52eD#K$nHLFE941rxmf5@l%R(4D|h&~%rf%|Y=3 zM~RXw!!$?LGaLy`@cN6-sU5Uyqk{Pt)A@$Y3v^y^TQS{l*#1H%q8VO)t(@=^wDxHO zXovvB04+Fw&0uwlzX8_&Vt}ka1Pwo$ffk7+@Z4ZFWAJG(et=wmO$60M4IC~^A`C4I zx(>V-n?xAyNPufJ`1*~h3|l#Lr*IT7O<-tc&}ZUsU@}l>ZBRU*5x@kmzYc*~gAE)8 zOwFM6y$qZTO$?wJ=O-MzOeZ1j!xf@y8h$s}8R+ctUaNFk!R`Ui4sJb`Qx2OC@N5u< z+6Ah=emdAa;NQTQ1DOZ|)djy4Y!2{mK-6D<8UBD)?ww$Mp#WOK$Mb;s2g85ReA7dC z{l${cvpYg>2lp1H9}N3I>y{rd{SesBpml&_0n-Cm{iOk_trWO7F~QdWKLO3v9?+Q3 z1h2n9>o;^9xeb_(Fo4z{atQ<-Vc5Z-aX>?W=@2A;G4LjU(ij7Hh2&2LJIMU<5N_47RXp3p{Li0aTHJ>n}+DI>2~|;XQ+)0?$GAJq$+}wsU}|z5X!p zGx(oSfUlo_#&iPI|7u{;VdyxZG=ckqa2Cs~M!f}o@cFL}))#^c859&bn3;MQ8Uz*u za5XrwFm7bfaPZ!MwEv5~HYh>I4;=*GGQ2xsq@Xi} zVGqLz2crhQ6Wz)QKU(bs{2Q9#>o>MAyaCPYfuiZp0`ms`1I#51{~Gis_#urSu3$L9 zXvAbQhhN9wOoI7^-UHkjpvldU^BWJt>o10uRS60L8X?>@3=IdwPH;1Htzr1hX!ph2 z0#ScCDbDs#VBlbKTEozAKtYI8i^<`@h6o)7X$CcT{blC3e}b|OhbPlLhL(w`3#2WX zW`S3yb62v#*B^2+TxKxf@L=WYVK^XRz~BqoQ}c+iW`e(=GQ9rU!tk8YzJvcDbB#ky zhVejxUL9cyUf zQ1H>@XwqS5W?RzIVZ+1^ni0EzTz}0}Xmc=Z;7Q@mU^>OHd4Wd;^KPMg2e(h)S-@Nk ztG^yHf$A^*7Ul&E9~$;C@HaF+1g#1d;BR4u@BezjbaMe{o`_kk;WTK1W&*Ri!ow35 zP8=H$^Ixe7olZ&)E2c21b96GS0!{R&fYv?*XiPz>zZhmZC^>q}a8qUIY)}g1n82mN zu#-c}iE9cQy#8Wg0QKWKrZBO1G`47fHnZ?-0Ifgdg6A*L`uQ6TMhreHxRn>3XxOCC z)4>c{e`uw_hg5%kVfcGsuLEe_0i1EWOOlJ=mg1TmA4d+1( z&WX$_0w)>7K>Z!$`m05Wp}T=ek*R}0Nek306zE_Dujqize}U^S2L%W22~4aEjSQLz z96?N=U5Ba(+yP8Ykns%((IpPxxxYzFEDW6qN}#DR6NX;MiVk@F^|YaL!6rxWdXkd| ztQ<6EajP<&3^WVipV<5Y(jU}dTq5vO!_JL=2J;i9pA2@6{1ds4gBE6IFe9x$TnMVR zK*bJd*&$>D4#N`;d#3(F%%@=Wmn1`N{C z(9&r5K<5^>5!0~-;{`kw%uEbV8f+KvXE4I+uMVbP40Z?kCpbS~_{?JGz{kM+hT%4- zQ#`F5-v9c=bf(4lA{a+Z5%XU&!Rt3V3YafAv@)1Ba9rdP zVAv{fm?^+HG>go z%?W(|>jFnDo2>)?2j@Sab>^UH6wn47YX-gpi1mkm9IiANFW~>dT+?ud!5B0(24276 z!2ba;|MeFsf{w3B zq#2kP7#bKdKodsFkokY$=2BS&*2F!&l z=Nv)%?6@Tv&NJ-3!2bcZe&Ye-8c18>L-Petd!vCH)Sv>7p?zTfApo8KT9b6b!3-1{ z8VrXVj6mHS&4$AaMpt-{)*sq3G;kd9?Sbylp(6B(I zh1-US0~8kwf*edN3=It|3LJ?2UygDNJ&lSg+?7f~jI9ld3XvX6VxUSvfdgs%ArHer zCX)t!!!8DfgB%+ibQri|uyxQ=A z!v_Z&2EK;wgA6~o_A>Ax&3`>>0QU>FFtf0noM4o}BL$iOU7+N^GYc_(n9k5SL8qi+ zf|H6sCnyumU;&$BW#I_QD=U#v{+ z8j4;LK}{ixS~YaNG?3OGW-*;$umKI;Gclc5V5Fhb#jVtGVu7^=Pggg5{o!+Pw~K!R z^LNmOUr?0<8XGio;EzJoU*Pe&0G*qHtPy)5< znh$h1C{5vL5PBHU!KB2%(Sle%e}-YB2B^2i<-*hmT3jl^bcCVVK_NgwfC*85fmS4f zR;ny%fKCEF0S}OJ2r#ul+7b%{pD_Hqu_?tzhC2n+?F!JDzzkmb>7X+~eFd!kTEpw{yG9$b8>)x0<#xnd`v@N5oonD3wZwh1cRA?4rnhhWd4gAHvh${ z!LX}Ase$_$a~4D21*Ha#1x}U@Z463H+%FL84}Cz(^AfqmnDm&ME~q@L>&z>8Qo7{CiT6cF{- z8iw09tP=Qox!IUbgT`AnFmo{cU@$tMvw>S15~mFeZyDY>*gNp|Fh5cF2~qQc;RA!+ z2mS?!`LA~j|5@xA{0}gjGM!yu|A7A!^ACm-2aI2Vb}PWf53@P;De5 z;NHRXnyI5f=>ceeC9MCYkhq&c?*MlPla9bj2E7y98<<{!%J2)^6PgqteQFLC2Eh%C zItREJm~sRbg8jvCf`I`vr^x^tpJ(7rVfe^k*Wlm4Y{T%9(e6M$s0=>=s=pQ>)^C7T zYk>ES{$aQanoqgF3=**gRb=q>8y^(Ta2PZ2Twu0wIKyGAzyoS;oNqNw;5oot0NEFL zK;U6hN0O2OhZvJCLubOGgpL_Z;Q9-6NPxl;@E*()tOpbtI2H(Sh&1swG;=69NK9Z- z0j-{G;NW0OVg#>OKOnk5p@Tz-iDN>S9%z5TL5@vL8jLGJD-stm89?$5gXm9&a}I_R zbV``Dluj@xc*sm)R$zF@Xt0521+xc4%>zcro>~46!Y@GG$pHQr+<%$wG3-C0{{u08 zxKiPkhtUR}ZOj@BFFA}Dc$P71IQ&qs3*u=&tUuIb=sKX(z_E=(80o_!LXu1VF9NA6I;V(2c0Dv5=`JY?+|{z#{^&euIVSqQ(XX9Y$sjhSwYhO`M9%JPe;0Z5((6m~TPG=N)9X zIQ(U>_vAkr4BGgx_W+-x_Xmc*47MWt7nG6KZ=7y4I>57lS%={dgTVpc1>9N;2OBmO z@T_3wf{d%55Ck2Up>Uu>K}m*TBZK0B4$xRr8-pT)h5?rlq;1^5Fpr_V0X)JP$FQ|w z;RB8vOhOD(Kpn9PCI$g;e0hkRb7-ER@q|Nz$%kPlgTf__Iwn5G$qfomJWQCN=DZMH z!E}mcSA)(g?#hOL3ydbrT_dc`aBG3l6rKmn@bw!H8Gbm4f%47*g&&S~4C@avfAV_6 zWDn|y!S*i;9BH^Y!OnpPv@Y&vgBfUfl?rHgumk@bX4v>4OS)30hYo02f(paVBMJ^2 z5<;pDJ00`_xMv{uzveRNJ8)cJQ(@RCpzfkEiAj}VFNgjiZlv);QK6|0x``SwOspK6 zT_B74IKh)jLQRJS!Q=Cw@xvRS@xv3K`JDzca7TmV2WamJV*MfSbB31(>;m}bFn?$G zdtjeKe*pIt@aAj&3(Suo;~O(rzcsvFV4C4`gBf(}hOr}m0P_-tzn~pqAGp~d^C=br z4;eaG^cXr?m^2u=z}uFUKoem~pz{i#>o+`Dk2oxJPzm4=0he{)xe^|Roec`0Hmwk( zeF)mW+{vJKkV8O2MWB;qQ3Cf2&_o!6QUKEgCN)S|2UlEKVDX9A-tljj7Z0{$7? zOBi-C7^UbF6uxlVFmW<$I-qla88m(fUQ@b&QA7c>pOLG8=}yCDhRg%r z2@T-&ehu6OLMI^O#w$4Nn2tBtDsWUV-)H#NVEBN)f?3SrE2#ff!F-AdYz~L)63`SR zXw2#zXsMe6{{rTh46h&sKD7Vk!1|5hY@>Zb&k1JGLPYBYJ};cVfm$h`7XAfDe60}N zC~<{B*M+xW(jA7q42l9B1#Ih+CcMP2Hqx2Hz4DOJ4BZ-oMf~+z{9}& zU*WgIt_?bCn4U2FUSPL?e?#*tNO=gVzkY&d_Cf3CL1S_JTbW-t{7SG3=?9G;g4^>A z0)H6JvlzbsmGcV!IE*-W4lr9a{9~{`#Q%}`fD1Ukx3FY$bTlYj@R-A;!?A0rf`NuW zkt%4Bh5~4D1+4y3W9aNqI>0fbNrz!)gOUU1G%ippMK1}Y22vh!urLUK*7tIN)*6BK zDsnO~v4H%=z-hp62omoNyg3Y@b>=z~gmoBxF>E@}3)=VzcKinB18m^<0`FgDu?4N> z{loE(!QO%I0P_!qKah$HUVnXJI0ia@;}G|UhPw>L5BP2{moc1gFlXR-f#`p|0+sUy zJUv3IoNl%#J>=NHr2wjcKqK}BkZ|r`J;2Z;puobx$aDZS?{I)ipveccN|}K}foT&Y ze;p89z}3aDh+$>JqBTr2JCqJIY~<2oYHDCo(pbQ>1CqZS1P?KsJ7HYHbC>%I(|t#y z4SrL&(>P9_5MRKvlDPpAUk?~JHT-k1XW&zCe!%pb!F~h(2ktKn|5)}l@IT-#U;xLL zgTMlYpDboqbfyUNFr98Ny23w&Sr;_oF@a|xqW)4~*vz1?fMcEWn?si_C_LcaAf&@^ zOF-!W$6AJOkha7FR>y|P3@JM}bh;Rs8yyxr;+_B+OmhH_3B$(^g&6lYBs>8fVc|Hv zA@K=!1d|=ZbV%*+4`Pl72ZO_929pUK3d{@)2N?_w@S8D%7QkCL=qND5#}79!*n`)L za)Z{}><2Bpxx?^}VY`Dq()<@_8@`!?&jjWame~S!4|ygq>oA;VFn++ZKp47y-a~ML z!#2g2FdW4ko1a8^1v9gf-F`2KPAZXYizO zTR5C^FrL7hg|vR2;YZUh7JWwM2MRA5>^S&aghA(T>|@YF>VJWjgl%x(nZV7)aI(P; zRBeGf2%yG4Z2vM#3d=?YB?pd4QmRaULF*6aFoPz-v;w%N!24f}DhxZBlpQoKFqt}b zf|lY;;PPc?WK;@}M&7^7u#+LtAtQiEglQva3B(pB&_tL9XtE5xej|b5M}rb*{>zBr zR0DYNqyxhV1_RKFdU*fq3By+h8_=;)PnrHY*gEh>Fn?kC%3vP=IzI|he}U$|el{2- z@XYAm#&maufrI}AE*6243`Pl{m6nk55VU`J2aA#j#}O|D$UsL2lLAv0lM+=K(a0QVE7j~sRn_~(EQTvD)0 z;hw~O3zEM;=STf;G+@v<;H(T9=NIs4<5mRaFVIOo$o((y>MZ6emURtE4O|J#S&%j@ z(*9*1P#!$MVF)^(?ZARNT!u`14BZV14>&Xs>*pmHw=*h&>VjB?MI6cxxE?UoXe3p=VGuvScvqc(90pqd`fH>Ba%21KgjOIv9R2Xf=S&-+;6e8W?pLb_gXM z;F#c~#?WzKQ5W|H$U$um94PyjH!viC_Aj#uOkh~x$Zf#2gkb}Nh9g%46Blg$D+ko< zIl$4ttiW`F!Kjgc0mP7`Vc5f94{9HN0M%a%`~l1_ zA^Gb7>z4+|vJGx4hQAHqacnWrLV5+BM~M3C8B2GA5(mc$CN+i~jY@JH?M!McoefG0 zIF>L${SI0`-^`%E#9`pX!mzVR0d({kXmOW91BW7F|JM?MZU!X=jU`MP8ao)2lsGuL zbQrojlo&X6z}9at2p(ZN^}uKcj|j6GXyXH@0AX`zXfR;X=|P--xWwVFf_(@78RlON z{}t^)$2fceRnRB+4O z3fTI?1V%B2)&;r?G=4Hgacn)H`aq+C$&RC~K{-((6KVaS!$BUq13U`Mpk;?<3_J?V zK8%Mz>(dt^&fnO>@K?dUfj@!y3&U3i>m&Rhl>dMZPC0_S|LY0EuSSCg1`B76hTjbK z2NW(i>o6QoQ2*-$BXnB%2ZNCUFNbgfxO~>>V21Di`U=`jnZSR6`3Zw9 z)BXbPJIq%={bh})sX4Aw6UXBjqwwu^$|)E=}P#RM`Kas_$)d|FTgASuyNmRGz@`0CE1IOXFq+9U%`+CpLy=2Cc`O23%|mn+p;SaO_cno`1N2Q2?~N z>JY~XrZ|R{js=H68ygk3HzhyfC~nFS0I%6z!2wz}Z?C|U!7Rscyg^few_>pz!}o@b z4|IMY_J6Gat=x0aS71KC@C($HULyQ}VKZnk@C?}c4F^`xu~EhfJSUvzv7Kv>PvH5% zZRha4!SDgk3&i}_42Eq?iYyvQlSCNW1ymhC`O9Hjf@UK}0_^-K4u&ZS+ZmJ{I1VUm zWthgG%D|PNB%-pHLy-Y#{k+H#mJJ*V5ga;991If!)Hu2{m^xTCFlsb#+91Xcn^>w3 zZer-+VP4O0)5$D@ZrjCT)^;`!5GwzVt|exvgEUMHR_mYfOh9~ ze$X@I*utFEumLnebptW~rQy)k06xi3O`(fHFG12?$-V&uPonE(33aHhdnf#(mi&6Kk&#vM8p%7zW!8H{i7oIuoH z??B6k6gUi&b+&YKC~e^AU{Yk*&7gb%`TX7^3>^##3>-#GJO>&D6efBYFfkn1%%E_B zqXAKWt>fqtP*Tt^;8JJkJh12iXxmQ1W(Eb&YG>&Ay$+(s7!DoSV8k<%S&r!p!{!e> zmfY$L{~L@B=;$KWZ|q_C*I>`Ue?fT-%Wp=TM*a`X-x&T2>^mTjw0>hr!z~9R&{%;! z!%YXH2|Am={S>1EItvi}FMZIlHVWJug!CA?A1IyRSizjbuzrK~0gk=Rn;`wB2dq90 zlNc0Oyal*;8fLR7G-SxIaWFJHDjeY8L99Qtb7*T`sK6cJB*)Z#aN$Z0kG3er^$nV! zgE%@M=6G=MGF)O%=-@YE=3%(Zs1U#-z|6{Un4thvqg{rLAI=f@23jNZLHGyLKLL9V z{tL`k8EVniAHHFD#9+kWKY^Kt<2AccBhLom7Y)A|j85=Oc80G%oC8|F!N47$1lp*g zcz~l&>4w05h6PtR0-E6K5BD)FYfxOk{e!EHYcZ(XRl#(RVS9t>3yvx#`1-@M4Benn z>kUjVSeh9Wws7h(o!8jOpmu=6rs)!-Tzw(B)8SpCaYO$C?Fxo>EXEUb*D1eL_{Ct> z7_+1qzJC58!w&;HP|sxn%MXQp9DFU{gM6(R@{#s0KWVt>V3grAfm5yNVxx(J?hd9m z3_lluPn3d>AG$GhHiFjAC#bQ2573wjS_E~#$boAcqW)50n$4i(uwnw!5~i5}YA%cu zKx!P)z-LfE;sSI&K%>I~2M!UoR?zxG2Mz(Yql_CF76hQJ-vF%!Z(v%)aHC^F6C9o}2!c){ncxIpzX3k8 zF@b*ux0=Jt2CD*{X^hVVJR6K0d?q5+AA-&av^v2*2eh5-5NH`2^RtGZ8Wy0w@F~dr zvWCDyh93?_f;oFi=mTA;ee-w(iw)u4hjb}K;wsyb!dzt0^3()Kd>ldvSFLX zpmKpDf$0vzLI%YX90iE=he8bhLAA^;X3+V)hL3nFng207X)yS~Q^EWSGG@ggyF}qP zgWL`NEy`yEz|-YhnE!$1zb^DIfYo0Nte+gdc5eQ_^M~2a;T-53j|gTvhW`!5AA0U0 z*3VCM*b3@f6)=e&Xag}4nPeEYFf0bG)_|@FWMG)UvY$!)2**dJxeRR_pu@DmY7`G} z1USLhA0Bhqd_(0DhXE6xLz9ET1r8G?9fr*l6b^8xAlA>XV))-=c0mW!?K*kD=m5_Y zZX1T*48{j^79!TqKUDxv=Y8OQ0$LVzh<^@fUp8o5bP8hr3p6ER|DxxEww%KOjtvho zE;RpPIKZ&^0M9GL`ok24-Ap{<@V9l)FHoKXTEF4IdjY)v%N}L@;fI#q3C3LfhnO!h z9APkD;B&%g3(J`%(2izA{q=M~r-D)f_YS5sRA zWN2(Ka^!DdKB;nmVVeVw0Jj=PCxgu-mMz@^u<^qs4u2W#9r`~s|8V%vV&Ay_0`mp7 z{|@#F{2Yk+uLTS@9g09F2B-*}Q?P5`pUkWZ8r46*13E_$Jl=bPRX3sYz#<3kJxnSp zT@EIJ+#8rx7`hkeo#1Fftlw~EXg;A}BF)Rh!PMZe#)6xJ$w^}qr;ZZ00j&R}z$hiu zzDqGdI)cgSK>HNcN8FW6MojGu`U={EZ@}%K@R`wu zfgkDo!#ym|4egKg2QYt`@eg#6ZvpcMCeRK(o)6CO`L72ICmF00d=5AtVLHKJ^?+vr zvjN9VMmx|Mr11V%4?`=XqC*4deA;#fO$P8H-sPZ;pGfOBCNcCjX(mWSFx_KlYe-h) z_`$@d)Y_2yfZGDGe&cLQ#|ecZ4gsd~3{4Cip#0UtxVS;*6F1WS%t#q?5{Q#c=L{{S1Dj`L6?z^@k124>dkGfR>UnKWKQtVaLeNf!P1`jNv3BXcsNB z3X>;8krV$+W)>z+1@Pey@bSY`hRzF%Ji3KI>+2Yl9QkH2sdjWS=s9>#Xik8gzoC=R z$)e=SJ%LG$VI>3T3_u|j=9LV3PTUg^=O40yRz5gz3$U?pEOb}^nnGe>S_m3Q6o8%2 z2I_xxFd8ZJcW`SkylPMa4LT_?ya1h|-+?$k>O0fdhP?sYSD3#rOg&`lz!$*$71XzK zprcWNjtI93!%G9ufGsC{{IG@NC-Xi~ZS~CIC&NAu z{t2M{%M5lY{31yEzZ_10POEERR%AJmu!)1ejoFaljDx)ZKhpUd7NGTq4IB@;BtS#c z6Sr`b4l>7z;Yfq= zLjISC{?`98OF!EG+_x4crbwpo0Pw9k_!L>o=x?&X1bF;ov60(Bh!T#Ql-U zhG8CuBIv9J`1->qpz9ABIK0o8W>a@I5d=4m}W6T z_u4}m6TCT~h2blxn|#3egT!A3YX<)V z!XG$52j2Q4)*p&qb9f_Qe1s=L*~;N-gLMzj0cQh-GYZBGJeLsl*OP{h1mznZo0v2> zb~Y$AcytIUd2}35GU=FssK1^tECe+n44N1kb~0%6aDZ-{X%tXk;1EIdzt(hu?oU|( zI-_)V$ATvCkSQm_A|{Rr@cN7K2*WD};{!Z9nUxrRHds&KxyWtej4E8SkzYz7; zGltU+c6WGoa4Rr;WH5TbW8mBaI_VL#q61!k&0)I6rF(*-fJuU3D}%-XP{wCy1GRq? znBeOVw}H2PaaJ%1GwcVQ*;v6e54^)t0JQ#)L9aphLBkIY&~+8f z2UQ+0*fIFKu*27HJOPc0IOt3;e%5hPzzkG)g7zhCaNw9F46naZ70pDFjCMv0k6L# zuYvZg6=>f8omI|aSHM3-`6+14Nr3MZME&)I;iQXE258$C!$}sSEWTUKW(&Y0_O}r0 z4-YYQEm)+X(Zway)Wu*Xz|q2`2$}~G(P&}xgYL9XKIi#KF^qe0~%ci&BFJ==_Z)CU6mF$V>mv+ z^asBLHy6{upN@Wj)K~Ug^2oV2SW?!wiE}Z zYYh7Z6d`J+GU$R%u!PrNCm1FOfTmiQjwozCpaSZ!@Gv!k7VJqN#t+v(wy*ADe%bKb z!}x&C24)?Gi=e*M9&UL3^^V~;54fBBg5fvEz61Unq(QUEHW&D}BkC{EIZJj8IuDpl zK*!D>03G%#aCX7w13Ehp^;Zl7c)wl(lL$j|qtb!y9Zu(!Rx&6haF{S7?f>dz0i77Y zq`}ZFpmd;n1JgUuVPzjYHX+s@YCui{m;l-;3mU*NU^>IN5H!wazykn^$x?P|p@!(_G4)A|a2KC77L2KhPVDn!W8qO+!#(SBCzz2Wv zo?y0NxT9!%g8u~b2gv;L0fEO1-4~P|aO_~x16_}$$kA{}n_=YyrKQ|Em_9)A*9q1` z4$TY-3LG3s9H2$K44h0%JPs2;6U~VA8={LCx*fpVgjGPtZX|IiF=?`_Jfx(+y^ZMu zB!4l8K43WMV9>y$z^uaXiNQdDcLBE!%Z&q@7V%FJhOgh)0NObYYB~G>tv__&|G|8l z=_@E@{(#qC0t*;UD;PD%EMR`8a2j-NN&~k}!w(j_0G@5kS77sB3=GWz

|lbgKXg3M;Gj^zA;)xpq2Yr91GgX(E7OJrIx{#dn0`U(uLq1$ z3|*j=dl^ml7}^^W6S!lTm>8x{(p{uc;r0iTzdSg28V)HKcyS0apI|!3U~q!Jg`1_} zgMf_#k3lnh{l*%GU!ZG=KxgKEVgOz1ApC^sC#YWDfY|>9>SY^&_60lv4Sj%?{w`s- z!e9VeKmSSy+@3!n2pT_BWZ-sSx&bc~3JP#4;Hx4j-U;wwwLBrQ}lKd^qpo4tvK&!72 z^_RlQhFz(kB z7pVVrqSXp?gUJJdKMZyZIt#d!7)~@ADd;sYzheZCYt4|o%k2ST9!7ic>P z!wwdGkfj;|9iaP?P|iQ>WYBcr4p0&S#VP38lr0RcjNtPRFG1EvNr*0K0ky}vK}&!4 zGUz*b3owZ=^)l!?DO_ZNj~_l|IN7iZ)I3mOs8q0X;h)C5gyCe7T?o$%*!W=v<1&Vi z5Pv-f#f1a^Oy=hdKRLh)>EY`)8XQh2>|)?Q;QR?Rr7i%f$k^U67z^+soj-5s(8r+E z#;wZqnqwD(UQ5R#Aq|Eu2c;F<3lQ^PeoT!AR($BLU^>UJ*+b_5hfNa$%K`=k1y2U# z`l|!fa|vj=psmL-zo82$zXc zJC}Zw=K&@MNd8I?Il9V zJ)kI;m|gI6ncMi#34{wBr)I zKD3o%la6KY-ZP!ji$zH9;wWdur1ohg}SM zd%#zEbu#Ep0v&P)UBAJqkthU9}K@i%PBW7{}K2NIA`B8w{2S`Uf~PnqDyUGblai{>H4=upczu`+y7H|MFqja6sn(hXUj*ddHn{%M1Wlu5>+-AM5OM>3-S1-}35 z1xE&(9Aock0v7p zod)4Y3OM%ppeiF>VJV2 zCv#7Luip?{!T?&I$vu(j2m>S2A`k8fT&fMAg)X46Q%G3{>VN%YuyWv^()_f+lflTr ze*&{A=sbMT-6)9u7pU|D9j^p(yj=pn0P{1@#-aq|^EVcNX4^rtUEuRKnEV^M6&Zdo z8Zqdg-2VkW9c~rV4~A0=N)xyrFs%kPTpKtPxZvZ5J`9@=Bpl%203S`J@PXTgi662e z(Ez#r+UlV2pd*3l2E$?j#Y5Z)O>-2sD=0qTC_r9+_^Dyz51mTp-%Z~a7(U?#E#&yT zVDk$er1cwX!25jrr!c=6X;B}9BpBNn z6en!poc;?!vY3w1}#R0-H?6?eEe_?sE9kD)5#28E(of8 z6&e0BYzEC7!TVot7=E9yJHX$_e8S;3=>EzE=7$Ww8SEY)pMUs=;r|5t13aJ>{&@yt z1^x%jMhpIgYJ*YeR1GEg1fq#Lr z4gx z>^kbekia0pz{bGXfM6&N0|pR(wJ?A-y)!T~FdRTIj2J-2;xin8#zg}Yqd|j@f-ncmAsFK@tI+`;go{Hh~%89HPyv2?xL;4KRN>f%Z-#`x_Jzjo^?#a&tnXgn}D~U=s_R zVbaK};N~F+Pa6rW5sYCBp$(!CMqqfTlwRZ27C8fdiD|4uCub!fcF*4G{@q60B`-25VxYM}nAy zXals|aCKlUV2oi1XAnKW8o&_45X>NQfVF_t2P^`$%hib?p+Q1{4RUCUgaQL7R7z-Fdcg666Z>$Hohk?a_k%z&VLEwOh0V5BiGlRqdmIQ_lun1TlOc*fmI3VY* z3!vNRAvq2#&%nUSXz1V*AS}Xil+n-;!eBLI@Nf_oV1dV}GHb@csDiK_(Z#G82cir@ zz>I@Y24Ov-2={F2ZRh-dZ48k0|SHofB*lN|9|=a7n1>Z z4>1g#+uUY{-)`8P17aLHi_Cy)H@5LPFZ}t)nU7$GF){9Ke|bRK{U4z(W@xH7p5?5)5t( zf}kb@8Uvz6fYE^|fnf%N8Utqo2BQh$Xa`rU^)jTUhL-c7q;CMNg%R~KTm)>80|OHS zc!ZjR;SdG`8W$kD;MFKPqXAORJ1}Ccmmw__Xj}v^Iw7iK40FKFVQ_GDUV{mK$RmY5&3~0UV0lLGu!9f9DFC#M`RxvoZBC2DI3fci;7Xzak3#dAF zmk>OL!GMJiqZ?CU!<+Y>jGDh37}yvR8zd6gBpBN; z7|?KLa7|#TV3cEUZxDQd!GNU=MznevUO}^g)_H?N$br!bTrWFu2sB|Zpmu@MhC`!( zf(wTr6AL;6T30$SFf#-k5HVl{)o$nvP#c#46lolw>KIfDV=}<5VPJ4TtCvADG~fyv z#DLkw=zu4GK@4)hm%rftN?@^Is zyi$OMAp--bIu?S}%P0&-u+KpRW_1h~0Z9{$F{@*kNG;q9%<32>@)xcKR2{?XWmE=S z4O0ulLIw@cnzoY@KEYHs3HzjbHLi+=0KLWFmN!S zq~$XW$gNJe8m<59Sp&cT2lEKIQQVG@9uBf!9Jz<7qC zm;ug^IRFlyVg{K*kQ7afISfRE4+CiQ0wv&(TMN)YL^NQa0>~6(&KFq(7u&`Lmka{~ z13y0=Nm@zS|Ns9VoUt((a4RvT;39)o4N6{yXKFA5?q-VeGUVV9h*`*a8B}>94H!Wb zpyg%MJP1{Sk^>>jNcNk8F0fPc)Q7eN1gOevtMWYg++Jb=%@aF;hNVYvNQ`=YGz3ONU^E0qLtr!nMnhmEhJXQhG2hK30|xLyDrN%) a2To$b0ji$WfMEf6sS?DTgNSJ51_fX}SeDiOH!cdU?qy3`q=JM#aVkWrcXMoCc8Zamz^BD~o92f!^RFWBl1Q>7wmIkmKel-(7Y8aV7Bu)%5hZr?N zIL%;SV1T)Y2sOfZ)qo}c2{1fhkYM0rU~FJWV6bA~U%>c+p^ibSfo%cf3i~5qe;r`` z!Emm@o`L5Ovq8rh17ijL8_b)Sjx-o5@SI>aU?>0?)F5z%p}Rr%OUF+qTaJDMr32g> zm^2tV7?c_~8kiJV3_xl+SdTC@G3YRIFfcJVG%F}DaBpB*!O#d%qr?a{=YZ%kg>DAD z!yX%$bU@m{<~VdVC^aZ_Fd48UfXrbK{mpPn!G40yDP|j{GYm!z{07V`7)~~9YT)T& z7GMFJ^MG*=!+%D5NB*764@AB*?04Y*!u*5fFN6IA{sY247{KN@2&{ED#cVKzhl!bo z;WU#`1OEnQ4Thf#Mh!d-%okV`Kz5yA)n)2#QFh_@!DPVD!=U8Ay@82?VJCw^0|zV9 zCk6+Qng^_D49yKH1sWzy3>*y%3J%-`P&HhvOg|U`Kxz~i#T~jD)faGhHpwxxHz+RP zu3(a4+25eNfGdLO1jHN<4jzZY93~z-hRh61rx`Xl@NZz|VED*t(7?yUd|xevI-y{7fCuES z(-41YLE_6pa1YBhMqMrrHU$HP>j8=k90g1gEbR;n8#n@(CPBja0K+_m_6D6N92HD* z4($sRA8=GKRWYo z&x3mc(-VeH2BiQF5hhiJl@4Hr0s}asOR%aqbqeS^a9?5iA~2U>@kNaZU8)SLL29P3 zwL#*7gN2o8DTA&9cL38>p;iaQ0FEh4tV|1C76fWcVPXOoBMduuvlvb=*eURLFh63r z&>+ab!@#V-aDc%G#8}4+j`ta|-x+=~*ah-WVSX;~^MG9f_YLN24Dk)N3H&!0p0R<` zss!tIhJy@t2|Tly#X5d=fc?eFaFD?$fM+5z8zjCg1P*g_FzGOG98ppf*wvthE7I( zM~(|jDhwMH6dX7%FoiUrGG%-J5IN`8~ zfv164f#C$hHU^#p%v_NCrNLs!(8Z+G$gza!2SXRAC{SS1V(4NpYv6sr#07~94OU-< zrU?rKI2f2tFf}tMJm9ck;{)Zm2b>yA+_3y5!_v~A+|W^=bc>_eK=A@c36qUNKZoiC z&J-pMs5u;R496M_6L>0^ZXIZ!V7x%*1-BH#u?F)6x<9zJAo+_!b_vsu1iJ(N8<<}- z{8qMW;9tP}g6S87T?5|+=0lMD<-q!n;okxK1pc4QzZA|l7$@-GVE)E%w9z<`{{*uG zB)(P%&SBWXpnHY8Kq=-<~K~I8I%t2FJaDt*ww)Bmf;73%?17qhhH#!masblQp50D zVBZ1$1oX>oM16>;Mu@@gXuhj z5d%LY{TMOyOkie!W-5fj*m_I<`tAXJJLsx^+0qz-0?-+J4C^2ySVX|rHKA>d4 zv6txqB%C`~k1#Ydyg0!nz;uFPBa1=<$3`ZehGqc;0S*JEN09t=KyV2t8K2;u!1RV; zr=S9Z#|ADPhHeHW1C9+$A0TnzAo{K0G=tTNz75Q894Z=&LwGhY>v6Q1B$N$ z?H`)|IQ(a@Z{h!lTz?&AusXoAK=|#19}IQ@JX@G^I?glLH0bPLM$}(iZ4Al>I1-rd zC~RlYKf+PaG}ocMMYn;Y08xLzbWLGPgYJWs7EFE%+8gv2ar{s+faEU^ zk+Y0VplVBl={&<`0lh<-22AT1ni+I1a0oC>g2ej^(OnFO7_2t%EMR`Y@Q=Z+f%gG( zg3uub-3>gCn5`gj>cQ|p;SYnIi2ecQ2Ms@X>=^kNm>+<0C5L|t^Cd|B;t)8(bdtfy ziDwq`I)FV$e9iynx}y3p*>FrtSqyuNpQf@T_2d2gzSE zWWP21WUx!%pTPWtVebOF4E_ny9}etwv=8tPaYoc%4M!P_UBGJoGMFcEOkhrFINPw< zf%gLQF&1zgXCZL7p@V@*p}B#11H%ReB>|2GrUr)0y+_Gl4mU=_G?$0q>ON7m)m}!MKd!Bjdgd{t3*>89p-Y^Uyb7e&+Cz z!NP%m0#g0ObV9(4fu~9M1IG_1BLSU;<^`Y{pMkH1`4lAmXs~KA^c_%Y;8?=+f?*$n z@&b+(Od1UL6093I-Y}hl#DxZH9#i82)dLy^Y)4o(Hz_>eFyQJDYU9lY+!i8 z@SDl*fc^&NCk?+G>?ZOrVSdB#o5AV@e+x6b{`$&rmchJ1<_Gf+P(EegUBqm|bbf*H z1DyxW@cOHSp&3+L?O=Mzuq!|>K*NG*4Z~#zg)1DZm=?h5FHniS>;T6mrY8(LnerGo z8-ze2Y6m!0FeyOdf`dhep}9ffzzPeeBa9mu@)$T2n0lCIGb}mCp}^Dx$zKe-H4LX2 z%o;d0Fu!2<0V+2dm~9wNGHg4*vjD07V*1Zu-^hP}`3J)uP{H_t`47Wi2I~g@2k`m} z)c-nQsG{S^Y~*m{fUyGqA?6x}s}05veNH$VK=N0Ez#D~b2BiZ$o1AnSx>=MCaJMtb zFX&`YI>6E3rN9QRyE|BqG&CtFaBwg&F)%cM`d=6>IxWot zko5C_aSqczhW!ldJ~01b`paN{fxiLluk8o;4{#&bUkpY^cv_eh9DYfd3Gi=W_F*{T zV0A#Jfmr~OeonCJ2s8yMh;UdO(skI$pmczF6O#=?2LscAtQAd0khplj>cY?@vP6Ny zh>1^NV}rs0ZUH79rUnL$1Ds7<6_EU;z-Z>s-J<$H!-GqRVOzse1?~tYIfkAI%1^jY z!0Rs#9)?228$!QLd-#s{N*4!N8rDJ^#T2Z%pV;730Sl6 zKVaU&@Snl<2%iJ<1W5Z3(*IIAz`wzr2NX~bcs4M*GJn({H1A|Wkw;rti`p)#RVP8W24B=-2ADgTa_n1QsxyVKN4d(ikzEVK8FQVPIBZdBJ4H;B$l<*8gJF z5IV%5)WM;^q`}a|z|_F;f=Pp^i$SY_AF2Q4!7zb=fl-5j%K_48x8l-aSlyuV;Dmw_ z7bJfzVB}zEXIOZEqkt)fp`AhTL`T3R8HRR;m4~?D{jU`qQVdrbj1_oZFjq13H5fnP z`N7QB@UCI|0-g$GSpQ3M1LQFAo^b#4Bd>24suLTQeo%@wUHJuydn?xSU}1R|dmr7Ndh48<=$%PBI#Tise5HCzy;FcqTAAK=RiD z*&j?b4CbJ6>;t@E&-91Ep20tWc?Gop#rlWgJcBU<&j)5Zmj8;@iu^yCZ94ul7%$-e zzzrWi{NvEgV#dX>he?lN_Z1~2?jOvV4!aqYPH;~{j31t1Xa;q=wlHxp>}Jql;5KOD zVc5)|afo|i6TJRf!_>^6#=xR$#czV03}Mg&W@gvUTVO<*(mNIs#i+^cc7exC|KjKPX+~W?+KX zUpWko3>pkv7Fzran-g>#xDAzj8WuAwIKa)o1@C{!frbqeI3k4P61F$!YIs)&Rk18@ zQ2fB1$;1JPQx6VMZDrNKC&0|Y@R_N`h2MbLh2b@W!4Y{@b$I^^R9o3Q@PA;Q)l6B8qNJX1n+2~#J7l0)C88jR?rXcFCC!qQ?fq#nd5`mu#n^M>(aH}-@Y&3G~nZOONzgocE zF8)c(?;JjZJDAFEM1Cr;Iq(Z0`d^C}PB0iTvbQiRH2h$&W8h(AR%ke(02)YChSy&f z3|)*$E4WjHG#PdY=r?e^VA5jnb5L&JU4a-s^Z^YUCUA=}u`+C6&}rZ@U~*C1) zVZjBjza$v?1r!f(f8df)*utQ@z^hOwNTrcQ`2c6ZBIx+x3Jx}g;|&`VxGUJj7`8On z@8F4GE0={qf?wH3QBKOb;Ms9R~{&Log3+!)=L53_!w&`%2heyXtp2*d^qs-}Ab)`HAA!G&whjHDI`=<=HG}^LME~m& zXms}>4=9?>F&HNB91=EVILlz{!}E~Y06Oj`@PMJCK}iABK4j=)P*Tv{)}?cxTR|y+ zV+oT63wW;N1nU8Y)eK4vToagd7@8Oq4sbEDu`sOQSQNpvj7dol+($bgx(GCW=+L!* zK|!I5L5qRgfQg4e%VAN3))FQQNWZ{A^pU{}1_cK`1x7xGQw$qE@NHmLV|W>`=>nfE zH+=qU1IJee`v%?%!XFa;ahMzMeqesjbfd@q0q+my50Lg@fWQKVQyfMN{LRX596m8@ zy1}!7`H8{_2P-H34b1TROMzi^htd`99ZZiH_Aw}JP}soq7SwwT;Qj!szh1B=H8e6P z9N{)$I?S+%K>;+uca&lAg%twK0z%OGYXhT^!YYfYq5)-(8 zaKY;@28F{41}*#o%m)~LDHyPEFfgBSc&uR2;xFKgsJ{gMG1&X?KVbgH@Q=a%2>%D> zKTh|V><{`EBE}D2Fr8q~ao}0N{D9#TXgUUzRzHL4uZhe`kpAfj!3hjk8FU*s0)*}` zY%>uBHC(SSY++D5z+D6zKWt#w#L(8DtH|NObctc#1my+bftURaijTN&AjS`m2~76T zdB9=9bcSIQgUSOAi>5OSJB}zkC1pn=4M%?K`APJzDxF@6Z@e;GOSfX3nuDjEgwOkh@J`N?49!9T$n zUVphYtYlDd@Bq($JyI&*n82mNFq2`C1NQ{x1Oae4FTtwP(95Fiz;VIpivW0t09=@Z zI%^Z0;Psa(!%~KYpq|SWrbY)12M!S?mW2~F6uh{Fx}fdD9lQyk@)b&oe9ipEFT#*CGx}TuMEZ|3_l(09Qr3IKLIs7K-JchhM!D!PmsqC7lQg<9Q+5G z4H$kX8Zqc}GCycI;Q*eW;-H0>p9$MB!i$blz;nFCUPHLw&aG&3kMa4Rsef(FVQIJO9BH|#jDNWxy^1zt12!NS4N$e?flT)czkzc?7U z7#MbddN&GOT(J5JlE3&Hloc2bGi`F@X<$}i`Ngn_p$}>N@CU1E(R=2?o$m3@2!j#w5@TLIYy_a1BqFf*xq> z^Z`R>hZYmp7A6ITW(K7MjulKBAaTJU`oQ58gUv$TAIz^9E;Sek@P1{sVYm@skio;i z%m5kBe89Mg;a`LO68;~|9|C@X666o=Hw}M43ppMj`deHP;++z zhZz?SD0Un)I1&9XF^{$eT?LK^rfUpa8Wf)}R4B;_^fV|x;dqJM|2mXZ)4?Oad|<&x zP_i{(=3zR>U~qtk0Wtrzhv6TC?SbZtjNtyV3qQy^r3|(Q`X3` zg9@T8-8zhiy$lZUG_b?R4`*nA$KC^#E;#gon%@_gWEk2QG!Jkk!0N9943imp8nhR1 zdN6%rXm4bE2%fX+Z&H51aYASVWPH^_ggPnkU1M>rx9|<<# zju?3T27d!1eEe_?!$}r92mUS0?;Hw2%Nuqvvw#Lj9dwY!4^tRA9rQf7XMyIw9F!b5 z<}j&37IIACf{!1nFm!V2IdX3Rjn6kIIdDv9QWfY1E%um#=zp;?F*4{latkn>Vc00J zz@tN$iB+S~VG(E{2ef^-gVzB(o5SD1{D9%t0V4*UmTsn|6QBk|12eq-ddBdb(H`XH zCk%fd*axW3VEn>R2^y#mK=i+!IQ(U>bkLi@{Dt8!Xu|qNvl^%e1}C&A~o1i-Uh96C+R3JgCO?HGC*xD~+*IeZSl#}8RF z7}`X18#op)S$FIU(A&ZB06dVW)X4FIi3_yyiGe|b)dw`AdVoWgi&J5PfQ}Fcs7(u+ zJ>k$`g7&`@80DB+81xT#NH9q-Y+=xG0IO-|P;}sU&;)HCYH-*uIM!hMfG2`kis8!w zTNMz4>3oCn0-XwGE?E7w2GmtNz&{C;4jJqM^c$F8aQtSlWAI0;-w^%BaIDGt0skFl zD~3Na>=*EZ8un)=SU%u6$qb#pSRpxwp+!LP0COO71jAPb-3IPLCK-pN2D%O$hY|g+ zISg$Kx}Z8vRAC!~ZVPt+lO;ndLw1Ws1RHezD}m(=L&F4>6Wtep@!NJ1A(!ihrS`OF2uz^9rL7D+F=K>mIJj4o#cpe#s6D(E-_%|>qFjO!Y z9pGNTtpUn$4LlQ=4={np6Bfw+Vfw?coq@jqvTWl3{|Dw941XA`8Tc-`ZdVuE#vk}7|P{YH6S&ZRNgE0gDA;kK_cTDXJ$_F_%fW{9S^d4~UP*P&p#G)j} zy^#rCe=PyEnm}t#KwU*025AN+28LY>84cWs`7e<*pppcnMuTBDgWdt|Ekb%6yBV}L zaBqUuUk;*A7)~=99njgttpr;8bb!BCSxMm6CMyR2mS%YWYhS~E2Kxj4ADI6#{99np z!2hH93&S6VWsdwa5cStOhQpwFv~A2P3_k_zj_@}ys~kFIut|W20a1VPG4wkqf8*HW zqzRg@G~qU4(qw3MG)nTAji|qT8=94r4shr&aWrgd&{5zvVPartI>6$@MzvhCMZR9^t{=o1T)Nuw)T-FQNclaaKUuPI*YZx8jS-`9TYHJN0RUFx_C-&Y*dKy8tnMIFE7q0)+>hFBs$)w>RiM z@UCFH#jw61@d0-Q6Jq@#TQkFg1Dpwb4h$O-bd0zen9eY4ZqYcxZOQ~6KkR6@#bDIH z3v$mV2D=IU3z&Z}yi?e`@cavB`1s)ih94|;0(uOfbm(Bu!heAAfkK6Yi2;8@GrazK z11i-MK+6speoim~EfsjeaI(QFgJ%ZP`VF>DM}>ln2}~*;I}^4!a8F=5dZ5uktB7L~ zGh+P)LnDWhi^W7G6NSAD$_d>UK;!cQOb(nA5$iYD7#bav0yM60i7;$sQFY`FV0yyY z&7k4MDbxg8zrmWoaG+t+0-Xh*@|i&i)b@M8bb`T3LzfG_enaw!z|RBr1^hF>!!=f* zZr~q=zbovs_--{XgR~DNSidlwblS+U=0NfihO-Rz5PyLg7nqMh`pXsq511MjfW|kN z6PP*}^cc7soIWr>7>M;7N0=HF6c{)fxVA8~GUz&V7cgC6Y-G@J@DgA<1Q{oh5L^Q4 zayoEKU4v(M>-YE za)M7AY7_V?m?t^>2erd15bHO37=Ag}o#5ZD{DR>XgI$APgYc7vU!ZlB@cN5^^&i9e zCi_P`f0*SQ&NLb;@SbG8%hkg8~D$ zLKA%bVIOF{@c|vsQnwWhMgh88njalHtza~Pe~L1E{O~CYc>Hh!^LqxV19lDkP0UY0 zJ!mHWsfh8zKMd!X>_OcVBhZ5L2mGMLZ+|(AU+_F&hSy(d3Vn=vA3QcNwKdEP&{N=U zV0yu^^MH~A?-V9@{iVmy&7gCFV+WIl!)yk<4(2RJO4 zco-%!=z!L2pJ3R)qQJn(09zl$z?;Kxipl1HjsdpSEyfFw z*Uvu@=wLAF=ul$PXy{PTa^T*eqyg%ufELUsK-vkQ^@klS2~Cm=O%4i^8B`j$4VYRu zK)q3p4ek(8L5<6v_pf*Hd8dutC&cb{srSiC?&DnWUAbG^i$k7Ns-nZ&;|{Q2}codT{VC zIdB*p;1^_Gz;K$uU;@tuW}X9|6^s~oOc4FAIShXVtPe1MWd6bNx53_l`vdbIkM9ij zEc!_64_`2xVlX-gF6VzRY&yZSf%%~V*k2nE>ksEJTwzc=z)-*>!_vo~=)_ULbb(Ae4e5(GLAwdSW5OOHuN)>aC>+q( zz{JBanPG_ohXvCChS?2j4cvR0;PuxIhI0!xH1I6o)@1mlVA8;|O8B+HzXj$Cbl)MZ z-!K48k?=PNKTvq%V8x-|!1O?&f?*eEA`D)CJ!?2Qp(ucN0`n5kx`G3|6BvCMPBMb~ z1@Q61G=|0orGOQ4nAA8r7l4*zFsm|jg4f0)&3}P~GPGNcqQv)AA zWM$}dSP;Mw!X(Pn>W~B~@LLu&GAKCg5P;8r@g^`GU{GM-We{#)IK!|*i?@OKQNsy_ zO$;F-a=gym$DkptfhX4w3fBWV5nK5(_A@RMPm1OFuE6j1-GfEU#N0`KDht=~8i zV5Pv*z`TIrg@+YG4`|KF2}UD^o&)gp^Q;;QO$O4t9`6 z7ij&w9!mZ7{($iVo*Tke4F4O<6Zk=UBF=&q(t9A+Uu^=43>+7k3|RUER)RKSTyba> zQFP&UMATn<7}hf=9^iBU_Zd~$xE+{2K-bSB>aVj64Gk&{oSjSz4ii|k1h_ew9x^mc zP+;Ijn*UnD@UUUS0p1PLIt)J_m_6X%!2Fg8w8D*l31a=m8-_npRtNZ&Fu!DYp<;Ik zv@WILH{-Sg{tFQ6=f8oPPc1yRn71{Y1&tp*5c~n|fAM@k)L(86>p;syk1!cB++{Ft z;CR6FgP{*J6Y&9Fe=&kq8|od<*uuoi&z^9-Ml@Dwl`wER)np1}J8)DdH_XJ~d{E`YQT8w8$- zbTceI!SR8KC1sZYXiSDli)B}X-U99wi1iy!7#f%qPDmIyu{3OGP;lU!z{J6@ks-%{ zO8{Pfi7qngY*0F&VZfv^VHara%AzLFgtZ=1_e4bfb(Y~w!=eK`8@Lr1elZw2mTkrpB(-j;(x*qS{(|`Uk(E67*07D9pu@-tio`P z!RQd*0_CR)rvvP+@Gn({&wnX0bTuj;kod=>!qC;Bbb>>m=^e{$PzTcjQGfX~bSo$v z$TV`|U|>{8aNv?+I_WS$L4|{xK@Hyj5@TqesPKUE2a`BMQ=?)6M+Va;mgz0JOSp5G zI0V3B!l3mVhb0USa2hc4G#q3wI>4vEe5C0hqm84y2%`R)!t`Ij{t(|6<}aZ6FBks{ z%6B;4gT|wf>aQ~lw-}5L@oZ(b05{BdRxvMO_|agb;L!o^e+f5O-|22c*-ic)mJPVjDnEE*E7U?cxp2_g1T4eZ62fvA{}$zYE^~ zlKsN+_ke8y{~h7)3~yi9XYtQk`~|eW*P;IcV*KzA)7=L~4*Un0O&ESU7`cEO9w!-v z92h1b`d=?Zx*C)iKywP9@k0fURZR*E9gJEG90!p4Ukno+6dX=7Ft{*mWzh8C2w*c| zXl+nT;D}&?^}j@yFmx&?fx4wC1{)c)9XbM-OeXY-YrAq>K&+pC!f?|8+`Ua<_{p%# zL1zxPTGPn`n+kN0`d>>x>o*+u8M>b^{A4oo;Gd)XjOk;8NFx8F=2MXNkA}cPh93-8 zp!q=shCd3{;LUvkXBh1n`ws}i`(Kg_`y7-SJdQY7aO`4GYTyR-zq%Oo8n~Ar`d^+3 z8;vv$WY}bJFl;`|b)egz=?qhIgUShR1El^J#})>K2OOnL5-eLB6hY$&7Zh5YbeXsv z5dAMHhJOu~4|#qlOELU!uvFl$V7|q0tf6+nd5^{L_46xOelgfR;NNr@yk`3VdxP>3 zj-O26QET}6jay7dCx}1l`N3?(aHhfj0sjkSGl#Pi^i|kjBI>Uh4lM?Y4{#K6Svs_X zCb=$jNjzv10FM@GLBfZDVFyD$gDPl^M+8#~gDw+y0#gA?3sbJcX#pkZ_@RQx357-n zP?MO+gR$8`2ejzON1{0)XA-vxqW{&;aDYJ^w9PZ0;k1L@1O5rhNlYg|n+>NR>aTYK zKRj$eYt?oh0IiSWU%Ccx`2RxO2@4WOloO*#x4K#M&Z)iM~m zSo9jCLF0$uvW~+=gJA`zc;CRs0h-rikTzgr0j+{_;4)x>jUV!6fVO!a;4$D*Vb}rM zoZP^i!*ZGhw7Q1*0Hl4mKo&dUndwE z7&I6-1ejPFni&+DL49GzP6m}G4gP(2}rj1|<)U9ZU}zx*0SYIFR~Z zZx{|aSS9EzU{+!}&al})=LPe-380+neRWKbbtf27IYJ6 zCVdZL|FQ?e#s-BI96U|^0-HN@7&r_-lO_xb4IEn$`8)nE4* z_ckamSW&?Q-@nYE@R4Cd2af=E55s2$8vz~x<`WEs3>zAF4B-2hWp^hI*8dE)4g6mb^IxEy9YzOu6qrG~vWyyXZZPYrJZ3O!;NODO|6fV)u0f0+o^9AX zLE!+0B^L+7WCn#796DY4D$NVD7I0fI1ws1VFGN=|{9@QNL1zK8CBrQS;~hLtnl)9P zwV1EqSKx;4Up~O_0kk`hf%$^Q3)olzD5Lc^AoedmVK}*9Qwq-nX0?Ws3CIkwGDVLqw=mrqe+ofMW_@6C-$heg|&?(+P$}3_K0O8<$?S=Hm<>9rhQn-(g-3n*9g$$kJfrhoJR-hLB|&XB+Gj zAp33=9oi3Je`VI{P&GnX{T!ELfzVaSD0<3)DmO5O4w&1v(BK z0!<y4v2J3$@u2K5TU==2=0F|7;*44 zF*7inV6qd?X<&Z91X{m=w11gZyP-=#aRSE+CToVi4!s2&3z%MkR&aqD_VD!^z6{L` z3miC9l=vB%9rPY#7&x5+?H+o7nEzV9D8kUpq!^%K&?KSI#;ALUqk!p-LA!(E1rDV3 z^Lz})!TXoF?HEAYzH~B}PcfWp*t|dossFV^>1Tr7LHP~LFW7!D@ZI8Hp!|XX)c@i~ z>VJJ>IDf!Ck>>~VC#GW)j1zc%Fn@D63L1w*>VM5}Xcy20)lDB5+L+AUI0~A+9B5_G zbl`A6^uMNn#uy#ILmzDni3uDDOcw-t7#1^d-e78g%r7g5oB+-JIcNwl9cE}^Q1ReU zV>;x}5ul->DZ$hM$zLl(*D#%Cv}54e;QY?vG=our&KBl(Os5YR9pGKi4P7hJz;J}& zGlLz2zJc=#2k3C<8-?GTb_e(tFeO0tS27BGXE?85kim0-S*+=NgMEO`1Lg{be+3qDd5Gf z(un$tg#$E~1S%>SK!;j@)Iio6aU=D=T)?y2JfLOarx@%(+rAPQetqwk9VD*59gE=kXM1YL~%S^=jjX4Z|SQc z*3f-HZvux1tpD|b)t_~uT8I^_PZ+vEqo5O*HJQ#Z z3LW5A5LRIJU@8FZWaon9ixYxV1e%x>4=^||dnmMkmK_!_aWE|cZB#K}5`w5{U})oP z=>)ajx#SoZG$?|WO3qVgZBhgceliGvrGKQQ>fu}^@%f%zeW z1j9ZC{uai>h943(Ec%Uz^@m3oPA)WZ;F-d#4=P}tcqRz5Fdb|#O7M|D?Egw@>0F=? zz#+r6v;kC5YfR`;QRoy{C9#nrVVS4Fg1gf@L zm`*a;fkyBU^Ir_0*)EO-CkCb)3zRfEx|lUsRxs!>Ao^b(tVb9Yf|f1_Ftso)RY>&U zh+>+;(AuC2s+%rB=f6bPaCQpoIdDv1P+^z|s>B1BOd8fR={s;-V0s2gKMO>kA9(3t zlc6(#X{o}?2b&ypCI~KJIvHSB!7_>Y1td;07~2?rGTFKCPvL&U_0z#Fz<-W#i@;9? zI~V?0%(o!v2Xy|%4;Lc_opxqMg+C6)4EzU}3pma&*fQ`OL7M++*tbA=fkq0GR$G?@ zxc{Za&?TU^gkvGoDag2l2CE;-hQtO14I8FDhRqDiK#SJSFf=>rT;MWcItAI2zJO7N zVM~J|m&OC92@De$R2jG(*aXyCm~@zCIWV1os9C`w#_$(Z%T#brQuyAm6*OISi{WUa ztb$$y^C>3q+5-;REewAd>{9dNxthGCzRy2O9*w2%J$g*5LWTT+DWv!I**X1T!0G zB8&mt{{rXt29{)|h69TjxJ;N7I?ga^ALFQG(so!Gpm(5qLKAHMi&2lEgCj{mqm3zn zVFrT&1J?vG4TVkyJ%;WHi1izwCYAz&)&e01hRF;X2c#A-u`n%S;5oppz;p;)$}=?Z zX25rQG2CF-#NgM!t;2AdLGA$m2KEDx_*x+Qf#)xSJ%hf3@&=Cg47LY&KQMm~_`_t+ z;C}!ye)xgm4~Ovs{vXU14A&d%6?h_;%Q*gn7zK#_*E0qKC8iVHGnlj;x*PNsXmv0x zW7yrIr@-~0$p8}09jpf!c4{b`k``d%U}|R2Y2*-K@?h8u%7cbXMv(k^-JrKYs)K0_$8H8a0WMJe1xY`muNZy>Z2G`I5i&lufk)0cm*KaAO##maW)?_% zJz!h`T7P)J|AH|1T#*L;3(VkiDqQ$KAnLCb4ks9lCh$*Seg&EyTEH`bIiumUgWU!G z4bCEve0qXWfuV^}$$?LZ=>}-pYXR?6=Nyp39&&%++639l@PO4rp^0I|0dA3|6QDjw z1E(aDzsn>gofhs5i1{x$fwm^a2V4s) z8YlP#gikPBX4ufcYryQwblJg%k>3z8ez<|*pMX86^!wrRpTYJZ{|Cmq4DUJY1Nc8S z!}oukU^)d_mokG{gW+?t0mxtLI!-azb?|RP^uIuRClwEH1TaZ}mTfd}1USinT7w6; zjhc)g`Rf3~EQS`)YQq>VDTeKhiVHYyFv&BuFVJ1WUBRRPDWg0@jwLjCC|r{eVB%oe z%%HJJ!-k6o)M9+XZGad*oXK$R!Di6;8xjn^7>p|~c{1>KAl4s#1&tpj za0du~1+BMn;16Iv0xIVn_>uO1ePMVBS}lKp`5VJ`215t_3(jA_tM2(HFsnhzLkocy zpk4_>H>d@>12oRo!1RD)2Y4X|Z2de3>lucH3o%fSfeKeG5_^Li=9~I-srSCm1$K@H99pvi$G@@9BfD zp9ihqP-@_K0y;mcL%D(D8IuLWE=Ii`?gd=%{+9!24-}}0ex{?bN#THo5@>$;fX)MM z1K9e*1&p9nr}%)Qfa#o4F9Ue5y@&pBj$hdPf~SJ{8pBc0wyy|g zIfm~IwkiBo%&`5-vP&3#CxA)-@Oqnl2lxe;-!S~#FA z@qx*Np_M`T0B12-NM|%a7w`F0{;hYJxE?|V0aM#9){Y({F33Pz`g*! zEzB=Ki@QMkvf<}%{9`x|>gIf4|HANhf$;$z&>+uw274#g0%jFR8Q#c}-_XsVcYtGq z(DRm^j0y@GGEDjo-40d_+@Mv0;5I-5t4c#Rqs{@29Zau4h51L19f#hsbg}3ikOZj# zx7EStZ!qY9=7|mnfX3%J1eicQG7SfA1K9jBX#ED*JrkIou>1yX2bjS8hUp}O9Ru$N zW(DZ_4RHU<{s4ag^96?g40|2;1Gw)ndEAT&JHefj8 zV5-1#5>bCW7U*tJ>flgfQWofJ&`aQ6sie%&5un7t!367nb+8@5JD8MMIvTVVd4P7lfa@;?(MJbPp4hZP zXA3u%!pReM349jZOid>mY!Y;qa>LgjE`k&nUzC3^{By8xAKB<8}q z0oMO|!0N!!d_akX!+?pAVPnFAjM)lI>gj08xMKVfxQt>(c*_ z`2)*eP)E#x`3va$s3ZIr5#xsk7)~}C9N<~OEWmI|$&P`419J)EIR=vhItvi>*96e` z*a43KCIOaK0bK{~0wxibeuhLx4y5(-^Ax5wEKlI5U<(2@;}f_onEVvl8uUT^F9S&a z@(?-CFyVmO2M$R#MusK>oekb9N_g+9C-hWQN^KC zK+i#AqR!If(iziQxo` z9cbEX5qN%?zk_>`z=?)U3_1+({mZgn8NM^wKjgpRyp`=IgZ%;KE6iURY(YDkZ@}ii zK>e?yjGIAik}C{%8SEWcLHob%G8uzw!oIgAzmc0;LBW9V~i`9t~`u^F=|c z4H5O%G0-V<2fPK?o-j>j&~xAvU}|A#WYln!kl=HI)nCiN^*c9sT2N9C)Gb}c(8;8A zfI|?me&Y$lK}I9cnCDZbn=CdCymDO28BR7>JL$||&VaNJH5gkselmdSFUb1CB>ox9 zEM9frH1Yo zUQ!Hw4Ej4bo;z8v^gU4Ako$t!3(~IBV0B^GEU@4Jw?UH&sA+V-%Z7u`rP+bwgr)_e z{t{u>&!BjqyM`%7p@l)0fy01}hoOy8(J8Z_DFb2-sQ>jHwEyb|bDThXgKmOf1h*W+ z`9{kfx+f6z*BX$&9QrpfFJODkVAH@qf%%2NKgK!*efapH1M4?|vn}=ycup|NIUJj0 z44Ou<6S&{7S%LQlH|+ck!6^0i7tt!SxANe+e*5VQA&h zJ-~55$b^YcK(T=%p-IMJ3xi^Vw*zebMuNyug(e4`8yvk#oD2;T3ko=YkCv_;gJ zq^;CBAy0vOjgV?XM}x8g#|GvE`1<*VU5$Dk91Wl~1B`kLxEBcNGOLGM7v3?}IQF9*?A45vJd z#P~Nl_Y1r}u;~EL6=n^la}8z(cm$l`_18Y8{|x&T_&;#hHT-9>zreqN`v>T}uLJy` z4O8HH&_SR>-~^))BhLnAUGO>w{|($)pamfZbS5}ofaI?eu38NX8_XCuCJ1RToo3KE zz-_|p$+4S3`yj_o`1}{68$$z=iUX$sgAYS9la2$oOjn1-CeYbgs!H(ld*vCHG^B%$ zu&6uS)}Z@@J96GFhOJGSPdGdf^It3shd5LmbPbq&4jpE(Y2i0z?hyFIU;vuQf}P(h zJBQ)BK&=bk2kAKnK*t`ke>_~lQ43nXaX}g0|9aH$Siy{gZv(Rq!|4W4dS=&P_{U&$ zQfEW+D@b|hAvndLokNisd_F)sXdS2^QN{EDHhy@Hp_xJ94#y6r^@+_5OKx!NQ1W2d+@NxR!w7MH?+S%S z44W46Enwcsbnb!e1fGZ76%79t7&Y)LVg3cN%Y)%z$Bzap2L1-l1dbmZTnzk;%nKQQ zG}xe=AN8K$H^Zibyr3<&CmG}%!Rs6jg4XFxKw3W!YVtX7OyN>xxap|pz;T6%RiTqb z$$=NN_aEFolwbrMJ)z*hIfZE{LpMkbWHLy}kpt=cLmmc0hJ-*45vEq5MyI?04G}gK z7Et}A2|7yR7NygX0`%A`H|%M4W%sA>H%vbn>_ELXc>UD~nXLdXJ9IE&;5ovr;P3;)Xh4h~S|@B$ zVruYSz@Wi!iV<>t6nG&A$5JQw`G?*Nn_E;4a9cR=F)%kMJm64Z;sOnZfO=$z^A8!e zGNc~hE@6@dEjzr>k&NGwg1m&VPMh06stJ8q;0SgxU$`Ukv{z7(d`S z!F&Lczg7rNaoDP`@E~`XuhG$G2ElLX99Zu_5 zIy1DoxF#X`Uk?}-a40x%C^dnWN-BWX8gVcz6i{K{n1s~-0-ZD9z_EbgjY1b_pkqtY z8l{yAS`1t>n4ss+JBYqxc$Huvz%h~eDChtm2mUq8yc{n)%!GJuAl7fJWB99J-vH`u zIs6y2Z{YvP{D#Q~~uRQPyG%YxV`3=hfhD`=MlVI~-Cs;Wc znj4goxHm8V;sifG%0;0GbX<=F6DvbwgTf1LHKwCVjUGx4 zor;L@Lm`GX&}mUWnxq`s8Wk11E0z8+v^Ok#z=^c~irL+~N4kV1Iz`Bl88w`1}giBMb*vj2*cr zFmo_;F&HKAOkvgm9YEK>&xq)M&0zsgdnGW5fI4Cg91dMFphK_^aAzR)FYf}mIf46! zk~qVZriBU|8BBHxtqqzBxPLUk`(G!Sz6($p=env$H?h8yV z42=$p0+G&-;!R>W!Jwqz-@vWF0$MiDe}Gwm=~ROegH8vc|Mi#UZ-e~>ehKC;3||>+ zK<89kVb}}mf1!*Y9u)xhw!VOlwE=a+Oc>6x7(4J^SPVZu>H$Ls!y*Qb1xybZI#`%M z$8IR_tYA=Ll8SFsQ4G$PTGw6Ya*WNH#fzBgpV1|z$USn|UFn+*uli7^p ze1okD&kN9EstLxR6N=#duQ{Ogy)7JpOcE}w9=b<3N)Fv+*>0%Ju;SAs=$z%hZzSE1p6jsqtH(@}*@3`$HM z8i@W^H^X^`O$=U;s9g;VPndo-*aYxTU|s;)_Vt5r z8}nO-&kS}VDCb8d++{FY!Skls8nhOof#(AAca{?j#tu9Vi1X*O8G4(PE_3uTDYxus z&?(^PVS2*Q^}x)4qXTjNp$fx{hD8k=8`v}$b~NZc;Fuxw1hl%ZfCJ_H-UiT`904W< zh7AmQ3=#}X2bh`}R2Vokq@eT547@1}H(87vd=!Lq1fU(UCk!VTHaYk#;D(()&kI`3 zYY(cwE`T~>poseb+9Aup|9~B~euME(!yhGM1^yq*-#Lyo7$4#}pnM?!ydv=e{QP-= zzb!iqlooI=V0zNf!J&PTV~*2$N~Ky#-RR}T?6v|7pTA)P+UD87y@BB!!wm)V0~~vpUQD=sK%qgS0Wp5)!_dW`vq0L2 z=_o^!Q^ElbPNk>;Sb&kdkP(>#6yrGk65ojSjeEth`n}ePU=-5MrnGI?V+>@A|G_M79MlK-gFIJXD z2R+cKfUMwQLv8`KtBjy^dLAJt8d_#qplJ#QiK zfCapMqk~ClLPvuV14l#9qm~XPB~Xn9JwFOue=+DdbO|HYvfq9Mej)6^LNTExQe1U#b1A%HY~$aJ#7#(`%Zw+h3{hD{DSGnqjvB#j(& zroi`qF}8qqdx6$tgZ3})anPTje1zd6XrC|2{^cJIMglx7p!-u8HZkyk4&pcg+RxYm zKYxQ&19W=cBCZ8YzZ&`;C^c}rV6qVEbI=5x$N``K@&PTeR^YH;dd1Y0u;2iPAyZF7 zQ-gv62h#kP48!&X$_!iuO?N=&_a5NLV4B0w=Ab!&qeuu|f5{#A->^}Er;_;}!*S5L zyBW%T42K#vEYPt=8b5USU17(>4>_LQ?jAn_cMiiZP%mJMGra!#2WrME@c&@m#c;mC z`T@@iVb1~nHs-f19~|r& z?KdFS&x3j{#%laGnZGsM=bHMo*6BmQw2A&Vv@bl+$73pl@FxXoaEkgtLH4byAT%CrLb_+jK9hW||V z4BQ8p@34T@&-Wf+{=#sd!M5Q%V*HTx6T@8xV*~yZ%%2$kG#G*yMhtI26JaNqKS1)= z0f9#XoeoMTxHmPuQP|y}v>j{RL1_~P7OyDED!1rV+FfM4& zaqw1P`UDxDKOnlorBguZ0QU~2H=saRz}>*a1Fb;>K0w-s45DWlZZFsb8k&9y+HRb{ z&ETx&0NO0i-!l0CWPJVsBlMix2h3j-AopZ7{{S6C4?6i4zJ7j%KrqWLkU5~KOrs4v z8<1(X~>^)kZ-1*HQV9ZW9{baLr2ac@96e_mmdg9c~__o%}L zg#`{AjGzOu7U*bjb1?0Kv=1LJ3MqAgroBMxH@1U@iz}GEF-&XFeZc*P4ZePZf#H&h zg#*6=^O1%R3I+{4M$8@z7a46F_zjpRF@c(*3=Xml4B*qSCosPNEr@mCZ(x1`J}7|S zfH?qm{`?b$Qw&xIL1P6XuNjyc_!*dW7=AO`HTX9%L&pzK2u@*Y0_7bCrT~U542q!n zF9FbrZ4TUpOrIe0?+px-6#78bRt3{N1@KYBpp9VL8*)MCZ#;m_e;r|H0_~<`U~*#E za6+NUn}LaeaRY-6BezM@B}lx#5S_um)v&7pbd?grBaX!j_!n?%2!PilBaa^nd;sm5 zKfzqU@CUSh9&`{QXhS0M`G?OIfX^icoqrg~u*rd6ko$?kPX@aT{$0r9hv0741hyyO zfkf^p%qa{znXD4Jk?v2?Vd!K~cI3X`^oLM-oqI2E)KK1fMqK_er$!}0~RLIBixM6BOn=>!cI z7cj}Nb}}eAb5Cfy!qCg2@5FrrQGXp#0Pjiwott`)!6=Y_iZiJGvJ2p!#H;|xUm1+c z96+^|{shqZ^DK4+{F9iUFoE_-^-n;o-&n|SgJB05g35 zmj!5D3aGZSVChp(?%;UQ^h)HGlU@V20@D7kj>!!=4>&BCxEPxi6dFK#dabQri9 z5c|Ju7}^{ZFL;zNNwTyuC@uhBN-`a^-Vf>g4Jn5E4f`Kx{NT1?I^GCAHtG_?kp|lb z{27SzH$eFdyu;`P!wXPHYyoKf2Iw5=39$Z`1M4q_zY~p9*l#d@V))yjzkt6|*ouLF zg1rj=3B>xt84Ozt7W!}pGF@QU#-Yo>U3f^usRiVok|yYwo&duPhOLZ>4$=WkmmIb* z=r(y5Fj;`&>i~BuZ2e(^$N_~N3Amd=s03ACI zioqis8yIvPG(blqHZX$D%!Qr5(ZHL*aFAgaXa?a4$nlLb3qTh&g3D*-2e9=UU%=az z`42FIroBMR4!J*oI${jS zpW*n?lt2R=@bSafpqrr%=xpFt1WkxA@c&S5Vz|?= z=>Yo-#Q5QU(E5!7{07Y56n=xw z1kYCH2Mxa!>?HUbARE0O@a#YuKV)d<&^-m(CeyGzK-Y&mfH{I;8>nP6WP;zHGKrzR zMfV9u71J$-?Vx3c7EDqKn>rL9aH8Cw(%b>s;-Pd#VKbA?4Q@>?|AvhT3I{kX5&f^# z2Tt|af%Y%I1f|0b{BO7=S^ha}YS2Yme|V4yG=8Yh!2A%jgpZ}ap&L{efDfXF_rKmX zoL&GvZ3A*H1it`t3TQkmQ4_A+jCP;lTD0WCyyP;ihIf#t6qyiQCf z8Wa?GI)oKK+rt_7JGc`VKilK+6vQaQ!`C17g6=?_~tl z4p4u+WU_PcpT*3=aP|Or2Qi}m1-j0a0ek~s2WZ)0tC9jo*8y-Tfztn4;J_ikp~3)K zNY5?6q{7gc0IJBi;Qg-_r$zkpqXob&)qn=-R-ykxL* z@Snh~$^^Qe)qE@qm`(axd^I*%IO|Kegg)?o8M$BJ9d;q!rw z3H(2}Cpm#Og7N=Bj2|v-_{Cv&fqyIL{z?Zs5AJQviJ(g120zmI^Zz;iPcr_%^M~1t z;r}7y58#8%&o>l*;YV7(F@s?{gYpTE4-6s<`xuz`sQbUpyH!)^uz0gX*e?F=g>Xn;x^`1w)G z8-6kvA6WB2T8rU7!=?p1U$|QuPB|DI;QxW>f4yb+2tHSz`6*~WY!m+mrCg2Q4t59F zk@{aB82%_2gJ!!d8vaAJeVH|!ZZLkrU*HYzeRR_4O$1gfk}m<7gRoP zU{VMG&o4Ky>M`tcPy(IFqXFuJcyMoE(oyJE02Q7{>o-7sYS0WO3y6`xZJ-3om7rBR zOtAhJZwA8;2IB)gpkwF%gXVV%xK+4LvlxL^8^Xp9Wx=%-c>glPe}=gX>>rq~fJ%M` z{twE~@k55Aj?4uPcLdB?cn`9}7_1;hIScOrLr`_fz;M)swU9N&AzVQ82$T_egtd?% z#=%`c^nf9FjGCc=iBX}!LqUjxr3r)40N!4}z|g|Ln7|OhAjZJjfXoPB2xnl0sX6Mw zTErOB5UwD4f)U1GDPjPN!0bB8z>vTo!N3N&SQ^G)gfL)k=3r4`z3?^2G#()hXI-(3vf3@&11~Y^n5H(=+fiMbKeHgzO<;tGh&n*Su!W7$u^}KqM1mEG5eN~1bSoJc8khtb8XOb^I9Qk%L5u(n5hg~K z22Vu+4;Gl3qi)QB4ObFOC3q1Grocw92+XddZmflkF$v)kg2$i?(PQio5m8v)adl%Z zY`BwPE+Ki0IT6fYJ;n%9V=f_kKoF8PTw&&j9%D6Z^hgMo5Ix3X*yxiOEFp405E6zA zsQF6~oY4weI26PvYhs?h48=)@7yETYf~k_KZgMy3Xb1p*o@T!J7*fCdW}BU1|l zNCYeoB6ygC8Lk{KHQ@CDGgJ*YeVBt8TR$PBm|>pH*tlea&4`xC^NWd5Z0r*(zLG2x9*-c-WXFftW5%n?v$ z;XH`O5aERTorSfK5mqmwG2m)Y%MGLoT7m@;@7U^7SPctx5eG{VqfCRlg5U`>hK3;A zF0A!3hB?scxC356Ll_AHaQA4jcr^+wa9JUU$$+`$01rbjgUA6^14bVV24tukl=IN* zWmpC6zzEsa&%kj2v>X_8pa7_hgXAC3$;}WE@UR3(4NC%}1cMucU;`!tqDFwx0lXnn zje)a)4YV^7#DIx3K^*Pi>cnEu3agIc^)iG3Eqg&pAG2PDi+~MsU|?b}Xy8#`=3qF) z0%O2L4nWFGkX?}aRIrHw#(>taf(?+e*MZRqTfGcvp+MszfYAx23yV2m=P)?9IbM1|UWQlD0vs$*H4d(b>KLPf zc7WK$z{ti@*eH|WE+Kdfg8@ye4vcP0g$;8O)Fn8NF~Arw5vZB~qSd(-#R1D-4h(Dzi4777Y!ZxZ7z}7QGq@(OR4~dhxHkwsz+k}A1|wR%46mTs zI2fVkI55KMWdTUN?8Jd!z|^=pu{bmeD7bJ4GGQ>Fb)^F%Gef`u5d&5pMrRBLD3LON znz|gI>KI-xqcGs{y60a=Hrm*EvOi~*7c#i^?=bFjme3#KN#m<(wCa$xj8s{)WJ1!x#DFo3FKAy~bP z!f=GzMcsNCwK|4X(6w;8Fsoyj$X~b`P<0Himr)sTHB2oG3qcoY$Q*()KpTO;B9MkC zSRuG!iqhAI0F?0Q#=PCdq%(< z0)&kX9tHgTcqC~hW&i*Ge~_0LFd1+wF{R)lgH{bJFC(%rTm9<@Z@E<8U}c1U@%~6NXp9smf|7{=gOev#1*3waAut*OqaiRF0;3@?8Umvs zFv3Fs++Jb=%@aF8NBl;3fQ)*7Gz3ONU^E0qLtr!nMnhmkg@6GAXsJ=NoB;!Pu@$oc bg99fq0RUCcYQV4nJPiji=OAKQ3Tg-dR#X$E diff --git a/fpga/fpga_lf.bit b/fpga/fpga_lf.bit index 5574a6bcf8c9bafc3ed2bdab611353ab8e70c713..a4d0f85f79ce6c78d826eacbde18d71356d9513b 100644 GIT binary patch delta 27 jcmdmgl4<`*rU}-3M#c;&44g&=Rwjm4CKek#%a#BDe#!`Y delta 27 jcmdmgl4<`*rU}-3h9(Rt44g(rRtBb4#zq@G%a#BDezypA diff --git a/fpga/hi_flite.v b/fpga/hi_flite.v index 8c8e26d39..86f03c3ab 100644 --- a/fpga/hi_flite.v +++ b/fpga/hi_flite.v @@ -392,10 +392,10 @@ always @(ck_1356megb or ssp_dout or power or disabl or mod) if (power) begin pwr_hi <= ck_1356megb; - pwr_oe1 <= mod; - pwr_oe2 <= mod; - pwr_oe3 <= mod; - pwr_oe4 <= 1'b0; + pwr_oe1 <= 1'b0;//mod; + pwr_oe2 <= 1'b0;//mod; + pwr_oe3 <= 1'b0;//mod; + pwr_oe4 <= mod;//1'b0; end else begin diff --git a/fpga/hi_read_rx_xcorr.v b/fpga/hi_read_rx_xcorr.v index dc8b01bc5..6e4c261bf 100644 --- a/fpga/hi_read_rx_xcorr.v +++ b/fpga/hi_read_rx_xcorr.v @@ -34,13 +34,13 @@ always @(negedge ck_1356megb) (* clock_signal = "yes" *) reg adc_clk; // sample frequency, always 16 * fc always @(ck_1356megb, xcorr_is_848, xcorr_quarter_freq, fc_div) - if (xcorr_is_848 & ~xcorr_quarter_freq) // fc = 847.5 kHz + if (xcorr_is_848 & ~xcorr_quarter_freq) // fc = 847.5 kHz, standard ISO14443B adc_clk <= ck_1356megb; - else if (~xcorr_is_848 & ~xcorr_quarter_freq) // fc = 424.25 kHz + else if (~xcorr_is_848 & ~xcorr_quarter_freq) // fc = 423.75 kHz adc_clk <= fc_div[0]; - else if (xcorr_is_848 & xcorr_quarter_freq) // fc = 212.125 kHz + else if (xcorr_is_848 & xcorr_quarter_freq) // fc = 211.875 kHz adc_clk <= fc_div[1]; - else // fc = 106.0625 kHz + else // fc = 105.9375 kHz adc_clk <= fc_div[2]; // When we're a reader, we just need to do the BPSK demod; but when we're an @@ -69,13 +69,16 @@ begin end end -// Let us report a correlation every 4 subcarrier cycles, or 4*16 samples, +// Let us report a correlation every 4 subcarrier cycles, or 4*16=64 samples, // so we need a 6-bit counter. reg [5:0] corr_i_cnt; // And a couple of registers in which to accumulate the correlations. -// we would add/sub at most 32 times adc_d, the signed result can be held in 14 bits. -reg signed [13:0] corr_i_accum; -reg signed [13:0] corr_q_accum; +// We would add at most 32 times the difference between unmodulated and modulated signal. It should +// be safe to assume that a tag will not be able to modulate the carrier signal by more than 25%. +// 32 * 255 * 0,25 = 2040, which can be held in 11 bits. Add 1 bit for sign. +reg signed [11:0] corr_i_accum; +reg signed [11:0] corr_q_accum; +// we will report maximum 8 significant bits reg signed [7:0] corr_i_out; reg signed [7:0] corr_q_out; // clock and frame signal for communication to ARM @@ -99,16 +102,16 @@ begin begin if(snoop) begin - // Send only 7 most significant bits of tag signal (signed), LSB is reader signal: - corr_i_out <= {corr_i_accum[13:7], after_hysteresis_prev_prev}; - corr_q_out <= {corr_q_accum[13:7], after_hysteresis_prev}; + // Send 7 most significant bits of tag signal (signed), plus 1 bit reader signal + corr_i_out <= {corr_i_accum[11:5], after_hysteresis_prev_prev}; + corr_q_out <= {corr_q_accum[11:5], after_hysteresis_prev}; after_hysteresis_prev_prev <= after_hysteresis; end else begin - // 8 most significant bits of tag signal - corr_i_out <= corr_i_accum[13:6]; - corr_q_out <= corr_q_accum[13:6]; + // 8 bits of tag signal + corr_i_out <= corr_i_accum[11:4]; + corr_q_out <= corr_q_accum[11:4]; end corr_i_accum <= adc_d; diff --git a/fpga/hi_read_tx.v b/fpga/hi_read_tx.v index 23d25deff..fc309cde6 100644 --- a/fpga/hi_read_tx.v +++ b/fpga/hi_read_tx.v @@ -12,7 +12,7 @@ module hi_read_tx( ssp_frame, ssp_din, ssp_dout, ssp_clk, cross_hi, cross_lo, dbg, - shallow_modulation, speed, power + shallow_modulation ); input pck0, ck_1356meg, ck_1356megb; output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; @@ -23,46 +23,36 @@ module hi_read_tx( input cross_hi, cross_lo; output dbg; input shallow_modulation; - input [1:0] speed; - input power; +// low frequency outputs, not relevant +assign pwr_lo = 1'b0; +assign pwr_oe2 = 1'b0; + // The high-frequency stuff. For now, for testing, just bring out the carrier, // and allow the ARM to modulate it over the SSP. reg pwr_hi; reg pwr_oe1; -reg pwr_oe2; reg pwr_oe3; reg pwr_oe4; + always @(ck_1356megb or ssp_dout or shallow_modulation) -begin -if (power) begin if(shallow_modulation) begin pwr_hi <= ck_1356megb; - pwr_oe1 <= ~ssp_dout; - pwr_oe2 <= ~ssp_dout; - pwr_oe3 <= ~ssp_dout; - pwr_oe4 <= 1'b0; + pwr_oe1 <= 1'b0; + pwr_oe3 <= 1'b0; + pwr_oe4 <= ~ssp_dout; end else begin pwr_hi <= ck_1356megb & ssp_dout; pwr_oe1 <= 1'b0; - pwr_oe2 <= 1'b0; pwr_oe3 <= 1'b0; pwr_oe4 <= 1'b0; end end -else -begin - pwr_hi <= 1'b0; - pwr_oe1 <= 1'b0; - pwr_oe2 <= 1'b0; - pwr_oe3 <= 1'b0; - pwr_oe4 <= ~ssp_dout; -end -end + // Then just divide the 13.56 MHz clock down to produce appropriate clocks // for the synchronous serial port. @@ -72,7 +62,7 @@ reg [6:0] hi_div_by_128; always @(posedge ck_1356meg) hi_div_by_128 <= hi_div_by_128 + 1; -assign ssp_clk = speed[1]? (speed[0]? hi_div_by_128[3]: hi_div_by_128[4]) : (speed[0]? hi_div_by_128[5]: hi_div_by_128[6]); +assign ssp_clk = hi_div_by_128[6]; reg [2:0] hi_byte_div; @@ -89,14 +79,13 @@ assign adc_clk = ck_1356meg; reg after_hysteresis; always @(negedge adc_clk) begin - if(& adc_d[7:4]) after_hysteresis <= 1'b1; + if(& adc_d[7:0]) after_hysteresis <= 1'b1; else if(~(| adc_d[7:0])) after_hysteresis <= 1'b0; end assign ssp_din = after_hysteresis; -assign pwr_lo = 1'b0; assign dbg = ssp_din; endmodule diff --git a/fpga/hi_sniffer.v b/fpga/hi_sniffer.v index 3d39413a3..3a989ce62 100644 --- a/fpga/hi_sniffer.v +++ b/fpga/hi_sniffer.v @@ -17,11 +17,8 @@ module hi_sniffer( output dbg; input xcorr_is_848, snoop, xcorr_quarter_freq; // not used. - -// let's try hi-pass - // We are only snooping, all off. -assign pwr_hi = ck_1356megb & xcorr_quarter_freq;//1'b0; +assign pwr_hi = 1'b0; assign pwr_lo = 1'b0; assign pwr_oe1 = 1'b0; assign pwr_oe2 = 1'b0; @@ -32,12 +29,8 @@ reg ssp_frame; reg [7:0] adc_d_out = 8'd0; reg [2:0] ssp_cnt = 3'd0; - -reg [12:0] avg=13'd0; - -assign adc_clk = ck_1356megb; -assign ssp_clk = ~ck_1356megb; - +assign adc_clk = ck_1356meg; +assign ssp_clk = ~ck_1356meg; always @(posedge ssp_clk) begin @@ -48,9 +41,7 @@ begin if(ssp_cnt[2:0] == 3'b000) // set frame length begin - // adc_d_out[7:0] <= (alias_buf>>>3) +8'd126;//( $signed(adc_d-adc_d_old)>1 | $signed(adc_d_old-adc_d)>1)? alias_buf+adc_d-adc_d_old:alias_buf; //alias_buf[11:3]+8'd126;//adc_d; - // adc_d_out[7:0]<=adc_d; - adc_d_out[7:0] <=adc_d;//-(avg>>3) +8'd126; + adc_d_out[7:0] <= adc_d; ssp_frame <= 1'b1; end else