From a8e8b2bef36747448ee46466dff57b3d9a3ae437 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Tue, 1 Sep 2026 19:22:55 +0200 Subject: [PATCH] =?UTF-8?q?feat(v5):=20Titel=20auswaehlen=20statt=20immer?= =?UTF-8?q?=20alles=20=E2=80=94=20und=20ein=20Defekt=20kostet=20nicht=20me?= =?UTF-8?q?hr=20alles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commander (01.09.2026): "es fehlt generell noch komplett die auswahl WAS man rippen moechte. Bei Serien eben genau das die folgen, bei filmen z.B. nur das hauptfeature oder auch die extras." Bis hierher uebergab die Pipeline fest `titel: 'all'` — Rippy rippte IMMER alles, samt Trailer, Werbung und Alterskennzeichen. Beide Wuensche brauchen denselben Umbau, deshalb in einem Zug: TITEL FUER TITEL statt einem 'all'-Aufruf. Nur so laesst sich auswaehlen, und nur so ueberlebt der Rest, wenn EIN Titel an einem Disc-Defekt haengt. Was schon da war und nur nicht verbunden: titelInfoLesen() (Titel mit Dauer/Groesse/Kapiteln) rief niemand auf, und buildRipArgs() konnte laengst einen einzelnen Titel. Dazu kennt Rippy seit heute das Inhaltsverzeichnis der Disc (EP 1, EP 2, DUB GER 1, 104 GER FSK). Neu kern/rip/titelwahl.ts (pur, ohne Laufwerk): * Serie (von der Disc BEZEUGT): so viele Titel wie das Inhaltsverzeichnis Folgen nennt; passen sie nicht zusammen, sagt Rippy das. * Film: der laengste Titel. * Zwei Fallen mit Tests abgesichert: - SAMMELTITEL: Ein Titel, der so lang ist wie die anderen zusammen ("alle Folgen am Stueck"), waere der laengste und wuerde die Film-Auswahl gewinnen — Rippy wuerde alles doppelt sichern. - ANGEL/Seamless Branching: Mehrere fast gleich lange Fassungen. Rippy nimmt die mit den meisten Kapiteln UND sagt, dass es unsicher ist. * Unklar heisst: nichts vorausgewaehlt. Lieber fragen als raten. Der Defekt-Waechter: * offsetAusMeldung() liest die Stelle aus MakeMKVs Meldung — als LETZTE gequotete Zahl, damit es unabhaengig von MakeMKVs Sprache bleibt (deutsch "bei Offset", englisch "at offset"). * RipAuswertung zaehlt Wiederholungen derselben Stelle; ab HAENGT_AB gilt der Lauf als haengend. Fortschritt raeumt den Verdacht wieder ab. * Das Fenster zeigt dann Klartext plus "Titel ueberspringen" — der laufende makemkvcon wird beendet, der naechste Titel laeuft weiter. Gemessen am lebenden Objekt (Spartacus Disc 2, 01.09.2026): MakeMKV meldete eine halbe Stunde denselben Offset 56881152, makemkvcon verbrauchte dabei 1,7 s CPU (es wartete), und Windows protokollierte 41 fehlerhafte Bloecke in 10 Minuten. Der Defekt lag in Folge 1 — Folge 2 lag heil daneben und ging trotzdem verloren. 17 neue Tests in test/titelwahl.test.ts, alle beim ersten Lauf gruen. 254 Tests gesamt (vorher 237), Typpruefung sauber. Version 5.2.0. Co-Authored-By: Claude Opus 5 --- beweise/ui-520-uebersicht.png | Bin 0 -> 249975 bytes rippy-windows/bau/release-notes.md | 41 +- rippy-windows/package-lock.json | 4 +- rippy-windows/package.json | 2 +- rippy-windows/src/fenster/App.tsx | 191 +++++- rippy-windows/src/fenster/kernverbindung.ts | 619 ++++++++++---------- rippy-windows/src/gemeinsam/nachrichten.ts | 52 +- rippy-windows/src/kern/ablauf/pipeline.ts | 172 ++++-- rippy-windows/src/kern/index.ts | 55 +- rippy-windows/src/kern/rip/makemkv.ts | 43 ++ rippy-windows/src/kern/rip/parser.ts | 20 + rippy-windows/src/kern/rip/titelwahl.ts | 147 +++++ rippy-windows/test/titelwahl.test.ts | 179 ++++++ 13 files changed, 1162 insertions(+), 363 deletions(-) create mode 100644 beweise/ui-520-uebersicht.png create mode 100644 rippy-windows/src/kern/rip/titelwahl.ts create mode 100644 rippy-windows/test/titelwahl.test.ts diff --git a/beweise/ui-520-uebersicht.png b/beweise/ui-520-uebersicht.png new file mode 100644 index 0000000000000000000000000000000000000000..b344020d68103140793c6d5019a3e4703d0ac2be GIT binary patch literal 249975 zcmXt9V|X3W){br4YSP%Yt;Tj^J85j&Mq@TcW1OI|ZJ+prU+#Ur`)lTzJ^R;Q^R5?b zqEwWmkr4~ZJRN;$>Cr>YQRiOZqNAnT!uAsaUnC+ATRfhJ z%r7w6L@G3lro0~6^&y#484P7l4ydQFl=gk zV`kXCMR>caR7%?1j9{XRcc}6e&PdzE_9ivjr{b$C(af7Q{t&<3JP2KTQFCXl9&p7F z59hLII{QW`6Z5Z%x0{Y!cTTE!mX5K`kCE1Ii#>Vev=i6JXI2LGA>?ACLUCkBs&jVx zyV)I+hHJ=EcVX(IFgnug%=lb8(G|5qv_vAcbPp6?`~9zfw73xYk%Qljche;0GC0(_ zgo?m-63fQtG@!@bWXjztsl8HDq*SG3;w6zY@O~ZXmSSV`U^^4AFcOtzYd;`KCpn}G ziW7t^4C|m-fSK>ERONWGBKK~m!kCH9*-ZN*2)LgPIZHW|4jIke?suA}M30j+L}^lF z??GqyC9@UMsr{TdDF0s0Au1<9)S|?)oSJyR#%}H}N*Ru@UJijT6va!dyIgYTbu{<0 zl=W6HC8fOy&Zf~E$rrXgg2X42W_FU^O~Gq8c7KS|Ms zS>RHsRcdcLK}cT9Kr>t9_~+)3+t&?fsQt&I9HDVhja}JKiNbCRV=p3~des`6(Cj?V@4vw7aoD$(DIba6(1>OmTaE+AD;5%xo(Q@Z0khPNSNbDFqS%fea>!Xb zYqs25bHtCmCm}a-h{xhAK*+^omwiK4U{aGAVwaSzptK+*t~25ykpeEgmsu86HYV*a z(jfarc%svUWGdTq{)a<1G3ClHp&T10fDt}7L8bNT&P`CE|@=7$~6NI zWDMz4>w*!|jZ&;mNmQkAQeR@CmDuF{yb&u(U zAS_E)p6=bZLKj)3+j1U7jf4wj;fRf~pYgA|C}wJke4)V_8%bvrGfpV=zcsf9~L~1jmPxDSR0 zUzh_adq^`WE{hG11Zo*0h`%l;QPU;hGn<4@K)}Fi!y~ijIB+o?Vo^a6u7J0ckZ&d8 z9B`aggs{O;|1$}Zg>HANl%i~Ekxa^{2(d9jWQK#*pag4y{_|H5r|0cS%g;F6P~+#| zjmq0TjFG{txl$#1q-K74)if`&&19)mLgeTW+%hE`$YImFc_;ihM2gf*sE2Y?Zi(VJ6 z<0)GCqx2-8Q`^mCu^t7k%zC05tyY?iNgJ0W+v_oc5RdP%1D9GsUY~hfB9K-{7&gQ_ zHj)Nu30)a$|C8$6VAayWL*zFf9$y?35MJF_zXtl}M|g+9)>RaJT4w0||JS{!wdDFI zy#RYyX6st&m3g5ay74}W6JhaRKFunA<&1ABR-%ZC(U<8(>Wqpc#NV$`Hh~&3z|g}| z*MyGTgGdf^Q!$s~ynZG&%93E1pHm^sBPUpiqIumvaEX%t4TcAI!Xg`ZWpEd}$xCNf zcB-gQTY^NC$=Sy@7P&lLe}e;xy)_c?o6W^RvwY-dAxYyXsc2emeCWz zo_?@&X(EKoDoyoNBz|sC*$^-mO;S9mmQZq2we%yp(GBq?i7c`TBs+8jMAmG{1wo$R z>Kgb%X>+L~e91&oslgt*UQTLssc}prT%g&)LGvO@4|5JrW%BvLq6IQ+iG>5Ps>9Ow z(Q|fuI$|N31|Z<`KwDLG<~e$RlJaODa(j2YRbudkEtR0W2WNei;{7LUd2!8dHsc=% zuDNFTRiZqHS?Iz4FK3~CJMR<2qHo#DMfG)p6P>3CC~-$@@}MKp9`|#DrM+4NmbH9}6D(nFp8PIrLbGB}hGC`+ zA!CQ}$6kXiDV zI-bVYep!YR#3Yd>3kuIlU=*_qO$ox3K+$<{e%4ocBp zA7p^4>2n0lKjyMHikzVw1bE2}VgUP1IJ`+Y!xz#QWK61ajlTkIj1}iFq=ta-nwQqX zzt!T{ASYG__xyRsu3W1M{<1YeD$b37o0rZGnFQ)_kelF4HV(s(?MvDq0O`3#|FH~( zK}=r}mc&Y(MWKCY+~PaKuxR6vZ@p4`z~W6l6?f2)$3$13PDSq6vah;nzWJ|>;cJC9 zF-~3xVv%gp3x3ZfQnl4jl}#=PQG4R;NIlDIAmjIoSK(rU8)A==vXi&gHl^DZN-Rjg zaL^+RTr8c55se3<$sf5aC8riFKjcDdE1gVDJ%SspN{woCkYQn;A`mK>N~czYn|Dx{ zgVG;7uqpeFmhF~3>syuXP6PcNMWr3mZfpBd@|(H>z9PW7;Wt7mfbN8{|373T26Ez$ zHFE*OZE|DyaPP>O>Y}|(YUubco+Oel0&bE-Glgkm6C{MpEDQ0=8s@T(`(6X=NwbiHYpz88dyz!|2V+ z*=0UXi*!;l<(ZjhB2uQTMirkblvAp)YHaGU&yGbVl=lJ>(M;zs<{^(bP@3Xku)!cs z`9|0q*!r&hhst;d|m@ z(7AE_?W=Qj9|4G4Ad* zo6Ix^#rLn2-6FPAF{}x}nUghK?brA|{H&}JAb9_AxQ72DM&8G^*zylLa(cW!d*>!M z0S|VHC>qWu;Po4-kfqt`)vj=A_V*tdE^Oc|jTRsw{UvJpp5aUHfI9MIqX4+xg<;x{S?%a-8a z*u$}*qlfi|2O%(+m(oOkMND)>&1S-hP6~&^mNSGI3U4wIEN5}ErxC^9WVYqp^YqSC z6(-=$6eSr%3RH?n?!#OE1sxPZXg=5wvFipfGBgZjLGBs^@k)C`7V4>ll_udUD$z=-@8?l%*K%LO-Rbe4t1VYB)1mOiTW%Kbj3aZ)&iM1P+Q!8_~FlbgZE(78L@VQ760=B+=w!!4vSI^hku}G7#mz=CtqYB(oQVB zDJx{4$lBq<9qT{lKgpy+ajAsgCGn8fKA@EHRdf4eVD6=(k)@SlX&-o#ZOW8qzCDLh z8hMsO%_la;E>Kxf5DH~)jDrwqPT9mp?co4!HsK}6G&ypy>e$%;v?Z)Dk4ogSE3YNt zlLzYAp>u92+mb(in0IFeb68C2EB-QWwpa% z-#(nwmod}N`f6z_9-wBW7>wV)=DntA(eW@E5*1J=gy% z8Z&{{^tu=FoXc*z$$sXl2lnZL-*|2w-!;`9eMGw@nq0SQIw0_+gArAz(PZ<*zJ$WuExR1;oZ-{3aabMbx~BYH!NCx} z>j4j4{Sf~H&%Hdk%#AzK-Ej+c+VLja$O`%g#`iXsR(vRv%-&($&im}dkl=1r9o?aV z(h8M2>j;fhz80Tx-uSo+w2I~$IzCznH}N}?B9?C#LAYr1W(qyNoN@{bMXW@@cD28c z3w^7@QnUxeICv5mL);xV^uaZ4zpLdX7}n?}Drv29=!1-zDujpCo6o#k)X${y!|2phjf&(=r63DKn4>k+c48c5Z@En;9IY zkaWxRY4k#FEN!d^axMR)VT`7rQPDHP%#v26Q^V}YjcgfoW6M$h?Jy1yLr+R~8IZP# z#mh>A-?UDyYLLNI&}cJ;O@l!0u7>S42X;@+2wzoNATA5`T>`DRj$H;u>s2Pv3Ugyt z!ZV|+t9vzxgJy~MqW^C2vL^`sbbfFgJTmay`~;-i`zqS(*8kp@?kWNfo6#9LM104< zQ}`S*k)kGbM{*DQ{;lX|IjS7DRC}^cGhL;52EI1XWTJS~+{F6NcQ)z|RzW~6GL&r~ z9i#$EX2PCJ1%|r0A&*U^!{^96`07&f?t#^u82wy~SRF;V5>1Ix$P$R*G-OW4Jw!{@ zIZtngW0Lj@emCqpsSyav(jcQuhl5%t1OE$`x5Ms@`mH=UR_jeHzR_p7*_ z^&^VYmr1~)SO`E%*9;)Quj(mxqxD3IgS&Yyh}fN2-p#64vQHhifylF-oAVJjstsdH zVanw&Z|CG<&&3enAB)mSw8HUm`h9f5N+~K8&w5yT0Ob?xQo@o!N{*FhV>-)DD|!K2 z7<4c!g*XS%QS>7`-X&Q_65bOj3H(edAIv-?(zk=KavT-k8gQ?ja)_vZIi_m@}1}zO_Z3P7{?4Wtg!$i{oRBnHCct zsQu7$qxmR_mYaT3n_6XhMlHcOjf0BT^=Mz>>8jc;uCL95Y#YV?5h9s~YF*V{Eu1Tp zH~pFpChcElNHMm>GvtYCNf@DyI3$fJtJbiFtklh~=(jMo52|gF4H54TZVTr7=qY3t z&kRZTpMFNHmK^xH%{ChOawfAp-0$dD+L0HlwLnb<`RV|tJ$7>+_yHj)28Py{L((*AF=uq8SPS0e*oz`5yPJ~}s+03!fC zB|2jxKUW?rJ^Gj-#AKrpEIl#n&Ztj{s1DV=gpDcJMq?!fO#D3Sb&N3oVltuNilUOS zOKKA1cni;KC8~BdO82RC5yu}gA{Zv*1nG zgY^9LK2kyn5)73&62&8xRTWiCk>E}yS}3qKB??t=mtr@N?B~G1c@mYwYTQGoHf@`5 z9m$GLZ%aqbIw&B6#_K<4h!5P*#gN;^KC<}+qB>@_Fktv;tiv-e@|IIDNIYFAE+Z8V z`|+!7NsHPl+4hfuXB3ekBH2{Tuh0~zTA{`yPmmrY*1iUXBe^Ow|JoF&jDsKB9K-w? zK{@f{5Ze_5E^PG|<*yZGa4ebel+go&PBC;W4b^I-z0Ucd2f`W~D0 zeChnP`;+;c-Qi!*h`8NPJ=YyCXId94jr-++Z$qQP9|>RQE2uzF%A9`r-KVx(e2{0P zNFQLA9PjySzEjE%{Xs=H=J4b@W+}g7v?0BDjKb2F6@)O=hC3m%7@EF#;Do{P&Cbc# zBecKlb}G2hqFlhswvl)5B-q7e}%4O>eccjpJ;|SkvTS2;u4#*ZieCY zr}qc}(R8_cFhsj@_@YsSI^h1FhFbXDOpG2dg=z@cRb!05t%}@{D?iQqSfj4x_mE?o zt(=;gD&b9n?g&%1d4Z9+2|g_gJ1e2-IKe-_f-oYA$sR_Tpr7D+4Cp+_-LE3M*+i|= zoT}O~Gdfb-A*z0cWFtXkM=mMuts*wQA5S0+Y3dM9Vda-eO6)PA4*_Z)krCZ_4DB&P zs{4$~=jA5K%1Y8I*2g+vQR1>zU|Mg7Vxe!y{AR5hk$(}!AB|9B<8=X(+7?iau90if zgA`c}wln<&FV5Ow5n`F(S6VBgww&|35LqeH}0##@%}c!2Ie<0WVvw z>%sx&gQPD9JvnWcL4$C8x7DA!+aK$mGufOJ1L=%<0S{UM?}$e2_#YjAi-%)y0Y)sg zOW!R=``}a*Ga*Yd1h3W_{rSIw2f`a_lMCGyoQv=Gnz|CS!B*nerDo;^($bi}56^LI z<}O4$R^7nT)N8`xnCJS9W8&}j8c{Bw1^;+tx1@O4ZKY+8nn$XGr?~MnfGre_)_GOk zIXsq&Zzafc=BdyT52}0ervXy8?sHI3o5$FxeK^KZamJu=s12Y^VbY6bU8;06eyGBV zckW6mQcvXjPejwd`7XcPesPMOJN63IGVe)HyEaNzrdu*Tw@0}c%thR2VXTHtQgu2= zxyD<#kk{4Hz~>6+DSV@F2-9VByIuq~4xB_~{}l`6k_CQ*hGQ*q=I7k60hQDl0`3vFnHWMUcX&nnhAiO}^^9(V5N`L)k*a7T01 zJ@=K7=e5~P-@{9D_5Jqd?QB>@ZTDNZS>UdHM(^=R#`~4g#>cL*KP(M`@S~Yy;H2KR zfNMG4G9q(#gUMhxl?1eqAd6k!=O{MI^>{ig@P|sA8|W4r z7KLP`(|xkn|Ftq^Ly=G;ncHeQ_X`^8blvaE6$w#E1mFbU&S3ycc4-zwn2gq5i{B-D zhZtQ>aCvG_(R1R7Mk@HHM=#LrUQt-m0W=EAJ669E@q%@W#329_Evp(aN%{T!|cBv$nCY031ZZ9C(^#~60y-Bp%V>S<}4qe5Qb zw&8dG#uoa6gXi@g%TiegELdOnZ62OFC2k`Us;_BMc1{jcU6)53<6)k(`~*m9Mt(3a zGZAZzwJ1@`AgPbU3&a;2k=cV(u*4Ed97k=eq?GGQ5_^ceB{MU(BcZa`JJ~Ey`d&Po zMk*SCb`|AV&F=!-s5T0?E z8H|LB8p9zs;^g!Ka6K7;d8qj?Br>>v2Q7O|P;A5&HrPwYSCD;=0DrwFZLByaqK54#p2@l8T_r+tAETTR+J|zHLevZu ztsQd@O|*ejfbAnDh4~I~F{kw2E_cNuI;XXYrV?+#kyoNVmH8{n?hdEj4+aFzxx6)UP#q{so1^zo)9|!U*+-SS6J)e=1(YYH*Se#|b9P5ReK;=&A@NE4 zl?5K1$3Uj*dxo+`Ffg#k!Igi6+N4t9%y}`KRzQ!z-&O;v$Ms)yQ|%6o$uh zWUg2#j^lK~Q!=ITWR;B39$E1Mu_bYTRYs{L)@I90$%p=aG17{Lz4z(<&yA|jil)*t zCSk&&j=KTvZl9Xv-YHlLF32lY<><~_g(sSseuCV2=wD}wK817C)fH`1)tzp=@32h- z3W?9f=~V4OZ0pv;<2jSSaVc}aW$)o+dixNqa3J@!uBjOB4{KYT5E>tn4zZ=E?evwfoXA~A}7+!Kw%t6(A2mXPG7bag%usGL!y5*FnVGz0{whI{qPn$ zwEEGwow4J+k5IPSY^8PbU{&;)2B`}J7o!8ht-fhWS+1$ zY33$ETGj!v#fjJ%6PbgshNUnpl&s?H$nt+e$30vEE0|WxJGPMHS|cxgZo$bC&Mnae zerRc{$AV!Lpm2;g;ahaZE2M4y&kLBNTG~6WX`xVSmytunF^|nsBq!2KOn16KVC>4C zl=ZV!*(^wzTN9C13=%*P-CdPS;gX#+r-=%e=AKY{(~*x6->m2csEAs+2)R1L@dMG4 zjFGJiFHGsfxOnv1MNwmEXe>m?jwxu-V5IHZQ|Hyjk+xM;UP8@LM1Tqt&eiGpZUFRx zzI|319Qw-p8q>h^%j|Ge!7_XuX8&XQkGcDUz zqi*InAFs6FlG;`I!IuskZL}mFb3XH!u)rqS@|}P;DCc)FrH; z>HYjWE`=A-;4k;}$I|x4<)_Q(SC8G9sIC)uSWs^WpJeK~unIV;2>g8d=##GJd)bp` z&etT(+Uj&a&*<|z4-P}D>wP%`-5nA0xt)C3`aTzpqt$G}FOO{`o*RvtS<u8mv zk%F4gG8OK*=_H4Vpj3BpqYwOl6pu(UDFmYWe;-cHNHs2GzFW@O701$;qq1IVAqq^` zRzU)KA&FR!PCGT&=r;%}4l%_z5eO^LbyV9LHql;^lLYf0Wp{65B{8LxO`$oLArzBy zZ^GqV29oIH5S_A2*p2|UWLDo%LI7S&3pRHtEI;*$Opl?!s3*oct+B9-@$|l=f%p(I zwww(UtwO_)I_gX;NmrGc<%? z5gEevz-$;T5s|1AiNN=2rOz1-U`15rpD{9i3)_LiRPCivDR+fPKufNwo1uKpHl!&D z{*jBUKAQLzR9d7ptowdqGYl*#?HQz95ZGNwS&VCTA8Wz27~q^%=eJ4MONG43hIeyRAFU^$o^hH@E(<)8-CSGfI`T`FKz0<0+HJ>p*FQu!Z3!c}^ zQoL!Gdf#97^zy1D4$VJ61%Wpc4E2>Cxtz8~pyL89>bmyZ+ilQHpFvnywcFwO50VS$ zocXeGK&k3KSoXg#8hGHL$p55 zpK$|sGxn5`zZ6l8|Lfylc?|j?`uoC&z|BIOG6BSKI`f6-%MQjJzBroj|R1>j!mPaekGXcg6v`$XT1ds z>X@wX_heUTtbS@nu}Ne4D1muttlFwDw?U0oYTR|ifHCw2FeX!3doN)IfA^H}kpb^! zC8DrE(y6=_ksYjZf`u7PX=32WxlynE>(%Go@A|Hwt98$vxcV-y&ySFTw>N|Op2vaV znB&05bjRB5hGBFvg7Xk_a0=NhavCl?B!{QB;ewAK>`9!!6G|h$w{a`h7|%TC7w7u! z+uVx$EvL!aZ5kciRyyf0{8j`O&|Pu$9~tq(JEx08p;5L6LiyDeFb$uxg`Yw6z*Y5 z^R$o2eEAe1cfQA?jvlwYkIDWBo&3;2G&2(LgHh_#6blC#DSyuV3S8rj6#N6DDYxh00B*IQR#+oh?vYM1L0uNYy^?GGm1@22nxLiFACi_6z0s+UZZt1>PgEHiBQ7x4N{+(Q2 z*RMB@_P71LwtIWfMhM(kQIhxh23-FY4{P9RS1|o_i%Ei&$uB>Y#$M3ZKljG8#fwE* zQ&l!fQd!s%XW*4@f9qzL$2>eQv8WCNV>y$bv!HV0^8|q-oaP>o9fp3&`#Zxl(6&FM zeog(|6f!uQCR2@Cvl~W^C%zYr&g8SgiHWgcP9&F8jbPEU+Wd0~7OVLwPg_b^1!qH{ zD&=Kff_#Ys3ki)c!Ac#8oQ5X}FA|d^I5kdhor@C0VhtKA==Uzyiv)XK`DuBt0nDFNa|WPO60z3nJ<|dz)GK$dNP{6 zA@s;-SG>6^UZ}e84wQ$$ir<(=fW+hvQ7&MlJb8|U-A{=QI0||}ci2H5P7L7O{Vsb7 z-u1UwH1kHPmYN>Nz`Goyj>8yDqG!$eo~t2sW%sS?Y})*orbT6Y6YT`2&IFO| z=PLH>obIYHS_?DYxunN)O(Ej@k%-n11nvt@BHq*Y`5|ZffRAR z?AZR)3wz5ZP1Jbbd0yxL2BcNyeJEw0)_yNz_P6I*XxqkRHhg|rHu^kBu~p*PT~W&- z@o^#>G*faOsZM&h-Z}y6IHyNlY9iADqBuRq)`BY9QTFYE+7TJVa{JNblpQ>+g47bb z@)NU8g9-AHNT9i_8P>=uQ;JRed`X*WN3&PdCBc*)f*%{S@&@1w)MlviAn-qX=TnYLka@et!+|K3EU|t(b5}5pDzbarIq* z8A9*BbA(>d#fF2ZLIv)sjh+QUb%ayj-1m8!j|My$m?WS>OfJnZC|JsFU_$t4!xdrK zLJ@v9S(BTbsLt9T?IDTMOchc4lvDFMJNI98{ZKS`@^{oY*sJvivKN4>RDjW8fW@X* z8{!Z1u#7u?-kJ@T{2pr6$$gGmRK*nqRG6;}KX3!0oj`nL&FH+@g{7z`hn^ZYTaE$E z6McVNH0t_#ZvzT^_TbI2j?N?Xvw6(sy9=aX+izXI1`dE<25be2uoj5>y^U0-)B39J zC3P}qMz|~Me_lWxZ_jOL;7-Oz{_EG*R<(C{Ost3fqZb%jbZcn@jIP%A@>u_4-?rf* z?+TjG6uNAg&-dDkDtKKj@Py3_1Z8}__q~sM&SbGy$Q3vZ0JXjVasyoGHnI#BmH1@` z_T!@OWBK!{^L1YsRMI?6U=Ob0aHpwd=*>gC(>x>OfBuJfrjBq^Q|P+8nE|#}PT=+8 zg*gCNjocb9=&`77+xv9s7+4XF(RcMw|GW4vzvpT7*cYGH?YdfZ47l4`bv@D`c?bsG zd0uRM{dHh0x}vSH?r6#|t@596*DWzrO_@9~84tvhs4UrkxXJT6TPCI-rIt zS8k;*-A^VSPSd2QULtJ`aab?9u`%L=#ZF!YJL>_fjat)kN;Z*$LbdJ|iBsP8i&(t- z8#sO=(PNaRX#{r)nyCwh!(Zwwe0ts@<1-Z|#**V-VflW2l3C<*ckycn5_bla77CHY ze&JRUD7-Fzg^C(nmBlQ*TxBhTb9sUr;nB>)0lTta`)x$MUo*H)pY77O3g!_eUdg{HmRg*Jt}2xB3G%>=%b^b%Pd_f#mFwm|_lf zoa_Dex(#}fL_FSl>Q^UyImuXZTv2=X7@k!2os82W^#n92GG9Co)Nc2lvTwJaH8ls^ zyw-b}PPvZO>3R&!h4p=ok_JvO%=EoPH{$>bUhmi9K5xeBw?Vbi+xIW>>C8sAMSY;X zedW5Yi^Gah9EX<+Zil)A!NIX2g6?YrN3Y>StIO4{&+?hAhno`H?FX~vTK&crHsAj^ zgxk++F~T>yGmaZAX~6;V?MriecRd3A`GT(rLLV}Pc)!?M6q$tk9pY$o5U{8`Op1P* z>=sjN^_*#XZup#EU9KAfvzP0P+8$Rhl?Bd&5k0Qg+|Mh7-|y9xHEZ+TKR_8qcU8Q1 zNB&Q}zSo_Xw)I|952Ja0a|2;9TW^@xevetLZGpga3+dYKM`TBB_YG$~F8jANT!(<8 z-<+A+n6F`o%snk~e#doPRk@%TT%)_S@55@thuNn3E(_xztsZ#lj9iR zGnEY;gR52Ib<_J=*M78?rb($>2fDQqYIPl*)-QagAD6(HM|Ofh^T||1?i*#j=XkPl z^{5`?6t6!u`TTfK+v|DhJYV*|_Ei>m9D~dHyVF!{ten6si4>8eDG=env%{P z@(Z|R7gu^bw{!%x3Y?`R3n;$=w7a2wqYr=;%7w7kC81%U*i=|sx9dx@jE(y~<2sU1tSa90Y}0$Y}+?V^M;2qVpoKSQPe^sm8WVG&+JX}ML}kwr>zsn$BZ zC()%z8ZGY9QFpy!!&*8oL6o znfnaiLDj;}hci8g$@F*reNViGHC5WY{hE}R9={m0E>S;j`a15TXmh<@PAeF7yWxIb zKMj6Su+LYs&x#J8L;8B%*4u>76Xo0|J<-Ee!vN4BbD!6JZMpZ|QJ(ivR`*-dWV+z< zj`-(wK|uez&f<&FSMc=}Q+^J6L_yqO)Ox0Lg6ikSm1SB#LTt{kI5sjN^mL&1u&?y;C(lUk5uDR3ONZ&xmm!F z&}HJNT|~vkj=K~ClGz~XZwwOCMg43U*4RqUlB)9DF zyk%dNa3lOy(f9GOY!Pn zeSW|8861GVLm?)}n!wHVox2izHC$=B3pLB=yNoabB_;Svstp@#NCMzVV2HVlq)wyB z5OD$E9;w5>!QC-42NHXdjoAjTKaec}JeL6WjE>i6Fj$m}&ny4!EOy^V_=?=yDgLV! zWUmcb+Pv4>3}Kf~&yS}FVZW_O!^d~Wfb&tId#gKKrp`0Y3aXx+ZrXo_xp+AwLZsBRcX?9ap8|ZLAUL;zWXfYf^MIOoPhh<5K-J3W)$DYe0X8osk?(WAC(#})Lz#hLt z`sIrZ;n&lue%r0*_Z)7AD!d-QwCk&-nShs4b*=52rM7@GGt%`Av)8lEq`=OHrTWFV z?kia7IHdiY6P3vFIY=OEvds+fAEXgUl({F}2LjfbaRXJ~hb*hk^`b8%bvR9u-g;S8 zt+{L_n5fi3jD{)uSGm-FMQ;X|D*8_&+yVX)K{@q(yW!Ve zz=+S8?YD;sO-eQ)p1o-+CEcDE*noR!$EvYIqcL632t(k>=oWBgaJ%;Hm?!7n53&fg zgA1==3?#zm0$FBAr>NroVuz*vP(eO)q{P90hUZw<=PyfpK9rNrOaf-PL`6)o%xv6A zCl|YZJhhlzoKPJ567N=;kaH`(g^G-~RY= z-q4GRw7QW%Kt>@~s70E)1b1^wUE)blzg;>QqS@UR{mysY7EBMk;x^cc7k72SHlV}| zQCAi$d%^t_@VeO%_J1cddOy=zw9O?no=j)l{`kYw_x`-E%mdqAd=rg5sR@F;3QX+l z0RcxzwtM}%Tz?%;<+Yg(N2^I|X6dk3+@`6{)NeaY^I9?KH|$iF{P=R;D-aHtw0Zh; z>w4b~*VCB{TvjcZ1Ft~GPnWGmg`8Gbxz%-@7k?v2eq;6M6s{@sJg!wQ)t(FAt&7u= zJ-U6OJ1b2fF3QfWuEH2;6k;J)t7)*CzCR=e6ON0UIH+JvxV z8xug4xPd;W4ep)08mZpJ2#NgzTqE+l3j#xkHwyIBgszCvOIEN|J?}wZR>l))AZRMX!0kor8qXkPt-m*7e^g~TjP5Ly=>V!3bj_VJkfrs|Y{MQFM>{f4I@zP?!+lMd142W6CXR__emnbV& z3WOhuCltOb3CiMhwFE?E{~SB8g3C&uR7UdxI4?GiGV$KRJy~J9`(2p41Cy-!o_h3z zpE|1M4BEDx_iQQ{4FVQ!W{dFIEicyF9Ph&80zb6^Ieo8k4c6PPS9{L;|Ay#&!G^?D zl~&IS=s3R`qA#tj!+pNoOo`_-7m+y@g~esJQu?Y+`Zi(oNivuzQSChrG`qRsQ)4fEW3Y^_QP ze3{T9sUZ;E9=qtcd%9RXEN5$i&xYtyt1zY+N%b=p295i7R4{R*vd2`&s`-ArK}Voy z5Td-U<`TbquBX=;z1>%QO^Y-*4~7rRXXM^BWq8A8D&}_F9razz$@h6oGA8&xbzvJ- zDMpa`FL%xKJtyl4e}a0tJT=q(BtxrO4=1%^>735BNGiqtMtW|2v}$#~bbf8uJXpKg zXf}Eum`aQMqJyXHm`Va|6wAxKx~=+`(%okdj?YKS*X^(I{NWr!=6q0s2*FTUtcui2HVD@Iu^AZ>S+WV}sS0sTN?$iMAKf zqPLNMMB|oFO_qrl$}bU&tWk5pB{o5&j|iPEsOLSsYWRQQ$OLTp31o<_bR;obg*DoZ zV#FYjcqao+1AUXBuKR7nb%u9$2=j9?5VXm(jsFwoc-7gx&FD$l#rbKEZP|-he@i*nI$gv|i_~hyECJ%pGv1{_u`4B-b&M&udGHhvIbj zZupdKOX7XsC{5yBv*1+*C-ezop2}x`ZQoA_Bk`dNX=?1q!wWW~2OO(Gk0K2b8#`m- zF+v*nhz;xIUGO*rv|$R$0d(PXdWF*mVNt?YH^eY^#L*eUSZ{!(6r2bbzag}11ggM8 ztNBc&w*?`+MS5rAE1rL;{*!?EJh&;6z@OJSRG9wxs{yEu#chv&-X$xib!=xS|3kR=XXET$rvWjX87i{)$4(<5kH^>RCK=O1l# zkBwiz;8I2YsuwV+BG+Yaf-*syBk(HM2-HDZ_0iEN(C2&(&?%W=t@D2jqc?DWD_g$~ zTm@D1-cGny1!_)yWgeT`-Y4I*yoQ^~G^xB_A2$;O{?yUCX$8^#&kF!;N*91yw?XIh zpRij_IuCwVpsDq?%Q_VcM@U%;&A#r=cp@pG<+Vb1?Pka8{QslroT4LPgLNHD zFtKgh6Wg|JOl;e>HL-2mb~3T;Op*>y|9hW((YLwi)u~nAi>IJ&0nZ%0PS&4QW93=a zQ|i^6Cn2bQ&);A0YqK$0tZM>I>@b!nhHyGuHmx1Yz);s(ozCf#*e8FFv_OAUY8AWv zUrioBQB?M7oq*HPA>hVO+%3E)*zY~xpl$Y-eqUlF-o}=?X)k+$r~)-yBMY)1o$m$- z8amagd%*4MVmd)xh2BP{z0YHIUDv)Ghwl?}u;jZ)zR=g^WQ59g&b$ZUB=loXpHJo}6 z{S@TcBmh{EP-E6`Tq5HSM(YFjd0MDq=y(G9{XNZ2TA1|uPibu*;{)JOewS^2T`i#l zhI_pm*1}&nHQ21t_A9k+HP1jRtvo0=TzB@tY^t{B8RsQ+kLG^eBtF0OZ5aStdS$k- z>wR&~I;+j64V}NM_}Srf9Ay%x|L@xSwvNK9W#D|Z^0&)rp7(0nj81;-vis-hN?m)m zQ!1g)T_PKmR%vCs!@&4so$gsjlZ8sJ%#sKqXpY03t%RY1BWe1%cn5KYnsanqw=+uq z_6^9pMea-hw(G;Bgd4KmK9YZn^o7`&a#8A|zHSbsz6%|Pt{r55yKSqkFxTr69 z(@HX~0yu%U5&PbJ%+*iq=&R9jB>Uw{7q%twIiXRS^gYMyJz~XT@UF1xTM!kZa8w8w z7S?L}7~ph3O3ozH6MRR&%i-`o$@7H@m>>wE64~EeKuDg{+U~I4T_k^0;J+{TCe&2f zZ#3RG0Q!qIo4wYbr8Pxf;5h>J@@ht-F#}PgnDF7M5UwvbJc{VA`Tmb3^qX5kitAl3 zd*@a0_rl61@59M+J>ThHPdTg#-4BbbwcStEgq{0Q7OS={p+Hfs$9{LfOoC3=@95yy zuD9R)B80uyb_vkotm?K~1B;dgXU0LDSNy=L{&>^!90^}+c76bVJejT>M@g+uZfK_t zFaz9&OD6h?vF{x=!@t9+`NVv&^195I6dlyzyiT6-f3Gn5?3WkCcie>G>VJy}e8dxe z;y%d5O5d#a9tL{%eFEbBd1qBkX`nM{_7`e?+Yev%DT%0oIEmuM7;KQQHv&Snnoh-& z=yV&0(Q7-sfx@W&{vlx*QHiR5cl7ag=6gdzA$`rM$peec!{?%Qdc{CAPyr zp%_oAT?tbw)1^dCrOofCO$FC69&0Dx=fm$k^70);PGi6Wa4YmXv^MDa$g<|J^Y{wn zzRE$PSZSgwRucaeu4Ti@!m!o`Eqq$6K$V=HFKMtAu_#?xOG{)>BS^L+w7#T`OxjPD z^>nF308i1n2w0NcztTzln#ljwq5>&W4l~l{d{17Yi3jgmW;z3uNYH&wy+unP9kqJ- zc^`o<0hOK#2dH&hMTFpz^VuX((Xs_lzoQDdmB+y)^~w){*G(RvX7p3wB~51MvlO;c z060c2<9gIeX-;T5#VH_xX|ucU;QY6Wm(Q)a@2j(iix}*>-kTMUZI>m!m#xjM!6b5- zS%L5FO}j3>lWKk6N*UGW?RKR@w^c0*dd+sC(KL{xb08P zRxy3g`XY8t1N(9sv)9gZe78B9Me4Pj_rr(r0)8Gho)-AL4tHrfb~QOhYA2a3m$RHE z|FU;Kf}6}|d|vm*9@vnAwFbD#1dj34w555Z*c z`C4oB8I|Gv$}`I%6P-xIMkKbClDU!*2%Rn-*N=lZR3LlS@mPIvB2LCOAe9dgNV7j2o*c6x7l}JGZv@idW37>eP30_{{qx?UEeAsG*)i?@4ONDA7U_* zyv)DTcRk)StKvT|zduv^KEpTTG#l?Kr)IS~*Si?hYyiFQ`5(P&dLONX9p+yj9U6LG zC&%eIj_(}3@8gG;c*u&(Q1wpJG_d=Hu<9Ck9#<0`_E1>{B5*SNi}fQ z0PI&)-mLPodd~v?H0!wit6+w; z4U7X?<>?jIqrAY&7ACvRR+G2JJXq1Ux?^{;MxFlS>me*AJ@2UVno3Zyi`?}?QpN`N~;C&choyp$43l>mC|DNT0A<~&D(iFcD#JGk3 z0YZHp6PdF-AOr570lv+Jk0KMrd^zAB%;AvKLm%Xi?t`_8kW@*iwGC?RjP?8&^abqQ zfur4kc)P6>0eW^n=#hl9n5Si>$|%igSpwNkiv8lwiKE{dbJG{x13F?xtgap|hkg~g zOD&gCqG+SBF$!b>hgV@n^{! zTi|T{Ngfz#(yPY>vtY617MrN(t8vU&4m%_B)90(0t&OqLPBIwV-fg+C%~^u075&&j zRX;jP;X{chw!QWaBQ(W|$T4g(B(Mm3Ymns37MO@x2ge=XZ){nHMDxoc6=GC5V8od8 z#%;wqP8K0$j+7YGJEo!aS;RxJenrQo9}NeR_Y5N(kqQbufw^BS6H#FTo9-fVDMrvK zJei(Gmp3KRr``3gn2v7R)gz+vZ+G8s56Ci@x{mkQ0-rY={ZwgP->CUr@4(N}zb0>c zbbg+@$J_U>NuBkl!DoT@s_ZqOb)}}It>FoL!>DrdejPdcKlb%KG{VZmpT#4+g)8`d z`ri6{dVklg_1seG`=8C-ybe_dPsvbQ*kL)d~2| zq@HrQP-joJ?YMo%_Z_PVypB%Qbw5q-etq_B_L^XNTEya$mZii^8t-gnGTLmw>-zqQ zW?OBdku2Snc5q$s40O0Cu4J-)zTyD>ljAipZau{V2ZDzwuJjkr>+`mIuEQj?!24w% zGt45w9c}*m*1+d`p4Y>KOkKzGssE#Z`ilMAW;{c$?|Js_KZY{h-p3kyeve(>4oy{u z+g$gZ*EquO%-z=+5hw)yhko#E4x1nRY7_3)Up`j_;b{yyU*PuM?^MNoo{u6g+ulzN zV``ymyl>-r1w3%u^n4GJ9O0^@(($5JM*-FT5*tE-k-HE0K}c^{8}cgJNsg;I8}?q8 zI#n4qEeeXEZUp|X`*WX%V`jLDo~>)UclH=`+MLd-)e^u(JdV+y**Irh{3&(L|LY&e z&TCWO*JU_DTpYO1F>HQao#v8?0_6jbnn(8~5<17yIt}a9W#Nz-X=@bMNIp-1=i@Dg{;e;3DV=D^qU`D zYAf)zBos)wk)lQ+%92-GUCeH3q^Eu+9fN}?6`q7%^=|MOA~wWPhLSiO=}U-VX$J8z zPeM`%Dg{Jxy~@hv4QT=AYy3IU05MHNloDu!qq!;5x2?;N_Vc|)$AK%Wr$B!IzQ)Jk zCd21{osR#q`@NJ1nhCtH66dOrEa) z@bNgOfea{$*Kct-SJnWA7QqQ$`=Pci5`gcmtnbs8@2Q2VxH!#gpw8z11qi3X_L%do z47jVdSgrlc%zxW>zj>FxG>jMc3IRq=8x(N6*A>sB594^gfKk9Of-m&oHGxqXchjuY z&_a{dbFFG}cJV_Th0)fd|I-3a3xAjJ^lytpp@O1;o(wKsM33IC(Z$anfKWBA%-8-l zUfKU~XHz0|AyhV&ia~C2Ga;rj8G{Te&eowMZT;p#Oj`C+>ann5a~^CwC{xyq%k+>s z>Q@rGeC{IFLQ;W`Abb1_BsOhxS(YTN)@?PNIDk+)OU*80HAj#a0A!r9 z+ii5ZQWEms+Mg#uj1e|{-2a*b`qG4~0PJb3YJR|3*_z!})0&@t{nG+Lc82<3q?c>-*XXkjI$|VG3fvHSjpT~KV%%)? zR7DM*BH&@HR^*8K&?PKj2v!;WQkIK23j2uzRtgMJL98m8qFH?k!oy@8wfWDiz^@1y zt8=XR?X?t&C|^!z#3g(0#S`N8XP-or@$DupPa2eaDqCcZ@KmXQ{nyj%dL}5>-2m2D zOTB9<9n?yIdFgQKP@t?={2-?H_Ov9=12{^~o|?<%xxMM?<8r^*q5;}y6O>}N?(ePF zgn-NVyLgazn7RCy8t-1ckwDs0Ky}k>%#J;|lKZyn8kE4R#myW|#>dj_ccza0r?i^W z>1^&CZ_~5?$3Efb+V|V80{6Y>X&W%Y+7|r+Tjc&m=s-yB_ft4Dqwnv+P@l2G1;rIl z+!vYu+;B}JaVeEQ5rFLSC&@ELE7Ha{v?gu^V4bbrM)8`4DRIvq1GXV=rSDb6F(S0r zr4LWR5W=``16r@Zhy=lLFwm!R@`M#dJC5^S!kjhnPWV8hWLYB#1AsOZB_LSU{F=yW z#r)0jgMv$YxNy1{PU^=jn=)S9H%UWO#%jSBu@#rlb4;j6+4J5?zQ`iebf$_x;^Da{ zIefs&Y*`k$>4q~^$w&%zB{(wKQsPyAvC6oGueWZioRGOs-;fPP5FQqip$$K@(6w!` zJJaJge2JuZb2!{#MzC!AHlhMwm+ewCv+ z`%cgITKTU(*86YmJCHD>c8`87UyV<|ZOYyAJQ} z+P_EPl~t1#(suV-eUEdYP|Z++r}^N&;VIcwcC5()e2RbNPB#j*Vif!`r?xXecZ8AErjpRdyom)GdpH4| zOAz~ElmJO_?!^A*y-#`no_K<}*65&_$MPRG1fhG7WeTi(Vg>&dZhf2C*|TI|F;y5? zv38zdh0G`EUjbL~Qj|Wt6NyR_@Jz}G{TXv$lwzp-Tr6+(;_JEG7zeTLcW&1keMXP9 zCh^*hc86~0pl+6>Lzx+-)H~p+jm5nX(uU{ducnm7R9i}LZ4X|FBgDTHbGy$@H zgCUV@M{u}lRuHa-V|Xn`-g9=_zhD@P{uGI{_9F5^FO&qTz9pJ~^CMo^Bsrn?@xaS6 z5^KmRk1}CBk1uy7^#{g(iEz?qhh%_7Z|MaJDWlwcuAk3dtHkp^Z1}$l)cIUnr`K@) z-dv?ud&{JmR9=fcPNcU9GPTqc{;1X? z6^CCMF^>)P82C%`-i6FL-syskA4!a(V>zV?{51S45c~vef1ge#t9Kv1&wh68eir;+ zxAMNsz~}u8|7{Dj*0?YA#ruI-=If*hQ5D_D=Qa5IEBvOo;b;Emv_+La4Qme-Z7|Se zo6Q&auCe!hPu0+OTv5|tFz7wF>AHQ}I_)#`6Sg{;#+FH^tMK|Bmdp1#ZmDZOGh^Is zwmO{Q*c}||NG*B~_kV@D%=3NzFY`k)wr-}re{AsHV!+q>W$4u+_qrF1D8y0TN~ux9 z?X_?)!t=q=Ye1t|z-E0?jma+e0b$PfAp>@xP>OH}fuR?nhPq+30eNnX)KnR^$!y6%%pJ07UMfLy-nQRwG*sl_PFPj+{!yz>1@ncKp&yu&XHL_y{oR;Nb z;8?!@zml@*&3gKW?I|ptDlBwRsgk`RlAU$;-8(ep;`(G_Gzo0uq~t~YRzC72wMe5s zYNniFY!GvdaO)aQCF`p4)8Z5z489ll5`M=wlwhDC#{VKXDf2^QquiFO&NHqFc>~_A z?PNzuRD%CH>|nz6*o^%Q>1Jc*3VFTpN;6lYTeW+oU<$=^J#BsP5O^Cve9%v5Ik9UU zd%s5d4X?@b@%$dJeHd%MMhM9cw~fSDZ?D zupGSae@o_$Potre@2+b4E*Za^PlDdML=C>*1k}E>U=bmMxtvebBTrWaUK;w|-!BaG zPoijRHC>-7QGshx;}pX-&`1k|$330NZgX0h1nQ|>V3%ukea9!v`pjy8^;8{x@8>H$ z9`~Egw)lv>kzi>9AZej2>QjBkJ`@Xx)qsaEfK#3?WI#vHY8J>$gr{Cb&L?sgarNBM z@+o|UBYZ32;B-oBiKe^$#(frDNlq71?`D;I?dAAmlY%aq2~Q$T;l8@@H@4bt5Mld! z97{O{F(Qy0EJR&1GKYnWILi{HV?~lsAy3wP(V$^P*IZNtt?#yyn-pzVY?=e7oX$R@ znAz}R!bS;F5P6~)kqLu+JVuS054DCkq9p|z#@~U<(Mt9Gp12XmSeIWikU5Twn@A`=6uJCPk2WGl2HDz5p7A{yzr>}t~S1kY&$6> zIvwVPcK+{aoBewCWA~EA_V>Ei@vNAh1d%*Ud*sC^83nlWN@8N@g7Qp-l1gxM{P8aH zC=jabx<6cM4AK>LGw zf_SE|7s;87AL(?ShzXbMkd#@^xStnY)^S|aqBmybLr6dg#PVEK*Qu2*)TfE>&8b#0pxQA? z)aOlOAM4pp*qXL<7_;w0LFeS#=t#UY`e#-W;m0~Ul+h{aK7 zgveQ|BNv=Cldw@1QOv}1(5S{KnSiK0L}{*uNF3^n^9M=PpvLKdG`4XV7{gMBB;`1x z!H5^8AfZnTgS!yfB?Zxd%#iYeq;(4Dq#;vrv2el3>3$QKf^^Q*oE~F_A6%pPYY1s z_uCNI^6_6523HsqoxL-6+GS3hXP2&BPFC#O3s1t4*3s+m-qXgKWJK(u^lwW-WMG{j zOga;vu!wD@ORU_){ z;;{oyEUv-cj(s8=?SmfK7loHEOJp+lfbPTx0R0@i(Wd8HYun z#tt2Ui1=c>p&EE!ZQFO=jcVj-b#%=h*6jJZF28us*?zy)Ao`yrzsLh6@N~3~83TWp zjmBf3&mHHziyj_}%MKKoKc)Oy+F^lN&d(Azn9gtl66in(Jgz!g|oPjH*6i@yggw)HVYjzTdDlAeu#C`X=)9)}cz4sng?_PhuG zA-dE=0Ot?+AoxkGa^UI-OOt;+=+umr*UN@Mty20^o6Pc$>>q`=(qt^-8I{*9ghT#K zd=4{;4LPdzNwZNc=C5_|u8mX$kjEVlCK*0#YSzE~SrW?>tbY!0qk4qR1wZ<$C`fRU zz%3;uW3KNiV3FMKKUI9!7FGx&e2IxSgI&_66R=H#iM8_AEz+QcI0%DTSSX*eC!K_i z{)z~i$G`$M8hz(D2({hMJH~cAzdQNfpC!furr;*V9a3_r1fZ>)1CCwUvu+?| zT!WO154ZKCcX!=B2J08jr%WW9;`?I>hSux4;C1qsLD&WGW>feQl|abx4@km^(o78> z-N(;<=6p5cH=mu4!hh-h9M+jk-tw9KS6of_Ekzs41d;Lps$ ztSnvk?yRBG!@;Q4zA&F|JdsorousH(2l>#G~t4(Qx>T(@pc9?CkCbG%u+e_V5-zT9_ z&!F-*TAAH82JR&8v77lj7C<qUo3=QrAILEul2?*$iUVMGfl&jK?#Nj#`Nvt~=_PxfEJQ5u2=z z-wEUliV?PHy<|C4F_}Y@rmUj42)K^X4igGFhSy1-IZ~~na4L>EL|DVCxC=4& zQ2h@t@~#eQo-GDiIxo3oe}OGPnnFp&b68jDL9Fw#y?T{rsdxtHJRgj|o>gcoEPmLKSR=^x;&zniC zXU)PAyiHyTKc}qHF}*HN=W>DhY1A<)Bt4c>yeS@o1aO>h-~RKoS#pZ!eo{e8;P3U= z3BSoA?ErA(i^BXR1jW6XEhGh1SsTL+bAqd9aEKcjIe^%v?sn*?On=eY1q+8 zbOGv-VhrVkWjzX*>o38zNp`dpgcvWBrA$XQOsZ`4DC>=GkmOlI@Y|}Xk6dQ&(I-Ec z|47Ye1?bC3T>3Tgvq=kU!`?Qp174MK6SckzWOrz6Ry!_|=XTi$f1ILPUW0z~Bm+uC z${OTjf@2W`WlZhCbcw2JHRExM$)kPPo9z#{q%sFuJ%{1Vq1jm<2t~4Nnks_3&ESd# zA%BR>mPM8jXR1-J6~|A-Kchl{0kd{iaTe$h=GcKGz^Bz`f1t=|tv+zGHki?g-v7A@+sPvDG?m3U|~hHW3YTcbrOFcp|^kn`!dfX$?Uu zQ7z<-!d7F=BR<%#4;&qj#ve>G4vgGxI7|LREV@q_4N8{cH4}nCxR$b(fNC0{2fzPJ zISXs}2Qo{R`4S=gfEqniCRY0tAeJ?&ZIE?Zg}#JfU~sE;N<(~+m3yB$+xD_SOrXk# zIN#_wbq7hwX)o30@n3oT|G1%4)NnQ6 zTQB}v#bySc%xixXZ1-P}hdy^=S14|1;~O@5obbP+jmygP898zs!8GbQ>zMz|0|*&6 zZ;7e+wKIbba9dW;NGS8d!M#DL@v}!RuChgFM(`h-WqTGtDzW?}I#f@=wuA2=d=-Ug zQip0vQUT#M#68L+tcl4>pA#^i0Agx+{=?MfZ`WVnm$iwuLH)%ec8w}fO8Z!v(&wb% z&069HZIGbn{ugqrAkcL@`@Uwk*(>o&^MEl^-mf%c zyTJ;Mjx9byMCbzTFU_otQ|l93Hhn?C5foj+L>1bpeSvWWEL}Y#qu>?IK)qwB%Yd|5 z&^y9X|DEO2hwF~LVo=F*1+P(oEGPoN!#CSFJZT-4#MqCo?l{rU`AfK!7<$9V&r(-N z&@O8@)v}-e5KT44adoR$lh+*BUlBA;BUB3eV_(69MnW%BQZd|B#BOVHI!4eS0Ji;~ z+9+vA^DhovS}C-_>qro_zi9(ZSjm*Gzx{Utz8Wh%#&MY3bf7&hirG|2n}{NO#v&r5 zTIr*jLjaGSBpPTLh z6=CvYdr%NCXaQ)m_zkfn!8Wxc^zoj~78>7~0`9AcGAHzUEPY=5pI56;`5u1TZ`afQ z%sD>eH<`{a1l126i_FE#6I`3#5p~eY_91C`p&u)#F-Xzbd4XZ_qY_B`StFMC7c^es zEad!T+pvYd;=xm=!a209c}c&p?v8A|N*~+XGO|a#TSN0l@Pz$})$b4>)^J{w2ptPj>EY`y`4l*n5g2+Y+DYRh802nPS;zZH&kciFW1!g+|#j4$l(UdY5Dtu zW+%wjO<5IJJC`aj;bCju1dm#XeUB~|_n;hWNyxALYQ&K)hvW3M2$QhKN9mZ2L6^zm zc{)>bk1mDUqbN^__t(a<^jE_l_W*Ao^$L?P z1$n+fI2rr2|97)$y>lBz-g@yCCBb#^J@w%QOjZgXIKajcY{_|DQHBeoSPLC0tF^{L}AZO zA{tv;RDOApLLm@uDVGo*R-k^84rK2Ir+`oCfRGbc*A8M3JD+Re6c=%_4AfxsU*IRv z7C;4=Ri5F6OHpV%N9X>uZi8@_w@Il3T^gaiyVtLPS zr|Ur9Oa_dItzbtPJ=2B;-((yMda{qmai5|^uHij0mH%3M@L{_(V##@YwUvJyMwSI6 zbTq_aqw&j)L6nhE_oB<7S7y?>Fj}62%6w6?P3+RlB?x+R2f#1eem(d-N+r)25LH=E ziYp1voibIwev~MSlrXcza?qscD~ z5)Z*w2cL^klv6Rgm6938(=V6O00kH7%2>z4k9pO}&b6W~vdvR^e~*@X8V)|1m^u5| zu1df+%WW5N80!zk$=b^`6Lr2W{WY_x4(VPJ!vH{O`HuhZHl@6H}!^dFky&EgHT$;z5Eva7#3F<8?QWx zJk6~ns>Po6pK{bmd!q& z?F0WiyrPfCq~<*ab0~f{ZB7wwF>rSfN)cjs)us>qGmD$H%LvtVPeun4A;zUyjAwCJ zE!RWUXOV?8g4w*!B#^}oB#R1_@3vt~b2wRN{U{9j|Fi&z3C~1gM0x>m>)%GOD$z+x z12M2&3Q~SHhl?ta@M(k2^O7*eT#A3_Pkw1>hhg}T6$dh#5`$O2I6_dbm@O(N5o$D( z$$&R$fm`fkL}*kwTKQtpG(}*1?^P*CT!Eqe&W{Q6BvZof`tC6tYWT=2?Lk2V3v zDm-a)PX;?Y1GZMOODg*#&MK)ffKDL)mbkX+INUyMVu8Y5sqxo88CiRger(W#8#Eyt z%u0f8O*%u(`R?^S~vk0^=v8utr)PHKk3l7*!F`j1&6af0BX|7dZe zIVC&HKz}v~|L?&Y1gIaW$r1v^$0qc8^h&x^tBsc=X>eH&_EU?<#gVCETLE9q$P zCS#&Ln@NNtl&4W_*p(Wuth9ENVaLL*K z6e{Enf2ezn4H!C{12{~q5tN5Y;Y=fWov7NEK(UGSJTaZ3oTQ3k`VipBy{S>*bh<-Q z0hEw4<~szyuxkxREr()h=6DS{4~c@-Z2dL-oOw;$_#NSa!VfwyJnq8}{EQs4F3d{A zJZ7UWWr{g*y`&$)7@+1&6@eC9{$`K7S2aA*ddjVSpu6*+_VWR*oP>jfR!e1%_3y+R(e`PqRdf>82I zKqD!5ga<|;@#C6>lh+C08TeU(cMu>Pl<7k$qRfgCQpIHL;QmADD5sC<%)dQJOrS?^Xr|~L?e_*Kd zLQySX{9=KWDlqa31)geaMzXPy2JG>WCE%n_K1gLcz2Fkk%}CAZA=B8DfL>r?R3lE1aV~l$|Z9~&S%E8d#1~K*X2qzdz$U_^RxNgevPf!wZ zeMPvF-uwz(!qYw{Pv(6eQMsWA`ytE5iNb)Pb!*ll?d$yie(gh$#`lVskQ?f7&0HXc zI*x`~x8@uZ5zGcgivvRx^XBe58d$RIK?n1PgvUt18)Kp#3)&I=&1aKCi-M>ltEE3% z#$yWSG>Oc@PS0J=A-FWtu#{t!55m`=44J62M;>V zF9sS-lFi!;^m$Bd)3}(4Bl;0);{6JdMK14?Q$IZ_6i<3^Q`OUtoos~4YdzoYF2W-1 ztJO=8O72Uz?-U|Z!~TLHH+_U=HQPlpqB!4ygR!?dVI=&G6%pw#l6jzDLl8^FE7|5# z(T_Y(0jB^l69XcnJzXkoCaNNIBJ+TFmBF!#F>tlcj>e9b1!R)7W&ZtH`zOCFFVClK zL(Gd6k{RY`aRr%ayz=vR6^sACKir*|?FNbIqZ}D;YtrA_kxuLX_d~C@^k!4*ABBc% z{`X5izR~V&$VQd^0(hgzj1@oaosNR37F?iUoiXGWIS=GC97JQ4JU*kQxpOFWVrJxH zLvGG5(DMw`kp^plx#P+!eX(pXrk^?x= zCbV!Zk&HyR6H?OioL$(-+8sl`|#yqG=2oY2Bt1^+=CC6_|0)xV+RtcE!*ZAWu9UHZAD3xF8raZPr{O7$2j6z5Tmr9O^iTIJS?dQq-yT-gAvL-<<54 zh#Zs{eGsA$xAR7ET3E`)e>a|oxfO-n`Mv+o8h3Xf5?rvPkGVORga4l*H8tgPBItIL zK3Z+2`PXUNB~-YRI7>r!fQarueLHPn%4MHiSugB$PS8Bc)fu-)$O-3t#oA{_12ad9 zwiF_jI1w>mBb*riFPR<7m8$8_jED?owlLi!LN@WMrI{0!R#XbJkylx^lbBq%7i-DN z)$w9OQZOTwr_@Mf4)Nq7)hQ_k8fqhC&F(*+cu!*1%Z&3o!M2A@ zk%tbVl5{Y1Qu;^Nvj4A=Ackm5ShpzADpb_oN6WkOre)?aOcNJ*&b)BR6&Il(Qej8+ z2C}gG_LnL^HKG@&04S6LKNcmNMN|STw0U*RD2f!qf%i1EDRQ9`r((Kt#qdobj}P<` z)VP?^+!nwc#6?K64yUPqrUkNEMql6-Pv>61WrpR1b&XjbX81YH31QH4Owi@j#vGWs zMui&C&!Ru2e&`~FZ2AVjhAL3A0!r1ssw%*&RgF ziW4=ahYvWv85T~Z&9_$7QCfFAW~D1B^tTa+^Ku};5R-BZB)reGy5>!=|yb9Ut`SS zXLMVAxc)n0&DUMtueSN)cdS}l2Zn1^_7@ZGv7CFv9{QWH8_otY+=AH#Httv;;Tq_p zObjx}R90E_1Z1NepJp*m)gg5P#|EP|8@5m&|IEB$i)LRtS(eVx8z%?$Xy!SmLZzw#1HVSjiZL~1wnE;9n}uJHoWH6_R*pW^LIJ;G!EqY8j|Ljmgn=$b-I*D@!o{HW{>Hmhq#<9F%pNOt>61uBm9>^^KrMPC+LX*_?7nwPe=P{u?D-;qquQCIuu1?DF zYdsFMB_?WPAeaema-7UFp}JP!Xi&usO!$9H{4NAt(*$7IY_B8cc72)zQ`hKOx3Xlz zly^goehKQ!Qqwo$rtY{&p5mhBq=gMX|L?G^4|D;clPO|=SOwdnj?$^k_7k&K;ig)8 zT^$?pg=!y=iKR+;$A{IvqeD_lo?I)r;gg4(OqnpFC=nTmoSF_G)N1}&z=6M|vg$OS z6jw4vlESgPj;Y%PYs~i0xie$_T)5#g*lk-GnW&?gxh~9f&h2NEjxy{IVf^{;DGVQ&3m#=||eIdWPz6B)qv$0}@JKsv%zn<=(lk|BGA6?0>Ilt(WT zc5Q?aDaxSy(!SS+ZXj~qLxt=5>(L38WelMzCqxaO@SVvKp(T|dDsnl8Hx~vlHq~}k zpWhmp8*=xROPx5cE*fsYT(r!1(tvK0{jSap>niH(%qaB}NMQL#cv);RjX~jw5Qr=l z7GS?j3^JODP>UK7b8RouR$npoFR73L<4K49xpsG)`yg2Qhl$938Au9$0ZQQH#xm9Z z$&clh_N#yY>ka@VH6azc{PzWDv8j^zbZsAsP>WtSNtJ+%z!ldR!>d~N8XY#%Y`pP= z->yWl@h)sOnq*a40!yVLSh?)bS)-g3aQR(_%}X_QBGCK4K6GSun@;I=gS{vL{5@5X{*DaI(= zdYCmCn*L18OSr<*%F@(BN}4zwKf}&RMjl>wjrkLX;o7YJ9DSu&8;C3IBZ^Hem@%^} ztf#P|yY5^uE(W`zT<|KBHw}KSIN}p$z4PZHqDb_bahOI{50E`JdHkdL&mVY}C|K=S z2uC!)Ra5q4l<~n#&Oo*Gyx^U|-0uIsDaeW? zt}JEUAZ$rrhz~rjj*!^@N3$r|oRG}!zFtPj8fp?`{+uEUPDhdn!7PgGR#OOt)EB1N zb{j7}SPTt>dm=`w-q|3-0N3=|%yx>;!{pvhNMlN&?IEXDUY5cs1k1^U7|I+>0=#_x zvpFko8jtNo5XaL%OQ&9FFBR$43r4-MmX_|AGE@C4d1@nP$uXDJaq2 z$keSp%J$9sBw^M}bOXcb=AyIq7^e(Hu@tx5h+CEje6_a={PrP*=xRV#8E#SUBJ@->RrEwFa zwI?5q7RDd5sS;fHj~KauuH89pFm$+!Q^5MW#Y*N6@5V3rRbbviV0J1OE&_Tia02y#N1q5xCv|E z5R~uKl(C0pw=0M6-DC!{;r-ve%;6QJW!tz0%McTXm1T7%k(I9iX;t?B(R2>%k#5Zz zp4gf=on(@UZQC{`wr$&<*tTuk*2K0oF;4Gq@6$h^uYT9Nx>l{Kr=EMn{=UkS2myBg zmK>~q(p-n&zT52Ghii#a?U3EQjFrwFc+e0mUhPLVW@6GdVk0~$}SLK3VMMo|O+WPSQcV3?bVYAPz5121h^@k1~V*g+zBQ@~_Ei zQ-v9WBcQ|MMXjk7MrPBnZp?CplNd)aw1<@GlOJk0{Mmr+Op3#IUC5K#?0=Kej`u}% z%VcP7X!qw`YrSob;(prLxK{IvFVerRb^BHu4=k<5>)x&%zsfjfw1;a5HK<|_g$24WINOMQX zv~`t@1ga@GTEki5&)!>CPJyN9q1p?*1eTIJ8uV@UGwlKa+ON%AVNFzD5$LM2`gyM% z4qv!LV#{H$KP?7KF;tR!#eR(#0iR@y{Q%>r2i)+6vj4JO0HbD6;1#8bkbW8Zsca0c zQoWJry)+-i0CbW=OVqV&B0~qIZtLLkGS|a;SuC-dT2(IBtZ*IPFW`lO>#4XBbNM^n z{&lqBF4w&EoZhW6+Z0X|jJN_9t>^A__S&Dl)5#3qy z^%p(7@!!tea5XTHO3j+?AMvN*-apv!YecBnBUf*g8=d9wlN@s8sDd~LaX%kKy`fL* z*~wlLZIT>0O;!HNMO^4POQmhB&Eq>HaN4D_N4iT=@f;>h=H<%gA{$2OR)>z5|PM+Wn|CuaY#(ZAq2EA%-OW=MPFesap z{N?2Xk(GHgG270xvD5sryt3)j6jK_2c-&ZmGJNI+tq>|M0|8N06sB5E)oNfNMUha1 zq2Y+*X0f~%$!wg_>;=}Za{ezOS_&eO_EK%}Q5vt2MfnV_!v$Z`K)=Z}7A|PzpOVHqolxm6*3D*Ux5V)(7t5vGCcQfQ<|XH( z(kx8g;2dz>CZnsz=c@v-XFo>$c9HNum-BAS&TlWm1!$p1eFW91YhuOf?uG%c(R#2* zUt?&3@k5CjLBVA+-s-hDwz2KFJb(Ofq=YQVLu;ax#fK|;>d#1#+~q+0HWlQ=gc26V zLZV*SBr7ic{3mDF3R`W2lYcAT8KxiW=`WL;5{^4`2lusbEXu6Si$a=wu=4GY>B|+V-9$ zBY_hu5D!jHGeH~AoIFW(59e(3EsZ-cA}Xmwd(yRNRI{@#l-UW{obDHLzEG+hC9R=? z!gzrnn3YFDL;RK=8t2Vo`O9J9+Tm;IuY0$9zCCH>21ZWi+h4r~`%{@k{bK=xO0k9w zuo-s}ciFY8?L@FhwSP;rHI3k1Ov*^`C@hf)uKViGLQzhj)1x$z7Zz4M>~fa$NszhiecJjm@(9 zhM&ULvo=L9Sls2(v2?d_GWBnK!$SnN8P|J?{4qoGAF5!;Uy|6=U%6Gld_^`vZT_Wf zyP5m95ja(?j|tQR@LK3l*JT68KCbG9#s9(o!M-N45zGe|P!G#9o2Mt=D6=^d+>^Ny zs84JTrzQ>4q6@Ai{)mrerEW3%Sd1bo(S9YQV=jJox^U(0HL^p>70c<7IEq11W*yLJ<-^69tRG?vju}e<6g|!pMs_pN0l83oC~mW z$=fgwa*VxHAoog_^2czNfI&S7v+|>h4&hnG49z@A9Wfuxa^}D5g1`nX0`Dva16DBo?=uoilSxIC|0qFv%g!@6Nb5SDtnfRsRg_xD@ zfaB!9BTzgyYNH-95J(nWjpiw2mLy3v%u_YL=PhZj!cj1d$-(7U(l9KZ1JB?^FtQA; zJGW3I32?qhHDWRpNW{KuU>l!VoP)aDKiLRq$aEL-Su`V?MJ51srLFBWIlm zO({!qh%$Kg8nk!%lajhrA`NkM}AMY>mCs{xKl%+-wnM&gJ1ylg^-nPiLOwBU|uZl1azG_45ZFd?ltU z%SrU|BVj_Ua!87cW1sQj7a^;zn-BGGqlXA?%8B!4!ZO&>I<{G1Z^P!M+dBHZJFZ4l z(kKSK_LT*juj^46l_C;tUxI7v}aPY6n3KQ0x#j%|ag=0gxtdeJR< zbX@uY(DIb^5KKmAm!0(udc)XhA0ZaKVTwR6CBYm-=ehVa71l$4}sI=W@=}NJH z;&wB=?dCLu{K7Msz}^`k|euKddK`&?7Z5wPqF>_$y`NrwfbLS9cuis!8%twnkQRo zc`R;X`QRC2;m%&Ge$lfZ0FZ24wz#3IgiAp^S6I4?$`q)@DfQGHfSDa}Qf<(`#{*ri ziOuP^*#5~^#h5VSGu84pr#7s$QlF95fvv1HD$uR<1z}HL5(WL|fCi2`xO6>Fw)T;fmXFr*Tm)>CMcSYG ztOHTTxBx$ZD+tlc(&YHH__1{4Ly%~UU+?tvAn4(}KWmpvdWD-dhp1nIG-5P?B~$ZY zm{{-CYe3VS-ZUc(orJN-;HZr7HvUFG9qy6a{c8Lom%qbnJww57p0f8JBRq z^Y(dH+ITXj?SGdvZkb_+ZV2CC7B=1^?@=ItjWqt8wDOzQcx+ z93y^Sj2N;ne=*f?89`pIyDK!(TRD-6S+(-RyL;FBVKNgMepXlU$84@-Esy=Tx}h)w zBV?uCaDMpTw$($-#)izRg|TFoXzygBqvGb^kiK*M;PqEwFj(q*{=tN!5)-E|ied=F zSt`7CWK4P&N6>M(kYvATwZWT9j~#}}BZ_;;6BwNtRt3yGL7%-$&EQuO#+AO0gVnWL z2xY-fF_GhDgbMCcCe&XN(#Ot;2N{50AkwR^yWhHflVGsjR5f!e@0A$r`Zv|3LnH@l z_GSr8OkO1c5XccZIUNLWlBSmv4cc!`LN18rM5!$+uFAJC=_w@)<(olFcL-VjE*k0% z=4E$(HGA2OBtJ_&=(iF%E?xhSUNY%^KL*>!H=T67QyoG@6cB`hE6(^~!P>)VA8NJ6 zs*oC&yw361BG=)M!-u}-Hg2%beH3>uzIvfog|EYe2?)tXrL-k{*4}J5Qs|h4LPk zEjTfpWDjNbk$FrwMKi=_vz|z9sFtJ>E8K?M5lry=pZQ6aA*?ksgCo5*me|w;=j&h5 zF-D1id3c#SrI|1Rtqi}aAuTx<*9v-HU(b{IOgw}hoTtYHjO+xL9!+^yt4rKP^P)w4 z+yFLlHw(gdz4P8uLO7blSOL=LmsME9Op^)15I!@n>vr{)|CXADoMu3ql3B#Nq*km# zwS2ujM7D8c)~jm=h1oe7FRos9h&cpo`@k>F+(ZqHD^HLKwIC{AyhKnrHpffNI{J1` zoBmJ8_h>@Cz<`Ux56Z|OoC8%fX>+tZkITuCSZu~L^Q0nyzPx+~8e2vW^}DaX<`~~X z9{K^^@H%mz)Ea4NnI5-Qove|L-wpcIgcWc}JjgxCmMPS`3<;-D#*Bx57m+fItH;jF zo_IAQq5z2?VepH+Lq>OXLd&G+kf|Cj3c^R+;P2XlW6{$b_!8NKRzF+cajf4y%j2b) zP3ZXmaT}DAcY)k*B^;P{E;u$f`GYclr;jl;m|~umTFZ7z38d=ZmV#?s-F0pnoz%hT z`oH-_y_6ooK`a|4BXSVUk&+T>G3F77d%5_P2_F7MfHoAcgmizJ?EeAFXdBbMtBxa; z&P{M*4s5GHk^kBwW(_4rSse*)3D~iox+ilo_ItoWT%-x~- z3{GZWQ}R(FvMzh?9MH!2g1Z`QJP^&eaFjYa8a|1OYHxz3tgxy_IK%bRYCxDbr@Kxl z6i@)h)YxL{5Ouw|+uc_I#rW^!GJ-c%Ahp%-%%fPpilK`;VNQbsa2fX*PutC$T)4aP z(}Gtw|3ppe-wU$MFfn%-$)4T|lB@p?7T!{LYpp*^lra3H-Yq*=CUKy=_fmme#XA)s zthSs+M3ut|MVwklpaweghkhS;|19D0P0Nf`zQvNo5Wd7LQHTIYT>zddAmek+V9}#J z@8A`>gu|Bxv;IKex3s3;Jb?x+i)a6l??N+)k_z|gHWkM}xyut?TpYvG!JOB^xfb***PRS}%fIv9e(KW9>`;@GP9qU(ZY4^a4rPIJt&p7I+OiM3Jgs zqB~c_V?}|L`ZQuCs5J-6H-1=&_O5!!lNg;@`H+?Mk^E2$#pl|?Jq4T3waT!}24E4h zy^kW$2_e@Zm(*{x$ulO9C@NT*IHk{5bTSwiLYP#x%tyl>+^af=fKp5g0x+p@XXzgm z(+kyW9H8ej@)v^Jq_^%G1^Wx(lS7dm#1Yc^YsQ6DX_VT$;|q)C1m*`fBOyK<14V>o`K-BR6QvX2b7xknOn3Bn=h)WgXeB1(2=D5kU~`={ZV zB9H}Q2ZSgltxcD>kIF{Lj zd~aZ$P%C(0u=TXFRw_`pF&Dfi*$!f~XVTme`B%GlqZmXB89{y)e~5R!95Q@Tr^WW6 z&svVgEL$kHAZ&e>TJ^mdY6N_LF1>YuZfs!%$vTo z^aLW5R|hHV@fo#&3^m`$VPiXQM~Qm1A5D=F^hqmHAiZF*`_V^Pq$(Z^hC7~HP)UX!=dyGKo+#2BYs7qwV8IeTcH{sr_ELy1)#< zNEFJ3WX3~P^b#c5pz(r03H^&$$1H%1Y#O?633Co7jF_-1<<$WBU_=@{A(Lk372!b# zF2kv9NaW4$sK%B`LPcVXtNKJ>m77`t#WKip8UNj&!U)jgnQ<7wep2o-WHGG!HD9o& z#em2VSsdr~Js1=)Vg6Aa7iUCEVW__xse7edLboLOD&XhFC_8V|$~O*k8ft*^7A|Oe z|E3#v>7R5cCZ(Y6qZd_L0~X_SwE-I9AT?uQd~$& zKV>i}4iKC%#$ZX?zuj@Pp=ZH)+P^f7%sZJM+u}!G7;F%keU_U{-QkwjagQ=2wbKWu z!A=>3+NWvXnB>heqK#8EC)yCP5$N$N5Gx@DKYc@5arIUyIHaB5)V8s+^UjbZFZA+9 zR(~bR5qS6M=2TZr?>Vv}c`<>t3=_q%%wkHksQf$3fW}4AnA(`k1&5=47ZeE~_E&dZTO) z7Mf8hgt^?wgJnV*cmwGAZx|98FWC#T%p~{bDA&O_H1w9}135w!uJsP={Tl=!tQ?cJ zfOzTq+>YP5Cbup$3c(EF5-n~_V9gch+tQ{ZG`n4vQa0*62eg-5rG!P2YZQ*3H3DLQJZS% zey~w5)Lb#I;>WRU5^-KLH|sLLQF>To5-kLXG$)usZJy;3E12*@m#5lzJJ6b|T$ z1vf!|B&-)s$TzSCIDX*5$mAAu&oS@LsAU6aEo62Bkp|I(Pyb!pNF;I@+1z1MA?S2(Yp@UgLDA>r{WFjJgRyql zfLpRQ0^Q6^zqbIF{AyI-laX+hS3|dLkb2IT-3pC&{cqY@*meR)EnD*$QHRiH@yQ;( zTzN?HDNHaz7$i|so-w}lK4(LWQ&BYijnYWk^k=Ild)IR%nm*XHdZ4oo*fzsJnjBj6bYxU5Eowq72Em0S+V%g9WDjny-L( z+p)1gGnOL9Czv85hg0Vlt&jn1D24A1D$`E&2E4}ik#|U=O9+d>K@Ma4W#!K34b~X+ z)5RENwT;-LtA!?vYVD2S9G@f#GwWy>epVHwW9KwG$i}VzTyw)R+uN=_)k&2N%WGEr4wK)xTcjaC*?XHB-s9-#5ZcfQXoV+466 zg@#E#O1@k3!xx3C2WV}nq&NKGT8E{g8a~M$%(t*7B4CBvpY0S#C2Au73rTPCrkWwz z!*GX+NWWckmsTbOmTUu3(Aem8^>Uo?P>qt$26Rf?}=Y{IEmOVup7P~ZbE!1c0_CpUc zF;6l(dO=MKVxw}BOckOc_9L-5_A!q4wxD8C{1fpLGZYLI*#>JYE!vp={b+xsMBxG_ zGb!5?I~&Z1oS_o&SUO2z0fUPMCIwNe^vJrLe_e01pn`KnA}`YJLf-2u{|Yw?5nMrP zT2l_77zahmP?|b~De!sI9Nd2|qBa;7;WP#nU5Tzc*X zaGcbYN;M3T7Ro>v5_dp8a9dIj5!fB|w*1{`{)I|p)76mi%sbl6d~WF1tNhZcO@3~1hI}!#6zZ%n zMH7)s!%x)8*G}<&bHn9QiV~a5sxc74@n<8mGhO^mcLbb z1OXZ&*6Kejf$h~!6X>2Jg=$^^u_hJz(tEO&VSRx6ftFna;XzpW7Vu2tw zuhD1{{bKHdUz4!&b}GT?CSoslI=%wNsbBld54F@h;--0!Oq+K$O0KQZ{7U(wn(&$4 z?_iB*$q^J9c97plL7DIGq^OK}fP)LLMoO314*E{!f+zRg6a^W@eG}g#?CSr>xg$smFvq2s%$Am)YhE$FWz^e>Je|KRRCl& zTy)1Wv_mXWj)%_{-uV+4vFtj zi9?4M#crd+8wUmg1|$h*pTuge)S5+Tsdbw1GqfBe(PxmcSHa6qK?++$5GGZj5>jVQ za?&N61+}L~V|Zj78I9@EpLYLW3y8ZL{h6;dOdpwbw9lY@d-a0q#<}y9lOY^7CmglO z#gRSTYgW;HSaD^=l(k1@IcWmno$aQPLhOu~0L z|JUm?kmJxi^TY#DvKrhMzy{H3cf$b09<%sS*aD9UuH@LP&rz{Wl+geF=uUl$lXz6j z*yGj+&Sw=;o2mff9iS?I_$+cGjbQ==m8;koN;~O6d8VtvQ#PhKNB@^K~F<<YMT^0(11P_NUOn9Q0b@h zEex~MaUJzhobeClr;Yhl#VH^T4K~6xIZV+g-@5y4vdcXRsRCC^Fa`1K7pK; zmdR9NIiB@z8-UNcAeB<}tUa?g#S*c+xVXt?XG@wDXAs77Zb$ufw}KNFQ;+8;Go&?S zxbzx`33G90oy0TCbS=VOdz>8Rl&E$g9yn-cEJ`;6+BfF~LOuT2=<(g&>S9KlyHewo z-6(cdW0nQ53@#4sI{5*gvB_?({{;wU39Q=b^#>ckS&8%eXYdyaART#l^R!Z474fLj z9m~v37D5xf(2KUa&^8i|jooSE*uG##CVm8y%R%zNn!oU_^yHI~k@a?UM z_9}e&aDSk;hJs?dYpSfsLP+d!yVBFSa!%Ohp>$!hc#T<*No=u@$#-gOc1^)CDMpZS z6bB253CBbx_(M*1)&?%7yooR^@>mMI9w}CEd6FzCIt~Mr2S;V?VDPG( z?Mw+VOs*(l%T8Ql_t}y|?aZNu$>vveFTWIhQvk|o?$|6|ylQ9-xEkhH$qUrJ?}>% zT=uxgM%`wMQrPR6B@t?GUh(vQlu77?OrJS zT{rFvJJ*|7!_&+h>|LziZaW#gH7}L}DYofF4X7(BC8`>>I->6#j4c{#l+RVHhrj1t zTMI19Pp#!xcelXEA>|)%r1!Z@-R?S2j+RPIjko(mmwSU4 zrkj+;62o%fJTXWph}*f2gj!^^CvuB#{}Gag0gGO`IQRhHgnbN|O3b;iyWv0{Uz?;K z98=+U6JI0+6^ISw4DdSb=!KFV92avYKIt?yOc$?%RR3I`NT#a+UFUMS_}_*NWyJN_ zH|Zblf{u{p+le%K$NR*0??J6xXNc!mqHmh|ZAmOsyFIDiWX_U@ctIF@)*R(q0mH&! zR4l~Ixi&w3ub`7xE+bm;IJK49EHR9|fpdDuK)Wo9Pkl99_^@oRr;)IdaWi2%H9O1b;C$|TNnNWeB!>s6DCq# z!+fCs-g%gCiqjuLSyb=h%58^0R3Q$ibm7h775ZJ_B zPOT>0O4T>?_Ee3vbZxeGNqP$7T(+O9--^Ac7eMy!FdIsw2xYw*ovokp?U@&r`F6hi zco?ME&@g6tN7(M*myHHV9WM%Ro`EjwtlmeI%to93)Q{#~so(%U zO~r`ceUYz|-n7{>=G(ntCdmS6`>8X6jgkIGEJr;i-uk?>Tj*$Rt}EFj?qRk)`HUeF zVFSnE-ngk|shii)IgUi?=$xB>(P!!L$!lBP>#2MOouEFOpLiL__2Y#uICu5pOy=T; zfG5jpySdQ(u{BN0ENceo0v3o)yU|z_HdC|BChY&7H371S5XrYEp^9r+gD<@Mxqe$G zkH|**6%Wjwl5Q_Fu*ERJJ>r>Vb3W4gLzaJVxO$!RmzoV|1LUMhF=VEK%J8hFdF4de zh`u!cV@=+qTCsHnPO4y-^-nj>lr7MpRV5;$BKxzYGbuRwuMQCoSCq5?1O#r2ay=DM zZ+pWB?Q4PO+OC8;a@%&W$K#+fre(F-%00I&=|^pDbv3s< zQ<(>XsEXU;{ms|U4AL+%q zC4$Vr&TqND#Lj|R5GV8I$Jn}+tSg?)uhBo3WhG0@f@0uhLYv{UmqSUHFix@SjkJNv ziTWD3Ru`uRcuXCx%pw=*xJHgsF))C*-o0!NOi`|JIc_kA5W6d(^^fu(H#8GSFAOVmwNi!#CkxUW%@1>x~9DBii7lsDJ#Tng6HN z52UUvKw@`6h8!{w8;H4YGyiZ@wjm@}iCIRL4{p!$kvOrQ_>W?!Fxp^7Z3XT6wJFDd1fj4G7>%eLKQTOsy&MW(wxq!oMAdC zWA?Pspd_jZ`S|BVU6_g1<}5d^f=Y#WSqydf1sFB!b-|}thGemzq0#rWPs!~0@9X`& zK6$duPpu0c5g_iAp9{wFneL)F5E%X42yfQYc|{MV6OISG8XVj?{WVzgL^-H^Gwvz- zogRFMA5J}YUmz6>(8img+6*yFg)FP$vl2Z&a0F1Q2c1X&opudZQ|p=CFI*Dx4gBtp z_)wO-g1m90fsk_-ZI0ztVPH^?8S6iX+BB{0g04T}z3S9Ac2bj}Z-BI6fdL^d*T)>* zGvLN0g?3v(s4>u8*#p4^&Y&kRrOc6CNt^Qdb+Ku9go@;OBX3h2o<{M*=Trt#voAJA zu>8piC;>ZNVV>2+$PwqXWSKd#-8h_Aq1(-)gcE=EqKxgNY8-nRBsKbl8Wyp+MiVoj zyB>e;_xL=}w2pmV!p(P-dcXLQe}x*rgZO0?mU}j40%I^zYI`rtLgYE6h&yAq*v8xQ zDKpb7pD=s0Mcl@jq!$5#LyCwHXP693H>uD^FVLyr({$p+X}2s(=6|K z-~gzH5wp@h7mZGsP`upeix*G^=Pjj3oxB*n=d)PDqYW1=q21cR7P(TRmJp>c<}IVm zT4zckTS((VRd_c@*_5(!bMPvGu5c{8!x)=5ico&RK;(^|e(eeIFP42jIjYi=SD|@N zLNO_6Gg$MKb5Hj#DvG@j<35grRrKTC<=TRF(ib7c-n4VhwCHb}=8C@#VLi&?+ zK27lYXdwkf#(*DNK57LEtNq-cG3ST3RMsuyU#8`v6F%5Sb`ANfo-r_uW1=#!Cgu?Y)v{0nYwc2*R%!(fy!TOTuleFilX2#s z;AvpgV&QJ%_N{rU^{FMRr~=0+4*9D4FIYW?{i5URKllsRd%1d4_3||TzZL)wl(8zO z!zj_Qe6oL=-FN0O$UP_>;ja+LB{p&z5adi2mJph<3Y3x^3dhs*MaJKg4@t_yn-V?}iX{=}t`5sQ{UTGRF-*W1e;hl9JB zS_Yv?hZ&pIo<0w|=rlj0k^$pWNoWA(CMEuoJ=kk-IxQ4LKD`a~`-^$sxU<%L#R}o( zLj~AzmazlKa!%FHg&Q=whIwUl(Jz98mXl6F`e!lY091G@W;LOY1mB;YubC^c0|b?rZ3k*wg9A-xYNfK}=rg%3jtX z7FQzqg2*taq)8B$nuq#DB3+|1$D28XAD?{6Za^E%!@qGw0e7XxiN1rMaRF?@@#3S| zljcgH=sjiTlAHNAXw^n!YcDU24|$#Z*a&7t@3hw766POHfU;N*jR8PcPCz}##Ew85 zvY9qV<|Jyz9A$KKmTFc|eV1EBRIsydQAUlagQd2ZjC%SyyqQFINovKMXbZdewj9_d zC{AJ=p)K-~8jc%HD0IF3rqv{MgdHguCkLw@6jQxEq=A(F!H7Q*sv!3)`Xf;RVum{O zRy&%x6>1-%ZK&wE2Dq6!E{}WRpEgQjGN!t)qTlb)8q$=cgFbk{PHPD$A{RgEojyur z_ft zI~BO`5Tcvj1q5xX1}*+MQUBU$sfOHHAT-@E>|)?6f(m{QFC;u_ZTx+L*n8~v^d3!C z=(Wi&=S@*G+~mC3p;CUs%ATnd3+t?Y zKqKX?rItog#+l9rba}9<6Y~m*F()jooKP)vft8_2qMrKWaK7fiPFGd9NCm|D!?*gn z1GjQ)STm<2q}7rab46CF7w*Hy?(s#Tun{x z)=x&IccFRZ6TS?H6i5z4aDw^1JD>c4y`kOi#Um&M{C(loxRO&c9frB;<8x-sR!t8qx7f=WryZW zC>q$Icn;5U+QfaC7`TWT%AUAbg0wV8wrRiJyT|*68AqA@NQ0bXvDH-)x=NL_7>7;GKmku-POv^aW zpF)VW@p{}v7^OKuAWJAskd>poNZTK<(?g=7oW9T)?|T!e7;7=qf|`;H3&|wCHXO>O z>&ERe4*2LQwzL)2WCZjB7ND(VA%>O=+9G~W%o`wx)eLob_J40Fw-eVXkQA5xlSy*w zt%haRPXApJLH_xcUH%MY$kAS$IJ&v-)c{N=c_3T*_WS>+%n>j$gbxJcor*G z+OIhD2SnD`Jrqvq2gnU6UTXE6qMSitqw&^rK6!LDxt=BoQ+2`vr1?P(TPmZ^mbEZL zXy)OMu273BN5_mfQ6?t@zpOtj7m#z!ekK(5;M!OOrfLcBJV`tbt5;l|{G1SL8w;K! z9=Z^p#9|9-$Vii6b=#GYhSuUtJ11lX07VovPn;l~^YGcfW+R=`)zT@b;~-Tay|`dX z-eVZ*nOjF~)u04@&^rAS`cQ@_o->>;TW{cdlYWQ@P-TY3Y^JV-KLYOT6G3OK66lxiK(*$&W+qz2e%uhnU@zzSsJcfY0d-M_JS^>FPLy3@CVU zzq&Xh1|!>f@4F_dNP#JN4IVq~q;4(67W1bn5g+5!e;_dB%v{ZPsv<}3vN!QBGiFOm z*iRKZvCNDmDQb}P^{=N_zRvm$qQ>LjvVRu~j{c^Ef(1TM^lC_s7^*K^|E~pD3a9+z zB#8dcM;eIrc3D)Zk`n4cUlLW(loB(GGkbQc7r}H^9T+Uc{yQUcy=N!!l1O>=9(bl@ zTNu;2GEQRsRYiKWAfl}K!Aaw@n+s&Q;{F94L+^5mwT*XWH1jwKRqUyTOnvxXcph2+ zfiY3IGO4E`VlaONbG(gMQQZb2`aA|9`)8(y))ptf=qpD0vB9|!Z)a<9odYVeQ0Vb< zBWkf<12&TY>sVJ|esaapR!8myXOtsHL-|W}P#)t7yJV#^%{lWSNgy5W#^$@3s9KG0JQ{5SGa518&U0_G6T9!x(HD`Vc)98@lQ;vL)pTKktDoJYk zSMe*1&2{eU>AT~M*FK=S{p7tNhVSYmI1&@V?i&rxmF{SRMw*M&cAd+mE@9LfSsT8zrqY)>Me#Py(-w2X@q?FGfpB^OMYn4h>{uxf&1+%(L=ca?7->YJ{N z7O-DKvEex~ONnE>YkOnwxp|U1_2(AHL@}ilZ~rh5yL`XzAGU~pmPXTn!GbFljsZB^ ztiG2ud1GlJ(M!1mkl_fzw<%EEXAHO}W^lqqxbv5KW|%AewjNp9vd9`PTzbFV;^eux zCatdF3}L(yzMY_DfBU%Zz6H`U3&6NedTH4kQxNeEJnnRTa7_0m+t@Ap^p^A2uRFiw z_#SROue@Ww?cuwMbm%{$&VM5KZ)~Qqcs|AxrA%e@*v({b(iZ|bkw{2*f|J1IsubvB>FHVHXLc{S$77y9RM|k0Q0}cpWX00jF^R zeXdc0X&2jX7f|-EuT@VZcCO$1^j=4JSBRIhTp*yt`~m0}XpzEk1`18-RiZ2tF_Bhe zE>1i zbDoECeAuG!&0_E?Dc@QA^L$Yr={|LRZ1LA$K(B`|&W(i3Pm$xrZ}cs;jueN3;FxaM0Po}M=C zKAe%bZ+2p`uGTzn^F^-RMl^r8?TG#6`7D%Huhr{APwBbh+V1jpa=M_g?e>kj7cKdZ%Mhp@v>pLC0@5I?sMYs1tRX*2Hd4tc#*tPr2@2MQNuNbZ#*W;}1 zoV{%ooldjeGJu@>NuC&lHxPZt{dCa`7K~@R;TF+5!`nd<8b0cER#x?1(|I>;_?w4; z*C&ch((UDt2Z`_9EMN=>7uNZDoj97wA!Fx$zcExq(rnIba5#j`I&M2|CK3Mb%<&Zf zti7hQ*joX8t8>C zA-URa`HB)?$1{D}6B&+Q}xkV!`9VKt* z6B6{oQ_1N>s_y!o$B-TEySyShV+t{*#{8XLCAZX}N>mPs>_TiIp>T(3aw4}?cadbR z^R?lFnKHW4WFL=}(ZevJesKC`3U98%+h^{r6JqsfHlt*4u#NO=_GGuf#EV}V_z98K z2BH)ScRM&LjU4VsfkxLi@67B&`VX}di%8-Hxvn;u%FQ^YX}9?-zI@!o7_a;@r%cO! z8|OS!OQ#3*JRLf@{E}LVvUAkuO=H6{?$Nu1TSD~Xpr)|^PQpos#gWn(^A$uMyg8O* zh09dCXIiUBM15tIB2k5Q4ri@dvzVll``%aY>0W~#Mnvk-?boH8_nVHIO!f!dWEyPC zmp{ldL~r^By>y=nw{vCxUkfiF?br}l@gsbvP+k0VnjEQ#p_dk|{Xp6l1`FC$gon)mik1k?Ds%pJsT*)mLhJ9z30PjX>-D`4 zNnv=OM(WZ~<0InP(1<`nLN;f5#;7%BIxeTlaeod1X=Q}V^L3M;z@q=hjt~-GkM-Nq zub$n4A8)fcAFI0fTrScnD}Vkx6|;5S0s+-727jqkFMhav{oeMvucGU2+&BEuVSh8a z1IFh8U5q>kIeo@bf$x4`F92t7j96!8wPdq8Ula@cfoVe)O4M}0kJX)bch^2ovT@|g zR-QUO#vdUGaymU%)9cqbe5~2u3wpi~erbOeK;f@794DPu_lTbCt{!J&p33okOg0~9 z^Idm3LVU~${f>%>7O1D~YB1UKe(Hk5fY-7gDr(tu836({H1}vUUoV!AAAhjhts19H zr!gG^nYz`L6L2%Om^Z9xgEmv z{(5^7zg4Z$qDZcc77eV>=oi7%rDx?V{?#*)Lf3PXe{b7y*pY9k>pgWI8v6SRby}ox zt~{w9ZAehrQ7X*-)f_Ms(;G(=n6H>5LxIr_2Z`Zz8>ze5c)D0o-F{b`VS_phUk>vs z4A!-KXSlylPr?sB!Y`+mS$WtXD*=zcNn5Pf-a|H4Y`!K0$Q#Rq2kY1hX%><}+fNf> zx*F_ma9GvHGd*5X&ysh*?BhU!&qb6OwhKaXZ^S)TX8NgwNtxAg?9&0-4Wrfzj%3?v zM?utRqvRf6!_BS6EWYfnNB{CS%}xn?BEfcsLoMgd!sH~=D!_97yZ?qJ<-?EoP(wQp z?;rsUL3zuvT$uYLoLao%d7Zju7RAPhrG79b%IvF2E`}p0!BeB-UDH6S85qFY02U|N zWL-kePsFTvld~MJm~mW*5plBH1$Ws0qv;yhBkzM`oNR16n`C2~8}7!oHul7JHrB?r zZDV5Fwr%6)y?gE}%>Ost)m7D9Fz0CrqHHIl7NcfaW6Bj#vt!uQJ_vv($85K&kWKrO z{#+c2VtW0#7I*Wvs4KS(f5?z8kSR{@QOdn&b)%R@%jC0Lr1sVON2}> zPMll)_z@K1iX*K&ToPe$JI*#09Tmf%W+NqwUalXTMG;J|_+x*ia?NR-8=SgYn=Yvl zr55gGR~$hiSW+xhqhc*2B$`oIDV)XUJY~DXVZdS74-yu|_n~}iS-&EK?q`3v>-jR- z{rhYLpB75fIAbGqny~qUbF!}2mN!aA%?D+QgK$u0Oc!QH?)diH0i-E*l!3h%;(m3| z&$*xqL1Yye4H#!8UN65Jf95Gd-shPLjoiazDq$O7o6;)0<0(8Rr`90zAZe7z3o()e z<2;1bH`H0)t8ENxwIRe558R0c)O?P^K!Ft=a2>jbi&P^+&Tkv_cVc1a$s{%R*o(#L z-q&S>%9wv!wD39vvwCq2PJdnYf3>2wcsS1t??V;CmqME^@E zn6v4BfM4fi5l*Kcwiy3aJ$QVt4Rxd*tWbywlYuUeQuHr*Yg^)^Max&~O4qV;u65>z zQokur*%qlKW#ciz6yI4qm);!V`pWCW+TvaZ+w#Cf50Qwth+`Z5X$;(cX;BMI=y~X_D-Zf+zOL!ozv#JyWvdx zSNBh}IUI1&S~rZJB4{C)V*0+>da>conHmw%F;Nl6*>Gf|3N?QI(2#i*(oCIhZpLDg z!9m{vZXb!-lLBvJ`Y&yW`3K#OYgtG7F~}qvwW8QJjS#QZ8jh3j6u&%A&x7tY*PeolboRYMOG5HmL)lfRr0XgOqK3g zLsIyI-)=>8d}Fw?@wC5RB2WEmij+aKL(DBQ+2tJbXPdJ8#&!j@w+6HCb|s+QKTQ_x z@Z*)M%l-NK4@)cH{=Pz|7KGCwt>k%2d01GyoVa^(o2#F6ue?Gue*GuVIcC3U6XRtq z%*};c9`@7~j``ei2{Ps_f>L&;wtQd8Srws@zFzC~{nBc@Uh3GU);k=BqTiwI7+PLW zxhiyB<4DCa6a-IoaQZ#27yzAe=d5tAReV6;#mhwiD)MpDn(bDLeII3YdkL`mYi+CR zz~KFtHzk~{qZpKp`s9~gjCwE7l06x{5{8JreDQS2R`GKiw;jF4@iUJ#F>I74z$m-F z2+w)}yT(yBr4(K@izT`^kVCW9@|(CW*hI(tW%2oVeG|6u8Rd_-K>BYl9lxBJ+UKs@ zJMOwQcy#;x0wM*NBWB&X9cz$kFs{XAk0Kw7LXi|o)s>nPR%bC}X&t3kpR+CXp^VSQ zah*z4BC{~6J`no6Q0U*dLO2k>Tv?~iaQVa|x0%2bdRAx-i2_TIp+$Mf8@iT{e8hV} zAEV=TJ(1mk8AK|owYVSflurs>MZ%JJz}L`J%GhTAs-Bx$5(4z(;bi;zi1hntYa_`n zoD(C(-dpo|F&Lo165|u{T5OEKK3x!ykcb{ofmLQI6lXf+jWV>8Na?IID)N*aTjw0fC`NT`$3B;?@eq5vp^p zwm{MTxvI9)hbh74%G*vg&!>wIuCGU-_h-*7B%;3hDO(J*-uIe%zx;fPDgL?H7nhbl>yyU*=>FF)s6Dyy#>Dk4~wf>`UIz~R5xj~Z6C$RaD+@77{EbGi0pO3R@jYbD? z4;*2!+rT4#pzo4E_4$VDMI+!l>yBaW>`|7tUe{3t`riZVtlvQK%1%< z@IyM!`SD_7Xv=buOhJ$;@B-<{@K*EkdL*|JGjT&a%(F)(=w2n`JYuykj-owP$z-n0 zAf2k1-jK$pwah6ZW^i7R3fO^u{*q33H67K3%~v-JumiaGfNN~Y5C%%#jgW)xLTPF- zlziVl@(*K>=SOM^V$lXHR;;08oF_f5>BbEPC)yBHu*Qwx)nN2x^W&2rB++Tqna>Ys z9JH}(e@MK%c_%$7UxGJ;wVXtv{HSMU70a9Jnt@$qL2f%?@DyJ3NvwCO!_iiNM9(u6 zo55@qFo*0QW)&!*zAW|PjRHAT4lrf>$s!d@rLys;B$Ab4RrBZ|x%k%V0-XQ;iW;tm zo01r%63MJum8qH@yW1ZWlnQKp9Cf4)ezY&Y6VLda>}F_w)u?Xme!N3n__jpc0v+mj zI6*)}OiV;XBT%Ph9-Al23qG|sQ*9wb>kwTD%M%ifj53if^abYo8rKaT9+i^wX5t=8 z{_>B73cygAX@xOfbmhbk=>?)&j+RRv#0sBj(Q_G=YkWSwK-sXEbR$BadsFl}Ey7+o zSZRPskX`!o{iPm0<(D8h-D2}ZnA)`+DA&UAXu^Us4A$A`x<6hX1sNsN_tRbOb>r#X z;H9pRAl?dwZ1eon2MrmdZbEH-)P;RcWb!@DN;A1kVjT%rE&yErtlSnxX$sizLo*~f z0zB8!4?LTwd6V?}_i^ZPuh%?Y!cAgrk9tAlnd>Dc*^2BmUg&_ak(wy4?#yCuNq=~A zaWR=pt!71)xY5V4e@H(}|09n6I`GP`>*jbk)N82&Y{xt}xH2>Of~ljyV_{Sx|3j|x zPv1zgj@O@v)_|VeMT8HinWZ&8swS84N)ob*wXK^&(4MPg^uR)u&{rgJW>~Eqkcx!@ zv4mx{rPK3gHrGf|Pw~vOTwWlH-6W-5^%S*)C%0YIAdgL-V?5~oY)OKed?{@)>a3^k z(*JV-HMKJw?E#6n<+ZP*@qQ68JRW^zP1`h>okl$Tf%)wEx=Fpc6x+@5 z$>@-`btmw#x&+s5Eupms=GG2re1idN2 z`bTW4c=34l-R`E8zvU|I%Dk==(=TmmwB-jYdFg)$Gw6NKgYfa7 z|0-wNcp>C;OqRz6+wZJ{I(S^(q{a>2>J?8put){67qlnoJ+cK;YqOt@*3ftoh@X z>5H5r9n=dwL2k6U3~?_dsDA@dhNnQ!CF0C3!fdF~n}DzUa_@+E-}G0kuj-&ytT4@{DEeNK*tk1LxuHwWRprs%2>k&!pu_F(^h zp+j$YIi{zRS}kSW$Hw^BsZCW}tm%7oxwU8sUsY&wb-ZZN@*Y(-`*6i4Y9#16FC4@O z2+9*vW%HR$dTzcMP2>@gc<MWlzZ7s6nnVFe% z+cvB=`2CreWga}b+ISjl5xd)FS0*L_)k1a#aM?UcxTM{mEY|72{PHF`k1vA;Cx5K= zsAIKqDC*#h_5Pc&C8kuT7olSjx#nla`33zx>m(-h`P(3j<-R|uytc+C54Y})o7D*p zZik4UP7UjX**xThRL;=~cI!~oI|TQOl!!YBVFwe)7z=Om=UY#aZMJT~m!)Wk6L3yu zIsBW~iY0_e!Smx@@js~$g@uodMlgX-jl$cMi94sG-!A#T4Nnq`jN>I>$HW&`6a*j@ zrjsrbVtksBC9)bSvZ<)L1qoJQKKk#fGiVlPIj#iQ`Cm`I9H(-7&{FFR^uD41f>-nL z*jEBh_r+g(pztg22jE*OmouX_&Pn6gt2D}A+UN4Y$*#{&@3*HjB6MSkpr+K3bU%ob zE8j19dcC@5;QOYp^Bo(ZOtwJ#7X!e1>=P39^7)d8=cPSSkeT^Q_sVCf?qE#tZ7F*V z2=G06Cqk`_@A{$Pj(!CKdK^^Q&mDqwBKTf2mTt-D*iL z<&jh*!Vquz#eMQO1ls7?)fpcz>u$l*!$WioNd!ZdzV|e|D<{6up7KXpVJQ^aThRHB z&dBMe52+fchQ|~Fq-;mDPo!g^q{})aS#~202+9u&7jRq+$HsroMak9pVe;7`?5juL zb7_6kXPUTO$ z73i~dm{6XqWholrYDat!pRy*6)-mp7*Qq=3L$P+`%0V-NM%HrlT#**oS01JzzCRDG zJ9jkK*UU4S3U?EyOeS{~nR5LHD~LPJ>VW}H6+R($H?3TsGjCM_pvbWfhs}(x_x8tg z60f&vAH89h1!w}X(U`2whj|3guXp{F8D z!%r9*lXG;ns;!ob6|;lA@JrpEu5I`6GeFB_Zv+!&Lukl`!yE%@9NBU)l;B%N{pNcT zS4>P4sH}P0USIEwzHdl<)w*^W^#u3>-_pO>W~}94d}}Lf9`~J@`0o%0I$zP)r&IV7?C{9lIi&P6jyNkk}2q#zjrLno(xqTBhlkgLE^xz6i z=?Xb991H_3u_663sOGmi6~}5xZ}(=V^9ilQfzu-2H$rZdal0Zr(|?H%b%C^HwZEsN z0}%}s*YUYagY7U^ZTGlMn|=;9xf}m3;`+D`B??IW=STFts>WScxQ2uU!P!@pY>+uo$q1_muDEkS|8VR|-m0$iyh zGhm=#)N-eeJUuYTnb`Pb^;nlTY{5;@--r-ho#w|kHc2S&&`tjJJU&^`qOlhBn_>;_ zc(2*|L^tb52R*H_W7eZx7FHB6d_dRIx z`|`dTIb-BK_#C-z5f6O#s?X zL)_P-M=$2CLa3Rs7lm7Lc?R+gG`y9Pw`?AP7MV2YV}_!On2(dC#%^avG(_xSV9EXN z5E%(cT9AARwD=YR6N1gC^P_8&9~I(~u%#N8fB=J!yQgW|oxKMZ(cpmnLS&DV&?V1j zaj9QB$IJl6)ZmoNXp%&`sKM{tKF_5G-mL2e>mpzbJZ$EtKQm*o&^+{2Vuox<4uh_y zb!_5gOhZmmdKwC=;G%it&M33Y;vc!{?Gn^K<0#^7>QU1rrZm`cj!i09vGx0LeZgUn z?k_}WhUy=)GihKNek(3{XR=Kbe2?<{nc(81Na4oEzl7lDjA?B;xBHRNM05_F*foT{ zOXfJxrj?X^9ok7Oxs$1}XDoD8JdCiqObvGL-%rqje-qtxPXPJz6R}IKdJAImxG_iq z#Pg{MmR&AK`m%Ml)om#1J-?;EC^oDUD6_8-Hkd~iNOHmY7h6RbN@$9CJA0tLG00tU zNg*g4X^02gUWQ%qvA;8Y?JqKIJT6!J9N$_ot}A$po()hs?3FdP;Nugc5l-?rzg!O= zPrYw0$!m3OyZV001}wKe4ae@(euQYt>wKom>paw7wH-&pW`9uwpQ7d#8QgbYI?3(t zMx=$_s<%2_1_IVDeLrzNw@JiIW8G%(%D?WpHg86Ia-TjQzdCnjqqaKUQg4i8YkfY~ ze82S2w1XdWRcw`MI-L+`=?SaMRZrixzV@C#BV@g{c6AIE+IBWbd-+P<`tTkOq?Ass z(rMl0+iKNK@cn!_0^w#@ah?4D1SamIjC!FvGhZ^+{~8)d%o#ose0vd(!0!Bl6uKGB zQa?mNJl|-4TH9(nfh2L;+WOe|!lD7RJ<1YrRwUD1qj(>GY`twhg@l9v-mgPoU||VD zKkCiC9`wC069qg$ifr4#SaPLSr^g!t(>O?9DQK+RveWEvn>iBt;#$)8-AFadB-5zW zXcZa0j@f!&1W|KcH&N;%$z!33kNzKTLT@Wf$H}(}P=OnC4@DeqAI;yLj*K&>iB+aa zmbw85o{L9QV6smhQIdZD`(oq#_<2d*2){qiC4m)z$zcw1o#p3ALcw>esK(*>%Nw$Z z(HWp(ByA+RS8*uX{*6hsj+IWvaM-PQaV&8m?mwo8;917jD)XB?^3Q)%c=5`s@-QzV zEJ)>6YuoQzBTppO9xkMx>{NmDvwsD1IW)x`ove@PV?|%t6dT*Fxdt zOmYCe#jc6GLefSs%jOT&Go<|0=P>YVw0*1QMP115q?DTB_qu8VvVQyB$d%Bnhdn4Q zK6tTO?>Vg57VYGKVh{r(0GE*XtrzJ1WI@gFx#a8fcIACp6~S4Z_YIA}R?mKN74V*n z!vA`n74uPC{dK9o^>W6g_sR5md>GSdG6s^qUnac+N#42iKl7P3-#)D-F*9NiV+7xq zgql6KVzZw!fnRTH#6p0*@FpuQHFcZrM7TsfRXM|}){=s1&pYRcBzo)!`H|hvw@cvj zEHf7<(H`&HN7<5gJQ=Hp}Y ze+*04br3LUcX{LLqxg$ok$s|l>y9z@wz1mhqvNi*Lf`kc_-lv+2^pC|uWo;j3N|Ub~hU{B%1vXi2BqMXt+4YFRh(Re`Lk@}Hxq~=5NIx93Mstuqo8!Q6X>@;o z2W>-#9vUj~Fr@6^92yeapC$75_^lhg?kd{QRNuV84Pt@he(7I@uiFc?M9VDfqj;e^ zL)^#V?AkuCLB9!Ut+4<`Rz+*P%RkY*&4ab+Ia&3KO?0D`q%l5u(HOrR1OI?_A1lh9)x$Umma~HlY8yABZC0btlUe6B!wf&S?Wm0K!370udVat0%=oJYE_VK0&SY zS{=`k6K2+{%O3gH=RA%co*w&G9-xh;H6C|rZoqO)ZZ+`A`|9gkDmnHtIkMOB^iCf% zmt`ga5s8qCj96gdkKqCb^GX}pH{=2tla_l3gTbLXGfaJrucNo}bp(7fyht!UT{}~7 zen`;6eDJe0ygq*HP8X!J&U}cPwp@fh_*X?KGbT-s0$duXT`hN@8IFf2obSioyf&`x zWN*><#ho&|1s-Y;*P>V@Z$V!|`prypgC;qK%rM>p@!#na*&8gE+0ERk36|(b@(49Jg&TtgP1KbU zbKS47;+NsN(2EGudXTLrHVkd+p0UNrV_xw?ZY72rA9Ufk&o5N*qix*L>=P0tp0CAB4Ofgg__Zz#icgF}Nu;aj(U4z;0ex4UI~E>yR@{n!844+8+OSY zr3Po}%uwbmgzzGVuh3Q{FAOj7)`Fi~$^;I3Qq>DaP~+urU@hz;E9T$a)Qmzdqv70P zyJ1rqkt8B9@KpY;47theiupef;e!QV1*ncdZ*I{Lsw)>+QL*7|zkjG;o%jcVRtqj| zMb3A4@&#}zsRZGSYId^6#Pqt%N7=xu-Iy&qmosT(Gg^w;BY@7MzVBsJ_WS&VcW2bs zb=Xq6vqbDp6NwG*!QaNLLi_gU>w0?qQ&cxbr6;-U? z=6+Dr7~y&;aC;}@viaF3>3cV23p}sjP|t3jtWg?pRylLfuRjn-TaR1_&e<#*jszoF z_TBa-c@8sBY+m;|^EdoR-L7}PJDK9Ie`w!o72Ra@bor9EdG4nvw#CKAKeg(FDF=Z3 za<^mpT!2lT*sr0jr@iWqx}(Rd&6oG4Bi~yL68%<(gS)k+u=akbhpP52CPSbhL#NwK z9>DvpsD~oZ@TJpbqpdjGL&CV_cozY>`D)AAb;VW+M#0(l^~7xRb&-oCJp~nlNuy;u z3ea&n$ph`Tt<|Pf8Vs-gd4wr4^7HBq>NblK*jU@LpG7+ z|DO?Ry34+SkGcn|3QtHyme)L1XdqL@_^?T~ z<*N1?V<&&FXNG!C-%XVbC{~rlz!^JPC(}XrAyVu(Sml8{HPEF?T7RT*1RtQUCKIPY zT$A|i=DmlYRH_U&hY3t#EqeJcuy`f~R5KL+2BwPIM8LeRGy`6agzRTJJ~ihvhC7 z&Dr#Mmu7zcUh>y04pa!;6we9HX06GI@YdIJQ2EzMF<|Yzb}>D}=loV#$mc_I>Pm2) zRs@PYg4C`SpThaJ)y11SZD3iL6lH78NGH9ITbdyp+B(=Z9xy1z(=@~!PoQqP=3Ka-7>_V{&u`?5SjQy;$}VU20`&ZBjZNV8+6 zq&EhH{NMhCY)t=iHA6)fO@llbMx?Qut-;lnA@C4{Cwj7Qn$@-7VW*hfEM&RHk9%2Y#89t1&4T(Mm(#1%f5P!1ODNbBxt|R_ljnIuRA{ zHQGcN42xt8or0APf8%cap#EGA=)!3$oM?p~_6$$a0vTv?KK_?4Fpua?PLr=-wfXE( zP1Dv?4o>x-`kcQOhmwqz`wRc-vg-KeuDi9?A?Q+9c6EefWS>UKZ*Z`?L%7ElnnoYE zmR}Y*?ue?hCh)yDUmu=HOc{Om@E0@k)2g|}S17)hr+t0- zcSrXR4a63M+QiGB5x!1q$)68v^7`%j%VLh3=XyR@)5FUZSy`W(Syf|qqq+H4Z_WA^ z*etSPzYTLJscn{Tb{}tQZ&D7F)s&KdiaABpH!sF+fV?0^`4EG3+$Gs!qa*9)>>%5Q zklX$*QU`75pE%2FYwa!KB3n-+;DX^T1oC(Rf#x|%^uF8(uOdFbS{dJ@xL#mtt_R2=VoKRf+?)AWxhcrL8) z&IeqL*RS@^%AlY;GhyU&uqjcTtL_Fv29!D{P#9`5-YCG1w|(jA@^=tV<(`+UDD!Nz zi}A9r*M@A&IJ)wI2%`d)>`nWRte&x}+on~nIN~wL(bk#_s2rTTA~QbRGUgvZ4I7Cv zF(GQl6y8p2#k<+c0POuH-H_yotH9`;NKl^dpuM59B~A`ct-&Kb+DM|%+IM{thOP&W zoa!07@GNb5Z)#EETt>g{tiR7fESywoR(k_{%|$4L0v_}72|~yjW4X`bTQcUH>5|AK zO+>$uu00zxd}5-al1jY{l9M|jdO!a@GyfTr*x7wy6WqTw?-_>xeU|M;WdDO-#FtVt z$eDp3p84yl17-4Og=Z0r4E}Q#xnmn%lAM5BOG%E(VXX3MUSL62ipV}41DbV3^pu8_ z*d(T?^GrNs%^cC{0?O3D)QU)&BC!NV=ih60gG`7r<9oaAv=nrrAeeeSr)f^sUtkG{P}%*mmyS zl%c9l_`&bE+`X)7&qq6#(Z1tHkmEV5HYL@w5WNC;8K*o z5X%nV^#3M0VdBgfp6i){*`d?jIvst_Zn62D1+}o)QH^i2%2X`OtB7E%E2&;@&PN9l zH67ML@g{X2jva`~ApLmy*Dux6x~({t)%mF*8zJ(P-hNt%93>~=4cX?)r>Xo!E(Jsy zmSTNUnYu={KZG~Rg+s3pef+xWB$=;=_XuT+qVvK=sjT}<@gHr=o885M%dN?-?FKZ$ zrB0zLl(P%Vcm{lwE}Y9o|CldUg*n&^B;du;Fh!kqU9yASW>PHNVy$tR*yn?H-XB%> z3Kh`QeBMeEJhPTx;?)6m6#-1Yq5*B8`(2m!2bH*X?o}-^`i(ih3olmh_ajM1SwpT` zhXcgb_;~nQEe>RU^+WGk{g^9;dm2_WmF3Wo2ztxS%?9|V-&%EN_^Z(FM}#Y&Anb@3 zc-S!kaq0izM|B=!-cDqp?U`>NM{8yp`Oxv)Eh<(#7KcR81wa#*orqyY7KUpj{wK+c zA?`BKzd-O=hDc5cb-qXmE&+`drJ>hs+4cYy-iij&3)-pa)4-C0X5=6l1WntcZnNDa_aO)7VA` zGXaXq_tRFop(Wq6k5EfeP#0SnsWkVB4;wRUU8PsGjpkdtuwG^gK*Q~-LTaJ3*bTzjPHOy|+zwDB>8TojG zu5c1^&3$d)7`mT@nmkIw*&uo5!YZeXhCI_>ElPL%#A*XV<>2*XkxC$~|94`s z&9%wiN#o^362E5Z>KSjBMTjhb7R=`S2Vp#y8mBC?qsawT{;T;1i+D=ag*8bM{>@|V zGP%K0&rP$g6M7QB(QX47*HkW#&)%j)1Xk?Crcl3l+#89PT{w!6D~JGSp+Jf%nSmG{Hs ze<$2)E%1uKnS3kn9NqsO+v}(|(D?eV`f~KRm>}w)iG6~uz9;5Qttu1-A|XC~+8@FA zUG1%kUObZVB7s<HNV2Q^)kbwPkT~yeUP-VF*L72aG); zeWM&c;DwW9$?GM|F-{u)p9?sG9F~EiyZ=X_Cv(&TBOE#pt*KknE0iNS#LUbGKdMZy z)&|{v6}VA6qimbUtETPt2uZAqz#JFK89Rwmk(UVVZaF4Zs+t_g4qyH8Y)cw!!Kaz z(Q(C0wV_rS3)Qwdw%X0i^N=T|1gmQtC)+iq(CqC<%x6T~L6N1u~9Q(o4RnFt_ zGhYV0^WMgU9(~06IIQaNJ&U4`Vh<;)t>K}9X&TYx+RWBtm*mp3^Z{vKo}@HFp(|f2 zfOJqok|1hu*JKQ|g29n4+i4p2y40|#BHmQ$(L2-Kq~dh(Yo>cK;wSH*@8voVb+taw z_iM8c7P&1GDd3VG?6pV?ihBsFzvF&fx(0-C^pF%BC+AGjY_|8{%!R_o=gEA3iB$c4 zKMJNaVVa$8;|cot=RptOQ*j&$zA{(wi?wD|S3=S$hS~rO=L_N6{)hXRY!$RJ@f-I=sc`INOXZfCP3$I`pAb16V(**&`aj{^kNnrHw;x{-oWrK}{S{-Bln^XGF{hm%X_ShBpaDXH zHkhYM9dADuL?VSbAW z{vJM*i=c%{hcn^xl}J#vRflg1wtX1l`jOq9wdH7M91!lmY@U8YBY z8QUTRpb6B!!eBF{E(m$1~?i40M*^~pw%%pvrEuv zs$iIy^DU6ubQyO(B*(g3t$L;Yj#APO--|pkTN7-m8!@85r6&e5eY>99|gxZE>=VZu_%~qz!T?JvTLJ zA#h#i5y3MNk$-YP}-=?79NYL0_Rk7OM@WK7P3AvX^eF z-DF{UlC382I05SpXX*@tWydykhka;*>VgE{(`RbCkBP9w_3U#4HfHpIv2pULNv&;w zZH8U3%4cD=*$uHx6S1FF)L#qH?BQ`Tl?&)Qx!%?FDRDM^JpYt_KcmVChCz68)ZoAqvIjUZ0n4;pnCFB7y{SfwO+hlPQ( z@#^sPx(d83_MV8tJ~fHnbVf}% zOuTg8$;CX~NI`}#PxUd8_xNrHZ>dl@;=!S!p6Nm<4PNCylZ9b+3|4RT5Zx2RL#KF) zHVx{j)-*iO`CPcs_dRw#QL7CCp?pS9aES`cdKR&)Z4_c<ERO2$F%2u7Y!jQn$A{hh(_vmY0H0vYqYnc34VG(iwAY6E?#coU`9q#nAx%x{eacRflqNqxJMlCwjwe#QbLu^p;za` z626gcJO$NK>}~tmFxupp+ZoV8Z+jC}nm{9JhC&@33w}>D*ipey4ee)}6i&hunItziT8`T2=fuElgqZ{SYQilpKbyk6@l?o@+fhRql?Z~+D&8CH9 z{)V+gpU2##33Yn0Rm{H|%Mo5!_t$=tZ%i3+u+!z|W-YL{qpYHoEyR+`;Hp=7JUF{( zpXKSW#K(g7P$gvM7c`bYU51BLyo2fKqv+*5NA*{6USQV!r7_NBO_yOJ)=JV}DAnEe z*Z&v8#x;?qmifR?hs~oc7N4ldm^Z(w{uvJqPNI|B;6C)}Uu@n8eG%C6{Q<77-CE0! z7EhK~>`|cJ&zdJUd=3N;6>hMPHBwiPgfDBhdjAi^oFL<7Gouwy={1Ji9pgUUk?41y zm+#=e@a1QTJQzV1QQ2RVm3Fk?YcFgXeO&N)rmb`T?S-`U*9s=fOF#tf5DDi z2F@|PtE>JQqb{D9x4A< ztRbbxK*Gm#Z2Hpwvz$~H8!K1+XizD>VDRs*u<@8{dGYcA>5MfI85P#)T#|8_;gui_ zC}yjWy||%nqs%@-F2uMk-l!M1}`@;onLQk?by*pz+ zYPLkVOm5RV9!=8_so`tto*22_-1FMlufIAg%yaJVxEB>McI~Gmhu|vGn6>FCZ&*6a z()_M=8$TPD8&L2L+|z3>g&1!M4{M*6HeCZa=*wQf|4Gez!o7!4s+CY=9CJr+JJ=z3 zr=t}~lo~}HmZc9YeBA?E81g6YkdGHPcZXUtXgp4AWXlt2ZR0>QP$+h%WaPvb{$OTq zZBB;Ppd8h{fY6G=bBbUj8SAGr{gtG&PsIiGAgO<{7(^8&w9h2kERoSQ))OEn|^ zPa+<|xb>D^i-#E>oWrYu)KM~?13%AdR9=BZXuTy!Y#zCAWApufHBKfpCp|M4wy;dV z4Pre>nR6kqJ88;;&&h+GumBK7Ax)&GGEDgz~4YWBg_t5x+Oje?cJ z4g<0@h(5CP8zSq5klfhL75(=4(wRt2cR5^zr9L7(SAUT&)+1J8T8tJ~3^ZNoGCQ{5 z4;w6hh~}S!@n7$qk);6(!kkEIc+=z9A_eZo=8LEi~K@2>%#W%b(4k z$N&e)SZ>acrY}?b|M(mK;bN_pjA1TWjXwO=EX-fosnRpK(^U5^S&+!J=WkmcW&+<+ zJb3@%#7{nfDQ1yoGS$b^c2UDn^v!tmuw2>Fz|vAheP=Q%(WjI#OX`|B`#1wI-dzgY zM6qFlziQdsU5caS`(5+2Ft-}>ErfPao48Sd$>8to@BFrYE@rr2XuHuxa%8D6IoOgO z=A@~;yH&L)!s5Z4f)h?K(q*g-V^wigaH&r^BiY=v)uSZ zP>Hy!Px4(e?-6@Z4^2U6Y-xLvUE#GZgz0q>FZx!-t-tZV60ZC(z?+`;U-EL^|L^a$ z_f44@yw{qa2#l@jaH+6OFZKlA&>;!~5Njwwp5JrZjz=aM%g%)k9Sf&AXxTUp^$CyY zmwlyrRsCo|DWp>EV{^F(ws&=|rEwTOYkS}F7mQ(#ytG-ABH!o)e61=yr|+Q8kv0K66z7SL0$Bq(5dk1f^*bNp}t}yoyu4SkfL?mt0HR@R&|&FGe7Y zrT^+n{KVhEo^ti7WE2d4kpXmMe}PLd1L7%EGLsi6b9ZX?v;p|`->Xb{!!!Q|en?xf zww}#bVdRv3H&ns9r%bF0Xg84bJAg=jHleXYv!H(X>)2XitE%5c+SYJUM9e$f=w5!? z$lgt4XubGT(YFeLBX+YTFseOD!8YWPVhxpvUT=snTOwiQps|^1Pm3RR)hJL?;QzS* zkHK7KOQ^SXrWWWavH$E#aw^@ER5^3tr=vnPXR{2MX6B+O(+RU!FjV(M1h6E$ee5n? zY0Zv=VY^bHn#zgf5cy_7{^ZiX9FIKu?P?oYjtDdF35AZ;d{21y>B?A(>+KbAKqTp# z-?ocYWJgJ`ZedGK$s%>I%ZlXL*qppV_o&lh`o9-sm6cFvf66#*T%^X*QlC(ni$T;| z5%{3==_OMAcc@e_Z zWmI z0QtkE3#fQFbqzHMyj2(}fKi(X_Y^(z4oURp478u_stGkh0f%xET3 zhzkQ?$500~_1kjn`XM#nRG{SS>QYWCkpYf0XJfG<7vg7~h+a+`K8S9OS0 z0R5&Z|A5tUDB;pc?y-Xk>geyN%y1B3v8H>0e?yQfK&*s@Z)L?XikD#*y?W!|7JyG zS!L;4xwNIvdi9}rQ57HZNqt#pG7(dBXZe-$S5L3>Pq2oAf?c%$WG^U#p|w zMsJ^D2=*F!hu=r5bI$zi1xcZ_mQ#OQlS>{ z{m3LkB~j?)J9#qt!vsM2*z{`@+L$}Z-&)EAI3E7zcE{@^^S+IDb%EboPFwgaMo#Pz zwx(dLGGW&Wp_Ip)E=(nFqRJV81z(sEVQdRFN$796VWmkz%P-pMxH}p~&WAYkQPq<8 zxbALcQjw5RRfm%dR)Y$W9{Tt4uBN0%S%Wcy*4xBluk-`ftYrp|6`k->%;JUJif*z? z^mgd5uIz8Pua*^6cMxR-vh@|`>1loc@rxk7*Mh$7?0llg#A^J18%YZOa2Dh|LCs9Q z(eji~q95K#O4JSt625eOBo199xGPIedS%MU&vZFby1WuBi$%Qj<$Q8<7dL=Z>b^8 z25h>##P(h*3dn(^FN&S@rR;Jn(WFOEO!cM^Wt{a5&Vp#>4Dbxh!1RYo&nY3_txPIN z_nPDFaoWh-9{6Kcx9ZsTy$}=-F+>{s(bxzo!@uRUX5h1pLCsc z4j7>1H)MYb5=&&3`qnT0B4!-6PQ*IhP;+ZVfcftL=Xd@BQ{>70nF#O<%s@9Gb1-g$Z32TwA4fo&$iZDG zlJaQV^^i^G6NXJcQ_ z{P%(FcTpjq{iz0tW6Y&XLD1A*|9Xg~?L3x(7*C&u6dl2q&Rx<I3?4mAAlAkuu;;y{HOW{}gWFXNmtKHOw6b<<%~n5^hW1zTyk@|spM z8378K91#hsAtz5Q;DwVTiK?%Bx_JU+TDfkOh|21MdK|k;kH$nsdn6r9{Ly zoy2bNQndwAs;D5=859>rOj?HtJV0jSHWu5St5Dh51>0|ULX>?#dR=*wp=Tn%GcW_w z9jZKM33NQhc=F`rbS6GQVM^-jzVo^IhKQVj(rZb^1TcWd?R zululfFlVf5O33TsCTCZ`Vug-wko{5D^?%eUWgM7Ps?jJrfl(x4`7ki4Ah3F;6A!C8 zU!$~oNVsiG-p5Y|yC8iPSnQY7A!I0iwFt_eeNu5_EZ*(Rt1M%{?AWmRS}dT*X`!+- zHxb(HO__bOvbR=uXJq-h=Lo1Rme?83)?1*}8DNTKvW3Wz?SzQ{_xASAo;|y-uW#0@ zS&c@cdoJkJ2h?mfj~zQUHa0dgGBQ3s4l^*xP-`4-yNCn^kDfBX_*cxvlLay7=uM0; zGaBsS^m#lB7X`D(j0vTwQ(c-3Uzn9y!CgPOIK8Ng#*zS&n6K>~j#2{g-tl2R} zo5&B7L#JRJ*{T5j@22wQ?`fBPC)Jq^t-h!7kewfjMzjhB>nTX4Lc&DlJ?uaHK}rI| zfF67dNsR^03G?(g&VMnLs{*Mmvf3jC6p^3!7f%JIRqU8>FvW@(GsU5&O0ID37r@O} z(H3nOc>+wY3HBcr1g5fCi~n{Un26bR8U6(oZZ8$X`ZO8~G%rIgbyC%)=m_674yuAb zh`>#+$!TIHsj5^glGXB+^a)<`HY-w)>wNIXjtDlsPLfz{QaNIl>I$Ct^(SFv$u9Pt@(Hj2?(grPKYzZEd1QF# z@W@eU7PjqDfmRvzdkBQ>36grB$S0`M{s{=V_X! zgnx#L)ZEdd%Q=&wJI1;CG?2ckbn7%`l}$pJE?bKkS2%Mm*?`IBVV=h?$bQh7KLL@d z24&=_%uf)kBg>!k5;`5g@+Yc~+hyqb#wL!|W9J?)p1d*%-$fz$Ajl{Rz}j z&C)CI%^j{4{-`afB?q{5X?xuVWY?JqsGij>jH>A(=htwG+Al3l}cz>6tY&c%<2!Xxmj~ zwr_WUZ|(YY+n7xRYt=@qgy#<|n3y(h1LY0-dw8}x)mL+!0o@=Qga;vEo98c(qPAHpCI^Dgu4L#dWVRJTad0Yh$ z9cO}T6OU_z_Q$oZ;=pEyeZH6MKA7&O*1efBfSP(?cRYsgH+DBZFDY6NKsMdj`1CXe?Q>WNd8o=+Izco|RGDEMtnnq}uZocn!M(?Cl86 z=IH21198EEg(412H0grOK-*AhT~iD(TdCC}G^?qXe=^|s*0=M~B+ITQxsu(pZKi|h zxRBaRbQVZDJ-+$a0qtUW(W5(5Zb-vz0vSOn)^T|vW0%In?%B@?2?_OsO;^rOf(O+$Bh#pq*I>vRAT)naQMEt*8AXsV`&)>j?Nm z3TRA6NkuBp6k#$n5RB>-#8>pV^RPWrg$fB z7uu@@X7hAX(omiO)@4vs&RQ^iAAw%Hc=6Gpp<~C!p*%e$-28SrD$14teEvqoYeO25{9!&fEyk?8-jUIZUSh|BHH~+k`k1->i zFI0Wn_zqT}*&>t80Y$7{&n{6mpX?iK#fyb{)Kj7|tD$8cd6W8;AemnJJK!ti$;ZHG zRO{Y2sCPIMupjT$&p(h>oJuT<(uw?WjizZVazbnJ-blaDwDC*vehPLiW8EbM=+Uvl zGCEhFKYHFEHd1pXL`1okBGTB(`$EGF3j5rPvJ81{kDYiS%Y)*)}&z(DO<~;Cmfl8~8knc*m4s?RZ zdAuN~hjv(`Xku$&D-T8jlXWq+{ZytBu$;ZMQ@Cc3|LANA2ha3IarxepRGz>pB#X9m ztLfv|k=nOauc^8ye4R{^8AcXd0FSw*9cTJSl7UohgcqqoSIhTf72MV%Au^-7?zH&Q9P)i5cBi zl-Qf$DuJomipleoZ~=VUrcGy_b!MZd z$G`O4v(G*J@Wa8oPF}z6j5E#<#Q6C5isdU{8UtnEx=?9Ry67A?)j5zS+Z4%3NxHij zvT0us^1d)yzh+XpTb)(i8GUM>ZR`RzP*4#8mO3BYz|cE^;d0GVS~4&N~?S%3?UEbLVDm<`y%5Y>ik2p}LFH zo{SD{ub8}1l?)vmPg%|qH$goJ>S6LRglSz5t_iZ!qxZIlL%L^WL0X48$qo=2npiOb zowKTH|E5KY^;xc-KvlxR27v0MQ~YXh?oIIw)?6`36Pr^*#5a<+DbOA!wtOPvtI3>8 zY4Qi73tAg}aSuYtt)YG$w_Mp7ZeqEBX1u}h1FjGm7Xp&|`i;-S$#Zov49V6kzEkXy z?yjUSlK$F)CRoNK{~1P9ZhbYu_L<3E5Edm~1z%g%t;rT~@2n^`DokLc2CrTWV{;5_Tm_BWer4k8KauB2m98R zVoR3gwpx+m)07+Ca2~nU>awoqJ{Em0L<7a>VX9bhs z)rpCTmtTJQmYZ++%x6BcYu9c#0ikk)l0Y@B43ii4ealfC-uqO3*CN)j6zdN z8Q0}>Jq&qR`&j=fT4PfM?fG!%vMUHhDr9=A$VOE!uw~;i%SsSft)l5f7X&YR4mNcO z)JsJ&6|Hwf!ecI@?UjpO3|h3Rf&Ak-1%9tXvs+oYSi?<__r$%!GN?(2&~_JRw8DHl z3|VFL@+lbmtyQBSMtg<}OtwIJsQMu*wlY)bnqkG9jH5Wi!Lxs>|0*{`q4azVUXN4h z%o_vCsZtuPrXiId_2Lawn9OjKKbTZlqQ5o9H!=dtJRd`n2Buj1BHAe$W4twqQ@Y7i zPtob5L~q$u(=-X6(rFi{ zgO3+XN7*PzPZADxs)%SMCYF~1*x^qx9KIdZ)^qXVN=AcClTEuA+NTo=Vv-u#ag?@( zD6VBilSe18EdnWQ$hcChQ2;!;0z(e%RIh54dUgil#b-a|^$4JZ~MVEgVY zMs>etWd5QvgGUGSPJu?JWM6C*?WJ=LZR4P*6iX+&I{wFIqG|Lh&aE0E)uBiVMid31 zbSG>`@jOP!WaTf?ORGd}2~P7hi-&%TeAHUylFZXA(u?n{tC9v)7H{09-P}P88F`$c zqDg`DCbMMz2__P2cUh4ZZnmmMI)y-w4^X5un^yDr7DY;>j@dMIuJCn;TO2?fJAjNT zSHH{}HAYDCr7GblESzt;J~na&E8sz;m}xBq8S0@Qz)S=7QDI3|<~U4pT( zv7y1C@-s9%(Q3OAHgDeiFMi|KVHyKg;mi-z!N&_GOEyf>UBpJ;mHWxDx@R(Y)4c-|AWPdTL!60W}0GC$!lc^2oF04{Oq*;J1OCcmH#FlFZyf9+VVNq6#~lOL?!SELt{f8G12MH7=p z-b-plU9KRo#7+5JbdiUzbz|#Z_1i*VufwecQgjUrh6Zrcfl>>!*s6)-RwMEc$xl&R zGHh*IDpT|_t5gEHjRjUS8O%C)@I!gFV1ZopqUtz05ppdJfk^=I?hxxrph^#qy_Var zs*DytiZP?-g?SdDgq))!QF}r_sF(~WJnbHVo;7P0HCv0Q_RjtKy9myX0x=c)bWKc} zmOg;fUBIPec5R{+;AhDaXQze3n-EHdF2Q~G-S@GNeq4VQA>Uv9^V1htaR!p6sX zIA+j=`vLTiwbr$bNHfK=a4?pR>O62Eig}icVig99F3<7Wba|dmc~tW9=U}IF=B0fl zl9?PS+V9Iztto8fS79Zs5(qIZZ$;~NFv|7vl$ZiGBlD7ez%SONjnKMJm72}NP$JWT zgB@-{Nv&UaWE^Tnt^ymustxvM~Z2;0B$rIW`I}AbVh?rVKlorW7;0e9(a>;(Uj@4 zzSVDa1|=}nvFL>1VvI(UqBIuKA-0q}Iq=NZtzY>3=g&KD%Ze4P*If0?>YX=lZX&;a zGnRly9)5&hTD^L;zO;Y;eyDGXN?=gF6B{kwnnZ$EV7hkA-Pbv2vKSv@UN z7whx?{9pg`mUFit+ieqhgtYH_|NG9}a_+DG%CCwlU~8Q`chkm=D_5-)8Fue}dEWfF z7!k}jI!t2l=t%;sO3ab7Yobt`o($Y2F@u=jka>PJupo4@qDL2)6piXUFvsaLy`5v5 zzw|BMdEl}(re-ns+_eT!Mah|WNVmXAjE)`XVsL4U(EKhxPY#AC4*PRmnLrKe>N%ta z&B!!Dr~s@Sk3!ho8{-2he^nRz1*G~Z&#$#(&qf&=izcNr3OgNXp&t8K-RszYc{0{M ze;eF0aRdtMw(Q~&I;b~>kxOOQ1;M0;+bFNTUBeP`XnQ2V$iPC8tA61SA`(2o6N>jB zb&0?fJZwYd5c9uoo(R=E_=Hy+xVTz4|EGFDG$<^bddJ!vLX? zDfDmwuoNFpJ>(n4R0AdH$-rF_Gl=yED1ZZ5gWjl>h*jrS3{%qo7_GU2jbTzSv5Fen z@vUIvdLIIprWg&7I1U6MPaMOwRRL|$HNa=#D+}7dCFImG z4a5qq7LU9;OWM5<(oIf7Q4Y)sj-`jijVQs7eMhbvh&N`PBZ7@1R_2R2U*S@}tMIa5|~mbX0q>bJfxB-nNW zp3THQshnWZP5T(Ieuz5fG3>Or4(BI%5ZbagDozRmw?kle#XsO1u+IcSV0JG8!jp${ z>>(^1RWo<6RcorfFrYXlPa(d5wMx=vUa{ozM>Vp(fDvZ;odE{3Ob2VLJieU{7L5*F zV)W>|4_X)uEel1+-}6V0R>x`}McW@p(gBPfJ&B87c;`ER>{ouQ_=ZXV01yC4L_t*L zmzOMQJvlr&I{K||efzm>+hEE;M06JyGK`Fj3=Iwq4-fC%zwbTodH4C}pD!EX$dMzT z`qZb+KJ)Bz&)M?lpZRn7yHH}m{JP6tH-FwdXA{d+qYdfZuc-vg#_e;jTT&)Y8+YO} zIU>6vAS)9MR=wMzog37N6irj%KZ;X7MFchOM3BIo?~xH$UAW>}`ZXq3jzTLGjY-sijAkg0JV6K^lVR^b0Z|H@8MF~Acn}=*tRjL9C;aaI;cEUOB`Ug#vy}C z!UJPkQF$MP3akatbVkM8TtUpGj%BU^%$pfUh>$tZn=eY&Qa#i0cYw>aJm#DMHjgUt zqwSfy3&fg%l%uG^WN7&`Ih30Z0MNDH`z1;UO&Fx3zx^Bd?aJ=K#TQ@v&_fRj0vkAI z&KzlJ$BrG_y=&Ls{_WrW>7V`?91mEraz&%j_|g}@^dJ7ie;gVb60zR}3kFWxblP2a z-F4AL7cN+^;Q#*LFaEDT`eT{-kN)U?U3=}DPTjas&;tVt&fRkE-FM#u%!>4G8HP+N zW-U_yT$nuT?Lap2=Lh*@1gh50y365dk{jrQ*Y%Rde_eo}6TE4s;QL#$yi z($6SD=k!iFi0I$)1im#-{5-Il$|N`js#szOrGuC5Fr^4iSBnxHQnut;9~00Wg{5*# z*D2{FhCq6$`HeqnICp`x<*kn3E0 zuS-d9AM%jX?+h?VbrcJ!;BWsH*rWBGH49=iX2a@!$U3Dy=(U!cit%~ziHE^!J$DY^mgu+E$@E!yH>7TC36nUpTBC=s?rP;Lj*ID z_`1Ugo&vx;NxCna?Zm6yeJv~@*a6xSvuzRT7EpN}xFAu@{G-b!v`_!~Oi`Z%26hsd z-K)G=o6Uf1{mp2Z!=hQ)6r5}!!}VGUQ;Rnj2RMWW26T6U;~3cJQydl|t2R;zu^wh& z4BZRq-f8c~qwVLtY9-6AgCUe6?I109X)89CSAE*T$v)`!$E4OGSCO4TMd!#oIW#lA z2(8;h(a3*t*gGez1mov~EkRG5^@YTNte~Qo`XhH^(TYU?lh_j{phHU5DN_Qh`dweS z`OoJ+43~_!kDaa&V0-tSpw?`N;)7ON+3cFyCulJ!w-3Vm3N_wNS&BfJwnrY_4ptq; z&^1jz4bMIM?8EBiRdeUf+puB%x^?TWD&Ui!{N(38`?){-!%sn%V8!wko6p!R*0)Z& z^Y$zO!^6Y3-*Jcj%5@@yyy}ftUG>H{Zr*&l2nGAU2<59sEV<{-nX8r8GwZnZ8p;?c zrbrHl?kx$ zy;WIeIXx>lFuHtvB}RJ~7?x37S#m*R@(s)o33pN$m-8(>yRhpQsB2rs8{m+(&#w4^ zU`;4;!Az{HBE$YuOR*ZoQW7<-u5YY>K*YFA=XqQjT-pvYg?ohEJ1joQFG}-CCp~afV&4Xe7;8;#+WC;Vb z>74pbK6cyPwuc~20aFE4RV&KC@rTLRcWE4WYDPk}(7bF_Y^2}GJQ&&)K*%o0E;C2Z zwRBip0s#KR4TLa7WMppu*L~dJzP5>E|jv$qOhg8guNuCK7OD}6_7*c;L5m=TAylnh&@OiW%}!xG^L<)wGU0Zy=}^17xII8-Ea+UY=`x!t(rK1J6Zw3sRB{;0 zbaEA{ThyUl!@|5@{R)iHIUT@`LSX!7u6){HSvyAi@>_ZG2t^gKmtWW1H z0^7jBX9vK4vcsm`8rdQ@73~-3sK_KHoiF!?^>BiD9IRVC%~bahr;?Dei5&4Oi*gv& zGIixgN>4?Z{#<$?w2p=G=kKOx1X!MVlM!Grw7e=)7_IK&92|yzKW!TuMang5xm1gd{NMZKbQXrmglD#Hz4hi>H*VZ0LbY?}&b{LD%iCK3uRD32lQKFsIygAk z*Xzb?hJFt^o!eH{QT!X|IKfHQ~vPpx4!j{dI3zuM})P9 zT8~M$eg#k$GCktX@WG2pK?bDs(bSZ5? z=OT0t_6}o7jL6uX? zYTz1RjrQ&%rs|6`?x-eo7ZPX>rA33Vg#>FVD@GlOU4x&;rS(YTjAo2hV}Tm?K`pnK z_)sc2MnlD#5iGM-I2`q*Oji{O>&Qx(6>zwxAhTjL;seCb^zwApb6GmD6tL34G=od~ zxFRQbG&61@mrlezQaIje(J9eOslrxUAfrty0Ba+oa)>*iB0mdxYk!OGy#QVwfQtBY zB2q0yAlolRj4n=R17#;x0{fL8#U#N<_jITNYKNwpPXzew;zd!Wz`ZJ5}NdK)@7|nX7Q~-)bzY}VKd4Q z*=>%Iskzg%i~zTkZ=GM2X~?gK=_or+6Sz@aM%TpP(Z=oPEj0-e(;0=W;0KzNsY<4YWjv7u0Q3JQ^v=~`2){?{Kx-We4v&jOp{l>;Yzvs z9U2<`<3Il6FMaV#GQ(AGylTOM0e%Y>$A-6U+a}+P)o3){_0D(Bo;~~E!2|Dp_j`^U zK0JS5K1>NL z&j54U;l?@exJ^P&f#qBtmUWiVDy3(WZkGR24`no#?a)VTEE@Ujw6T##0`tHDagko+p{ZIS`1X$Pa>mZ}zpVj!h$LEvm~4D)9ja?T0! zcJ^8N5YC^BG9}_#s5eTq1{Iw?8_d}-afpjbA>pe{9wEn3rnfmPEIG&emq)i3iPHUD z8#=E9gnrT%>;$~^GJ_p9iOOhMI!GIs|`nabF&+MNVhVdAgEEx}*Pr!aYRfx{m#G#Hu}=hL;Y{8+Ri{0}7Q8d$ZvM-$7(=*fZA zt5^NPFMRTS?|+|OxE>uIPUJtZfB&&#$0U8)X{UYS6F(`LeDq@}($P!~hAytULz>BxvFjI<(b8uT|exAM@Ob}-jgsYX+U@&eg7sFt*) zsA7OzItv51EeEP#%Z?!2@NGcmjTHLgD#eqNnML{0H&$xH`9LQ%weR;8>*rxPS%HjZ zflQxeP}G3nXwO9TUFhk-&`g<*YXMK~S(w0?It6L4%gV%BPE$M2Xl0&esJRm#sEb+0 zNzl_7J1y?xGG~)1v@WIqO&(1Soy6qP{?}kSFe8Kv!F@1^dfC@uLy$*Pm5oxM9fKGm zEo&-LbM>236<=h2;}k(DQ>g+bCo#c@$w}a<)3DKSBE1Eg<02oY<(-^{S`gjPAumeY z(qZk$aP_(0_p%RS>({7I^HpVaGhm z4u{O`V(Ey<93ZWsLt-J|l19_8o`H5UB(?)(eF4C#uG@6JA`t_ua>{YiS*V7~f@}%H z?hQOsX|w6J;+kbDXTJ~ zA{9rrK|A{Q+rpxYvN&CB^R}3}SY*u@G!yr!oETjdwXTk=o*=jATGCQ5 zAQn5Ix)?YOCMEO%;xy@$5S@i#N?>$!^s8U_+MoQ%pC6tfg z?(EsK_wV2TkKg6!+yXfBEIzyJaA{ zudjFQNoysCp`oE){Ka4T(?9vsZO=V7G&r<(@7}L``71y3(?7Fp*)q9e7qH`{9ndkD z#`Wj~ZnGqZ?hsRw4w!OjQQ4oYKF)wOC?Om<+8#m7H!en$k4re_=Y|6PZ9P z3zse6qM*t%R^xP)91J$rl4O--{-$XN)4-$y?&AY`vE;Mmh9c&{?4s1KWhJUKjwuU+ zcHgZ}Q@4;2NN4jggmC9z@gb{g@TxnQI>AQa?gy-NQX*KiC9-NCUpwT{5;p<3eNa-r z#Q0DMQ!qWOGp198b$&{iYYhzGbv&(8Wr#o?O?7EtMhn%AZraRlF5T8m3K)ZJFouR; zdJ=<2w~e7=4pUirGn7tAI?`d|H2Z)@G`$qE`+%R4T9xtDtf!VB->{>Jd}?Lpw*)Zc zS|$WBcyv5(j--`EO)AKm7T7pS?LxTPnp}m%hGYAmX7`#n18lPJv+sEfs`VPVd>X2Ra5!(&?SK zj!N~F*a?>4&^5(ryQns5@6dIz&&S9WkG+teo`2>RT`aeS35|!~G{@*+H;*SLX8v?g z$skOlMVkWKiw095GVJoS=spg%s6BT0 z2G$-9bHK=1*>0z|AwN~s!lz^4>)dG_unTR*uck{$iB-R;Dof0Qr2Qx2y}`cF9^_Ov z(Rb>W)di(7ZVK}`j9-*{?$_jr97e}^ecfLJuUofv*RGw=7OY;qX74L6r~GckqdV>Z zli3u!bNY1KxQ+;&L9_ya(P{b0Rc$xWB*B&~Tdu$Ux)m!|KK9t7H{W!#d^vNsfVaqb zTee(h7Zh_SfA@d?Ztk2ppZ@e8iEKLYV?X(^U;gD^Ua+8boLIz!fAcqf^N!o^fcj85 zNY6k%1c%QYJZaEDcdu2M4%oCUT8CIdj82y9(*7dBYy>189F;U%*i+TwzubV}bO1}f z)sLpvu05|g#Z{8T?n32w`{A z8QNA+CVyb+a(Z=Lf0*wr>vHqcE4lefNNBRMeG`e@Y+t=F%5Q*LI8(ADBw8WOzC*7S ztV#@W+II>-OS^j2n%z5J%9kIUY!RcMjtk&@ue>}Zc9;j{c4&ld8}nI7o!WGz7cXBi z?H0h5kZ|{t0dKnYO~3nlzq@qlQZefl5or+!`ku-YHTpzj#GdJp96}8yH%&~sO^3HyB2QbmSJ@e0 zQx=41ey%wCoN&^S6{UL{LuGp8^fE=x3`gliU_;Twe!9%w#i|}RDi>0_paT4`ImnMb$~jMr@94h4}Vm+JeDGLFg$`He9 z2hzn_mDBTQkgynp3ydC}_bG0&Xp}U7Nr5bkFJz9l-nmnL426iw7PZz!;)W zG{7pH`Ke?j;r2Ukf8vQJCMG6)Nkj+Qw(Yrp{X4&N&)xSx%__7lPj>)4x($rAC972| z)^Agc+z55BFKSJ2`);Ve20RRKj3q`Jql3Yt6Bx?EkQIg@Pho0-tS%U?1$zE48)KMe z{#gm=4FSAZbUeGl7*PgVw5QVmC>ePzW3=7eP>mDzXf=&2r(xFzb1*RN0MngCLkL?I z9kTNH^{RZTqQr2evM@A=xfnc}eE_ojL#jrRD)JVENEHO|L(yn=IBq?RyU#LA$3@Ep ztil))Eo7|bHd2^ucIXv=ag0G4EE-sY#%Ah#HIxJX8bGJVv;>j#pdE5d8Ty|x4B2@k z5R*R#vX)X9_-M1CqKF3l z2d-v5h+>LG*s_Ft;I>mMmtO~>qP6af%eC6sB?h)v^ zP}yoZuw~1Z_q_K#=WID=?wq;v=gm7jcx3OMz2ExQxBk!H{hvGrSu)fbLSAd&_peNR zoFK~qv?C|09#%f9n600#=<4`sKJ0xlayFQ9YzHgO1KXj}Hb)FJZ>5Q~2Bm+nF3Q~> z9$B?g)t$l?>~NrThqyXpaiu?z&@DY2S6|eE4plu(3e9Ke@QY}VQHB%CK zPNd%fF0TOub|CegK{{R#qe=4${Pu4K29Ngitpuj(UYIs+GmSDdniQLsg>o9EF;u#e zTC5T{2Ocf}I)EG*>a~aO#5=?ia+FI^acUJ+7kpji;BEpY22pD!&K!XCJG$(#PnoGj zV@N3}y|LQhLMD|ND#)fC>?;>N41Tn$J|8|yPw_JVe-!!DK&yI3OmxiRszRhF;w&ilbo7`ZPOA8d8v~%!i2&W?pDIqc`Fesfr zj(ZsGH@)i_0y&!|J{`vxKP~K@@Ab|GJDWbi6SC-?ACB>~H-I?H5+{xcxFSdwSkUsD zwP|I3e^@2SJnUzf6F4Sjz${3kfSphzk?ahpIN_9IE)}vmb(gb42h|k?3}}*n#j3b2 z$N4#33`v@$Wz~+4ea1d(zty=~>2dI@lCExLu{`G#LuJ#cui=A5rZ)B~`)#a;bVK*_ z^>qI!=!FXx3=STFwqRgjV0d`2J%ixTMR(wffKy;1Rt5MZyJ}klLmM4n(evgHwB0}_ z3RJf2B!T7GLqpUQ%X6YbEgepkK5O^>*hH#xnJXQDWX%^*zHjUzOgG!klO)5_mrD_A za&KnVDW#|E)O}kuc{pdj&oFv#rIz)!=wgG0Z`}A8F)-{L2Z$MKOjc_ZP#V~{DGmv zhhzR9>><~QIVK92zP|%3|MIk&EI3WZt(DQ;BE{aLg*wq)basM$Iu7x1+@8o7+K=uA za4A3#PZQUk0hJ!I7OMoFB*6IB?#ttQ;tsKdI{vi{_HESCp>uGz!Knw@vuum@qcn}s zF9653w6maqeiefX zL{GixHiF1qJ|H;bpjDZ$w7&Xz{ycEpNV{wb^^&>^W4|X{(&Z#2lP>ui+JEeyryGH) zX`WPCN3iVzI4v@^_3*0G71{2NyVq1H1D9WQ5&~l_WT(_<>`GIv1GSi8yM@aegMHJ@ zm&vXhm~YAf8aeCs-z=T@!;yz`BDxrHaNPDfv5>UdYE|pFLw;TS2C=-qisCx`H!u`~ zTL9-dJr}?b31_4S14#OFvY4ws5u2G~`zg?%*#CSDjB3WDhweULoDxfH{(yC9p71G<(Ox^`)*D!LW5W;` z%K`=P`NQ;F02iG$7U2X=7Z|NOgLJ$gMiaPEVn)}*sb#0N1dTO)UI*}Y$4|I3z=@7s zi%9}c4Rl8a-?_JeCB*0iP*|K=#nuJP#+`z%TTTZswyA$_un(LOQYAyOb}2oxn=!@? z>r~gNI_2V^*wOlE86uIr`ZQM3R=AeYltKGj%E++2)f{UKROaAdWhTf?M(YHPu5>-} z`kiG6EC*sXhA^%K%y&z9``g?pC0rVY>dsq5GV*Rgj5vi*XfT+@`mDA901yC4L_t*F z?&^@;ZOD7FOwHrmAGd|j%r3+s^PI5mbHp@ViHY5nK6@P8BqIBCG{35E26wZmn5t@n zD3q&deSTQej@qaUv6Jh_i#N!&evS;xtSMnS2}}_0Byrj?GRH2Ny_>IgKkx_Yz%4Fa zC7Tq(6x5kcv{q3~tO;C=A;fhUYZpk;-2#8Sj^J2#318I$2WcDpDyFgT8xy#5Xq!*E z77~&pNJz!0bHDs*$)W7~Me4LX13Wa?qVja?H$11?#uB<^E^SqyDvF!N;0??Szgo`# z$GeR?Vd@G{whX>JGXSB!mWjIxQ`E(2^6MB_NK_UunMV0)vVVIlU=u~}Wk2XNfVEpt z=pf{iW4^ju*gqQ_pv`)uq~#do(O$Kt9MFzjnT2UwweIk!hE_vE4d~Fer_3jG3tr2m zM}ZqncWDeyMlq5Ob<;bir#H0GzuJQ~EVDg%+7r^bYl{0(4GnV#7gC2<7#=x%7?ZKZ zHegyl0q1>l4FnF}lbbYO-CMIDTO-djVZqZ>39&O=i1eNZf7ApwV zb293T*)nuf@99CVF0NT@WgE5EUYyRs-GD09#5R)JjqucdibP6cuVTIPz^>$|7B2wS z8Q{?NwdCk?mc0BE$acDk>Zpa2yJ07blD=2AUCdILJYHEU2RR$-!B&K_pia95#yR_> ziU}K9=^R~b`($ZPh7P5>n4b+M?`$xm{rv3CIE^k1=+j=c@}LvVJD^v;=+V4ll`>101rxfNzg5DgJP}#eh1%QUsz*5iD`Kf>q-gy2N!N#?uUP>W)=YCCzG5 zU9{8g$3X`2=uU9WVsn`B_5wy9_qK}+2N6t3I)r_X!PC?ChOt+A=sd7FmZZ-EbIcSS z@Ffw>5G>0|CysSRbtYn>G0*8+ik8is&2wo8qytM&rKm?M>(VLAeQDycPiymn{1Bvh z%Cn?-I>mblxwKM0+UgIfSzA@_P{%XZ_b=57PByIN* zNmpVBS&@Tfy}{m+Y(sXm>4a)EV91OPa0=;EHp< zJSWrwv@n6*ji1ygaeUe7cMMJkupcqDqQqQR$tdyhfJ*OLd3yqbM^6S|QXW4~7Ds2m zXah^gQ6fb}s8v*E%^Z5N+RoRZq4{i`cOGvRUy)v|b3fp!rRY|*!fnA+84Ef(Leyx} zw(Zj^91}%=_VX^TFr5hYeWSXHkW1%c^l+d7?DRrO3hT%%Pj~Vd)#lJ)Ra;8J@C8iL z0aZZ-Kn&Iadqb^e@46$hh3>nW15O)VPO3+?!Ys6ns*30HJ@z>9#C-uljHUI!P) z(mjlR6gQdP9(GN$18xZJNoiLP`SfIfH~wXRSwrc4P6y_;1k9EG6z@i}pC;S;;4vukP2UtSerqGelB^}#xZ*#!o_(VSg zoOTLbcez1(sI;P2Jq*mBKWFZok&)45OP5YGo5v<5_|-Oa)m6PsV#m$*Bmh!Dt-d_} z6hqJ%97kiVU2G@rySq3bPk3`PFroMTaExvXV>@?AD*ULqX_+!8&S-C^H*8~)3&HW* zXbk~DsEVOlsC1Ku-Ip!_vVB6n$T{4mrYqC&_GwT@8#8bsLd>c&-E${^9?>==z=ic$%@4fjg z*FE+0Gxz`S0iUfyr*+khwzK6;FFe}C%1gAE1-yr>3tItTbY&2mwpj}mP6u9G6kEU) z&JI9_B&E2eKrWr+6Q>m*q$BFc#8vGc>+wt;EB+wg-l~f8FhR=5JZ`FtObmWHyTE9v z?nXIEpt;KZaEMlRSr2F4>sQ8BfL}>d7fuI<7X;PvVU-xZ=~*Dg-B>Lg=80D29XTz` z(!J~{(4{9#3A6lhncF=Z%xU(fG6+Ppyr`+Jt=_D$quCIrrSPhI8%7YQevSII2QjT` z2_PQXa}3MWp~}6Th>+hBliOzLVZ_7e(fLta%y1AywzV+2i+YH8fS7tReOf2Nbg_vs ziG6VVa4sVcqjzsiS0xd#H*Pu8G6Fn26q$PZ4!w56X7s^&M%l$~(^&=h1hirjf1*Ty zF*SaL`&)m1|I#H(hL0YFZU7}^c+G;;!}jejZr%Fa(9qD+PjB71V^@=?jrQsWOjiH% z1>RZ5#TzaO$KgsR+v-_g^kRf>7-~mCZVU`Xrr&S*QaoD%%D9vk$H?03u?7RZtbenS4M!7<60X_0d(JnZL;)#8*5C!c@*mKUDi9@B~b^!4_>>DsFY2M33ThQaPjv3_;Y#TQ(D z#brBp?iv~zhK@m$^2V#*@P;>BvE{sT&O7fMfsY(MeDL6*8uvT2hv&_o_tv*wf8fBu zmcYS0zHwB3s*6n(mBYT}L7L4C>ra03Td&{q%AUiAj>OnHnh^S2v}n=GyI+P{dP`M? zxq>);{rdh?uSVjWXo@s#%Os~WEN`E zO6-!hU9?Jea4fwhhCCcBSjk@##mSVV zmdN$%7v_+zBUGt5$Q0vu&YwRpGe(`0>pl)-KXndc^jHK*^hN#?X8j!G!SR^^{-jIa{l~z!ir|k zp3~FQ6U<2w+}qnbyT3n66vY17eT_y>tOb3z|GpnR{P1HV?M8roseW+Jz4zbOD~P`S z{%fvzeN!1{LWVHAh&oz2oTGFYQ<={#8>l9(1!6_lY&O@Pw075y-8nrDiV%HYUmxTM z9j2*vl}MJ`*Vo@C=oSXXN6MxiH5OB-*|TT2rjq2I&Kx{) zN?HoZ(@T-v7jhtP7+E{dhf|;cK3?Tw%Fc=W1w{%g&2xiLbjco7Ta@R7IgMUmyWu@P z8*S@|?L}`OMtXD@Le(;~YfHpxMC|DU0!~}pxtjrHAVwn9qQnGcbO=j9nx!}fn-n#N zAuo@QRYvgVFvMwFuTlfRXkvA##KBgo#P*wPl-`Of%|iW6QwlIWaQ%a?|E6j7`n@aU zyC6=-ASX}TKzXu-%)bj*LVzY)#7sJZ(N4jt{0{cJa%R22u9R~rnA3rnP>^wNt!z1& z^Xpq#4AmWZm2-?0#yT^nEZXV&AwQrQwD9yk101_<(WGw(ocpbb!K2wM29pD636$ed zkke>VY+4o?qr(_H+R;`wK!mWGOP8#bM`Nf3`e{=|zf?vROVR^>^gsE;)6YD;RW2YKJ&g-4*mBA#8$>Yek%u3fu-~8LfZWOvOT-H=Z;e7&serD0) zMGrspXe-{RHCboqs)X5dW-nMYux;B5OP4NbG#X+htSWox^fOKq8SeeTef#(Amu+|M zma{jUvf=q{&x@wl+*hqxb^iHV#FF^&$DVkmP?u=LQ#PI=_AfS{v3bwSdqmTWj*j-v z?mzFma|Nq2&pKmpX!wUe_~GE-pe3)rNC>T04j();IyyE{1Yk?U@;yKSYuBwk?X-=e ztb6bM;n0ymk-p{Jb5^WeA@~bzKezQck#cO}*x=C6{DJwU*XHZ3Mq{Emv3KwO!Pfiy zaMrAz^Dj7m>5?UL=ghh2;tNJb#zfT~dE`;8X*D{u2JzlmvqXP6c<|uqn@=xv_`?JH z56FC{oVwwRGd7FFM<0D``}P;*;$+q8Rp*?0wuo#$^<=Amk(dOENJvl5`RAV}ZR62L zS~jnKA6VAA;HMm=OP78rPlkyeRaKr}Z;EU5~EN7n_b>rkks7(N$@ zc1nBaPV>*B=A2E<$gOYFko?3~oYUzXh;2ra!Ql@W8VpV4 z?GU7EVfnFWMfe{`(lsz?T{twcd_G-;338V46@d8SOFK56dP;*mKQ9&xVnz4llTV4M z`5Ui(!$~KthGPAB%{5nvlzZ;};koCYwdK5XWoEHXJACNy_wKy=^wTz-b@rJMSCpns zKYi2Mb!)c2@S-eBEc1SN&;398(L+~We%YF$tdY^N9Xoaiw(HienKi3d-a0Ta|Ln8R zJUV>zp6}ngdGl$qED?cx)Ad&$J2r9i&EIKY&zr8j1{)1XHpk*6i#KoH^x%UJ$@TNH zWlP1vUKXKgv7El<>Z`YFQSeO}*}J z)l00pMWTqS3ju})hwi=Sho_ykY5n?jjfU01Ygu5W0Sn0m@%;1K#Y$Lg0m#a(J$dcM zO{d;>@BIf39DLJtSI?O{N2Ck2pLN!m_x|8s(K=$aEQMLQdgWDDUHSA=&)jwA_s>4} ztTPLBiD39yXKwE8?fuSew+{>qTz=(cqA0N@+_>@7qXYiY4+ZS80@n=$_&(45(`Mb+-O<9pPktFJD~BHFia?~51Uj|`Ql41`q2XqKKkh6S6q4d$tRyIa<5#q;_9of zdTIMhKe*@Kv(Gu}+%4xyiG-5HR?%JG`~GRCZ#uJO8`_(@a-Mnpj;J9r}=kxdgz9ca@;cj0er!K$&h*jlrYihU#DnVX`o= z^e_z(nnL5J(>}o3GwcWw7(7}*&P2AdOlnt_Sc-2b&@oPbDmml>G0L_`8-qoILq}NV zr3W(Q*RF1TbMzS007WqPy?ydAOd;L5gjA(fhX#mhJBUrIDr>+ZDQ6j`fuJ@}9Cl)<65~HnBhza;{#rYVAoU z?cA|z-P)7(?c4vv6HkdE@4oBarOTJfviH5R@44rm7sT@~Y!|CX5k8IWz)4E1KSgNq zjyvxf8Epk)H*8q{)YH%G+Pz!QJ9g|^yS7!92pc~0^s{1pxZ%|GoY~%2_C58~GlCMa zN?Dc&v5F;@AclsAAA9_XYp=ap1cXIUF}5w$(`a0H!Feyd@Zu|b_Cg%i%E~_ZlxV6) z7eBsk-MYu0cuKMnvD`z44n6tAQ|nJYdBMQIVC$^uygP5dORR97c>Ku?8&1|tUfllD z3)_oD{-%v$`(S%P+v+H2wCW{lEyBVg8rkSUv3M4B5iwyAY=nq)tvPAc{DB3|mHm77 z@7=r4sZ^|8u(e!YIy^XhVBh}n@iDRDI&!3Ss=PTdAy#ODk634l1^mK=3&kp3i1*Ca zXLs&swbyB}-1nd~Q2|175y;(q z=4R2pyURrF!5eapMZKGBM!)}*cz-$a29pPt- zX2)w;%@})A3=cY6M?6_fW?Zt5DS$8c{EHR9g`tHep@%v3tqh4$5fRk zI<3Z#A889Z=*xj&Er=%xy34%1x(6_NOydQZ{ON*`n^?Hgj!k07Cb@f?zGr}Q^QL-M z1as$YpP2!blDR$aN^40@38C3pyYk#`@qD~b*TA;7z~n&EDU2K)J$Uf&s#U8dCdwyl z8!U(_Rxgs)5lBJr*tJW1bfrmOu>QJoi;&v&H(V=1&ChM!wrj_3UDo;MZ#nnevjsh? zxA*Z!pD>b z+9l~@$HqrT#{@0#*T4P`B4z%3vvJUDTJklUO$Zv1lSr&y>TmC?Uil`J)^)+Qb-1a# z=-{PGmlY56S};C->=kgHA+l?$vyCObLGElcQFI}nUfBp->FN-1d43ZjgOuhOAE z$)XG#xFK>g>4HKu#CZBeu=Jg^=B|eu5+HQ#eZ7QJXqTdmxgDGIoUU)jc%cKKK z0i6*b>UK#B#EyiQqG;N=7g=jm)SWy%gy_n96O{mVl~_7f-IZmmHEC&f>Ls)mV@W6%!)RFXKFSR|VC=S= zFlC{W$tA~+jkgS>(PG)c^0lBLHz7|fL#X6L3fGK?nJ-$ru(x;ClBG*#&+dcPN!QxW zM1;hDaQD3hS@sol4Y+(>qij_>)|Q_7TjxtTmK>bfH`<1X$WoAPP|NrmxT>=9=vkWl3*SJEe*(fHQn3Wd-)Zwd+Ld&Ww7`98?HmGE5&(M@2s9#J)>p+LZd832Qfj! z^mQAcYd=1OZiT>rm%yM^1vLP(F+^#%j%ZiGrY)9a8my$*%@)lVHCV&*2s5O8dsZ|! zj4?e%FgkR`*p(Aw3ibV3vPFW~b0$NMvBXS?L)zSOuv<1%48O?ovlEA;@7TEA2> zs+?E2v?m_LF37)LUrzUHW2>q<5>Avez);3mbc*>vkf!o>2-3B%{8%&?+WA0|u7OGG z!l8-f^XV!~&@G>|Z}0wDJv|FrPtvyFz=4Bef!gTlncd&Ndd;dMgGWR$`wtwLJ8!Oh z=kx1ccgf|KU&hOJs}=)-ojZ2#cxl(AmtHL2mMp?wYuByC0xr1lytV62vYA%E;NZ~g z+5L+aFNWeY@};l4xVNu2cI&3oHXa+F*t+#Op1Ajwz4Hg=&6(SJd-I}&3xzx_srHwZ z6^ZNDpM2!VAh7n~4Lm+3)~e$|U4mY`Xi>lOR%Ba8vaGqHtVU7RfrD-)MIJhI=;-j# z%Pzb0j59a4UQOH+J=h#H+62Dh%FEyO_BYQTnE%$dzxm47UoO-OA@&zWThITKu+=$pXG@{QKF+*(bNgHG zwWdo&|GMn5;O+Wz>ZVhE;sZavV&(FX6@)(&!a*0TvH6fkC$Q(2)5v&0xkGnhP@VRDMf#HH=I7gQZAT6G>sjD*3OLrCz5I33^!BrjUoC|QF4iRFQ8 zocKVzij@r0%$s@qbHR=!5(JtXxCgO9y~N70XsAc?T2rM?^t`#0En$q}v}oiTzUU6>eWodKda+9MbP4JXhUVC2^`SVU-Yqd*o-xshQnN~|{GOs9|T zVo+>n#olF!&^02)VVtABD!|rDr$%3TY3JEzpDDRM{LmxUzxmpaee6Rb@c7b;FFm{U zIgz~Wx#!odTYKY&KhSJW3?3P}>E>JAc0oob3Iq7jj~;yM+ip1h^i5AZ@zlc)K61lb zuKU=>ZxqUY<&{^Sc|R?FF&6 zU$S`7Lk~S7=0#%ddUWXM$k7pzN36O%7mVthRj_f z5Tm1Nh+3+T$}g;Ui% z$k@0vSnMs@sYG-b$-}XB(JBs)lo7!C_E~X5fhig3suan=l8gjGtY~UZWR>wr-^;pL zh)$mq25S2$Ij^iZ#yD0nVdfjuqxb4P_9cyAr(@{ekPZX-BkggVVB=zxuw61)pY|=2(SONJBQ(XbxXKO}) zrBl(2=Jj=d4J_6?yLRn_wqW(@HGB8$_S1<~e^UG7WPw!yKKt`$g;f}mgPdJ6@{YC% zykh0*wi~Do5W%ZPqaoklqoJ~;Dxt5hui0$!pZQ6E-@an>5^>9;M@NF?=ExANS3ZcP zTJNk`^0i)-P`9i#t5;ui$@$;@)~z|W_6&*>i>8Ffwwx2MB|<;?2oIW{rT(6FR=uhH3gBH63tsngg8hYIh5U+aOz6?nZT$^Vt-Rk0V1f`B;3)~%`DfC;x zp-Fi=*g6&5=J?XW>I}1mLkd;29Pc>oj)S3zOUE`j72sDfq(WcKZQ7v+ow=4&?`xx6 zUX{vePT0ga=#&lw^?O=-b;l}CH3Kn-+D0Aw?8H`cV6yp75_GL!PqRkSjK#um*N&Gm z>J@XKVJCaSoB`(H9<^Us&}9_2NXgj0Oht5c=|MUUSvFG<#VxTcl+$4hNt#&zTC{zw zW2o#A5+;tdexnvcwy|um7uaIu!=%_0%Vo@(; zz}b`dMDLy`4xcy6XK0Yb>K7~RG~I)FdN$qW>o_gC@B^d|mQtZZ6}vO}CkjyUJ(F(v zQ689*vx~Mi7l5If7vQ@kKTlu;R6x92>m^>595I>>V41d`PLBL9FNdDHO4PZa=(Q z5K*VEX2_^xPF=8L>@y^&hICbIQw?KZS79R7PvbhV+=L8Kx3i=WOT97XD#$Y|P&v zsI>fULw9=5x=RK?T1kSMrQL+2ZyVMD>tTb=6*WMfQ* z4jpV}=+&IfY+uHKV|2;hqU9J=DOwkLglZ!>-0}9pZuyic2e*phfOmIlmudb!-Jv|0 zB}U8DI?>%uq%?vLAH)UC5Zce)VcijCz(A&5b+t)f>(G_{8)jNrz+^U_W+o%R&<)^X zPVWdX_bVAb#?DUQMu{2SR+QLVSSo3$y0x=xsok@_oDO5~=sHko?X_4rcv1nY%B?3u z{>T|rP^GdcRcsDR5mX);9MX3MStW3%;OYlMvzywwsulffQ|tsi+1M|arRDUsN}bd) zRZ=d^p(Udj&D*`rh^WGd(K=%6f}M$ZOM|lv$d^Y-6LQd+W(N{Yu-+{=el|Fa(W7HN z-_IWlr*a7}Nn@A>1f9a^XjBse?Gj6OF|blp<3t>!$-q-$PK9EIMB$s=eFndeWVm+l z+di(UG!u$_W9fyfE$mn2L6!~?8XekyGS0$A5$ZH-xjQ0vN>I}*Ya+!t5|W?wE`y6T(+d0dw=^-j8?-xF%NV=#K8H}32@a*zR8;&i6|c@sdiUOCvRHL$u{ zED>0&D@jLuetM+9c$8RO)k~L3%=3qqLmDfgKrLvfT>Y274=lCJXf_U7?L|yjNDdgj z$xuc!25yMlOq>Rj;+Nt~yz~Ift8V0vKd_bX39N`%S0P3b*fXM1FsrBt&0p9Mm<5@1 z{?i#;WtepO^1%W?V)7KmRWVdRWqQ-fQ9GYV?ovd>VQ985TE8Daq zv*l6WSUOtH!VTEO^3)Kbx{j{ia-zZL=?GjoInDLp-l%XzBwT_zJgWK$?>`RB#s$b2 zBlu_nhAzuyIWZf9M~5(&y9!ww$kzURaQA7uX=Qu4G_XANA6x39T(+ymjv!AM6AP$1|%@=iHwbx6TqeY(oy%H5REw@<~m_$nLhcD zHYEx6c~tv~%5HN&yPbmRhSniG&9k&UvS_nGOiUhPPowyGh~-JsRvoL~maHP8E^YFl zEi<^X1!+eQ<)lL9Azm*FOCbyfLn}RdxRlvoz)*}gG;^1+G(v}`HUtDC0WxU<9)hO_ zhNJk<)Iez3tNDD)O_>1dIQO)2hySWO2{_?VntCH`=a~3wbBN1^fq$_xJJa-TUaV-soDy%Y|KAmcKpr&2PMo0 z^e}kzWI+4n`klEAEFni(lv`9jOTWG`oC{ex!H)D((Cx^U7CS+A3;X=rh1#ZZ^;vd672LvIS)b9hM zL%W-3v2;a~diDaW2F7xK$uzb)wygBVpMrU{U`Wz2;PzkHi!s?lNfk=)>V&#&!6C;t z1`4ZNaM~a;zW8isgtrt~zR)Tgv90pD z=YDxKpk%@7N)Q|T>U0CA5hA!QV8n%W5vVKWl1I0PeQp`Wc9o@V4H?5pg>bH*)S-R| z@&cf#7Q`}n*y>Z@(GEXi3r%XbT>$r0SKEv#x||6cM^@c8Js9*{Te2XVKU zQUq5NJUObYbYLc50L$m6l&2`1n(B6?L${t_3cR;M4FI80Z(2uyk+pE(tS_gtqquHF zSC>fjT0YvS(O`)ig`h4(aeXW)PRH|QL$Ic`Zify^&*VQ9<@(N|F3w<|z_lcG=x$g7 zv0I7FG2?UySM*cXuk+N(Ws9YIbo#6>wnua9r3cC~f1P+u8`y{Hwq`boR$xO9FC7S! z#MoUrv%X%{5dv$#w6wW>+~=Uu8*Dn#h=iPUqk8NyK}(>j_eun>s`3oR4luAtb$};u z+GG#39(uI(BoymAAuP2{kTMA0D_1tMzR{tBR~?H0)!#Xtz!0yUgZabjeC|{mwmOyf%-<_2o$f3olDI*!#nZ7r4N z1f4O#j8dim(4%A6hp5i&wMI4ToPu*Yxi4Id_IhXx6UFQbDJ&c^3Qbi4BT*qvWYp{F z>uEr@Vd26BgM&w)Ef^RW7#9Pd>=@l=%CT&$E=G`ZwzG=Gr zM!666`V)iHW)mumId6ncPO;Q?mkzWNqwTkDnxTvr9$VzRruu0v*mZP={ZO8KJz#`R zft%RWh^NcyN^y1DH_fW^_I(XP!fEk&Y^Mdp=vo*&f$9ra$-XYk z9~c-sayX|f_d-MwZJZBS)qksRP_+M4g-d7p0Z+}A-XeK?NNC2Py)>)B$nv7iBXqB~Ic26= zhL%e4)754QIcIT+JE_PcEB>aKa$Oef>ppwy0_km@uNJF}tJ2l%q=6mah000mG zNkl*j2Q)|ahhia*kfYZ%^*GxN%WWMvOH{E zD8LzDH9f5(zr@P#gEYqsUl^`pD-T1K3{!6$SCn2uAq(-0=J?j3a$f~jp6 zgzk^?387>3bcM;#e=UV|!c9WA=(eHjrqq_k(uVFyim51Z3iDZsEu&gI@CAvAW3&8~ zCxpSI$YRSeQPMo!+OY`JH8A3d(|>(AC(qzc1V1+QfC@XRntCy&zR(0rH+iNWGP{?A zcGMN?n;rJ|_616bnJB7DCA1>IM~)mq_pGlqc9i2njAjFjmUNn*0cL6CCLyPbDs>p$ zE%lJM)xaQXld;|C$%yU-u%ui%oX>;Iu`+Qxq$TSH;1rbWJBv&#p~{px)U(41y07z2 zC(w59E3DA#zjj$2)1kAqCOxgDd<;pNrFCdNoi$&e;Lf7K{yHek)8a3c;PEW$=$U}B z4VQ+l(m_QdgzC%lWYo7?xXL)#deCYX9t&h9%f^fL-XLvpD=>15hUR7YXR(|U!YlI>x}{iA=lr zbj(r;>wU2o`Cy&BopemWFU9YhmHrcwQQw%J)7qO1s4O>@fx68w=iX@r*&WWx??cpx zVmD(A%>7=FPYs<%99iA5jN(r~L;xAZT%A8gl>RNS&T4>KTb0!|^t65pbSk~13*RN_ z_I~@fd_O8V{x(ZYk8TGm!!mS(D$;n!k}c#Ivj;qt&kjGd|_LtRW{Yogh+Q$f|EphgEcmi~j*SjD49U zR@>l(DOpdklRZX|M;k1;we`EfoObeOf)uJ58T#z1XE;QzHtkEg+TSSyLxhgy?6fTM z{2QMFsC1)~hzyvN86$U9R)pA}*nmJjFI5;pwDQyz29M^YprXml5(60QJeE{my<#fL zv4JiECQIa3Deo5W^0$#;ij~kI%#LVY~#0~5lvP+dW7p%c9$+FQfPS>=ay z>-)FJ^vK7rk~6@HCVg{P&j9n0L`g{DR`czX(*cYgZSP)4S{BObFoq;;;Z)zr(Rq~b zq(S@T@*b1pw-QQ8D~JNcwykG}6?Cri3O!&adg!tZV1#vh7?N~`EZs8`gz9u;luKiR z4xKgSG;q2U)Goo)m#;hga9dagolbT5XxSY;iH2mHUH;ul&#y1EN%Q(z8YpHD6`?&> za=s1jMOh&SgGVQAGG>Q<{v2S^2WVaZ#UdNAoZ!)M9G1=Yno!3N#JKQLFf#yAKq0J_RjhmT6INt6USB--{>*fbgv;T`u}I|I{@@Ls&mh5(^jpD)oe*FlACNxHtsgIY%sO~+h7PiFL^*nAb}K; zK>B+LfxHxINPR#;UK%Yl0|pGX48a}Cmb>MqZuPRg&71$uEobUIbMO8C{a4!K^`~!V z=gyotbEe#T?)<<0nRI!+mn#LXaN1zIMQg%k;Vbykhxroy*w^VOhC88<~qgf{W2AsGy*JJZ#nlHh;}n2wNM^AkOqwM zq*;mFVxBgwigUl9ac8`MCx25pE`k%b6{hsh>+k9A88~v}$e}}G!wR!9^Q72DQ^!_u z!_nH-(b2x}xJ5%lgNF_sGQZbXf0q%Bs{a0Y-QC>-M+OcbIw&`+NVmpt(E^6w5e{?b^>=mk42tP!=;)e`@Q$N`!HRbjj`GRskS}UT z8>Mh)ZHpag-oiyAkt0RLvbb=>(fSK13PF}D<~p%t zl`Uutl$HW#Js=Sb63;1G%?*O z2<3H#7mWxnnw1$S1>8Xjt9+~ERfv_GdaF=++H8_1wNHUQeArZrMRr4X+v+`(G_-uJ z*7ms-)!+SAAhkB>Kg`9W{7m5h-p`<9ULK?T!QA}=2Dcz{ah9d194N>Pt|GD(;x-NG z4V*WxzlAZeOPIa&oq@s$om}uo+`#PLzrO`o|GatDQLO!l*ssVeE)f@&uYD%}K#6oa zkABf72s!w(86o1Ja$@;bUP(DqlT!zf7iBYaI(Mmj?!1~89XPNLc~L?An}suj6VcVH zbw$uPC>$K=SqUchqG>tD&*aqP{sa4j=gjTzw-%)}MZ|tZW^u{X)Fhyx0+b({ZYUbz zTen>)9`xIR8Qg>V51_w-{VMH;Gp|i-u22T^#dNnkWZ-PC@S+2$7Xes5y4>VJy~&ua z(X3P`1>BE0$Cl>Wg?!baP}wMPuF`}bWe9+R=Gu}oM^!GWN-anw$dD;Ku?dUsfMn}3 z-lP%WN}feaVGVd%X~^!NAguQ}2b%*u3&b*{)2UWYQJjE;@=+q_6Ct-ZZNY)os@(bTLL znc`e841N@#6rGD8UjMxLW1}NelT%4^v&cZYMz?o#^v#{Of1hxq8N9C1$5-8jB^cIS zHcpWOE(1uzJds{BZd=rv$mU0{P@Jel_l79p;+0_aO8c7PQK6z5{ONSgd;8`N96kj2 zh^wsyuCuPwGr*CGG3Uk40JHovz|OAsbW4A4XHR!$M|-Q_Dvo0T6+9e}+;%RT>NQV;BAy-Kv23_4Ab3SyP&x z>gzcJO#LKGRsUMDaYh%5%NiCjFLre=kT|Z(tT#(3=3<7+;6~uOq!)E|ca0s=KVQIQ z3X7GDB%dXxLz+#WR47hFaWR(=r_!`QPN-fEr~*Ez^D^RSOe4R)*PTx1HDs>)Bb>*D z=vx(%kA81qP5L!RN@$U%|7hR$i+K=AQNR1w7tO?fVl8ad%Ec>}Em(S7zqs|)a*mBp z?%I23%g+7JY}q{(JxJzh3Ca9w@W!42=6buh(MG(|o7mAYXK283NPAYAQn*U0Lhy4D z1fJVJ57H5kIb+6!BMru{AyCR}jJT$B=GcZc4>y;jEQQBd6OK~U#ohAU)H z5q}c*#^UFqb54HznH?LS*vhApvV0GzffzBiBN!Z^8X0CTlUl`EVq0t5>}NjD9LeqE zx`>F#wYIjYkro|WYmPKNT^hQD5z?oD%lQa%G`TYa^V3~(1ykk?*L;$Xl+yetg1~LH z@1coGU`aU~mB!NPs7U!U0h0wIX)kax$`ZKcn3NA)*V60FTksUFw-L}^15pa*iHPuB zZ8}0GG@D+Vj>gA;+0=2V4~oiuVUWFfo$0A!=ou;I{sd`m-t6IeP2C{S{C+#AF6`qW zLb16oJ*l^*w#^4pWHy(VUKD@la9n7%KXj#s^DxJv_+C|4H9$-^DTAiu4M7X0%5b{U zRW-mrjsk_D#y9f&dy6ZqP4Fc9xH7UdAKnWc4c`MSJHf>ZB47?Dp0H5d)An}HNp;+_ z|A_dR)6u?ax}Uvc%b#?JAsZa#uJt~s8{nOL4nFTw*4fc6ZkS(o@fjQYw{CoF zOK=p|aqgFN))!;c7#))g<}~LLU5{C5M$ra*gAwb%6Ib<2j?8f_ooCY4ugreM000mG zNkl*2p|F6n?ThD>W(W z9P}uzE$S<4b@6(jS(g>#&_K4f;x`MF(xh;6rS)>0-!UCh5%--Tge>KKAOIPPHpkUj z6*J8?9q4foi<_(6=(04}<}?a#q%cCdtBcH(s?b%JDZxX^|Ds8~5xhK92#v4qOfO6I zRehcn;#H#ZB{>+m{Y@o#$~U?R7l9h>rPp-YMJDZ zZQk*~V_POBCbc~HDsf}H@rkXEY~FGHnw4u-A1@NmJ!3^jd)qx5pDA_Lmr>6BCapw6 zUY`5qpuXjg^vB5Zrj=P~V&P4IswSD+frSHiUrXn)w6wJJ&z-w>_g;ZJT3Z1c^Oiny zY>kxhSUKkg=fNCfRz5f86a0jgq4~r0EH()9=9}obFWAojb44Fcn7tZ?xWB4OC-bVJ zsl^byJPZN#tebO#+anm!zm7#UGi1&*gTx&A+{@``mO!W^CsTy}Gk(R8n>EVc3U_;b z+(b7-hQe506l;K6k?5b%rkgH)7u{EAU9nbU@(6K&}b&~75e9`&d zC_itB{~kxJW3&$MralAAa9U&tnL%=hWg=ZTxx=z`ZqoNXq344oO9O549`CI{BzGd-`3W4?s;qb`{y1waPZMb9v>YY z6@TjNoO8hiFPYOhC(S0W?dk0nT$J3?+arj`cJ6uWo_PF8VePZdKI5T{n?^=P;n)?e zi+FgaRV&PK)HKzLQ8eu6XcxWQ)6?_x(@$^Px&vy#-nMgJvR2&aj*X5z^2nnH4%9x} zb$oncU|`^a3tzHh$IkR``Gzr>lb0>0e_sE(bJw=D)jqyq z&+a|xbR_$I=Z>9EJ-K;uaw;ofSA74p0~EGRloN5 z<;Oq#;HKji9Vh1{aqYTu&w2j&Er$*sN(&L!iV5)X$DW)wZ=NLL+H=;PeemF+ty{K< zY&&=C5*#A86t%RswTbfg@7o{JkJ2GjPDEJ(_pcI09&Uf)UKUfI;_i0oZS-@5sXu{p zIR)2HMsm(MXDwQ?XmVom=_fbu*trwrbadX@x&5{2=+RA&9XxnYRJdgE;+bClzOjAlc2RY!ymszfQT6D^=mYovbaZ(1?6qetTD(YV9{ZcoBG-95 zW;+iIXwO(=VxjgIG8R+L_v&2I_!FMxPAUGhXXc3j zSN|oz6$p>ced&nOLE$`2vGD+uKM7xX!b17xv-tgc|NZE*+xBL80OUiLBSWK`U)a6* zg%<^Z_;E|7z;j#ohzq4li8!z*5dSsBxK_jg^BCn1@QiblQxP>pX_Ub=q)Xr2z7tP6 zao+s?Q%*jqw!p`Uy~D#J_uPH|-FM%=J-Q(gfx86@7Hrz|=;6bMuUvn**i4AT(b2I7 zAACr-?K96lw>`OU5!W8KaG@+&60zevVfhIsEI)q9vc(IJJ5Kxx$DDBYkN>X?`APi~ zY)JdL=%Ndb9656DJ@=h;)>-rB2}j~BEo|ZZ1&?fc^r@$wzU0!2dwRM=q8ME(RxJPV zkA5QD>Eu&R#Mj<)_dV&g;uh%A%PxN5`4=93c+-U!oIhtyhe+(5+ZVazed1@^*6meV z!2QDwUI4klEBOIJI+Q~2r(??~GrCOV&iu)b?);rybHu&ny?5U)y7=j*o|cJXCK(>7 z^}8Tz&N)-M){>=5#che0QkE=Pa`=$AHRW@}wXNdX`?PCMKkc;n3+9P=Y2k4T<+aO} zEjx3~8M2UQDyv;93c^JEEEac1XRQ&gxOnLjkuKfxlE^KESJ$5XMQ$1J!wpVEu5obo zHfS7_bU^8a5dwL5`P#xOIZsk-gHq=U7cPAETzz#^lYiW{D2joEfFLO#AR&`(P(n~z z6r_d{0@9rWDW#DPfhn!T27%n3f(xxa3!tD+n(sXKBHRU< zcfjK~OW9R)?RR#DS=G#ZZY!?*28E!5kT|wIHZF75XF%7r6*+fzpT+&g^yY=iW$GV; zgxlY$eh9jy&JWZ@YYy{gkrl;mxPN_c0DC6bk{SFN=Sy?{`0gEdkWuif##a6K>u>9Y zTG+2OY|y+cXE*=sVbr8~ow^BQ-$fmhUTt0cW9X!6+Omr@3`oQy`^M+~3d?RwN^Gh?9fFDq_fqRA z&OR;?es^yv_@H^I^~vJe9K zc2xgM@#C&whRN~e_T@Cjx*YGh?LQ@H|Nc#mN)vwZL0`3j-+@b;dx0{^?n$YY%wNo3 zDdHmo5V^VF0;W%P%3svgRXsL_q0sv?6I_1>cgI3Hl{@96@D0_v>Y!EY7vgWD`x(f& zd9JMSom8bU{1j3`eQwc^p<*S4RZQ$X9L*@~w;Yl2JU^)0n`Z=>Jou8N7CmNp`NNg=PKPIzVQ{%Jd$EAgOcC$%kuK_`Fdv- z_WRiOK!9=u8dzUyIt)%tO|{M8@`{)xj%M-`%n3)OBgO$E*RV>J9-A>-ZkCq#e!kqM zvnHe6`DP3e#{t+Ie!Q_6&H`NYwHs+H&P$a6*xVBGkFiOjW)}XH_P!58JCcXPg245Z zq4|OLedFs{mDT*tk5GIqDBGn+)x`B)pQv}GyI4A-itKrWR4@^b!vs7_n_O7%nsjiU zsrSK*u*oGS?I8esaCUkcWh?w^FsfvMNWd|IWT<2~jUX*W2?v{i5mU&tPF0(Nwg~Kx zPwMaQF9$i&#hZkjHgv>%s4YZiykIXYrHRsae-dws< z^xb7W@Y8(Vo>J3VuOiz}ovQ-pvxao;byhPIn><~Y+ne#8cc4`3k`(n;oGV`tNAhBC z1gF#blSMgu-EQaA7~UUQnEW82N%v;lPm;)&0o8o4zM{cN1fu4+UvHS8C z*$pGbRAv}=&t=lPCpsO?=~e(;|3F02S!iv}^i#371Jpu7R+2c`Tla3WwWTV}k%?RQ zwu}ubZzSH^jRk*@Y^r9)i7VZse7fOH9>)D9ziTK-rM_IDwE!@J2koSp%E@hJd!1#8 zA6BVzz%h#yeKwWZ);;@8J78L-mgT?c?IMpD&R!G3L;P+qJ+(dg5*b(w4Vr6DhXz0kf#|_yq{2ZL16OuY8_#tkm|$ z6K$Dz-pS#}#Lj*{D(??&->==|W}-T``HG$7`x_sDtuz(!+T|&c_E>^S zEaXIaxx5U3;|TEW=}uZ8YXeU0OW&m>a~5lS3u)*8yR8nK&HcKoHd^=ZA5bd;8I1{` zxWQ|;C;HSxp8kKp8B@fV5R_iw3v2G2L|o{$AC0UkTtYFng1aOYOhkZG1-f9i8_ErAIcXOJ@hWLSD8NbWMX$5yj>31M%nn z%^Q85biI7M97|?$g96bE5w^9;CMBn_rg(3q(T3wEzFa-tVP%}>6prs+bSb!=F#oKt z=XP{(v8|=1{$5ECNlUYIc6P=p?`yZz2Fc0E;i@Vwb|Abp^7Q-@ z^Axk({^Ma^?<^d}KB({S;C&=< zE3!c=n+fWBi7rNz$y}ShSvT<>5pO;iuf(283HU>uo$S#&7!@irkHNFLx-ET8v$;ON z1aNQ=8gZxEkrEhY!l4PVvC++C-@Jb*75$9ty9@p|c#rCauC~by&NbG)3vS!cb*>h@ zUKyFDfddD!JPwK*@v%{T!AZhJ`C$}P^0-}(VyK@!NM|cd_hy1#*TK6qd$yog5h$ zem*}9Q3v~;|8jDpdlt3oyjZ>2B2kOaJ1B+*>wn55PLm>E#%;-dv%NTivNv+PX=HbQ z%X7qF_naNFUiDSd`CdVD^Nxhn(qm`$eZX~Fb)BAHL16*bu%87?pXso7ZRizk(fJrT zA875ykWt&wT>OZPkM($lm3jlN-y~=3El3CJ`b5i4+791Ih(9~o7*4lvYjmZg{Wah0 z6YT!BJOy~(n|clOd*E=?9I`^lwcVP3NY}N}xw$!K(#nlP#NlBSTeG)$073ADx@wuT z<7n(JI;Wj84ySXs%dc~dhvuMM|I1%k1ei?2%wh1%Kv&_kK`q9bM!H!N zqAQWq8gQm#Yckph;FLCbzJb?wl5xV z=H)v3C&SfRirz7B zSB|xml`WKH8)lfKeFS@U=O`oNHT#^nqDWhfB%3*Rk?3KUH!LGQ&+-!txfGb(5XH{U zOeFfalzO!m!MdFVBwtsz83sQQO5rIip%BkeOEbcnA(&CkU+z>6Z6m$Q1s5v# z*6Z`+|9v>$sO?@qr6JvaIqy=V44udp58upLi<9oA@mzGw*y{Nl)P^{#W45!Y&W+#3 zgcy~*YxCHodi-cGjScRDtyq35-7E8V-AM|}rCb|u#?gq1|62ZFM8-*`4cF~X;s!Y; zVcW0tJ2k!uU2;8bQoD26)5AyFWAS-jRnvCj0S6BXfvdGVX=tY@nkefED>_TpZa)Il1yN>7OQPN5lkw(|fd{Cu%5- z+|Uy?%|3g}TLGI5mk`fqnh7y)8W$F}6TwQ0Zypy`1-)y3r2Z?#jWA=Sb7Gr6 zYE^SYL9HNCNdfLOn)q{ku67$sh`!o=xAJkIvjt)$Br(($GMJ4+87tCtEZ2xGa4E!d zDu#vge~|k)_%!EV=G1;dLF`{6@H6o9$b7TABdlKexVoFon=QH=uz{=0sOYnk8 zMej9JiLIS6ZAxLPjF@AZ!R?NTin4_wHZ7`GGO=}EQCOakx6yDqVrjbf|CL!>dy(1MyIsSem;B`nq3!K_KC9;oKj;$2R)|t^bOysgJsu+Z_ExNzwJ*%VK|Q!)oHTufZ|I z`E6}F)+oFp$*SnZ4PShQtn=F_W*MxucSOUS?fI#pGA6?`ceTyR`{CDYr@=q3;^#Na zGYmd1s%rU#jGq35au9@d5d*2O8B<<=l+9KYQU4g^(dZA+_gw6H*3+6*RO1nH(Hn(q zpAc3~A42Do_DU!jO1bl}g9%My?QQ{ga>>4IdHl8>*qZSzf4X*SHI(R_xiWha?)oQO zvBs;ug{;D+Qq4y_8S~o-W2cFyJEBU_DDu#B&P5F>QI}ojwEi>B)Zth9c|IBAW}uSr zRCAf;sjXP|!W6nj*r2)iQ(OR`Osn<_dP!uaXRlRT(VBg3T=91E@eA1Cx{$)PUBP4q zVR*lEiU!Q2L}xV6EE>xA;#X!EH++~z_hps3F~TDFLR>3%md0`Qh{A^1P&uf;l(B|G zkoHBp<*G&7Ok9dC)2DGgC9IcTsQeQqgdSjQkSqM(F=x3 zDd0+z!oJ@fdcKbm7#Nl8%(kldkVqye7)QH*CdcKj>@PBM3!RGB6DUu^QTF{uXmEu; zWI|5ePN&|_ws~5=mm-<=tMy3KHZdHzeEl1p?}w>V@}b0~o?D3^vU+n^44C(^JTmCE zdsuVO5Z=D?v24aABV8JPc_KQC=S3-P`z+XBA8Dc1&v5|)MLyF&NUt}N^dpgjn#A+c zD+?{zUp9~*(UyAB&qk^hIwRzKFGQ1Z%<3)&d?d|=ic$Bh0BWQVyrmTd}1Uw;tFGA*qajkpRkl`SWl6`xhtiw{{y|*GFJc7fy zFB)iC%ph}#vmhOj#`v0vK=-K=ttR`ccvZSM{tYJ~?gFFsG;A zoV8ScOEBjvbLr6r!B=14wh0VW?;e%E&lSydhDIkoU%6S3EX9)LfB%^=GZrQpG4{4i zjqbqhq%QQgO;)TbsF>ze2P-2rLzJ-*&1?GAPxYU}Ce4P7sMLJVc~Wn8cPMn`&`#W% zZx!I~9FAN@ozkourFpbu$k9;7C(eWYecJw*pva#mjq!&V7Nn*Nin)0X7+Z`6@eYe6 zk6aNt5EFU{4=RRowZ$IaYD%Z&>t_S#Cu_*>`vOa5*BDkGt}L z$?&zR*o?JA#UTE_cXPi|?shy1Xv$80O2N1(Ya20gY8oyO&cP~IGO|ykHTf_ zXKUuatfKo&34i<^HgsRccEyb96B`A!8mwMFmm`yJd`NXk7x74LW8g%obL7fA$InMb z{MbKK{a%^e*SM|LlG*mkWA2|!zn;={zc2k%{<57L)EBUvdh&H!*t8eq#J5 zo8b-r?KjNthkpo&JF`Wxe(*c2i;!(b&O3T#kYC#2iVBY>EV2aG1=e1PwMgSzfzIN zl>OaC?vCWJj?Ds;UZSPi(*{G{sk?sDeRp%Ym{=XX4;;RaI4^HJjhPIs=4hYnBwy#L zsO4gkS1w($Bx$*a=C?juMRpdGHELSq9VpA+ELR#UyE(wT;i0mRx@ogA@-n%dA^$># zuRv;<;o_q2Kf!?XFgad+@)cZwo42>eH1sCQS=EHZLk00N5tOS0V)xN0yCkWS*^>Dt?rYuh_b^|U#q|8LZ)epP1{NN8eYY@m}=G>dX1+-rOCaot&FjW;@e_@hovoY;_8tf5U5ODq4 z^Oa0(N3;5u)u-?GZ|Uc-=6lODXb$0>|7<0rVQHO^kCn%ILcE-NPbThA;S9jc2jm+D za{O}oS*8qY4T0tZGfVp5+3%dC4VPRClhw-_Anp^zO)^^_^Lj=vkw_!6PLtu)rm0?I zNu{-uYUg#1*Du*2i)TL$xQdW9~pStt25@>BG2FLbtQKb9efZEq9m zwc1LpWc$JsSPFW(#cslk`IW9-R@r)MX}isHtBy4=FL*s1JsQvTb=#wKC9Il z3VWwG_?ru$$ZYAnM@mwm<>djEw1N9CUp5tnN2pLchg<0jWPI6{?>FS46o|fJ5wIut z&%*0%KmaZzjH2x%0_41ikJSoZ`@ZPAs5t_t?iSjtaE!#YJAhgIUKGOY_$ZybH~DC4 zQWtW@p)|QLdE6rfKO7PpVddaha_wbXA}wMi%KeilSMM2b#OP;&j0WXB&&Q~b~# z-cw&aSI@O!|0X9mlvwvB_lXABBQ7yjV|p!u){cS1Q~sUvGclbO+W-oFm}QAiFTdv^rE?jBwkbgw)<_ zE6xClPtgEU9AjX?)2DgXW*hx{Iruav#FT_2HUl|kK#|~Yp$p($616V6u!b=3=|+94 z7ciYcFM3BKyMTn@HuMu0S>ice4_}W9VWeD%IG$h~wt7Mb)GB5n&)dT+@T-gloo1eg zY6$pts&WXxmJtS(AVG+j=4@W_u&=K|3PsDOI-?%LT>nswR_aJ$>m7<*J9&j;L_nah zkD1#9{XFK=UFZ10ZxIsVf??4%xbPR2w6~t<@6pnuz1omzZbe!b8MY`XH}Z_w*Yx{$ zPu)T34S?35)KGYTFSq97>0vXL!_RphT!DId1Kx2+H_5DY5x%C%sfP)3`sbmqy$o)*rkm@@C%RI1O-)T(Tj28Ji$)=5HBkIHU$-UP zakiR*-FJDWnQY@fR$dAWmY(5G=Kpl}gCUUxenG546^xjzW!A!*sHVD0?1zq-ke`TqxUazmT>0!Z5d2z=6OSi zw*3tbm-BHKVh=7|$lQOy3js22vR?4pboSr+a51K*ulVV(>G&UHIgBH)|6+3qf-qmb zaXugj!?!Bo!;*DmUw(4$jFSpNYg*tBpm_B5+fv2LTOxkBoZ>F_PK_5EK%@=f6n@!; zy-P*ehBaEko%ysGAPEDS;L~lR;9VGTo5h0kqD_WhWvRB3oRh{^!yY~DZg@(473Ybv zPZxRs=X>s=#@+aVF0CM=fe36SlDz5T2ONW3x!ttE?&myq@$3{=th3_;;=iJ9dA?qxw_p6?I=C7Pe2Bf z2q0R)1DPG-A%^svd`y+;ZoK`6-Z|aXAMK*K4UUo-fq2`+gBw*lmt#P6s0|}f^9dz- zq9+Prfv2U5mo+ZUXH7e2dkfe>`1w8pezvg*4Gx#{KZ@eZWde$xJE(&W7O}0EKa;w2v`LzvCe;+)0s8soS_j0d1y!c?`rys5!E_Lb zh;74GpBh0Smsz@j__b9qb~9*y6V!V0de)B`c>5PSBXYXZ$4aUr_#=mhY+E-AiSl#T z>_%-eJEHn1!M8#?1XUj%vw9ANAGWB2igo%Z70qvg7ymff-hkb%JtEuVe|?vxmo(@2 zop2|9sW39*07xzpV()3)FG93o72wsjSauO7B>wVyFbaZ^lgJ7cZaz;^QZpFKQ;X?Z zz@)=Z3dM93w6)AOp#h5s_@$TenFb7L>gpb=YpjO<%>aFE3K*jlXw4f6HC-tqn7ROnLw!=6VdY)|mIeT3t0+6Hb(t<&pVV2-$ zNG~J!?kCzGK-&6}z(zlua8evGw}kJJQZ)@)F~{6Hv|W(DZYH!vK?&xY+U9KLw4Ml2^s%>(-_{whtrX4>~T`4FdO2VA6p%xctSzP>7Wr_r{I#=Gh4s74ZrT?bSicAEjXrj0U1 zH<3rsJ=S9N%iF@1@YQ{zv%a3*`j$#3P*=d}?t?u4PkcmEkyuS}KRWrTxmH{3`FVKS zIdIcp84%_;0wxGE8B9O}3Y=r&68)fL;BG#LgoQBSWGTphJg+;!an5t^6cL37a06nA zkZYlcZSm-asxn=;koH}c@EcN4zl|)@wu|9W{1R|zB?RHE_@M4bz(-g+N;=;B$!}dG zuT`ce{h8!-O-E#q8fcPS?g%3tx{!p=+kn;gK~`4wT9MpN~Z;G&WM77Le(CS3vKP87g_`A0~>_6 z_*VCQ)_USN@O#v%Ai=*&gyE%%cWtXDVx!XNl;p&o+Hrx3SJ|0#P|K?mw~xsmd_MJM z_82mj;cmNP`*^!u$ktPEt@=i=|3JQ^N9Fp5ms6alT%=fyEdCf*XIDjS`F~`hZeOw= zFTSFwSNZzW*d+cNF49&$=pyPtZ&7v3<0?BniMj&d=t9lc2kz`QWA0(wfvA5PsnTP{ zAt292Y}B}3GB@V+tnB?@cDOr zZaa15YFA`9f_cB!36NCEA&(0dPvXE3E! z?}a9mpdmP@8wG1SoQ5@=%?0c?+Ahp_6_M-t6R%OIfJeOy!oTw za;E7#=`*yei~L#BHkS$hn2RZVDYke;Y~%dR=KAP+lrv`|UuSlIN?d{y+RnukP)ME= ze#huowEVz?^ww!&Ko|p^lo3;7u_#9evD+`Ot-&@#^o@b)%iqU`>kMtK$t(Vn| z-jibY*c>6ODP4^Ho-UPCY^Z83HkCiv-`i{^PwTL&9H-g22_*s3^hiio@pm#ikFP zIrR%?VWkydQUnO{(otCVUC`f+V#(m0@Ab>ffIveW zmAeoo69QE!b!mss2Z8S+Xy0F-s$Igig4QjTk3Bfh&h;@{5}ecw=j(?NdtkTZTQ`Q5 z!lyFfIP+&JO+!DTJwL{?+r%$+CzL;U(~;R>%qC4U@s_>YZ=5{GmDNF`Vk|L95n@(% z)#J~bjm1<{s7H9q1U?`9;n-XklmZWJ5|FJFTI61LNNdx{0r~AW39; z0_#s7>`BYP-#hiB1Mk^?jJd&JWG2*e;-v+C6jTP^{(TH;S^hWQhWIz$)*}Es)vaIZ;iO=UC_*yyH zK5czHgL%a@6?ctOfl$ixyTAJ7x8^(gc(|2L?>)E4M$gQH+lr~+ZdJUhWB29drO7)$ zfs>-8n_u)FhEnxZR#kRxM5Q4X@g`OJrVXw?XGRIwgrLA}ba4*kY&Q64MTwB=1Lu=v z>oqko<>lj}W|Mt{WvEA9?oF2(4Q~JUpxRrkVbQW>f3On8%Tx7hiY`Wojk7t69yLL?p43BNuoQr<(`Omb&;#*iF`C8ITOP*gQ4>SJadasXDDYCjHN! zsUe<^nuNI-`GID<7jFvNHVSqY! z`LG#K8&Fz+w|)|NPKl%6!s~{AOohmLMsrcMkj9q(BZlS`)RBO0_+#Pu?Eke=BqLG6 zrs6KogGckOLst2oc)YheS=1hFt%O*VeWB=B?lV|OqzjiHOvi~=tv+8)!(rg0JteHt zbz1D7;1f78-S->B%Qc%y&--k>ghW+f-^=;h9cf{(TJ$p}YOww5EJi|q(dYLV81NtpRySKNPd)-D~C=6j zclRk>z^fH^Kzy1kOF}_O7cG9r6>XO`c};KPD87l2KCBP@MX|?QAdGsrVm4=E1N6Y% z9n!O}Z)SF=j0@Q^C-Qt=ZQZu8N3~q`uq>X&z)K+FCIXgMFP2?M-r}QE#ZM@!d*>*T zWcio*zjV2)?#X?g-b)`c$nd_~`dl(HEvBRl8$MdMaILBL{ngQvCqlPsc zMIVD2o{`6;3madaTO|NfX3l>o+YJixU|^n60~EgBZEr8 zEL<*FK$dWZFcZQdoLHcTQ-B|_UwrcP@$s2E85z-W`wF)mWv9)#4_5?e2>?TX>tzpk zv&C<@u)ZIa(vKLE!)1!XBSdk?)O(@eauJ-WFj1Er}b{h_{=W_lz;SvH5 zg;zRZ{^j5RMPuObHl6I8!w2#`u+Q{>T0>>kVSjJ#?BUp&Y0-MJ>}${ZlNPqr?Nz22 zZQh0qz1e14Oy5D|JCcsESG0tRk&lsSz&rr^010>N%E(>mt7RzqdJfD5%HqBzhJ(<- zu|M0q$<1*g_6xzrvhUmNg#i0s*sNB(LuMj@qw~FN#D35j*5x`B0)*xq|5yJmc4SW_eU`pf5h_g=e~oa<59-(WzRnrLEV~aUA`nD zgo~VW$`{aTt9lwq_iSyIoS%+$sN}KI4$#a?{8|S@2tpZMa{JUkV&QRrMa> z-!$MLtrsg2qwF2-Ncr-oJUJ_tlV)Q5z50$7ja=@g(QEGW=M}k#L{pd@~1|^xfG%uE7f5?n3yty!`EE zeRP1%A>SKCMyVl8;3lX{+6~aD1!)61&>SCUn&3tPg;F4Kc5?*M?+36P3%bA@w8O(9zOyoNv=M;|yA8wjBjT^0F>OJfPBAMIp>;Hp*&%`?=QdSPa1341&7y zZg&3>mMqJ2t!{5Z8m3(w99Y9WPvp~N zjp?Q|q0)s*ETaJ0_FEnE4!^W?(fkj@)PZfn|7Pu^9& z$Hp`R5}%(zW?zN*a(yk0jM5u!(VB)xwXMY6Nic12fkjq{RcZR}&u#+fFZ5>zr<)k% zB)?6OK(N1v^Y*_hZZAGhQqpUC@6CAulA)mWQQ~ezGp31nX>{Ade}C3C;%ns0?sZ1< z^Ine2AgX| zBkhJF5Xhu4P7LHq}50I5GFuTEE*y{3MBk-XbgN2f;9)+9#{wGpgkDr(xpt+W}2a&{)8~!hAoAk z?bznlZgd8p*(S(Wqvv)i=%(e*m%~Z|d2U?P|H4 z`|c8i01+pmQw4R+A=`jSXrT(yD+MRUu~>La0t0Pe=Uu7&rFxgcBpzF+M|=rt);5<` zY6a#$U8)P5$q9HU$pdIdyNT-N3hJeHfuG9Nx1B@_s%GxMnzn<3w-Ts#mq^tPVBs`e z91Dl4mE?X};C`JS@AX_nAu7T-QVU!B!|zFK<|Y>r#1=1q|Kv;QWqPUrz3y@%+M zJ9gKsFOfQxd;xY3yEmWy29=Bn+WZGJk?aF4R-^-U#cHRWx-g)kKz-v$xx^j9I-C@+ z*Hmjcs*huiLeo|x>5&6k4XSX@riQ@hFQxJlZ%Z-vmEm0!31|yHOaLqZb-EgFgp6PG z8Eu80&-AL%uZA-WE?wM#Km5yPX##9&NJJkvwiXt2nxJ&TS%m>Ks&eSAWD^q;pyw|! zK9!n;{@T5N6Y1QI?$`>LaW3z zy4V^307@b;nFH4aBlN(+hBNcA&?i>^tWJIzD4FD2$MgUk$LF(fl7(RPLAvQG z61!AtVK*xZgHf6mv=>Xqf^e<@v*6RW?gN)dTg782i3kNs?ry!l*LEHO0{hR}oIg|l zXPI)8NDX->pVYR}!xFr|84OP0U2W$e#K7s3*C%xqT7Ad!1cAG+Uh#k|Q9ryI4*YH4 zz8I7apFrHA4#r@ENV~P0kuP4NNaw)>%%3qQ)4D}`6XMojWb+aXvR6tv$C9=(HdK&Z zJn}Rh%M7o`uvq%*Zn}+Uz76IgUWXGm!9hZrh2HHRcOr~H*UjEGvm%MfZ@-xuzb?cE zf+jb-2d_aJ{JXlZE3i!i(DYqZ;N}RMo(AAt3c} zM8k+ju=haaH0(NOMU@FSM94gC%}O)|qhL;amd=n`3I6K8t?sfDNxOdGnPekpWg!>#Ya) z1?Y{ z;|Y0r(Vgof@;gHTm_{Gh_j)?6!Iz2Dq#>5Yga7t2lTiE)FqT1l*E*ZQlo>iI!LUWdtSgS~%GNfyk6K;<-)mfFIm5!GXsfH*fA*HBP_4d3g3X?^!T@^JTdLlW zqKX7umAhSkZ`b19-Oo=yke(28*UbIxD{)W!*aU=Vh$j}2e=sbPbQwGmG8kH0qS@SH z7g&%{v;FmPrudoM$PIOEr>@!eu>&$I@0_~!Zi3_WWLoKqKT~rv5Ny?|x%Frsel#EE zFV!_~#dR-W7d=K#AUJ)o@5P6I-@vCKGaCj%gs*fX!=Dg}u1nXX%t!)#Jya^E8xIku z`ZVZo360#-(VjWOcy$rc+1Fl2Z%3|iNbIGSceY#^nDC9dCvUesEB*bmir|kqa?24` zZpKZ1yUrK$6rqhDb+dc_@aZJT%rt7NN)rGpP-NIP!z(-cw~lQLRMAuw`2&sf3eDer z)%r))lwa?=Xhx;;Cj@bN%OODS42BPM=}WwC+5obj2SNoat1gz0dp4eKIz6kYFRhNe z6=5Re^I{msKlV($oz-){^ww$eVgIPW=<{~gB&tCBLC??%K$>aIKyI{&|ufC-n7jskH_$rE&*#G7l#@IQ-i#+FMulZKX*y8Ov zdspvL>rmw2lJZ+)2$VPl*n@w;g$rya7~4*00L@Q7D<#$EC8A~=+K*pi_)6efmA+!KlnN z#|NJzKiuF00~HJ*_9IYmtkufog82}7{^gDIFRFKvQd}QeW3<=hIsTUm;5UZp`M!aH zxZ)a%St-&DMK{UiLOT*Ht*Z-X3kua2<7wp{JJrwrd>qQdmLyv)KUpkKq3j>|)XE^$ za@ev?ph4uw@%uHt(F)P|nXbp$`XQv0XU}9Gvz~Z9b<*7E3Yx-AnezIN^Ie?j%TX{U z#6%&eA|a2<`#WT^FyBUo#?u}@Oh#TgsEnM|T8oDMkQ@;zdoeJz*=Y3Y4($E!YoL0` z=n&Bmxw?q~1==nC4Q<~$;y)ij5hXwI`o79T98Z0pYsGf!|9*1~CDwSiF};+D&})wT zvb<_m#ktu>maVYdZv6c93|yMCm1#5l7pZ{5w{56bIc|0=S z@M_{Q>rJ%vx;1#C__K4P^5aK7EIEo2BTtU9*_yW8XHQ}+m+!hrQ(Ufbm)L(cT3Js75@SSU+=iB}q-RJb+(mD1152H! z5cWaq;Y5=>N4Fb-ue(?or_ge?KMMNBvXza!_p4l%LC0i3T^-BO=e=CU4IQmB)3Xx%tS{Sc+E^zh>8PKXv|Ct} zXm7Pl9F9!W0~VJD|BYRs_REtx$yP9hh-F~(ncIH#1q~cgzz+L<)R9#406fhNt|k)Rg;;>(EXY=CY!>H zd0NVfSh6onldqrj)dbp%UWzUuKz?8NkBjcGvam1+cFfE$vF5){csYq_lx}5`I)%Xi zCNw@FAxkkq&3bEl`vD7!u9#lg+C7h{4=Oa>r79OSZAl^pKNDE?#$Mym>ev3Y*g1+< z#jSF+Uu!lhBr$S$1cshHnohVCA0Eqd>Kv!*huM%JR+D2FeW_b6>u@q1Y}1DpOltS zWPJ?r)6Xuna=#*%1@fdOP{FtBIeq;s1&@)SJ<3XZR=taZG1uN~Dq61)D}7&uM7oI> zHysV?%R>g?tNi8*Ih|phLES*DClIkmHuzA)PyQJpQoDD0<<)ccP}XT>MBLXcu}<27 zf|v(I8)_<@FMlflwWen?F~5J+tNI^vO8Gt@2f1*qOY>yKH+}i~WtIDV?fQu{)1y1W z9KXsP_R61>znv?d{l>%WULZs5#4kM;Ie9D%6a0D)?G2>)RrtzIm<{#R45xJ@KLICY z^oHcqzjCCY??vl4BI*Z}XgCGWE{uDZMPg zcQ_CKHY1ryhg?i*CR+wk9Cg?A$ljlFm3p94{zW@$bxI3|E9d`Yt(D#uw!UFhW%vwl zwQ`>vWCT<7wxaY%*t<)f8uNazZ%ZSXBrkoRM`B2XcrEvYNWAFmRIysKipPsEcHCci z#pSVj^35L}7e=~}Wv|XYXl)C!77uq_$S^IpCreKjhF(k zT8AJ1$g-_qspQf@f6z%mb#Cj+#lCjts92W1JP|eb#@JY|`}A%6 z@3v5(7yPTiB^`f0*^NS8oFfj>KAdZXndu*&cBF&YO71A z{~n;4w4-bJa^*wloyD(j7BIri5@TOY=eu%T9D1|k7Z3F0ks%=|6;)-KW9OxZpOxEH%V zQJEQLEnvQZ<+7^q`HShf=SDV){tn<1CMa#<=ws9d&2|gP68KTf0E0}Jd!1vQR=n@^ z)uG1WSG2`XhSJKTl<2VTz2D9|7AYwyduGM|9xusADKsGa#m*)14~4b)mmq`J8Xg(O z-}w}3^g{(AkhaW%&*h(O4V#>tZUHnu0re6NS45|$mzQUkP7dF@zKsp++KAk?PP*NsSo=D4msoT1_~yiz_nq?2y?bZHa; z6bV74od?nKP2WC=@{pkAZ}!@ygc*>AEPU`p9Gf0>L2L^JOb7qlPe4nh32GscPyI#+M z6|1VTLzN7QX9XQ)k}5sP|ITP_Nd1dMcYTvSaKWH~*2m$M9?VJm%s z{b!!<%K^}E>vq-=(~i31^z#{9D617oyuuv9D`GO}-~UU@Q&V+5%=|P7p$dqR6JhK| zXZJm z6(}w<(~ssS%HJmA>56n+h)J_g;q@BwRXaWX47FVq4=c>BiH*;`NeSmL9cx>Hdyl42 z3bf^3+n=Ucn6~VRqZeWFC51 zT6SGY>6CSjuO)1sqFOqK1qqll5M18FHY(*+bXMkdMGnq{FbcT2WHIej7>aoa2yiVq zvc%}W&J_vpXV{@;FRq3K`(qNX&~)Us7_LQ|m7EwIWZ^Gba>TXL@K~KN-z-elxnmH3 ze=TRfo!ow(de@8Ps5r>5Xc?VH{mufgH-jdZf;0ctkWD3l9k$xmyqiv?ZDPP`fl&p) zM6YvrfA~!h*vhKqoL2p1HIeEfDH)U*!+_uRwBa4r%$@Ed?BI9 ze}qF|`=P&c?6kg3Ig0Ms_qV#L=snq~{sT%#pV|ITxBHGj6>@WlYL{^ozBWXGO3mrg z&gT|>lsyD3U)bI=9Ghi0*!YfwHRO(F*2xs3ge~rj#z#Mnq!7p}mmvZ{^@S%-*6vdm19h*hJG;lY^T znRxEJE(WA-HeyOGKdoT7ClUE{i~o5_wbq`~T#<0Pu?JCaMzQbRGMFoR0_oK>{p!*# z;_wSs_#f6lz1~FvwLrN*ld0mZSAVPPTwrnjdR4;vMJ%^yrQe38y9gu5eK9R97JE#vX<}Rk3<>_Mgm?CC_ndp)4 z^j`zcKEY)~8oOxos&uqqoo)Wv0eB$r^T>}0=xabwp#|r@9h%=!cjm<;otBrgLUgB( zW4^;)MV-Q>DBUk-xW1hH`JPQkFP{A4Z~Z`Lz+wm(C-OP!h?#bnp%{QTZa3L}ca!sH zW_!~66FFh1fb#)Ov}YUs0Y^Ey$L*K`tXsG0@<%cUV6WCEH}#4?YC>KPjZt3`6aVH< zn)(p76uJ`dEkCxIJlk8*F3t&2*URJ=g!*iyKk<^w3?-gfS-*~!BiB5eKa&zw36N|| z(Q4Dpt)pz}AmkQTce);T51dFI-tyF-|Kyg_h^AAM6Hwa0kR)zvz$k1pY#0PNPUL#W z=E7?7k=R6EL~;HPt{ue&e2e*fsO3aq3xa2@7fHbr)PcP zx;7Ir7G<=+=E7k+2_xPHH0}?-jKH3{!jWx`!#jMbq0dl*In;>`G*4u|A*CZ=$|BAs zfL(f0iJEJ<6P8V&Q8BflizkROpH>pn$$k|6y@hzJBIE=AN57FM9+!&wm`*sRAj=8^ zUlN#nHpSUDq_Q<8t4uzWEAQZlPD}%7+MsE%g@oBmWC(;Knr^n+2xt5_6Mx`#m;gM$ z=FxRWwuR^jhCP!zP=r6Ho*qT(9yW_f&x>M*1dox@u5>2dPCn2A)rDG1q3xO3tkaLf z7aaT=h-5i(nSB!2odDDmLkY4no8ZpQq61Pa#&`s-&<@_JS}HdVt%kHR-eG}kAx;hU z1O#QlANcu)Hk(|%3><;I+xW))RN&dI|1Elsl6A#&!iarC0woL_N14=3B!$1=vvQ6W zPJ8ff0YAfj*1}s6x`kz_2qXluA0aFGF@?DWQHeT6PH=~|angBdXa9klid*0A9KQvT zaRtr^{wYk!3+*f9gyw5Ld&fJwOv7l;aGc??J5TR)RW6V znqD4%&jc2_uyloQ1of~Jaje2TiHgomBHZ%LuizB`Uw+FvA#TS zZ8ejM4-4(`tFyC~A`H%mMYXzNEJ8A|OSgLTurd?}08 z@iQHsRG75RApy=qaHA5|yKh$N?#}V%ugax3HYnzWhA&yoll%J;C=(oa8$+jO5; zh1Hck25$JcO%oe`h}32;5HU$BGMcmzAylIU^}wOWiv>P zmpMfgz@{g_a62i;edP;4!0i3Yx!`h|1(*PB$v)Ursi2Vu=^qXMv{;(bp>4(;3}h%J zN}#pDcQe)Fudr%W{{FF?Bz>9qGQvd}_!Xj7Wt)pvnL$l03m#jagUvjnPA(=6awXt) zU*|&Nuh;zPhvUjwP*3FEpeQp>0?+Kpt9^sMCSU@ZI9vx>CeQZh@eg7mvqX4)e z6|>R>3L>Q3R8W6DQ3l^}k^32Q(E}GAwpYFv1oSerTgag6V}M9p4!$Iip+IsPSWYRM9Ao6v`jmGw~_c2nj_PL-C0ZX zEL^GUf^M8rZJ==JIiWGXy6rc1MXgzCyB^#w?s(wMoi0u`q00sqF$2R0UF`W~4mIG( zNoJVjCv1z4xjT+cHTpIEsAX}@aalWcfFO0MD7LcwBw5*HjLrq|B^TYd#}?gAK5B!T+ga1^21R=*&@rT>rLA2j&y9FS zzI~^2vlQCPsFMg0IEpNF@}5RM`Wt}_TP%5zi!D5=D*ifCL@85E@hDX!znOeK(CDti zdU(?lbXpp1s#8YI3&#bCT(VU>!f0|_Rn3Q8*W?1_*Zqvh}07WL%&NB z*ue%KaKAha>g1z#rY>$_cQc2DOfDY&aX03zEp_#-WuIa9;q@#-4IXsxSw`%eFxcHP z&`A^k>M}STBB%}4H@g!L2^8?F^Hz@!v2!>SQOT93(9=TYnXg?*5uRu}u}|d2P?36H zhvjsutq+pu3yPi%1h~Z;>9l@o*MWUH>8uf+8Kj(k9CvRFy^k}QG!61P-C zhgV_tyvaBZu?GWAT~2UXQc4Ys{vOPBUY$q2ey!`wA*ER9+Px;f^I5azer->cU6REd z+?o54Wc*(|+3#B4^492hhn@weB`zf{f5XXmtXOKYL%*dHrMd9i*L4T%lu!YjWJo2r z`!Ik`8R&_xB|D?caR#&&H+pg{yn z{O#4?z+*@j4c-J{H|Qmll13{nW)Vr1pEzjT-RcdIRsOTBuo90IJU=jg7*~$-NXLj- z_`NUk!bUk3%}s{^dats1i5Qr{05N0Rt_0Av+k{Mi{ox7_+zT8oMhz$lMO$52T-;h- zUYy_9T!K|#)>KODPx&oX>;2;7XKL^5e0-fmO-((J-p-@=6{4Hty?Ou|EX067CqKEu zJA;nyuphZ!7{ApnhjLn3m+PVarHNC&Vz9|XjPC?2$Bz!O6TzM zodW(bWnx&5tvk-$W7kxz*|(9_gO{H++nK9lPU047FB-q$o5EQVascSOk1G#q3s9U% zT^Cp8c#%!VWQFpOIrq@?z`I1eM7wHo(M9K{MsVFm8+VI)8oS2Qf^;$jR*r87eliOt-i->%AO*W*7KTc+=_DBQFYP zzgGFZa*fzHKQ;4Oc;B=350~7W?H#G+5g?t}P`EX46WW{L+0*9htqr;{D?FGsw{dcU zy0FepFLk^9o^~W6J+A^d-m^bxC7N;-O<>c{0sO;8;*;Y68pL+QP{MMi+2B*Fx(KaI^5<4HH{Ovn!f*q-|)s#_v= zme!1{Sid|v3!NpSQ$SI!!biLL#q;AVKf^j24IzQ+L6n=TuXbI*%nW(7o>rdjj1Jg3 z$%gofBZN7xAEe0%wVs!Sxz2aTfyP=grg)*%})(tk-$D+R`Sp79v%Qs^#hx5S=t~Neu>l z1gm-w4eL#xzU?4D5Q!IYH^j4+Z2Mr2;FI8-OA)}_lbtZYh3 zfgKdIAnMf(T4Z^9<7al$Vq*?5uOaI(uhNwX)>X|k_)BKmZR2+kS!G!>g*89b%^BJ% z6e6}b92c`ThqV@4VGNedMynt@BA58vto4ZX360pdJyu5vXP1L@6zK8w+l78_M&(>< z{nc@++hF~*tOlO+Lq*=QeLs|=GS47@WOx3j+W@U*C?tDE`Hi$ z&cZJ%@g*j9_DJH?SHo0p-yPlFvk}l|o1ey&$J-6)NOUlNN+4Yqs}9D)a2&8<;Y{p! z8%GzS(Jgv#T@b|R*0j(n^DmmZXnrS72=p$}(`=s_U*ERvc!@*Iw@?sJtI2y?Y|I#I zTI3%B!m z@ve&T-8lE4B1I3s?O&a|bha|2Cx__N}oS zFX!)td?Qd;lMJYweW0L3T8CAt?5%RcSE_3$Es-u?U!Up8ZfQT^mydT`$wY^bUzo46 zIG@y5zPt+3#mKWFO87V;NECh7*mnq$nGzFxG_B{FLrb*5^M^SpcC!dbyomE3UjN1K zt(#M0I3zN;E#2|W%9=7T;%@ouictD8W_%hhv_tCF6s(f)u|{SR#2fzHXf=hxEQ)`a z&9KN&)A0Di&2}*idrm>b;CQ(vcKfwOMc9C>@tbL&1_R|QEn*8>LJ64p0bSNk#_s;> z_S+i>4o>E0;@$l{ItB*3ey>d(iW*j?OYt#D{`kt!I9-U3oRZU4QZV&oOV3nVI4VJG zTmrd>{gsiD9O~#$hJKsh6SD8adDqRbmV!&S(^i1BPgZs=4*A03N@Yj=%8F#F>YpDG zC>~7tjA8Bi#eD+gauCKOo&lXL;*gQ-kJrSVw$uMU{xx^CYdlepk6>W(jc=8e3a)VHaZ_}1+Jb_s zbr#*^)B-Wt$H2DxOWPdM2aM1Vrn7~E$qx>e#Sq~Mt0)8-E{dNziSBT0dUcK>Z5O}T zw0Qyb9c{XqOa@;zpw%)~HWP8I^{q`8bzxTjrv)T-{@o@2;mBa*y%P?Hh#`JpiXl$r zW8v-XJ-a&;MOcWMyW>izrBPa$wPt$l>-ie4Nl0B{R?NPT!%WwcCsa^bj&xaHOG!=5 z4O8l`-`PjsEUVhaKqvWEwjewnnrW{!N z_a6$?9Ckz{!Z-a|#cDLa`KlW97T_Fh2`Hn9!dd=IzfMkP?`F8q0%s#_Jl(Kl8|TS4VjtL8Vqo#|7XG-I3#U$d>JNy7CqmXlpEI&TU-czAv`kV zQv)14_B8L@!KPu(DB&0ueaf&lju>`Zt(yIhls~zc z)Kbe76K^oN^do-ZJt`Ob$B&;Ph`icfwtljI9@HK#pjNL!yX z#T=1A82{$0H*$TAq@-u@i6)KXmoX*q4Rk~cyzYxEBv)PUTJJYD^(%VlQeJ7)t`$Vu zwOO1zxc5wZ9rc5-=+CcRnYaFD7DaivhssvJ^0H5@e?RYTTi16reVNu0$K;*YpqMkH?CLThfTiH) zMo@lozCD3P{%L}@>B5f*S1hX*|M*GsJM|@LVJ)VDtXO{M)7 zMz)K=)nv=t1Nu39CSZxC)b_{{w@MN&Zutbh4MX)!pB$AJ+f zMgKcLt#*(o51UB6fx!^zyibnHxkMCJSt9M=AYH;otmHJhS^z28TC*MD%>E>gm7((+ za0_(r>-%{Au|eN=gJ&A*GE-9$$(tu&DzoLH|GbC0r(z{13QG~v=di0X?-m7TfS+-+ zSO`eZ{KxV8#oS)ZpQ@{JGjVx^QrM2+XUjk6<%OP#v->Wu(|EhwY)Md*#4ixY?Cp35 zhJ0^lGChH$NOGj+f9(B%O<7j#T0{0~SL*sUFLq6hqVrjWUr6`%C|0cwgY^}?wneuU z)UVQ$=@veBRi?$SKLcp6zG!`>k+sTl)kl{JiOYEsn48F( zj6+V-bN;DQ{LFDM6I*S=d-jJCdMloLvknlMAe+~rS=^a@<&Rbjn7x0L(@DQE{0Voa zi97XEEZ?ti4_!<26&N2kkgCYxiZmh1SoMg}8|-U%lG`6lQS=)T3UD+x-{*RNEO9npgvFxA+cLwk|81Ir!V()2o5e$&&Kv%11;a%`=B3&{+qBtxLht!TZ_SF ze&9YoPhcSTY;LNjK_ftZ4um&fzZFkYEF*$QIN#>#y@T|QVcq5ZQ`r35E0KPLKA-z>WS36kCX1RIm(k5AZ(&r*2#&oD zzI5i9ua#)qMP93GbXcGr$pE)UFzu(jAPN|!I!3^Hc7v$c72i?D*+qdzxxoEDl&b!; zyTPnMnFF&pFYz-%zgQ{lAnVS!(-Qc%Waz90U7lZZ+rL*RZDMVC?Vsq@o2baYmB7t{ z$3jhLzX!qJ3#Tog1N@Aw`z^1y*jRCQt@Xu40e1F3qIE_uKF8aI`wq;RLalW*U3=Gs z5|!DUfq{YVP`A(I%G~PQ+Pn}yH-D?sCG;Y76BPXXc_>hgYI=0^dV3~uez6~I7^g>^ zkc%y(PbFK9EZVlViiGLc2S+sTyJZ;pVax@(54n^J$S!MKIqKn~;0Eb<%Z@NPy|16S zpaq(~yHp3qp1)V(q$V6Y)fCuQBrRh!6~pGYTiV^73jcD^_7h{lB7}CFdQjTNta#%0 zIpQ`^CdQcCy0KtNbk|5SaPZBr-5C_Ue>mLsmN;S9Vr}`%v72ga>qwB0A=ICbXm*)C zA_+1WxBs^1Dr^a$&Ob}_c5(4gU%gszUtUiUw!v7&5I1ZTi4>|2}du01y#iju~9uhSoaOtUE5CIm@o zb->8gDn{(XB8o@Gq6G|Zg5kBhEv~BaX9t?`Wv-S*Hw-J||126-GU><{fJRM`a zt+;Sq3-Ao$?Yta;EvzeS95dioL2uRAn{@s2NFDP{Pq2Ul`}3%zU7ZEW&SG#cs4vYc zP@hRIzsJU*(iBBb8s(6&-4O=s@%+6HSILE#{4{R(w{shdO#lWK6cVXxx!pM;J+yE` zP1GqHMMpfybYZ0EyNt00nD%^wbj3ETgLAoh6$xEQz)!~UlzbZA>X-w<6n){zC+o>M zR!__TN+Q55FTo|LN9zglNmG{x~)@{wzXvbELW9N=r!RyOmIbSH$ zebTN~tNj+|6rcwmK;eIW1I3|8Y{H=Gc(1$s_pfiXd#tU4+_s*;1%zJ9Zi0u*hE2z6 z1uu6=)NmtYt=AcwudIdfNZ38Q*%|%^Oh&%v^&?^NqK^=#j=Kgq@|P27mqnIVzkh{s zn5c0>=+_}1A)+@?J^7iL+8qzM)k{V$@2{8`6Lr^9_?Fl3#qXI}jy(jWHsp1MM#zgJ z?ie81e{*M{u76DwWyGJxh+uR}maT9zzCi5Hj_4J9rB!fB+xY1Yei;M_7LMvknRh2KZe%6H~xbwetZF5!}Uu&qr;`LE)m zHKt=ruRCx3wfotv0Lmj%5`_c0-j2~d-aX{|oHDuuuB|P*-F~NI(Qb2o@AltSio~SY zZ0#ZVlAoKKnVD4@($C5DU2sPfxF|yIVQdt~;tEk=DAp zuA0|!QT)eNYG~9Ab#?H3&_pMqC32d2(?VnV{yIiW;ZkV)XrHW=} zZj#-|N%Kp6j0R7)5322vmD9i}dSyWj?fR$QSgllQ7lEw~rsTCH?`endc|GK^t?N&}57f+)sWOx~LD4j9NOrdqCS z$*f?HfzGJGG&RrE1IEbwkLZZ;A)WZzEdsXr?vl+g^7sZTB+Ql2?V2W%7v;y$@?_)?D+8tl^)#88yNbt|~li?4ghjC!9UyP=p zBlJ>d#HF4!w&K|4rS zICrFTTVg-B<6LVEyG}2z{ysTv-qxI7Y7GYP9c{fvi};Pnf$<-kpdO*3Q3*s$bWHR- zm*Gm$rz`&~jBlUI%Lb=vG>4(BqT5NqdQPu~cU=lRcF;Bja28i&seyUUhVvO78a5s* zFB#OjB3s*D;Kn$nCMLt~{Yq0pkUns;UA{lv7Bco1R+n2_Mvr?S9|OP0z9S|>QU^8s z=u_%9C*I420*gixhMxEUq2i%f((;f#>>c+!+_Jl7obM8ES0t#>)6jP{DwPI!%T{C? zv|Ia+4+XHp!fV_m{za~3of5ixyY)w@*fiHpC~1|e91JPEA!E&Gccq&l>RPHZwz}w` ze|3}AMOIF^h2{9XLJ;?$on`8{m!)x{)m`naOr{%vGy}!DuRv@*Vx+czr0?+LIPs-j z1@-EESo9!|=Zo-fXw_*=pB_@C%QPkInVk1VIB2Jv{G?IR#L@l-={ueT?40o)Uk+ z*c|QelO(b=FL?z8vex6a0+HYKrKJZ|)pdULpF5JiENWJE)-*dfzON5NVn9RE3QML_ zxKvdB*S%j=EH9=HTrIY1Qd8x2W{#9gtBuso$nCYI!6;v{#&%n_$(X+ z=2)w8i<`JN+;itf=SZ586e44kI}-2B>x?`RDC&acf^grqO&wzLM0{9Omex-`Gj_kkJM7{UfVsqn=VLQ;TVRdnWrE=_f69q}AATKmDE@R&(!@Z}+T8Rp zG1BTJ>Z7vYp9>gzOlQ>T2jd^*C&tcN0(iBH;gG-oz9dXkHQk# zrbr203dFqi<}IZDPYa;Dlor^7?!9dkIJ9XqV&Wjxpk|9gxKN#;fMNB(ly|#qKVWuq2Lk1&hoo3eTsB>XqH~| zPL=uXuUSh`eQuBi0c?v@=v2PR|37j!eQA&`%8w}KU);f;9O0b=%l;ZlnKUGqe!;l< zwLITv^>9kbS2tsPQp?bMa8)SO5>2LIQt99bl6D}1Xkt~cHTUuA=V67E4e^P-s&_M~*NAUKW6l+kcVds8LjyacW#1`Nca`ceGu)g+Mn=i1RUxJS)-;^f zR)Ouj^@B}{JwqoR*X<=QomaTE*Y>~FB6C}yl!8!@I!UQg%HKui=%p!@m=!6@t|_|w z2-!l2@~;M1TQj1QkCM)!JDKET1w+ws5aPpR?#h_@XbglL+dg8^zh+N z4Hsx%;C``o{*>}b`@#A@vxj7YJ~WPye^4ytHAVV2EQiYo9M_JTQkD9c7VRN%!A5p* z0hJMCW9A;Hbf9I6m`+>2@55^%F(@J;ezXnoTm^&!h>4IgNlKhOUJg*y+Soo!#=cab zMcW48uMhD_Ykvjzl9Nr{CbARLDc)uDqFu(Hsz>Uq5!?EHlC77l{*8V%OdM|J?jfaC z2K_CXzm(Qlj@iDSCXMaqt#fxxdLiXlg~AOh0%}~H!)`RI6kgrd@`?HOd?dj? zSUHX0ab%deF0^dXtoog`-Yu}Z#QMS9RnP50+$eC~L2;E8sTvh% z-bvR7_yFq4?er%bK0gSU{L&)sZ~Kt6;sx&Fz@k~+(l%@-%*qg&-BhLv={uQ1?{A_? zc8~}M0>8`{vFU{KCk(WGy^%TOZ5L#D!g_g>VcwHjCN_@!zE(W-)xUVKy$~okj2ie@ zXa5bo3~KH#uDXe;hbGByZf=^C59#mLw%YNtCB?~*&{&6ZKRWQY);ZamqRol8Pcl&2 zHZ)xsVDe->w}fcTb|T25LLW-04zB%T&tL{;Pk*gDh!HIda{b4FbZ= za4SKsZN3(>O)3t2uay!jo7V({-P#uW>D|cB<2Kx@vnGJA;FrJ%dXQ}%K9N46G^cpe z<=Eh!n6%kxxQS#?eDB4{Tkf{FeoWtD7M4KRzPv)~h6-)Dn1Z85n4n_$Oe3OW&Tp23 zj=|m53WMlsi;p|a)BAt0S#pc-XSZ$gxkVKp-6FuR?fi~r^1z>O`OSv+u-u00{uft- zgh#UNxqLLmZWza8j3~)vW4V^IIdU?MVbZ81Ik08|NTt8sho>uLwUqX5ezZ{k>`Sz} z^MO>qq4P?-@x&#`sp#dBBv6r8r?EC!o$tpV^a|)bzWzb1Zqf>sqUS~tag^K z#ePAl@R|{aok8p*ad6JT8PrJfY=sc+9=q%Kz1;u;JMq8~?@s#zrS&0pys?8KoXcG+ zj4HskeKxrYt8<<9(3K?2MhcKEc50DtZbdu(GY z$ei=!8^kjmSK#`ci9{G?J|1SK4UaZilO5xL{F^j2E_u*8_&{{E82?FI^`KMoA~GJJ z)9!BLtM~8E-?pXUlO)dcU$V-GtzJ!!4^ta04%PQNB1E5=ib)Fp9%2DV5_56AnLQPM z+$9gwLKIVf{n7r9=&UMn?{>gL)AWTSlkLmlx_pLIdz(|5kS1u$F=DFgHTi0%%;{R# zDV7g5n2FS1{%J&a5;YG|Q_De^&R7x(57~c`(G(LO^>>GWT(D!w5J5|(uPvXLr;_WyOJ&r-FA$xwx%2NTaqWln_pN53acMLxSL&t^ejab3e1bAnjpR zXhW_Ym*cRK``ua;5SwxETt!&oV(RPVQ#G>y-8ekxBx;e&)6x)Z2^_Y2^!T|tvcDft zZ#=i$%*y32_DU4H;5L~_M~h+`^+TNC;x2(lHH@HcDBfd5pf+XHq%0vM(e=!ds*z*b zzE;WzTgxZ>On&E(lRP?zNs)&q9b1`2!}Td{o%bZv+(9;%9{7_(%ky)~P)ylOD}v^rEkVbUy;xP1U3RN;YC+1B<)wPxb~i%Kx}_dr9lXRs zrDA5rGAUH~&;Wmxp~KJZ=rjW+4e5+eA(Qskb5Q3LFUG1`Lyq%o6e#pR*(bI<0 z=c%oH9_rO&8FF&tA2>mqJLXHV@;@Nr79m@`H|VQ3j3uGP$U{8cO1i_qI0Wz)ySKy; zic8xND7nn6vN*i8C(Np4OB4_t4m_;na@eKudk1?HAHmJ@67xn>*?Nv3sSD-7O{C&U5Rjq z`svEXH7J!q8V&>^=D=+Y$tI=~Yt$(dx#CK=DW9dYeH?7UEByq(bO-=tr-Kst`-L@* zIz36~WaOL2%KLC6E!71--h`_a4e|H%QsQ->Ls;zBO@>`&)jZ}al<8(s2)_)t)Uyu4 z{q1lkKKI1vi^y0kaqs&>E{M$)Q{8A@0e+NEKkty3s@?s^JU(IkdpI{qdMVxKrpO&U z@+Sk%IV3MdVX_yNn>d0ckSpnPvl9U_vE5>^3Y)){c~xxq?VPQ(%xY-EX7HH47dJz@ zQ-!KIQqC)y^MkkAKl5*SM|uA&pn23aTnh#bX|J?7psMNWC}7`{^}X+^&+T>hjvcq; zD4;N#tGBYV&DYCHODoW53yQ>rs*=Xf;RAO_(BKFuIbgNjA;y~^@d~A?2x!U6IKkEp zTLd-->Bm#X3rOc~LGyk~YDpmI{AY~8h$-QCZJL>ewWj!B%L(R+_Yn${Q!@c)4*dBQ zMC>jjnQQj0H4?(_uj>5deYTG?H^ zj0pC%Pv^|#JDnIKI`WDavcU|M7~V4vEq~&gpxQ4)5>#sLRox_Z5wP4LhmWk}FNFWy z91%(qE))6J+z~Z0HlrR+>Tgq#`Lmw}w9kUoKG$BpR-)9USb;-^cUC}3$^!Sas+bC% ztvuQe=6Wu)ie1*lCFl8LG#lF?;G^}}Y+@*9dYTJ5efgL_3DF}buRK#sx_;Q)z+T;A z6kTdDD&?AXp>CH9;(YCVNl~1`;kI4F-ZWVG>tN2XLWtc>F*#(Z4nwHDd})5 zObYl{!^bE`+}Kp%lwOdtGn)9#-j;|Mx=8NHb(Y4KWlKl@!W@N>aT(eFZ_7k-Qg0dxIy zen<}@|H(ouU6RS(XIwW|CtpX&6h{tVu7r%^!L19*Tes0cM<5H!g9~J=V8Tane!inm zFP7rVrQx@dzBaIiWcmmKZ}!xuM*XE7cthnYJmNV7OuzfWh=6}$I|`we@MX#Z>%o5# zk_CypoEMNaYd!E*_&|-J16XN4|7sd^EL%HbxAKPh0=Ygd$&eH$M_3*Btkx6QV%2b z^>6T9e^+XET2#c(vr0+Tl=qh%mN#936hKYHBMck*rC@MHX^$ZwnXa zFE>CQZ&BY9wo@Z3kX-vTMJojHz(90q#aeE)l)-E}f9tkQwP+)fIIDV8EHEYHAP&0} zX8zF?WPr_>jUzmairlz(Fm=fe|8dH0);`kk&Lkevd%8i?uIc-m6H-!9uuMqH<4qhG z4|;qE!Pi~&@Cx;=G-&x@JHGJz z(~ds1x;-TvnFJ6dE4D?Htda=|4F*;k{YsaQv8WyA1V=r)IY9$}f22+=tDljZS>roJ zkYV>B+UM)|k;rjl?8^h6?t@iC1dI4+xaHUrX9OFS?5U**ws$8Xp0Q)~yEhJU!sn`i zhc~Dt_zHCMpUNCX1}`)&u&njoLlx6T(!9NcWL$b8=lwI)&T2lDp_q77vZPr?tG4w4 zhhHISLlo-EJBhe*O4vus<1TR|3T+NoUkS?yK1x&GiS#}-yLuPivSd8XG9Khkh$4Nu zGEZYNV4$4EoubV8y69Te<-5;HKa6jdPCiZO4$mY*aL4a6T=RT%T_(kVrhYsyC>c<4Sqv^Xi)Yr?*u)MKl>hf*?d#qRT%uKia znt$LXYQ1-S9vvu+7PD&_&t8c#J?Sk}Ct|&nW6RMs{sl?#$kXESTL9((p>bn*^kguv zf&q)z`Yu*Lyhr%BgN7(_<;0S27Nip6blmBP`9zB@#P?i$4xKd&WftHqnM!M%&&AnE z9RU<5cAJ@BbTmJil+Wbtq>kQyw-_{Xf~hj%h_T19)nh{p4K47Uz2oSA(w^AeiHa9g zo**UK4k18!w^n>+hvVtQav{tL_;_({*e2Q`lnrT=+(Zh6zO2Kwy zlObduN0K8ivN)ipUo*W-+Ajt0r1nl-vBq!ojkvs}!f7wv(R7FL@0Y`|QYb$KjVD0P zkYW=t%(-(8?rA+RxFazbv-@+1gC~(yf3cam#2QVrgads|Oa)Evr>qmf#)SRq`?;b9 zA)RCeCmyT`cx0B~M;M_ajrV!?Y%lgJovpUdsC1r<)qAM?UujiueS?^=t1VEF$HGhw za`GextHLe*0UWEx4;0)3nkXj{?qvJOH1X@o)i*ujGnM=({rb_A&aty3ruqeoY-IO6Po_KAVaOuk1~`l=!YGx{U*xOJ+a$EGh{) ze8aQ$z!KyS_*QdW!5jf1>)S@UxifS9&qsF@kF%E+?Fq-mHVRU)T9C>BqB;D;bEDdO z>PlamB~g`falfdiSyodv3e(t8SqKL*X8caRbUNLdxIRsUrByAdtsqG4jt4~qC}a|D zcsfJmt;A~Bfnt1IBSpKoYR#P1yt6f=Af0<0&5&h@$x04FwV~ARTC0Ng!SeEY_$Sg~ zfLR}8qs7|C@*9O)$=dwhp}>;kWhO`4gt@R)S;JtH#JH6J5{HtO1pw?E&I{1r@TGC_ zl;N%m2RY64p76@o@T}ka6{Vj1VFUf{Rmh8{H;5ja7jBf-)z#u2agSz75HiUBRvL-0CDL3trL<}{Ow8fnW#Ums+mvG7(-HP%rWl>P0 zUj?ThcgLuJ1O2zX94rmUPCPwFor1rrSSl zNvX#5Fugnf2=MWHIoCb4^(mCN!!^nTofu?(f})~gFHD0%ZJz3dxpXWSGW zI5)*>z34{*+>q9^-Ggw_by1-lPXweBYPt8-7uZkBfh9dIgh!*IF}@w8fRukD-u3kq z?ix+(j6ZZKrzkz7g?UTCxYSJRkh07ZrLVIB9shpvV0hQ63AU1J?%2kaWopugr@BS7 zu`HPjCxo~C4%}^JoPro~?{DS+oBb?Fs2Hc>qwD1dcE0q?c^HD@E|*)BMP5mNupU9& zTK^7fQF>J2PhWh92{6%7UAM_RGF@_IDnC2vHSMPaafQL`qlk~stL9uHc-z`m9SXMm zU>(+7GMzOTQPbdQKZ7cTsBxDK>nrtD$F(iTB*Cq^U)0p1(U14^qNkFgGIZIRsC1OS zOoC8Wz^`R-$UD)v-q>i4v;12k+brFis{RYy6B7L;M#1E;!`3k{T9Jn^5XuIL_+qR! z9EN@(^Zb{~@u6qrYOXrjZ}a6-;F~LxQFjak%z8-$3Z4avDB!AcJCat9DXg>L1yo%r zRYYzD!+|oJ7nr%?lTIs`)4>>A_Q$^)1y-|?sO$ayoD&!+{E6JBav&9F+**eW3eF33 z6Vxrcuw)hGLwcHy|H|d5S}M;8IEZh!rOIM6*URUXiG$l z*+k&pAl?Rp!Lzd*auP4aym^4Ey*!xq3;~5I$pKlB(`dQM#(C}1@Mb9R1Pv2YVqnM? zogtieo@Ou017AH=YaWK+D!r}4bc`93r%9MM01Y~-ThgBpjL#*MCel?IXzyp=ZfM6n zOO@c4T#*W zf%<;oQ!y&q({HTSd<;WqZh}e6T7U(=dX>2wF?w3?-%JpDAB;+Ux9pIu`m)`+D1DF> z-Kb1InD|j?ii4p?WS4Q`#X-A_>lF)0?b1-IkO*>gZ!k2zBBy;M#}ZYBZH4doSpXs z4rSHR{J%vU-qd9gB%4?a~3q{OJ0w;lvQSb z81wXQv*SC;5WY!}Ic?DUGU_g6@7|0!I{(piGo91Fig5a! z-^=1HZob;pli?LpdHnpTfPe3;v~B^PILlCn_eVRH7c_gzb2EgTRp_&DYWe;`HwlX< z{bJoDldS1p{)9s$nueF~OU+slUmuhsy8>iISmRKupR*iHAN`$4M&al3`4KMt+p{D! zO6#`wSC5Y^DWL`itB?N*?$)Zwd&g%Qc0g11l3B*PUM+0MGF(54^E>J^ zo$XI@^S*|C*FOikKKZ(8W==hoJs0Twtoevo8FNx>y9f)Ekmr~xkWzOYE2uHQ;}9j`f6 z?1sdJ2C@=}XFGDFbs4{;7h*~yblDT#bo2lHD@&7bC!t1a%fms#hhv|t@r`xPTXuhL z=n@EuJ|BPC>SbP!wl#j`1ass&Fo$fgqBdl(NLH#~u4@{Y*5LZTe@BR-aUzh6hn z9rwj|+_~W5ja}~DZvnKKpgyNB$(s$SR^d5b&agDTzuMNo`C87m`|t*?qv7Gs)EDmV7Fgs>lSiy5P%sAe0l z*K~tzEHt`cqmz&AiOhKuwi955;-68!7IJmuq`6wkT)w=}9hF5*l}jaYEREH;(d15y zNQgXFe=~7g?VaRxKsa^+XQ*f!CAJ8qo&USw7#4~MQ^M8s* z*ZNsB>VDx^JB2;C%2hxLK|R*uV} z8(At>Im;r%LcD#K`9ZNuN!5O`!fmPCvgL*rG)qI5S|8>d=}>|0Izol*DhkJU3$z~< z*)|vYiLDd{w7rkW2HoqcjP+EPTlW=*I>jx zoYy|UWp;L!2LyeM+uoj;i92?S`N}CkNr|ume79awAHdslq1zY|=IrCC+uZUJ4R{&j zD?w>&5*={0ng3Rwi>+?@#t|d4yphmWAMu>mPve^aO`F*+opn^p(D?0_x#c-V%*>fM zrEcP|am6pCIUgv5&>CukN{}Gcjti)YP32L+FUCC!{WzkPx`td8Dw^w=UM_Ag7$Lz9gd?Xh{XrAemjO|(ZV44jgDgjTXp4MIVfIm(IUkP2^ z8E#_94Vty+k$~4nzYE7>Hk;fHKLu%Dynh4V%@f&DOv9C2+Tl-|&(QGj6CR3R(Zkd; zeW!%vjcuAgSRMHNj@cuQW^CL4Y6uYyo>0dDHfkPNeb{H#h4} z5cEq0;o{<|wc|V1{nWMX$N9+Z(S1?ai7{kgu(Gn!=Ib-aiHL~!eHu~(QlM*2u^j-+ z{W{tFKwTz$Ls!CS-S4z=hPy%#7>m#I35f^yRhcBn+sbavCHl+s{v2m(Pz5(M>2h_5 z=vs^y%g@BvBO??G`DVpvz|uwkFPoUr5waRbNew$vD9%peZ6j-vSwc8vOiPr8q|XQu zhRgm*?NvFH&#{T`labUyz4HBaPBV4c=Qi(%mEe-T89KPE<}bHQF$w=ZYHz85Z>hx2 zh-`(Oot^dd_4)ZyYm1Ey4MGh0`Z#^XMMVsZ3`0Xhva+%XPGV_}+=uTr>l|=S{vIHW zd$KA^8~M$YiOnylz8%Ll#&b0!h-&3d3axOb&!pXU85|O`Z>;WlnAl)HJdoRDIkPXf z!DTHfOyI$k7|YfAbVEG1Sr_PH$TdlXmxviQz#<-W`lox9w(y?`CUNYPZZCTHCU&|J z+N5y9XL@!rBhUBabAaBR6G08jylMIC)nr}4xk&{C>J?M8gYhKtZtb-i(`+`NTdu z@S}-D{gu~YY8%qcfiBmvB2uNWriDqc3lnx)E1taDp zmAEg^eNZ#gBw?uk+_H2+!imnG=7mK2(>*blP$AM%GkO%deoU_0hl5y8EeS>2Vqg|; zo83ayTSbcW^^9%$^RKcdo9%5O4Q%-UxON2Lugy0W?D=GX>yA3d%AdsVS*(H=XWaSV z3HhHzwRx&4SY8uj8808!@H`vF`pTt}VP6+-9-}Z_DVbWl-V`AQ=Og?XZ}cGUz<3@c zLv3Jqe*RvBz7DnY&spY`PkX?)Qo^%K)}rZ{+Fw+4`Q;}bY|tfq`k_{YJIUIyoX%~5 zbFHRGc9=jqqIE6dP+Jj!vb?%mTjPADO;0n}mhM|KoN_vpgpR#D|FiZri9vp^nA1j1 zH~U9CZ-(4m$DY^UjCcN@3AWI1$CEza<`=j=9HvaX&z(^JUi769xWl>}$CZXNkJ9c= zaVd?eo@XY)+lQ?Vw!-8oYJ-#A%ual?aAosrxJ1B8B*sO^A~3rcU33i()wac)r7gA7(gvN%`R@pDkI} z7X9SoFaiq|$Lb| zguY6FsK!CDR??<>oMwvBaj7{Zqd%wpXR;|fnKZ^M1?Ts=@Y_7H_|&^gf^Jh{ z89Ppn%sCY{*ZF!x#OKK`*(jmo_U~F0%=QV8lbt_5@qQjVR&}|tJ?jTYnK+>MmfME4 z6nztMddK5=YYFFyR6yNUTFo%K75~e8?4;f98jf_xL|8l-W}@ApQ-9;~;U#?%fbbc( zx-WUxHI}CoV4pewT48`|E!gNOy8~ zE!ZtfQ;;zRsw`go@fEHI8lttlABbmg2-%xtQQ3+5gf~jhAIJXZIOd0;i#poDJJPY5 z&uLK;Nvm$_uM?sc{M?N{2&-M`>R-^ho+~f&Y39FLWpZunxHD4H-_>k(iv&`0IEbCpfK0;kvpp?10(d_1b zd-%%RGf~IuPFMcT6%#p&&`#(k6XCv5BmA$(*#O&9=LklXwBPv%xx2oXL-))_g1ZoD z(nLmNnOu&Ka+$+xeupO}F+(4FL1#{wB{RaIM7*=7Ki#gQIMIqQx1H_7zaLQNF#E6a z5UgZtl`6h#`43~F*CSI4LeYD~S>%SOf9hmK9|%qG&Z_>xRVQOK*YcCN+_PD|(ECR}tfFgDs8224u+Et%T989R=kH z1`+vqiB_IZQ#G7WJUc7tHZD%aTNAdgnfj<7VtCrl!9wR^gdn8qU}j3uEPA#Jn*5{IsvjzW7J|UFr*lGjFcVdhlXh zi4h>|V9PR&`tv`%L>rR@bpD3a!3`?aZal)lyAg>YZ5SV#ZJm0O**ZWA^vH1NlboDTzgXrCs5>Ta3fI9l*g98E!) zxsUijM2V@MN3(ErJ(yddx*G(82Hibsm9|L-giOG%64|=AI6J?wOxv59;QbP)qsMHi z>Fpn*EnvVOk%C&MPf7bS_Ak!sn?dUgOQEZ)Q9GX6b^ABMz5D&uIpxRk* z#KlhE)#mJq?j|EnU%o(D!g`{Ul^lQMibasL7f5sRZZiR#2j`~d@aRv)R<+6S89?@9 zqGeWKQ@vp!%e-?3inwh_k;xKkAsq^40W(CHx)KUV{pYt-;V1UUk;3lU61s4Sy}G0Y z#24&OLW-t{kmPXC&T zb?+EU@9~p`rPXw>3)|zJZt?eYWfv!KB5w(G_D(|N+*)UNzgymw`|hEm7)g?(?{_=I*X~L8kV!z%tf{{I_d-N1EfO0 zN7Q7^D3lTPeO?Y`?pT2kzX?p`Dk;W}xJbGDA>Es>@wPjaY}wKx#dODf%|U}XFMh~p z+lYrC7sd4e`mpZEc^9cLQcH&dJ5=qv>bA(&u@D!^Bp_8^L<06>N7WQ=5JUE!($<1Y z9Ys$kH7D;fogRi?FqX@MOP_4$E&UKxsUiQH!&i#o1P_lp1BJ?mNAa zk)x9LCe6*w(J?W7GpstzB??}dw-pFn9(q<{>CTd@wnKi^J*fOcr^~KQ8@Zr4N9HTJ??)UTab2y5N zgh+^o&sE~XIIrLo1~cEWDCuaX%z?=Y-m{>zWykbaZmY3b#e;_BVj5F4d&fK51xcZ@ zW}9nvkM+*FuHm7-uWQA_V1Q-1_rK?Ssut*9IZ!t{fGw*V%WyG2KWtO`Q z*KBeFT+uF;rE7%OT=-OQJS{7EM-(1XJImW+Q|vW+ES3{F(N#6(WZbD&L}ja`qd<$2 zTh5_PnOnT}Zd`Os?>n$RX`d53DZM6YVC3!6;&J)KyXLLz>i98$b-(bc!p&_Qes!$f z*XQAUT~t74xZRZcF8Ylk&W|l5^aE98WeN$Pmy63s%NVYQVE+2TTk9Jmt;VGjR3A|m zxjCLS8oA2pugu((f+2o?Wf?(u@-_*1((WDtUF!dr3s4wwtIG9H=6L}!bY3QZ1*K* zIz_qq7X*EhfDTZ6JpC_F1CViH=BK16^~-mDc4bARxw|{0@oW>6Q&qd!0*9jp6ov_1 zZEby(^BoRELN{17C}vkUDfX^qUB3;8XnD4KdP_>*RVD^8iN+&p(bhRrExsX1 z@)2)D{r%b$nV?oxA$sJ>q!7OUJrIpH{(IVKwcux1`PLT|9V1woSP(tYNA!{&sCrTo z-Ae@?F5g9oI7i5W46n9yj@CPWc#i>y@pU+DLWkDq1Zdu7L|B_SnL0VC#)cusM#V(D zyr5q5a?fZz^y?62eA&sq6}Lt!CeT!cc#rfiAIA}2@^a)(jLD!|2jg9Vv|D=)bV@DB zgY#FYezzx?Q>Go-GZ(uewy|@aX`k&m=aAypR3_?jZud7QES<90PdzLC!2i6CU}^!H z7jT6uQ!tV}vAGVl1V9tzxeKov8Fa@Ft1e%VUQ%)G9Bg*I-4IhCje)#91EPxw^=R!2 zV6zNnRg64QgnBm$SHCxJo4Yh5ShW@ZsyTkNfj@S*f+0Jw7-3ftxSkRUG73rz1|QW` zx`LDw+*6jG?(Pc)Ya1IY3kxe64`p|OwlbP7ru`4mRmdbcvwYQDKkh-VL3e9TkA&4P_WdN zjc=xeGvK=fAJcEE?!|V{cv5UzvP-^+Wt7$_jIA2zIb?&c-HJSoikabRxzCjR1qVGd zg@}}rl9ZgBg2D#KlXf1 zC)hF=zd5I>B9k*dm}0U}mf`%_ECV?YF&37LDd$6d7+^?WyWy^zNXkn^QSE1E;7RGD z{KJ>X7LGBw%3c+jCpMLEn%_}h2 znql_Gn?Z+ZUH9+CJDVR6?W7Es)1a@*93iU@#ypY#OlO06--AYWz*KAOUK{+H#z=&Dt>&xb7q8-Ha_DP761;OuV# zg!E#>#mBAO4)vrKMZcehdk995T`L+|^`{4!U8dX~)m=!Q^$x9uS*wLz-wgU#pIR@_ z+%z)9QD(K1y5m_Z&T{o1p`*l_BAjCVgJVWO8R||y&hb%od&6Kw5HCiV&-smzfAn2a$ zWI(9tR!0NSnC59P$lYTC&)PMag^}}Y)z%K~<^jbls*UvMcW3wPf`==ETZ>veK+_`W znrLeQ;%ntF_B2c+iXEZ9H=o7?uv(gv*^FdUZ>bYi`NnfNsy67!7 z-jVEKm8Y3KwkTT84Lb$FR=7{w4Bly5ye3`kYB`v)UhPZxbefuG;9sETs# zw3o~fiynq|7tcem*y1E=pTdc0>ElZ?*XP+;*{1J0X>#z6<(G#+bO%TH35~NaCy6_M zvXs(e$7G+CR4uk8S@LX`6vReS^CKAlJoScD^p*_r-8R*_$;?kRo8T%nn9zmW*emP7 znkl>rP|`NDqM>J%_doL%N?Utj?en3@SIMm9&6dlBm*xg2$9&H$hvkEuV-g+n20x06 zrf8(p@C{uPT#V%sA4pqL0)?&tfxE|IL@CTc+J z19fE6LyyR~8}EtZl~5bUG-M1j#L1vaa4H4aWs zv5u=ugrRIBNm+J=d@=AAJq1umfZ)D_b3h~{F*NvB7_SWntaohMAg(Gx7BJ2 z$Es>7cGkb42_XVkkIoT@_IGbO$mgFxon+a1-$v=n~xbqJ2l@zBH zM|5;4)`BJ+s#kctX$xZ8-_C!mOHOFuGsWxd5pp*&sN@>9B3&j;1$QtCW}qx(NUU0) zyt^$e>K5VK4LH&oDlWN6oHhPf|e=)3G>;SW$cdLl~hzmQH%pF8VXkRRDsZE42SNNKD!jzfblM5r!_CG z2Xsp)qlWbDS`Gc=K&KgKEb#|&IJ9W;`V<&CCexm#?k536P09>d54Luhr~6cqZZ*I2 zw#6a+ph|&rRyz$n@!${@y<(!?jD@Z(qQFCaV1}R>VEDSJ{`+;^1mSMx%Lkf5QWpxM zt{b#=FRtH7-{`kFy^RzuZTk-SD&+m*I`eo3U2n*xOusz{KH zs_t@5qvz%iZdE6C(XS95*815u@W8$xLtJuTAxXA50A62iy|krVgeN(%StFo5R7@;= z=ac13B=*dj?38uZO?GlQ-4hJxJ)R}C?(z2pipC!O`5Uj+;#=qP`MPX=wjS!#FjO~g zUvrkZ?79n_aZYw&mV_FBs~B&!j_b68$tO+sy@WIR1_8~xMdnm`P~Y4rpUVB^6w`5n zan_{@Un}$HdYQZof^Y}PHA|dz2{xxAvmf__9@cr-OJ&oOCK~ct0*H5qZV>8Epl&>( z+yXG-`DJTw{YeEsIrX9=zqi;hSV%9@`}{!JkCrVpA)o160YO)P{SSg4shi#=x}iHc3jrVl|VaLOvH3V6^hI#C#3Q z={JNpiz_G#^pq|-$hddDZJ)=@xFPkHDTI7lAeEU^0|`mc%eO1o@(Zr@>7Q~5jOw<_ zPNyuNtbg$a;w3hG)TrT-h#Kh9WS;_wI9K~XJ@*E%ir@j(AYC#}t7TR!73ZBTA=a9j zZ=C3emcmVlmLL8^eWKzE_@JR!(oWwtfAVyCojz+x z?QU}~^Egkl%l5NndX7Tr{DWo{JF>R_1QC&FF#juwLfP`VkoL~&B_hrF0)gSSCioux z+2$RKK6@#Ww7_?zuMw|z@AtCJz~+bY-X(5LWlb;@#Fn+|6(2_4XL)_(G)y_6h>sP(hYV~g+;{~| z`*yafEwowz_S(Pm_FrxjHU9`t{KKV{NA8=OT9Zwx{I1RT-aEKV!cOx+pYouo=x~-Z za(ZrMQcQN2XI#KWs{Ou9-hYvs(jMuAsbW-JmJZomXzA@*KL*XzXJJ*y5)W zHQHlJW2LCD5}~S{Emkrbzu8L(`|ivtO@WQFu~LDEz@1$sAla#FIQhc+6}{kS#U)Z2 zVwNor(b|_Na>mIX0a_+qk%tNf=6lo$6ulc2ySlqHJ4Q)dd3i3h4uUMz?iy|mO@EnW z(?@&(X()A&YOP8HAEk{>;njuc-6gk&Uz8{-Q=7nCSJ5Az*z1W$MB1eJR`FKO9qps) z$W%#g6Q6=QqG6)1pDkSre^kR>I|#03 ze1-uC+nf2KJ0m?yU$!u>)GVx`BZ9YX!>jT6$9R~2cUv}ul~B=x(1I+_N%kx_60%d~ zxl(Pw)BWN|P_Ag*xAm64#;I4H1uJ#`FBjm0hU=3K49H9w)77aM!k{!r64_ALpf}Q7 z-4oChp0V;Q`YoaeRH%wDNc!>oS>w0f%T-*0R8e|pv-bO=HzR3v1=|TS)s%#H>2+x* zC~m$(cGH)hxdl>KI3HwC6tX8!mbBh|<4^31l-knlkMaz}3sW;%&TmZRQlDg4dA$Y4 z|H2BVYa<8$s?(y%FwttVLA1EZE|}yZVtupmX7`f_aAw6&iaKBMo?4x^PN?6eMZ*Ea zB<7CGY^M~*-yRk?-RV0p#-7rObvV_-Sa>iVl(j4<#ulz~ zSlYlJFHvG3bg0I&<+CQ01KR}S%%px)8p;|UgZ0dwkktLvsXzn?ScgO8m76@^?~hq5)BLCyzJI^j zJZ(HXXk2)gBaJB{tFII^so$!XKO&PBcFu^Wb~${jz3BU@gmsTlCFv1He9J|47;Y0o z-HpgE?=KwqYWw@O5PKN;_L}d~@;w%V{2am-j%4HOwXfT7PChyCUD8I+$*N&S4GG6q zkc_rux_WQ~T}J1>Pt^K2@me&IXiu)h<V6O z#`T)2cEP&$5EJYESqYtYqOzkS0&UneA0X&-G`ooQdAq-aW+K8nEddpiZ%S;(>6F8& zis-%GOO$1d)J4j(;$N%B@@rKynf4h{l@Y{9Q8ery+;BZ z+2>ft?OHx=o*y>AKnhW;!QqLQnXx!lY8$^nh#Ad~!}9bJeXCe*Ku`XCq$Gt#H(i*y z9LKaNLCe_eIXnfmB=5GKXId^P8%uB2=V|wCFQtsiLB)!BtcBZ0>As{W=ZR~I!C~T` z(TeY)4~7v!B34nAi9>Q^1e22mp~1k=z8{>-s!j>1)U2Lf(gM!?=BGV}?LMd`jfq8F zeZoxX)YQ*RSF;(p$NgBJw3Y-$Im5w`MzH9SSQ_rfgt6?1V2J?rkS?)Wi%b;kk%@j| z!Sk;8Z;M2I^#c9DWE2B(UCrO@>xW!cSL}c86F*5rN-)LUqtCy+QW#C`pFU)0Og(Ua zX3tgt3{SIR11tSD7WjdZ!~6Zdelr5NS@ThgmPAq1{~7Q(`Hsu|lAqCxRRgbqE>GdR zn$plKu1+I=nK4kE%5~a;k&*Xp;5+XK^noP33-?$A|)>1Tr2_oOdI=%EN zMrYtI5i_x%a^6HEaen2mBn+F5R5kzbaX=}wvq>xY`X3K3(JIo$n-^!1R^JnSF2KjR zSZUqVV$BW!F{>RCjo#M`B+PJVj?y^2`P(E_ZqoDLNPh>2_J)u^J2eEkG zW)(mJ{n5amK1OIo8jYpDtw;Fs8CLZwtQY>u!t5Gy(EsmQ8lig4nSN)TiN@-!mnxGI zT^v){lYZ)V)!Dj_NM9DlR40@);whPUC3Fh9tj~2rGv6r4jt546NbP%yx1E$VVGpzU zw@v#?sFsAOir6-tx%BbNiZ>hNc%PCy>va(GH`Pr6n3qU1h`mSr*``=9%yC-0r_8zH z^Q*W9t5Hovcws4?q(3IGH*OzNx&e3-T}@`svyR21oxYTx|0WTT#?8>Jm-L#tpikE= zKMKfcp_87AC8$u!;Xs?5^hN~_50f?b6&!!qrdC{*4~$~J9`plfgrJZGia^~y5=8%& zlqq7eas4BKuU5s##Z;YPd4ov$?%pHnR*MQ&TzBEoFxZGZcCCdS`jwi_5mP$6MRT?U9c^y8v zn|Lrw%8tWHzaVsbn{m5L>W}SwOs$o}#s=&qk!WE1Vy*l~%9Nd`a+;7)}VBk8I@p}b>CVVjKEk6bS8O7J_6<*ZH%QT4#W|8mwm_ykgZOf>D z`Ng}E{NJCnWRMTp|5@bCi|UA?;?COxQHH^hINw8ULX8Dh8x;4lr4KQN&~lpJXojAE zw}HmgGpHF|_X`0)ntiHotvoLzVO_SY%sOv-itwdGn`1Q3SfPTVgV5pk_*uCs{8B0%9ds+ER%NnTU&N}oyjsjwQCJ|l&|g~o(*f= zM`KEw1QA0tfdQpCdmhG%0)Y>A*q~hzXM7pZp&g}?bdx4i{gm`|1 zCl->sA>}2?9_SdC5Sj4QI~p7Ok*AqSc+Kgk({uhg2Ef_@)25mcE82o7D$ichF0lm1 zyWVGVXH&b4O7x^IqV^3X?5;0P4gIV~){`19U<8!TB98!KCb%Y1_p%M({^F^vd9$d> z8T90kOB`)M7_x3*jd*2LrKy5;y9)#lWfe*Bg9d>QGklS7^&W^z ziT$$~ZqoG>E+LaWL~%}7+dnngwCXo@jZ`mHV2p4Wb`8H=s?a&8Zw7IQI*Kc4s=!cElD2fR$N6E$yAVcA$(#q$;WdGKEHr?6O ziKEp_%L_+j%J1VhP0P`L?{i_;@|t}PP(9~&D_ApAj*^2H6=cuJtymH7p)(OYN}A5* z3>n4Kb^4L69tUto<89y92+TR4dD1SNkg=m3{;Qq%`Iq$RXr!b(Q*C`{>>uhm@U+4n zVbEUjJt6Vrr(ZGV{K^g#Nv_yjG$7sY@BSygDXAkCYTq%bNvGQJQZT2k(*R1Tv43ax z>e<)ayQz*xB2oMS#X^V02xw9}~4`&by2>Ui~#YNFh+>TkFx>nyf zqxT8>d{e~3Yr2-!H{1W>%v?27!uudkk60u=L$Kcw!VjSYaYodU~UW3`Tc+1O*UzHJ!FTq?z6k?B<6S0E2kP( z_?4Jos~@H5qWxxRFfy6a|7?F~kCkW@4W1>2w4B3BihChWEa}4+LMMTOJvLX!LhoYN zF=T^=7=VZDa)N?Z*kZ4MjlxI;&(jII-GT|eyI?^E}a0bE{kX~t-5m% z>p-wP!~2iv{FfZdC7LCX%`=_B6Cs_3^}0r&t81&Nu+cXY-BZ!Qv{#<%9u^Y1roO;0 z8xt7FLA_tOi2n1VXUdl@$FJ+T=^?EYTDk#}0De7PAjR_Ak0V41sufW?GaDkpK!S1; zwG*$Q>)_e(%l}~g#zlnC1wK-2UUM#4R*A6TO2od(Y$g-_ang6gnT;Ejh|rB}QInL_ z^NQvs&X8c_5!|cy_7UG2IUjEgnKd}l@;_LQ|>B@yE zZz83&Pn*gOHjNA4P+}8~UfETxc%Dpzpc58D0{H*i*sok3L}}4`sl0^$Q)uNaTSV3U zoi&mFew_GprbXOg!x82YXr^(jsEp*dtNi#ynlsurXO;i z_dH}PVzP=ruWpnDj<|@Va$dIFAl4_h|SY19NHSIR5I)Qq5d8h z@&vYl{i*S>Y^VF`yDgv*#9!`=Y@QgGA>?VuX&CLv{umwW{&tZdNV0c-TtS65-@eSh zDiETs-e=zN-;W$G=wAL`E`SIlG}7v0F}caM_`-3G({q5x&?^gaO@M>Gx{RNf;*jJ`s$9(3d& zZt8#UU__$$K;A2nZ;iH-#LNstTppY91Li_OwWKpk{+y<5w`bQ@9#>t0(wa*}Bg(z$ zJCTV9uXRaj0apLDe$@JZjByTdzIt>mzhk(X{fpPZ?4SRxmPF4!pfDj{6FKNT@vAwP z4rc0oE3zfgh2d!+eigF-AJ5R+X8NIv{_TD_l`JnC-DQ93v_LquWCE2AVkBmb`xbdT z&;N|i|8YWoEi6mI&*1DE-~axj5~)Sp$)h9zv7fj+z_aTKf3mwg_8c}2y0}<%GDwsn zjH@eVj|o}U8BD>_B&E<r$*g+%c+7t#1&aS4%l)ss&zh8EYSr=s&1Pm@%&uBxbNdaNg|iP&9Sw z-DOETQHovj!cAjtT+@Q0*U0!Wpp2@3&4>*h@QnE2e{Tx8QhhC4q!4a6O!hzVm3Z!b zSa*HlhRk(!l2Sg8J^&Ar{U3)nL7Y+5yJSnvPn`Z>sOf9zrG$^Q6E0MI^T+t5-_ftM zg4=FvXzb+>n##_#fVVX)H>bXwhA8t&@A z3d~Q1T{CVx8!C6fR()ap0AJI1-C}M&v7!uL6YmOjOWN@N4qu|6>x-95(97xz`2d^= zbMvKh({~qBFwDkzG1F5(_yoB5dLVe(1E);|Z6Q)Vl7e=fjJ)@?zcGHBBVkF9YGhBQ zxR@hZbA7=Fo&UPpfc zQno!WbyUX};Idxz3rpiDku2 z=rifV#j^EdWb%QD2*3+gp4J0;nW+|d%@+6HIo`FpXgjyAH#Oe#--ixeukGTOeQ%Dr)zZ&mWc#^t2TV)R zD{ybqW}OkyY1nzWX;vnYUDT>$``tmhllT3y73@|O*6`%&+H^gpy8*Q_eM$2=Vdh3K z0UqzeBb9XuW0u#>St_r{75OD_c>n3O81!6xc+E59dkK>p3MJU(W@} z9VeQGO~qCr4W4$p)1ABb#WC5?`B(s2ybrXn-qd@Ko)bc7BH?*g+c`OPReGpGDcV2? zyEF$@GxIrj)3I zW4^C?df_@ZMqO^DU(WY&;lUKZIX5{u33<8C7V$edip&32OX%x;zLp-1U1RU($b@T7LVB;vh*%&f>E{C+?mPq+7b1{`&yv<>rs$*;hf(VharfiI%Vqa&Ki~lZ0&ls(4mtg|)Y)cuMtkLtrr17D?c@}_?Lf&+1}t~P1v$2@EjX7okPP5 zy2uv5spWx(8r}>3V`3i?5HN;{Sx~vJe+uLxSXA;X4wk#0KkxH|MhiU*i3TP zJRq~%`NKo*kR8~6+TVO^G=1qY zeTwrnft(Cecx$2f&%yl%9G`^kQNk#r^;?!tp(C-tt#Q+54UtT7-zF0vG$b3cZ|c}& z4QFh&+jyGtlmJ`BhIw#8u>HY|>FlTLo}1_5F59n9*^tz12$b^iXQ)%tX0_k?>0hPl zu9Grszayzw0MyHz4?08nGPCN`e!gApuU&y1fL+tHnRIo&v2-{;+x-@@n(hCZ47%B- zg#3isDK#5`j-Jc0*KWpGH|~c>(*dTi6T7x-4xc?(oXp*Xi9L7Qu}oaopBn{4}!L4LqsoMFD_f|HbJlIo$A1|V@*|nXVLPc ziQiyXET~B^9=>gWYc%Y_78E_q2)d517y&T1_+!xxx4BKo^aglgas97-K<+cv*=oms z_A_FxZM;MNyT_Vi&;ziw95bUtHF z;@t6zomEllW(X&N!4T ziR-t-+VOAP0w8QwlSZ<_2>f0H*WoYc0k=1Uxeu{oS3@=JkLi}bA7&y3SeBxr+m?#f z-N!)fPU1IyP60asS22*68}XNaXMU$6ZnlrNjqRPuyAf`` z^_GXlmv+dNQtPNq)3|5X&$s^2-lrp_C|7TS|7Mz?jPuq>ztc6}vyNBMv+0tU%dwQM z^Jpi)_9vQ?kC`Ign{W*DyWNv#$Cq;`ko+htC_ydF?cgzBIu7#kZD*^(-j9QsKCN{5 zZ>*s16*E3G@n)CPY zPq>2e3|S8(3>h>Bd? zMHoFrhf_#gaXkO?eeJznyN(d|IV=c(;Y_csKlTJX7Qychy`rx_cRrro!Op~QM#Luq zZmPHzZK1C7H^f(-LhD}hx6Bchvw&ccsENAvYz;>9o}I@;OqJ;%qrln$SU9% z{p`6Y;BF1#D00COaMEMR!148tBN%Spub~+VUHq^~Qh@JRj4@#VSi^+CA0%`|6N zA}GN72h8c4@_-5FyEt8XYlEZNspNl`9*pKNC-)v8jhT$Ls+!&^wN}%E38yZ@Kco93 zqmI*M)O2wgpZ&Zro4-|)qMlE^p;%7dM|wAB;?56O2UViJHz$yV<1Tn*b$wpj+5|Hr zgVG7GMaj=kdNZ*A-p$}J>U?^_;^=-;qL{t1vbfS7;G%SBXLQ?EQPVk?fHc9Z>L12lW4b9oJ!jUe4=ePq-Y)t0yGCo-6=|1HggL18|?_bm% zKg1fd$skrh9=&K+cUrb$+B4lc{(U$1K8Sv{IM;y%P>SL{arp!=`170z>_(&)> z1{g9!ZC8Eg7@wZkJ zzw$u;*}yKJ-5_C2=GfKAvhsI5QfrDMS#KQ`6}d%3_B zd*QZi+MNIYlMktgq-)cq|Kr5r1PT5goIu%MQ)z%q5p}5qYvcSicWr8KY4en4CL{bJ z^-@JWe^cGgOXNLQ%dIW|MxA}!op5mb13z4~>_6El-FJ*2f`ME(9?v-4a4r>2^Sl%L zDStX|psEHdzN@&Tt6JK0I1b(MfWPj){|XH_tsOYYyE{3%pzl|;m}HH)MkM~sb!cHa zPyPMJ3C8j4vh#m(0%0Txdz~rjw~Y#nuE3RQ5dr;}Rre12X)~lImf5Ila`&l?Z*0fr z9f^TeOTg|(GfspUng9JU>S`CUR}awTHHd;ve-#w$i}LBa*_+ko{|I+VSGT_m zR#maJnsHDllX4h}c;5W2pA=~nauV}g zsO>U`-}#J3$$nvs!!?Sir||qiEfw=%ZTZ`Ax1A&U7c>zW$b-EKW{;4$df?RX;K`%# z!G1>UIoxK=tjs`&VGFmoP*fx2zyG`GQ5plq4PxD$=p5KgI93gdROuVYu_x#QLaYh! zrtB0?p}{))G4oOE!L~pM8*-0o25OA}IkprIU(z+Al!#aO|1nTF11h`7!+%ThSVa-O zer-&3jGH)rDG)AkfQMGC3xSlqbjvYo6^_(8aY{%8y-q_cf!ULI) zRCsRy zR@^c62(wyHiZ0n}=xk!pt0E@L31y=_fE@nqW>92%ht|Nz_q0@}s{c!C8^bBLR8%ic zDqOK8v*YiHepTLk*GOKMFvZ@Mm+nHMi}7#}Vcvy!ao4S3`W(@12)74oOJ0L9FDF?= z>{5OOJHS(vIV?0b3W$zJCF~KZ?alL(TGXe(q#ArUD(ZWS`G0<@5}Pl}X;k;o;Zenk z7QBN2HQO3@@;lPdGPpnLdN`ZR6jX?K9fzZGe8G_aD`6K)@^Ai*9X-5vBCwJ5=Z-U< z+h-%cJLqJ`AeHpu-E=Tl3T&fZp6# z)3TF%RNZx2K=V@d8*bJuUSH9v1$_#ah~dfFWeG`tf%65CK!^Sb~2 z%)r*9*lqek$7x>8lMUg|*>V1WoiU@%!^4WRjAV`?5WDXuR2b%6F!b%i;b)|CY(1GDqJDlz>ALFP8B0+? zOz&<#^}Z$*d%fQ+gVO>wh76G7NTnRH%NaS2!6}vonAYY0xr}R z^j*hU&RWb|>jmH7*8t|I#;fmQ#V(gPUPf|wY}TB&q7^ps`ohoP5=-1xlYpDq9RE23 z&$UN|bt1xC4DbPQ&6JG$(~0NGxt9Oa(E3e`=gQ9`Hk{cf-#*H9uY-#sIB!$8B*_1G zUy=i8W7-%Y>;RM3AY^z~ zWD%*6Zb**M{am;rpVR_NO&h_Wxaa9gj^Bx$)nvB!29^=vxfyI?H<@i$(|)>SmF>4} zXJqH^(3BV+`!0HCj?5VEodE1W{0=xs`?!PN`A?*@&#CpgsYdJy2FKf3n3Cwdc|D?| zb)Wd_ldF;M9W>1Qt|z=26fc1|1*Y&$4;bgWYl0ZvLuj6VkghGlrGf-!w-*=vm2%e3 zYrdSJ2=||YieR2bCEYC^T0TO@AHZnueec6kd(S-ijgM8&HroSIbls?%;O9v|`wl@O z;l#Pqk<;GekMFG`m7vd6C~3C1+dgb?@c5u4TeiQ;8456yc1X3#_J80HI9cd0qMUWv zTpC0IgFrSGng;hpnX9+U3oE|sy@Tzojn_#W0ZYY})FOVnSG+uk|Hqqx;8Jh4?`Vw8 za5PaK-+F|={Y$H*-m<-4*USDVtrhQqHNQutET13pzW#t(W;`~DBdCE``l9gJQ3gj^&q}3 z*wdwx*H-h2`{b&V&zK%OzAouA@;?~JFm$P3Bk0;~tm!x}&TzYn{}g_E0$E4l>oROu zca}mC@U|7xQg}=8vJWyNWzX)yj|G3R^A3ZY;b&xIoOz%5p0({|FLXe0&b$`dt2=I% z&jMZ_;fBEYe-=pPmqH6-J^#II_dmkv5Cu$4@AnYZ*AIn z`SJ+27!oQtPqu+XG{fveDCK`)Su}`0I?3E#JkYxaSj#(S2n6$;FfC*>g5BI-a3G zz{`JdQ#*aU^Fa;|0ChM6l=ve)ZqYn04q%nxz%KtIOnf=n@jCg+pg;^bS9;lY4Y&)p zZjd7OZK?!<>}o6%P2)}%1O9Lk5Pis8>z6evc1^J-r^Z4S@ii;;O`civ;9FGJ3D=l` zl;eF_86=Ck4i;&%0GrV5cO&0>1`H|W-1RXGc;tc*j5^_&{?1tc^u<(OAAA)(pKqka z=lvpV;U{f?a^{9){q#{o!OKUYV%lCAF6s-h--3wuJM&N)cNAogTPn1si<1_aspmbK zXOxB?4^IsKn-x4OnIV%Cht9Ly2v%#iTyg?&FVMUWxzP>Nm1=^r%FKB8_gs1?jnT|f zHif%(2Jv2B2ueGI_#w*k1-N zPuaD|55w(H=#vJ0>^-_Z_QjOG-7$a}YR$M?oQv}RSFWOA9K80LrgOweO!UqWmq8x_!8ruIt z@}p4AL#z@_f4C-u;7bw7(Llrh;VMbvS4PWp*NAeHMNtKf&-+u}yHq;=ADrZDqRjXf z<%(D9$p9OaH_W~a^IFQyNvW1wg<-&Mg7X79joi{0Pg>pZpwqU|=r0KFpSV|VGxE5i z6+KdlTMedr+Dti%rRuZPXRjL48WCb;I1JOB9N;5+{}+onF+o;#TQfzisR$YQ9om`^ zTnDX}DYy0$6IrBDNvI8MmAg#46xwf>2wPAgzA3<63# zBw4KI7507k1Aocyv#*USzpnn3{YJ;Lhs(fp@uvI_@WWT`7x3{mQ@~wCJ}^x?HE^fp zY9NI}-`zgPI0{APrTJ8Qtd6lsj8hW}^U17|qlKEu_!%3$tO%4358-B9;1vmu%+&sD zA;Liv5qi;=-lc-@n+eM&g8w8q|J@eMDSKKxnq}XodskB=`{VT$YwYGa-t`#C3{lui z2PNEivIQF3*MqBt5Es2Y45C+!dn||O1`j{Y|6pQ2S?NCb?Zi|*%(0R!&g*?!Qd#m3S`gc?+HXqN$^SgU2FNEnZ* z<3=AmeCOn>9Fh%MCp6|v20HoAB`Jvq+>C4`qy`N1B2}K9&CRd&fRUd1V!>dpgc|Vu z|IOmiK1B!{x)g#c#P0SnxX4Mwx=&g&Kv3N6BFdMGk>53K*VgqcV(t&7Wj)UQ0T8sb zdl$*Vsss~Z;`Tb@B2EvUmLTqVbo&ZD4%mJ#e0N*U(}DbkzWbL(-q7BG)>LfD$A?(n zu|Y@SIIZ7Ym3U6y0}i%B+a0@1U0rW3MlMa8KQtp6+QH021Cx3er#BwH)0q923qYGN z<}5~xWyeO7Sn;2Y&sbhP8zT&m)-eP%&fy8m%J2# zM-1e82fwKSd~Cu!UKjc4JV`8l<7hvT?X`OaHyp!YXfqIOYUj$7v7YT{KMW^-0|ur= z!|@zXAk9l;?K|uS8V5m%hF;WOp17J-BU(*W8jOQC9>1v`lF@;AXwM=9nq62`Ck=m( zFwmM22R*(rO)rW~W_P)5{u>}w)E9VpYL&aR=%N6_5FKxFhBY-JPVhXvMM($mGz(Zp zg)MCM^;1OyBr+&+mQn+a`dz$>{%z`H#mHHy{slTeAHRcb$XN)fdI=%+`5MZW>90Kr zB-mEVKZNlk+4#RD+zG{a%cr6j&sV&^HT-_!eW!vq{WdsHbs}j;5A)))EZ#qyKA`MR zmO8cp{ic*??CQOWtzvTIMpouf? zK@f7C9Y-FJ`ooG=5_>_ znwr6nzefLI6`UNm{@tY)avgzSao}CSBa3y?N2jSb@XY?m$yzJbx|(041q<$VRHs9itE`*SpT?jXIh!p=>}yKCB?t?)4CT41D^) zVG7>wy~+v0>kVaBzQymQyl*#X-PP04^Mke_gd%OWs-qAo;6yX|Fge8d#Nv6&t&W~i zN;V^(+_@QIkaM;T%OV+QJxCZcO^+b8EKVAtpPgtGYU5&V;XQSn{g!$3IWnb8ch zitdiAjgRVjpz1$8&bi@@(Jh+JyAq#g7hrV0g!7um@9gHb;D?gSkEOyscW(l*DtW|F z750S5!}fE!fj9U~#j1}#RCePb(*1lxX1^Vm zz#Yw4^L^S9Bflk7=+89Xqq@S-K6PZ4nQ`emy<&E)#r8KAWhko2`PEV^a+@k}pD$t9 zY9&|6JtGHHDV4ehPYt{4`O+Kuo#AH`>A5rXg3m9&~h`apZ1O{96j?e4nk! zWlh$03CwmcRB#O8g(2WWK4on!yW1?0qpxzRXls3PMM$GJ8Qa)Gc0Z*gR_>K|T}>nS zAj2;wpPi_VPUmgNIGdFFWo&Zja+oLjz-aX*NmARk7K)_pdpaJT51zrSao(f5t2(tZILvs$%bG0J0BJ|6mlg13W~LcMBr@ITE`5j0P`g+Z*@p zex;*ru-7|61cEMWVTjqMf89&e3M6_HPy65+PAd;&f-KR%My* z8e9~O^N~RubimIo>~a#jwfbi7RY>v`^CQs6H{4MIQ13Oza=$cjLkneUYU%*47T?EM z;%*LZQv4O0=ZWcNo(F!Wz3gML&1`iWm&b;0(064H64}m+wf5D>j5barc7ohZ2d^_h z{F-y^?{!#*@@w(ZVTp}u#Sg}rc<3?C@0`D@opWo;KmE|$8Md{}#O9%N5-7lWtKv$d zsAymJa!_H> z!VsIPbFs>AT|H2z+bZY>1u^7nKim8YJufJrZ%RgPMJWj@X6?Qp*=k4i$%wIMuXq7UaRaa?d;)=U^ zJ0fxLz7sM6Ad^daTolW1KdWK#7~&I%ZS>Q!Hxcl>WBEM&SXU#^+op{)M@HSrV^go- zM*M{}9?c$J@{`0!J71S0+KRaNB@*UVT8Zsfc#PZ{@@s^at_pe*l{*`&P1Fa>fH6kb z)*>8C{+S<>m2HaYt+Q4Lp_@@bGW>LSi*@vC@f#JkH8MizsNB0#<&h&AIr`c0rCey9FgdRVoT_g6s}Vr|1f;f0a>F!(i0`ml7}_|btt zm*Y{Vt%<6)?{{^h^kAGlN5LLTy+`k&Dc61p#&e7MqT(4Jh1z-Tbcm=~8TfeUQf9^o zi6d((5#s{Mf%@`*PAAaLPe(fUR|1ls>*rKiX(v&dX$|}L^Sn4-gpGl>d_Ur1aJTWh zN_~D`)ZvYf{)x|jrgA3u=LKB>JU`OVF93?KfDD{enYeLh`-J1^v}<%+(I7iNAR(6U3FSK@mK9$~glcq;6B>loI@d9vd$?@0XMFIvUENWNQZF zP9u%v&2;GbQF6VBP&~jP1CMPIQ$4Uc3hd-u&UBx(F4>|fGesDa2X) z5*J&<&4lCL7+gAq!TW(@S_ib*%T)a(JN`i(MBN)+k73e~4~A$A<)p%!Jc}9Usft17C-i0#_&@ zn_Wp>Qa~X2(ERjBTFc$Gp^vrnbT{qu#wIw>F0WN?nki<=9$1N#UY8sBw_nM~nO0Q} zIRH~$1VrfApnny`#1>1|mD~Ae$9*)rRCr1Z`NPTx^*{42Yvn)=7!Lh)58`u2q*S7Y zHP_8^$gEi3L?qMr8Cv?hgvazTm00qW^{5FXHM@A%qRdxCfOP0V7i0a_bCJ#bsj(#U zO<&y9bSgPYnngz6ubt~ZnMp}1s@zkoApOQj#i-?iK4B5bcKgoXv@@h*ELcEL!jyI( z|G=B~QH~?w3vD$*u4?uL7JXDeQ?p-4$r48|OE2$SFQZxjK7=t>_}%qc5*@LU z=*j8j0H2d4o~(ec!doL}hBcz8oq>y)pV}3b_{3Q2`C6ECsTlWJb=Mf{o?9yLyU-k9Z&KjQr#&?Bh_uX5G- zM!WeUw9H?VmAkiyX#^#cLx5y3k{Me6uC*4$9Q1l=^*g}cgb`KjoOaKTPoH?Trbsa% z=Ib}X9>d1R%=X7Qt1$_8rvqm)yTJ zh)&uz4A5ls>*_BC=68IaS^R~+okK$?nctNMjKlyg%`1%@N>)E+J&#heaF56Edhaxd6;GGh)K@900@smmk96Lm=N0#8W2Y>(PPew!w{U5hLP6HTLILjkubW8x2rQp67~UNgk@ zJ;z6Az2YwS@zILwI?W>g)ZyU12SR98(*!5!zn3MhyNOBJ^`aG@k!9bcYm!>X8*O`^wJRzW-7B9Yn8R;M_cxe~oMQBQSHJuS3Z3sH#S!vXkeUhM1~^m{C@u`gZ@9 zV$$hT5~EgIR0JS2dT#Dp<#EL47;VD@Efw!Fq#%DpUzH%I+TDlHUw?IiJ|3`!%C0W1oDt=P`o4pwLT7HhO@gyI)*&yx+$MSbq*wu2Fe_$yK>Xr=1m&mO1}T`ClIUUy!fR$h8uZK|i4e{&u(G zcG|oWse|I-;(p|I@ahiI=GYo_CmnZXvcf!1s%oW4ooGM!j^`*Mgx)l(nDen??fd8& zP4SN*e(mP_nP}6d*BgV#miKW`uN`~f*MNR%O-y)vuuMQi(oI8yBq;Ys--y-Wqc&EE zLP20LM4OjQFprjA=DWcqd$LJxwU7?64BAhOQZUt=`vY#Q93m-7Jjfs)m?aDgS~Bl_ z^ap~?JN17=Y`l+wmH$0!#wMs(4Q^5?6#@U6o8g96JBi_eOzH4S!(UhsxZ5i})!0-- z=p024_rtN>-_^is?;@XN?*WenLH8VFLrh_TaP?R~oRX^90Zx;I%b05kAxmqXpBLpA ztPMMk--dZw$zJw~sU4ujH*G8Z#c(<9W>r(~JzZ2y6*<1mu-4dY2nNT=8tNNKZAqv~@Kcw<5MzMVt-Dc}fEGW``R$R)5CA0c*tdHpNlD%nbO8i$9 zk-ZE{gYlSW-gY013TYnDjx?DPj~1CFv_3?IouKH+*Zgs+ zeM3?+kLfTEX$o-1ve4!d%hCIjUTwtrlPIZ4#Cz}|FCR~tP{HcGEjMmS`cJ_jhZ&T3 zcqZ&doEL9W0PY-Qce*jL??cw9zC!O@EWjEe;MiGByf`f(Wmr{FV zbSTsq3Wtkbf(A;4KLGXJi|q(9clDK%Qfmqdf3`x13~JHJ&Jm^xExZ$T{PTB^2=ev( zh{Ej1k8T!2$-Vd=5?`f$ik|O!l*UN94V*qU5>R9dNN4!4ULz()tTA=t8IEf-MSt6& z!|sEJ&;z~bi*8|cq7!exQo}5)VEexj*T-djYRc!%R^Mh46d%RQ`gm%>Ut6cdy2BP+ zNVg98WDQAMrYfIuyek2f#q5*8^^ zDWA5Zp8`|(P+-e6@=9i|J2D+dMKy8_O`&2=*Tz@-s|75N(nNPwFX}Lcr81lg z+{VYNY^U{QLn1d^uh_8AlZzzHdIRJ?G3rRkTq=gdAq5ZWT%vM_B-%)<$|#GLkDjP< zw`<0b?J-3kXXX=}mGlMT_gRNry(1nOH0m1jNFrO&P`HHOT;KQtQ9qhOGAw>5O4*~3OWIq$EkL6Sg$;C)id6bi29rdInmm;yl%dO zA(DW613!tJyZ3jalVwPvUlRDQ`ZV1MHERMpSp?k0VInYeMV>dcrzhpBT6oqJAloxi zmx$uGu%?I+cBA*e<$cc?^A16WPs?WJ#tt_kAu0AU!z+~bjYUM(5KP97Eh|N@SH6(r z=S$zD5CCrcuA0+GB26a!1 zLGl>_Hfs$ld(G9@(d=TW+Mv|}vuM&%WcA0fy-&x+bgPeMIJgsE;|}XM z$=Zo7BCDcv$I=k(oCUmHiD93q8A$5-NZ>(1Qu1~(&Q^a!QNMD7~tqkY2Y#b*M?;76ESz_}MA-VgC6&Sh#{L9rou z-Or{}MX)J};TJhp)9y+j!m<*An7p?I{Qb)#mysbw%BZ>a zEiOAZ*)Hlc^V?O&7+llVZS5TbIc8FLd)J0u;KJJ-3BK$%LNVWWPbtzT7>T4jBm^6d z2lU0{^uKoW2w5gl)oLDxdOQU|r6b_?{zS!12x*`|HSPD-z0z74wHz zc%BFzZDJ2}`4h{ZVuaksVCop=b8`Ks^6jtKJ;<--Sj*1FPy0%Hp zI@GXAr2ErwiyqdXkh4iy2`)x+y|o|&Ig)bJC^qTcd&)|D%pU{X$+CZJ#U z>C-KxU{&=VnXa}dp1kq|@(TTW&?xHR57uS{I4Mlrf+{dymOQ(Zyk5kDexaL-O#YL` z{t-Beo7IMbnVPvFZ{7Dys9@)v(ZlhKX~muUHzl$Mi4JhGv~yjr*m8CDm^E(y_uIPh zkM^DE%JzJw7CM1uqCrbz@fGNJli<^riC%uM`1akT%j$ZCa1U|L(Xmb7aU^e^gM6~q zVA5RX6_&44?S!0N`z-Q5jl+7Luav*pVxSkI4dR5POTD0Q>*+=x287BHl)hFJ^S0?MVQy6(C)^w z$NV~f_L&@0R#|2M_E=A?BES2lfG;NIq}1usNtsx2&(0yxf=sQ-2zif*&hnKEU;+5^ z#pyI!7h#5kz?tC8A@HDROpo~|Pv#F(fcU>~;cpcir`Pr?T733CX5F*DZ-eVlTn0zp zs}>DAsIlkjcEqW=>@F_!Y@~Jn>Rv#;FJ{Zsx@vDsVE?)uXfySZexR?jOyX0``s~AR zU7aJY+37(U$PMj`f31F4gHlwuAFaTC{HYh^OzG#|%CN7k$htxhF2v7@$G!A($m!1a zq~x?r^Nc%eq_%19>Fg=*So>8W3_#G>lwRQM)`{EfZh9~u@^+Bo;CP5z>sD38@kh0* zPf~r>y~^k|K7D}~e9u4L9nE5S}z2@{|zKf)9;`J-w5 zDng(Zxtw(Ip%%@onPoA(DZ^C+Z83}_tXJi(ysm~fI;mN@3|G3cQ8zDQb7P0@OQegk zx^xoW9%d}%+ON+6v(KT*$VO-x>`DmoGP+-!P{fb|RxMuG45P5tVG8 zk7){um@7kzz{8smS{saU2zhS`r7hifQX}S_(|xP{#K?ohWD6}kOKxs)+1Y0HaeHsN zQ+~iB>8+s8j%LRH#gKPKD_6tZEd=W3&l*{5Biq>@RA9ZPJsi=&TpXahn3aE{VIH44 z+)*_0@AvMSEvdG&%h}4W8Yi9=m9NbsUsKc`h8Sro#eRT4{W!Wkg56LVjTijm!6GNK zcs{(qQvmRyoTEZvbj#!)!ER^hn)AkIO_Kzo8N1Yu0$;_u`9ju?o*`aN&bGiv_DZVt z4QskQCsk#evPox*eFaPYsRruO+<);}MrNdFF(3MO(NHl|=2}MMk{m)ptbH!q&$@5E zkO;E)Q~b$R7H7Y|#7)++0S?{=BU7bS6(TLSrv)}Q%kCxiV>0VhS6kL~unG2jl02(g z!A2|SgVVqq3C$UO*`8(8-kW|yNG9F(mIqOBM>Kb4a51Dbu3 zW9rsr7a&6L`QlEX3LnCMRdyNt_}mG0&fBv27Cn{$R-Xi-n&H%_Y4~?x>FreG;<;;7 zxh6zL>AWA>{IJbd=C)2noi==r}Gg1m{1%U?um}xA_Mb6Z!5yc;mNf5%YOz6K6?-a5A0PX#k3+NPXhQO1s6Px?L z!zZEAUUQerVHU-u*c{58ga(XN)P2n(!eCr$Uc5W@#uhZu!?`aRL3OcAKYH>%4Ip<2 z@9&@VSt>)aXYn0Pq6`zz~y@45PXJ zx*|*w_1U0@Jyta#4z9QwJSIHH+eu4op6*KrxuzJukMVH|4H22uejdC#q`)}xgp~a& z!diRyaChs0(a+CWJc+dSq(1^wz%7*E7m?&dJqe>RKT9k8PhhYdZuuTj_jBE|R)ouF z20qTNMuxmXtMNnmiu%-u624>Fjwz=HrBppa4HglZpoBk>5IaHG7f)V-%4A51M1>ar z`RtvpLg}xhy87kTTja@;=WZeWE+E#uq;1G!5LD39hl##h6aAVz>;Q$kwGVg~mhzm{ zEyS^qY1QZOj>T)}hs>c`(Vdj|>Ah=_iTm#g3lu&j^@?2cFEaFQB%v``V(r z=drM0)Q=ut_(G3bvcYnOK6i7kP`qoz z2F|YUmpR)LC+M%fKWGQXv;zv-G9eZcC^3>q7iZsq zb%g{Jp)nsP-=t6J=M502{kukf21qZ(w}Of}Vwcl;qj9vUJyOM^GgnynwN!Sn`5uj!WGi}G)*axBSG(Ki3zR%t!Mx*> z9uJpHa40#pE8B5M`TU_)f!w4w64dKyq5jq|1z>ZF_PZJet2RyvcL_P7ti)Uo{6ZSQ zEHgxvXyzneSef-%2FsyD8BgsJ1d!$^`}GbxTFpgDFr5kwr4Y znj72M@C9j@6D1m4juf@VjyF{N{Sy*<&WuBsK!Gw@SG9TRHLpG`(_y#2H=+g_hW-bfR;)Qlm+|{+Eg?Dz=7phDa?G74eQC#5+;VQ8BqPK8CH>({JE$>SvBXU@A(i*f&S#D9`(=p}XO$SfEc~e{@E#OQ@45LKFp>ek zd5j`&IXxe-4ySVO&>ojv*h_}3Z{7@SJG%+WlMy$s z`A$=%=|m-N?%S_AK;Hy@*-iC@25esN3P;n!jE~*?bZw(Sk@1bMR_NLrgTe*9;ffg( z1kzF-z~jAk05%@#z6jm(+{OplKGzf4Tm!j`_#50HR1Ss-BIS^H=btW|RD*7fC>?ne zsdKa(mns`zDSHMpb$Qe1&qBSf3)-#Q8$zp1eDKB@-Q%{JFHWSt68Qb9-8PlX?hh3E z>71KZ<2FA-zcj@?WXL<2E$J#>YZWvaH0*qB*B>eSY!I>hMG7= zx;uACTtn)Uw7{b43Vj<$hzqcAZvk;MeE>ZMDYPJgnQWXJ;u}YIuXVm@?CUrft^T75 zvv!#iIUbYr1Gx2*bh^3$$bh|ovcOOy&+IT|t%50C7iXe>#u&dW&dik$;Kk@^?!e0} zWziDUqKm~vJ1_kF0Ojn#bWwfu@PM)$e(k@CVSr{P=T*vqVK2O-PYrN?J9ezXkdr6Ho54E?Y( zA~v>AS>@!35Wmr|QvDv4BAK`txq{9fnXEU=9PJ*aBpPvte-r(}^;)_jSFoPiNCf}~ zrf;uo;(ynV@-*S+1h0pxH#x`$-xUA!2cPC;$XK@1e{+6=%FiukK#@ppqHCC>_gx}y z3=1LQEw4{pK4!7oY76om*BIrG6osGP8J+AUm6D{(XDyO{_ZVBVvUWGs574J-Y<&ow zrxe)57KQ3DUCm~6khBpZUwr)Vr9Xfq?6Gsn#ZRi#PrHy6>JO1yr^IIRKG~XjPbJ_{q$N+(86L%x zW_s8ZO_oF8z(3_h6LJ2@QZj@H0?hxpLl}9kA=^I$!dyZ#)_)!j{@yMq_h44Dk6Sq_ z8*3p&9Neb(W$47&UP(2y6U4jmUVe~L^JgZ%%lGW?5ot>6P3*`XWBj-0h%wQf6(nM! zXcMh+8On09#`J;$&;c(pnzT2M7<23Rkl{k_KraMv;kkSSDzo?Wp2G;v{^2=Pb zxIU&z^iBLGRpC`Z%VK>|C!@5MM^oSi@S92$yF*Ispu_QLlkZMMRI+=H9L}PtuEQ3P zRHIs`u-2{?aB`ubUiowx2ua>(Nz70C`a$T6eDGh!u6HgEVv?(_3gvy@FLpeiB0KGu z0PahOT~T#o4i&d<mnrY0#nKEea% zoub-=%pHqbP>;93*F$m?asMIje)Pq^_d!f6s%D5`>f~~DO=P5gOzDo~H%jRrP@&NB zuQN|^YWELB+Ok_o%f%T&C>S~8)QS7rwIAD?Hh5cL%6-BL zcO-F>u_~WT6R#{dEge5ejwQXTzBq3V4Qr#qQk9Rvq*5hhmTman3fyK5`*wsFQ`CQ6 zzsKFKBpSHmQPjDk)<3v5t>?G%)x*p&wm{>g9SMx}Y6nZixvM7V# zHFPq^G*d`Px&yHqXZG)O5Y>c*|0w1Z^=J{B*{F|0Bt$V+y?gQ#xOb+< zD|Q*zOsKF=Pm;`#91nVfSF5a6)`#^Jjp53O4=vFKe>SjK_9)H9yd9?~eBNdhL8;8i zOk}WHH`#=~p`oU2RNBl)yBkFNNMeZHe%o+KFNwpY%LdGn7)wYrMaTr}ixTmhAY#T5 zIwKL2q=1SuNOpK#TFJ1b-gsYcvP{XPH=(P2a<%b-F|&&0C13C@%p?q4VaMU3b7i`} z0nib6Q!PLn|N78mrUZN?tRYEJmGqqxv{j($J6$L$HsXrbQ3ir5H%oV&a?S|s#^dIMcjLY87U0;DeHgqIDY48~6+57-~D`j^Q znBo_ooMb;a;k=EVisMc&`Uhlk z%38Y8ng|XuQWNTk84Q>+-@oQI09p_2W&XDS|XJ{=m82Pv&(;SQ&05fnx$4nmQ1H zyp1!LV%B->f|Sj@!2)b}+bWs6pK(dZ6ZZ|a7TR=OP#RxwVBsEc=vI&M;aefualsgG-Sn}DulhK?Kd`XR zDA7M33%67SyxHQo^0*IG!_F$o2~(!>v~Td@e&D&~g)Uk9e+89dpS08s?~0)uUIAWe ze_+5jH8R(Y$ZU|5^vgXC?c|n-Z?J-8i&tcfS8ZGBc)d68{eDH0&h|=C6yzkvwjrlTmqeoz;_q&MHC+1 z#Wxa>a1F>KlTeiLr7zOAOn}Nhil9ysYzJ^y|T$n-+ z5-IOA>Wsq4D_FsfTi4lS7!1bJuwFjElo6;jd<0&BiQhYkr0`*iqHsvetaA{xIY)~o zPELL+S-M;!)TzRJFK5{6$3xFc;%Du1>miK#3DeSnGir+Od|9DyaNsAb^9|qSwdus~ z3U=-dR#+1V*1)kiwwaK+h&lccB;R1+%b??iGF!`rCn5NP|pDK}}PspEuBbyVSH)+*R z!02S0{fH4|I#l80ty~^X#;K2NfsJ&kmPmZUqLQf7lKS;)+NWWk!qz$cC$d}{g61XQ z%`P6S>%;`TrxUQkH<+Tg>OM$9IMxL__pqr-q^ZW5Fnkp}72XM9{M$i2hT%YQ*n$s+ zZxd#|2Hx2yxK!L=vZk*`^L;rPx5t4Js_Jalk) ztdev%v?O?ZSgBzg>-FlSuRsg!8lrdHAZ?q1A!^ya!6iP`usz$}EJ<%t_#gT9x@niF zh>w*XRPa>ox~>LG$YLT$u{KB#u@!UBgc+nWcKPsJqCnJmHZ{>o z;_lqHc8cMaPa-A0;Sx?rgh|1jH(n+p}<1qQOcm=iLjGcfgOJ(Py8=)dg6(LSbrEmvyz|Sd@N{h^_V}CVM zqUw2+&b9lh8{cpNuX@!8f%A~+GU`cMdA#uuwp38mN2Xo+A+5?w^_2&C2%Pv1ZZi#kcyHrLO!OeBC6{Y^XaXfoP1sbohq{72(L_s?RjM;WQ3muhe5gYCqc0H zOsOqD!;T?xI{ElRgW%-l>SSa+$aua5KRYnGbk%qix&!+B&?%0L< zrpCj!Y5H1vMx#K1Szv?+F2X)*5$Hm4VKvJ?rMN#IM7w!_WTYOcD9~(+dp8@ zYo4Js7X4;h2`Q`cfv*D3z3h z3}h6YEz{~7ks)XGRTF;g**!q1gp9NpMIR>z^c^_Ek@8|N7=w|q0LNSm*MiD1(kYq0 z1a1CW0V)jDe<>RxwKce##8f{38@_v%!Y8RtzZWWL4OUp&l_Cih@Vdyo-A&WQm!bjR zhl6LW1z5T1YQ-tb%Pz#FZFo!cE8ML;R`p+shSp#wzrnOUj_~ck!sZp&xE0V>f>%zs z1dYQOFMA7cU=0=^TnNl0DO<7Idv1G$NY@&yY|&(|ePQKDsZqLh2C1hI>3kzv>n*HZ z;V!%!UPi*T&cel9r%+q8Ub*dKQg-QR+pmtJ6=%b}g(IZ;2+3HO9jb*0t&Td^8tY{Z zjaf>k4qq09`iyS?2;o>=_q?-go`hGpr592^JWOTDP%3peTQ*0JQ5Y}D@H@}6_?0eCy_CJN@{c)hU;l%g2hLKho`5cfj(xfLgewvV*N0U409_dMdzjU;?%Wk1)bX$ zKH)-B4u6dhq=QnOuK-()csh|8*a>%dX*QOIw=cMg=J0A>_jPEM`cky6QmtqeKcG+W zUXw|z&sELyVT96x7mAMX2_H$J4tlVB`Ljb)4#0ezH2<7?E^Y?x@NKuH=- zJN}rk8Z9$X2rE8KHmgG^h+68$sCI0b^}I+}q}|N&Je6kGT|JfAiZ7sWuJ8F_>pB^! z$)I#yd6cbdXnBscf>`55)PSpG`&v7Lv9l3;1v)mOuY35|eBH*N<4rO{4(=hw8zVdA zWxtMF11Yi-ytf~m8~?h}Nj;Pl$ue<(GIuv2Y0;xJxsmSp@X94*R!mW-+zhXJAH31N zcnlF;VyH|T2rUmWiv(yJ{T^QdL6zI$plkyBDeO8DgnPoyf^dzQ8*}bzGHitcq!xDH z`YskEqAG@m;${`_gl@5#d;zV~&uXJu4cjAVz!P^;1$8=xm?)jq>#%HWFw+R&m!}gj zCNHi1I87s2UO8%cSFVpR7>p#e1=#S(k)Sj@!>fqZBF)=TYY=axDLu(^^i~*N24X7V z8h}c}%{lSmSjH|dh5f{`YmAicWK2jCJ3Wo_Qs`}@sq3C^HkJ!Zsa|(rUw$Tk9Xht5 zMK-ZETqZZb6?CXiGL>r8YD=cBJHTTVro&?viKK5Z5$Xa0=g!iZesvR_La*!jpauF42T>>K z;jNm6GNk00NQgQ?2R%9vu<&^WWyhu17}c`r9jBgcb30LY3mJ zURrDuKWGC22rOVrSD?MCXg>fUb_1_4-c%LX%!gErN@MN`tH4v}$T|_&1eqG>gZeE9 z&+rw8&Nh|U<^&=ZJ{pWtyME&FMQTo~utK(+uWvGWDaL^E#u1<&k{&{#X~NbeGaRw< zigC*e@1nIQXi+OSp>__66>a{1+*dE%DLy0D>cKLuO0c}hB|4^7W+RV z;KDa};UT;TX{rBN;TY8^&x1F51KKHLWA(XE1gT7Cyk5m4W!Ojziw)hQNb%}kZP1okZK9O!H~zSQsHaW&O8ZM zl$b(uyn}?qiI;5YNTg3_8)>!K%`Nu!x(b^>$d4|61d(EyeiS>GNVMi9%gSdYqKSE@p4^FSn+b(+7+?9a*Xys>}w1LW5qGl2iV;P!1!y% z6D%ZGZrWLw|DMPK0ph2&~^T zsi=1aLu!>3_YHO|?badu+U3=uO`Q}~{$_C8@R{aNreW+L^|cfP(JzH#7owtx>l-Hx>O%!049 zALYh}#D<({f`Xwmg1Y)zve5AYR3{%vX)Fb$cx?PZ#wC&Hc-c;9XMz0AEU;=?Ive<& zND-~Fe7bs&9UqQeNz12gWQlcGz9AAIgH~12K7)s|3B^=ZoiBsI7!?}_llK5mN5grf ze155Fshw2!YucMxJ+gY}~dl-E^COWOeJdfD+J;9VM)RUxIv zX&BQ>Kjs^(9F6+Cbi&;lFr`+yf?JiejUw;?)(VAGIA4|O{De(19^VyEViZ+~qA4v@ zAWHkD0a8{@R~A@Dbi(IgQ3!dU@Ik!7UT;<)4rr!MI4S+uYd`DAkEipgc_q+I1*EZX zJjE4(nbGVJlAiAhsK&4Ydr8*b>)VMU#V{mvRjHq}yj{K{C0Sfvn7&(f{lko2_O4I_ zL6=!Z27@s!c7+dc^4x7?3N1o(3zB!*3N2A%l-JaC7a|c0mH7i&NehqB1E#oJn`92=e!#0Abp1MS(AZibe+Z~ng+XOwo_;Gl}XG=^OLxT7+ z-8fvnXlxwM`Yls69F|na$d8#m4=1xo2k;9G`U``>STf`_TbskimI)?Q8b3Pi#`Bs} zQe<4M3a{mfn++44vSDzV2_B9vbTo=omC+BVm&D%C<_i}Mkk&0GVz2BfNj~g|7A93N z!lqjLBpYAoqJ=_C=?LE~2$p(paJp>-?IfYj#LZSR+XP0De*laoJLCWW5CBO;K~&@z zuOdS^v+^^x5y23;*g8fEo-O&Z?D79XX?6bTnI`pRsf$9dVZ5_QEwlSavy* zaBJDu7z{=d3kxva+O`B=l(nKphlE)Lv4Y0JJKm-eJBf7aF){q6hh|6maPwSoSfHUI zbGi-pwdQPM{qTT?R%ngaNzb3wYP(ihBp-;H? zR)UD=-}W-nDVP5>(b5HRLWP>e`=d>N7^0)+1bi%CDhRqF@@2I%BE=LG4yzSOE(Lgl zBaRjMal@IA0zMd5Q=_gPJ=}>CSU8vJ>sv9_AqR&EsEKDI= zeX73FAm1OL_$81LisYY`JD^^gomcQ|$i2aas;Y=q@%C}K`KCthP2azu=NFbr`|Ph^>29Lv^dQ>i%8IB;L^+CRqik@@od0{ z%e4dKETEwIPeX&b>#EZHa3E9aL`tfb}OJ|9<*DLSk967uD??-peiQk zmkkA1@nn87>NlTApQ5*zZ3Izm6^TliXf^|c%D8Uf+9t?&G`^ohZ75+aAuAeC;kXCJ z%<4ug32~C;)u6QQaH2|gnBWba)#xb<#_mM#1H9rE%ZX@L>ezxiy+B99O)?`bzQ^J{ zdGJL{5Kc!{*&#?%naX4k=pVjzYfgeeZkki+*WmykrNqsA{UHVHkdXxhTsnALddD|7 zwS%Pdg>^@312H7hL68<7Q?2(VJ9RG!g$wz({G*^uCjbPMEaUuD8X(aVIRByusuO5E}0y)>krpJySOStVSFN48Y z4mt~PzgQo_7i|E>q5^D4LSAIftcOse!@?Q6nD?xym^6O)2rWY(8Vrk@otS%G1LOON zEy9P-!Z=0}?Actt@I)5#4Oaf0z{WRtZtf6>a{*I;AK5BnxEUmtzMO9k0LGjExUN?hWpF^xohg{iyswS$t|=CKogJx+C4M;W*H; z@T4s|gw!mWOX$?;?{=E2U!2E=x`Ejy0dtFmkHcdY%h;Fz`(2<3RlYk1uis=RJnsv} zmad_%uhvg@?|sSw5aCT@qWJobfUqHE+d2L~_Th-Cq?IGF;$$!wD+2r;V7a7`d56=g zd3Gfik;2HMI-WomlR?W5p#?dDM~6az)Ra$^0&xJ9B}H2-0<5fyO<3ox5@)rEIbdpt@_o-cnHr+D>XtBUB_)iLiEZMAcZua%08x9Y%v-QpZ8R{{>B}37P6{e zLq<06E)PW8Hl83SQm(Y#2882Mt`XqDrHWhd(&u&AS!sc3l+|St^YSHUB>^2EPx63R z4b)pgb|83B@)IGZ2dZ$jf^JuN84SjBkk^`ffHl<8c}NSwrRcX0=+LCdmg*u3a<3S1 zmqaVdYswW`{F1)G*y*p81RRHYC%!Zu%5T!C(*u>dWi0Rwj#)V4KAaKX;IaHgW2>Yn z-zL0r_Xe9NIb#D%C!4;&;<&sWb5h|w@A~Xn-fYzUu|meILztyqiT+8may0 zV4Z$k(LN8U6Ye!J>Qu1GJY|~Nc52(ILM>60YIKt6`4vQ=O3KSpYz7F&Rq2cm!C0}h zhDclw_|M8@$^*w7IHnD5`Z81Yt~{vaIo48Qohmx+rPKqWGZ>5&f$sxMKbr2d~(}2G>1T^M_IGPSkRR^-^A4|r6f6R{z?xanN(+ojgv2b$x^r`6ABy{wf8DDMs zzlIMNG-3EGcU+QRl;jJEY^wc>j`XXx%eptXh+3VCY!zjtbdVMq>#cLQS7tqg!+sqW zrcCB?EG>O~rlC=&+8s#Kde{kwbk4+FMqfW{qe8=Cd2}{3+w3qFm#svfBpp`BAT#<| zLOVy!6R@(&vGuTB=Lh-&UugCYz+#h+ts8QA-0WDjs?=~9KEygR<;51UU zOF?Y3&WFePa^k>Ih}2lovdNQCJNgyv=KC?Q@0DV#aiD@$T6$sEm4Hul>2TnHbCU_C z`2A8k1B4SUBdsdi7g8uxyo#@$(X5RIRa;|nVT z%F6Oa8-PmvhAf~Wh%**7^=<{!d8q*tPwGMC z@XAsNc$5kv)r{q}hEWOHsx2|wY`H`uDYjbEsou6kuap{i9zQ6k{spUQneVG5NX8f^GDFM$tm z$lC`bX!Qjf^|j+WouIrR=rcapl!k8`GIQ}L2O=62wN=P(r+SJANk}mU6iCRCVRRkR z#2==UdPMWJtD1@QP?QXV!B}g^Yxiu4k&qr5f?ri+&>a#!EsvecYp#E32s?8X5)WS~ z>#?D@oCH7B-j=9SQ~ojrtQ_fE&V*N;QrT`b)5%N0=zhR#Y2 zzc(1F2c|Py_ygO_TfXMrVDcTp3O6u-Z5GKO0eY;vgHc4wXD#pf{+Y2t>p9>-oV-8q z+*;!yFLUiS+lFOe;ip-CGQ9Uv!r0w+$5PmCLq4VQfTo-33c~h~p3l-c$hyoND)I5E z=WQSN1m%^)0eZ9f4H?l4@wL8t?zHGkmRtrJ62ILEyFrq68HTeSGMS5YOGmP?J z(c?_IMVtBJMU23$UrvA-u}J{+H2ppCpmCa5km(NBFT} z|4|qYH?bg13LmCp%4-V~hC8RcIvt7K8?2Q=y+at=6}cPN>?RgJaSyF|-D)Dcs*Uin z{N7;5Q&!oEYK^olLZx?*{u>$bw+t5d{o20V^W}F1JAC2&!;r%C9XV|o^ZnX=O&3WW zrA3`M(yjdx7Io7eaBLY8UOYSu(!f9}Kz$K_YmOE^Eswn+rOTyaZ%FB9bvUk}svUgZ z%QqaakXd^cu_!L7bqrcpbR8pof}Z0O{=H!vE@;JZgpD}ccTyP8Aros#27|Fi7|jQG zNj#*Q1mQA>udGkA&bVTYLN;s)qCAz$_h=6aY(Je;jfcKu#R7Ju=s?)*q6@6aa zjiw_*IlQt|Z&P51M@0ecU)oxf)c$2$fR*7v;&z47u|_A`d~YzM68Hm4?B3w6A->b_)7LXRGak&))`4q8PZl;k}6BJZ!ipr(RS(GN)qs0HTK~yjVn;ld4+UM zCtfV|1QNBYV11ON$yg2)JaAm{Jg5=l2bK$4G7P@Ux06zUudVSZuO~i@&q$aL%+m&|JZC^j^)ZZX`Y)6n-BxalAzXV(bo}f?JQj_ z60Dt}Myxck)owi8OD8=(gnX8I7II@JcYND2yjD8kkryLW(0$Eu z7}~AJ2#=)?!|8mgEe)n&b6Zo`p3w6XmK|g!Ng2cO4G(YY)a$=Gq6*z!1YTl_CW+hw|4>I)=|8kYJMKx@~VFXR*@la zGej0iVYtV;Y51wC?4gPMoN?dOk`&(_>y1#%H<;QWGJIkPNme6HG5sTHj#j_H0*K!0 z6BRN~-a;JqYozc2A6@5*dQ7e7T@7-bLVnu$OM@~FPXl5fpCv^uLG5G^_PY^vUWZPe z73i}nm~+v!ha6icOHea|!B`_Ke1N^hwEiJnSjWQMMLhJWbHZcsA$7jQ8=*6E{l+2< z(y8ZaP|DF_eq-a;h)Hu+d14fd%3$DeS#jjH(0d0PZ9TnC0d5F7Ur=i;u{=T24?PC z17r9G3uGnb?F{T6pmiX;4DJmEQJ#1(5#v!h zoxkx?M?D(9@`#O;l<=NUALOBY*Vjl^Q{)5}@9&Z@dW5^r$eR>1bX~FJH3o4#KuXQm zVUey{#NPM-V@{35HPU0yCMXE~G=;EF+5CBO;K~(&x z;_;pF0!v2?OP|im0nes+WRA}9`dKM*19WM46)jpnbgLTy=44YtaDK4Vls!&$%tRcW zjtZ!7sdU5pX9Y+tr;JLdfCnOVwDS%2L`91erJ7Mlb}CAh>f?Y-j&m-dK(kWPO&U~q zPX)*!_<`lMiKYE}3&(Q_ z=*V)W^*@4c69tONGe}qUP(ZFwKLW0cDs)mJ!}80{U@%q(^18@9z(r%hHVz!&U<&zB z=m3c_lG@Efq6AbvcltibNw$qqnV21DL^R)<4A@oYzfXD!wD25YmozE8N~-r(eY!oF{C*nuM*8^)LL zq(6KWS@h{kn%?`xbWL0^t=RD8|D!>G4JBpesHJrx_!;XvQ=!G|?W%hBh_3?xjwXF2c%X> zGyeD=E(n0B2=c_a2Ia#vyS(~0h{2=oACzVu-Kf5Z#l|V?GSFxAg z#el^@v@1p$XyQX$+BdkPQo0RDi1G%JDqBv;+3H=;@U`3FsFpdS62f?rthyBS+PT-} zVZIKp%L~F`Ur3yj2(<4E;lm0@hcA&=Nga+(!>$}{h{fG;sZb&}y0vsh?_VU8j{#wu zr`1t$y_CaS3#sVDP1FR7)olUstwl^a1dw@}XF6J}97u`9Wyo*@ct^@B1&hpWQ9zU#!b)8y76 z>hdLragc`;)>lB)m?r^w|K4zXNX>&{in+d;7R}w5o^>^bqjWg8CV7)g>a7i%Q_l}a zq8FhwkFd#;X=E8PUTGN&#>!yf1Kgk1!*N3o2jM^fPxp095H4Uy7=JuoL@W&WW@#yW zx0;ZN_=uwYHG@-LFsGv{ifw;iFt!>|u58M#mHeioHP)7QChYVRP#rVmJ*vZXE=u^h zgtU7~z;r~wk3JCw!e}w1D||>r1=Wn@jSH~JRDr}5s3Qe*qF?<|5=803g_TZ5XqCi1 zO=v|qak|P>U?J@D!jI$A;Q|W@)Ew~8E7OrfDa2`a$>GNF))ykC-3tIuzi18EY4HIOf`+GacvbIZ;+3?A^dvg6t zTsC6z6M>?i`u15O!$|Fi!C>qt^gh7bH7L~OyEJK?L7X%`BNh_78IT?ibMV69(XOy* zMkI#&2GvE+6SxBuh1h)|VARQiX6&;<0c$ zzDcKl#rj%gUM}RL^KZ5v)%4lKED7h(fpbbYr;jm)$h=Mjn6GgjYkj$a8}dbJ<8g_> z*jZTk0883HFod6!hHF1>eF#U*iD=PTFGZeeJuI1yDVu4MzE=AQ6P>>T-bp9M6KWIE z#a5^N(Y$dy*+l3q$cTLZw9lgpi-3k7Ng{98OMHVV6_46DXR0Dy34f-HD*H$jMg7%>8Lj|7 z{v0<1oov%*m4#E+1pUYfgkA+bFc^&WLgxb(fzjpQ!W+?uZtcA(VLP zJp9Br+-TW_duU_Slcmo)D}AGWm&c|#x|Ah|O{us%3*S!b13Uw~y(?HpGI#%i9fK`z z%-5H2hp;N#xDx5;JA?2|ft2MT?i=j$HS+7KONQ(IV%}EJ!F{+pRvg`S#T02S7uz#G!h^87L$r=B$`{!wLO$8Q@}9l%Q-r?1BeU?B z^Vf)UoOxEdhlw?#u9;u_x!9yQ%*vYUwGwOPS(-=KJjoQO1n}!R{xBE}DmD&n%*4t- ziqSA&Jj4fIe?ZKwTVz(CQF&yIk>oRJLOO~Pt@@Omatsfs5+Dws(xs*vA{53^ajNrD zXgUJq7%7UNwHer8{Kn()0X0h@OXn`_Vk(hQh*z`)qmZoQx>7(_I!NmWSYiWSSOv=n zB}<&5Doz!MqoVS33u?{#;d3`U5I{u)QwgzE*Zf`IV4+msESiGHD#Z54gc_b zK;Jnm<`^#|D2D6{MjU^-Hz^v3|04;gkzdEps>PJI=V1E@8#_#x%b`||1vhxj= zNuS=L`-FA;jygjXG@we`spi;<*TX2nDZ|4P?GRy}dor;-RUvpT70}-) zO~S^$pzpvmgRy80D5bn~emzmAJTXbptHxH)Ar%;(i`D?7b}}AJk6U)Oae2aX%bc!c zx*t`@P|{5q3KpQ;uoa9FkH11Nzq_?n33G0@Vm#f)O20@mLe;Se4p>Hr$KioL= z2q(xa?KZLggj(6e96sh7obVI&?hSVRgxzrb4&mNUIJ`F)Dp%$_fpvUsne43u=@X+; zD`KIQ(tL0$@@&`A=AxH*4t$2QoB0CENl&$*S;y3->NXc>wvL4ZYJGPN4Sb2=uh7>Q z4cFtd_Azd)%ErgogzGrE!2w=`maDLFdxtM0bdqV(oSKj6DtCYt z1XNz%$x>UI#t`4HL z?N*4-OVA{x^#^Vb@)lI2k`-NZ&WbG~w7T+CS04dy;z>}UaNX;y&!cN~Pf*W!T98MB zMB(Xau9+n{Jt&m&%Y}-JZz7>^Xg?MbFAzcA}q^!L?Wx`38?_u~eeO0vz)3G_e(BYSroU3E$%kZ|@U^{31<1 z++NbthWDpgk$Z+SeB1Giud;BAG06eQ_NfRjtq-sQ{=h2HmMG!YDh_EEF5~?=-NJ)h zgk2Sr6d}mt-U^~_BpronOr;r606C~Iu#e;6?HQW1eMcdDJFkuUc0g)gqtLRs51l*G zyGAhg)s6W*9~l!yX^E21LbKyT`B-5Z4P96jH?A`nj9r4oJ-|cf4gxPJ^UKuXRa8do z4+G|-!6(XN&E*w{?T3U!6Zk4yAXslx>!VCVT~29 zY{MTm?j+6m2HSkWVTY+CUyI=atM9&I3?xbpC8(z8cetjIb6gEnBDP+QEkL7HP2gkc zP{MZ>^1VGmXUR4{5~`cL3s6X893EvZ?&KY%@RC|D+XDJrEGN^|(yD^NVC*U^z5*?l z1^PG@PKMzm0r^pAp^z#vXZPW7wT_lRZ%C3Q^Lgx~8E$e$vr<-2xU9{}6Y>emRlh>P zcDmt5mCTGx*erGYkTw%p7i*ZN_}^zFtdM11(C{jFMx$796h@R>P)CAT3po0Ud5LM0?2~=0h9m> z3ww^7z&F@1me;*e2}dU_RgedXC?GcI`_`4%<45rg7G26t=?#swAiTgBFUh{a?dnU( zp6{suafB0JNLPbHXqYdoKwmk|IyuVs!Z|+1Al-mRntQNdg%mW7C>3K-OddacIKLY3 zirC%F3n@`m<&bVxQ$fLTI6Z$AS%8NtMMjHWl+_XtmBH@WEA^&9D~wZ*E1(kwgRwI} zvH(vs%1k$S4V+hr1MU<9aW;iS1Zf2pg=O*L7b48T@L3 z>7){7(-PW>bpj4gI!(#(@$`*SVO~z5R08#zRkI_|S{0UFLxF`<{i7g>P)@m~^@1;%8AC)3nhGb2`KlEOJOsVmbY z2|dF$lo%g0Eb~T~ubzH9VK5lG77HKXsyC$S!!=a?%_*M`&l)REA0;hL%(hT@-sz^P zz&DnObKJn(hg0IrJ0zEE{rb9s^Bt5yx9r?vtBsVIXVGV!_=FOrsO=+GpbEf;dtSK* z5W!&tb@NYN#MD%?vmirXW$zX%G~Q_^aGb%U83m)H=`}-iA3c!H-8W6fDz9ACG}jS$ zPadQ8m92e^W$CtlQ0oB{L0mr+&zqgF6DY`tFMB>qmj&VrWJG2!*1Y>(=mib_LFh@$eO3=9T? z;Q`(Q92>Hx<{^;qc6bDP0cXri7;8xs=Gy%efY~;{i2(-3ELt#JPYF5!m7KN4;^A5j z%0oL*F0Mim@GX^N`3A?Sic{6bQLa4B#2if0A!3Dw5%N$0-%^?L4eqGSt3q|Wj&J@_ z3i3udqANU9nTh0tw|q-_UT^s4Alyjm@=^+VMcPJZsBpyU>QDhyX8A3?1T*X zj?P`0&PBM-Dl-i9;R1^jSCpXhYJ#QbxT&odRDQVa!#%15X}%i?F!O2Q=pmeIuz5#- zeQ3e_5>pmYaWW-8G210WCD#%He6edfy`|gv?i>dg490ZmEx>Synb~gxiSqGnvWa#= z(B;g|^Ta`Xdk6PKUUAt}`1TWcVl3WJ=!+P&93nex=-e5%#sHc<=_gtI;&hND!Ic4# zC;Wo(*w!S4e9c&;Ex@IeEDyHAwc(@q8^icsI@a4+%w}R9+${`wJ%B>q^%K@w4gHX< zJXri(xNh5em#i(W!X6fwa2v<%3sO4a0^c!Ix7%F5(0_+%hNDz;#M;JDbR3inlTr*< zJi5!thpXPtUwS_08Qz~eN(!9kA&rF>wMnW481D-*nM*hyjWH%W^W)h4RHWuOjZjN{ zzjph$i7zO;J^=Nr)P_e?i_u-T$?TpweN*geLIz!S?pDO91% zLo}A9OSyNq2xD}Q5I~{G7&!X8))i%Rh01ynmJGT+C9yCSGSK=FgTY`-iiHKZdeK9S zsmHR|1Q1%Aw-KWVfG!p)G#rscC36_c>#d8P7O{p*lEYWu8=QI;qZ!{|Hw4s6 z!5M}M-W2FJ$+5Np!*hJr_gKoxuOh=Y9WWVspJB=!!ejUY!!)74vGrjFW^21^ks=>1 z;Rz*jkYRs7<2xr+VLEy=P=WP3mJTI6x*HoOe5j``ou=C}PDQ;HbS3Es)?Ji(ZL*9C z+ef@{%#PJ6YE6ZF-P{qMclyc815wv`5GKeN_0<;gL>U+i#;%9<0UkQR$ml?nrz$#x zX2NBkFAN`^>0)}hnBs-S2s0q_$okOoeO?I> zB~Ucv1KPK5v=?wS-r+tH|iUO(G z@s=q;vPI~Lx$`lT<}0G3k~Ps1!x3f>#+f7RB%$Q5aQ zMC*Yh)KX_#$XX!;IWp|uu!{RCcX4cdWxfh7`+}jo^)a?@1OPt! ztg~wYzQ^9%97t<7&juq(EF2t4mJMXIVM&VYa24TKh00WyHBmfXMc#@nQQY?N5i7SS z8;51Nx=Tl0&l;Te^^NtHiUv^_KdCp3@F^IM@w&l59&3o84ZH3wAPR%QU}Rx@fQ4P- z(dU#zd}+-qlyr)CGhU9Gro%(pl6g2c*|NvNySb7$H&x84rSq=r(aa;_^6d9mR%X7qs`@s;|b^Mznd3`dX|&vwx~)O3g^?i2suA8B+#3a@i1<9q;ND=Jj!fMZ?A{xU+$}6(_X$T% zTsm7v!kQggLi%Sd@244BOJwAvhr(lR%-`e}p5nCr!0qk3rUx0mO*74>Xp_!N^Kv#< zi;zXd7_)LA5B-5n*=H*KwuR3VY+T??feNaU?-z&xDc9`e%6Ys!mmM<+$|2Me#^A_xdwR_}55)^9*TjqDYgTo5&PbXG9(bgTbi4#=(slaSAD# zcxI7FS6QAs%$A1xymSoG`S=|#3*!eo9RI0CQvs-Qr>Kz;q^|!$PLbohpU!a0KU{}E zc_Owrkx;9Ms1;CC7E9-Vs`yhyRK=;%8Us`acd`#A{t&UY1S903eBP){QK@uksES2J zDQV*<5MP0O&0k8m6`))N2~Sx%x@ubv!dn;NKE4iU+Y;b~&(B@HRV!M}3g|B69cml6 zLlualN?TaaxMCGGFinuM0BJ4&miaiZ+vMD(P*ad*$4M_8Vvz)4>=hNG{I)^bjt=Q| zLc!rYJ$KN~4JxTdb%h1$bjnpC!jeJMzlfZmPo+;F+v@0w!C){_7GTQow1gpS$XFRZ zm6*&*U#?p|5^J1_xol~rNXuiHux3cS-Nv+Yy50_-Y?x7+<>S^!E=#f8(TouknY+ zc;%(P2!~&OwsetMKHSwI{8BW03QMQ3jzqcTP4+y#(IQh=U&{-(7GMF|b|0?Laj)Ok zka#nG0={(YCGe1DXM+M-aVQT*MI=p0%Uyw(wd0$h`1e+g`PmsEHyaB~pE?F^srH_Y z^5y{1YbLPIW>k(20}KX(Q4M+Bo=t4y7qeI*;W{09d~X1y44NvX6LmIL znlVVRURVivGwrs7hGSQTYQ*>{AdyjwDCRZ-SwH0FN79^CEe}nH3Ha{ST6c3Mlu}#!ycFq`;*gdOC z4DbomDYwPai;BcaxmAMC+ry^VK~iab#ad#N$9;ffybSITwm!Yul&mA6cLkd-1ABJ` zLkhz~K5i}1;WFp*nWu1*oL;%p_;LJ=-E}K&5z>}b>!fHu4rP3UA&>eDYv16GW_^kC zwDmDY{f)KHa4U0^?>}{I(iyBnzBJe&OR1eC z{c*#NlV!fX<&+oRX|WFT;UW# zbviRZrKRu=VUeY>-35SXq1xO90outl!K>6B^sWYTmNG}zED=K|ga7SgFicA~@ za>V#hLG7bz&fD5ic0*?55Hwv? zSesq5h2mb^p+IqWx6S zE4q$9mR!T!?`p)_v77wN;Il-LWQLQ3g;8=P-GnOy_yMmf2ztD!i;R9?1KfG>k)2HU zgss%s1fw!~4imI|H8PTkEw$40C`qQ^bje&oBf1`utZsWHzMcCk>;LYpWM^#sc|#C~ zQkVTX4Lt?Rj&)Fa#|6{F<_aQF&+I+BFjWXqDE5NJn{uQMjE-odXG#KHr2fAba0{T7 zaWUN&$orBluu{~q2WVe=adTsnk@MInsm5-zEVx2S7e6Msr|+Jd=9LZU7_|rIVkZ7> zUbbo4B>rL;OF|MH)xJn#9(pg95 z9nUjZ*!+f&U@rQ&%NI|(5>G0lA&a6#%bHJVg?Gfzl~KiwMxbaGD!s=bZKpz}?!KYf z8Tft;gCeWo9|^cQu5O^8)rNv82vFwxxPKsGWV70yuI(I8$9!$a*NXd`g1FZ*O*)BU zWaW<){q&Vc4afM3>z#E9*`0*kc%%D^Eo_T65o?%ST|Y# z*;7&|FfaCw_y-2Vjv&$QE~x#ka_I~|9D{AEbpGam*}JJ=7L0Y;Oa|Dv7t8_mz_|XDOEj-gPUaYE!xmLAa%RjY5HvTC7vcj%`Hl-duPk& zLx6A~ggmzYGN;I^@DQCNB&@g7hH>w`V-fxHy+_u=>0Q!icw2?<}Op{>;f&@ z=lEn4{RX?r<^!nwUi0&1#|KmQWZB(2=zv~NpFg!$%}1jmh24T3%&cOb#J*J?Pbv7b z)`-2=35y9ybC)5mbM)`bs<6MYa`08iMriQDdwCGwFqbP$U~F}ez*$hZ#6<6X`8=D- z9x7$D(FVzYXic+5tJUxtGHf?qy{gxOy2>>4|2$k^2pnH+Nxb`=7%J`TEU`z#ZY$!@ zX0pzM7E?9%EQ9&Lp|ft(2hTzN0t*bun$xNnjtejL4tFZy@4twxIbIT z;v0YGs?YKaa~$-MJk{&i^#ejt?)2sBt-pg1V^n+*9ELFNLSj=4zPf)dy=3=|b|b%< zV>gPof2+YeKy&~cvjgqttSe7vzy~NJ@eXk!ZH_O=*3SkH+0BdJO?K75zgX%O#N%q+ z0ainJ0!oA~DZ>&1nx1HP=uuKl@Yr!3o%Kp_N^!;^QjaCT`98%#Ok3C4>_=JM|_xEj+0ApkW;MS=E9!t+=~Kd<)w z3DL$E>h)U638^7GX$^A{DyW5bUfOs?jz(Rb&hgppfDKcj>u^J3H`!f;ZhHPKHC#u4g9 z8AM2BxygqMct7ODdoqTT(wh+znAOq?TVR-lE{0B)@%MK2^q_0^R8tNqZJO{6sy!=q zXc|mvi9)E)r`87F*-Ao{p3hA|p!bm(neH$-FgV_PZ~Cu!v=%t0Zfn#_F!5!kw7= zf}Q9|Hj9OBOUT>%TK)C$i8weU1|NYc7G6|LljUojplPV7cdU_I=sol~!j)rga8P@v zKrcqzKnZHg@*ebVHTuO-B}VEb#-umaEI7Sh3Hp+wK{9rf>P93f#_@y+*E*Ia+t8Ak zfNHjApL(dBm#=n1ns@30|LS}lu%zb2_=xydv$7(OECV%5UDOeYei7$IyFmvB<*vk+ zb6MpRU$N&UH`4pLcq!{6Eg`@I^c+b_EQvu=09WN9CY>z?MHkVL4+y6K$LZV0*qHwN z_+J{_gN$rWd!&MT|HV!I_ZLfyiRIYJByk>0+WW*hLwi!Chnh3h-@l*=e~YDI`pV3W z5Hjx0i_xmL8#qB~k%;pMM6J~JR9cdUXC3SJbYN~}d5&pq$->Y4^ENBcc>!G$JwFn( z;g7;De&Yoy<6h?W+ZMUL2$bvMy3<;3?%;yFb1lU5H1&XZYqYkHuU{!V!W=!`*yQIT zb_=aTGFImhkAs_!w=~Zkd13lG!2;-Op3e^$hjg|#+Rq-KeEmHbpiGkBJj2zIESgFljDgk96Ddgp8`M_JW6 zdGcXNIH#mgkgS%|RlWZ2c4DajFxY%QC|){JVP@1=o^xep7Z%0LDJ=JrrX&;OMPm&s z`N|dp@9-J}JLtq|v+NHX=GgxPS^rK7^GAWpaep(d2Y>uTdum`!J#6;Lf%fiKYAV`N zh}Op1`4#k;%|Hdb#wOk&Pe;L}PW@|S$(jmoi2$6eK$beg5wo`_UtBY)=?jf|QLn3d zU~{r%Wb;;0E2H)bWqXHa2~zS?GiZ}OLw4%HDHshO#DSV72(4Be$%BbX6!e{vLMfq8ra*m`S$K5jogxo5qIwbl{3(N;ZCCocgQNs4}k1G^qF&ek4t%}my}WTeh7 z{3}`d5tSEj25rkuuVXd-T(HsI621$k^6@E2!{JdY?Tu|O!s9(XiZ(H%F#4=F5IdoO zaMzm5@3-E1H+Bc`I2=sf2pyA#h-78A9TT+Wd7n1(P9FcHBHn0J;uFcG!ea*zs#9ZR zN#%W(DXd5&kB%V_br=0MnA3KxIkN`c_G>@T`|psQ2kH_tfo^4%t8@o{!CiWdtCFOe z#?sty!GBIp)rzM(7Q=BsxvFgEw8uafCak~sMup~YMev4LjE+uBl_|D{Fl!$Y>z)Ge zEO8n^P@t4g^iS9e*dU)v#5aLiALO&hza0uk#Y?!OOZW4Ob*#iSr7F@!6>jUD-trm* z>yM+uRX{_it4r)yDIF*&*Dg5RGQl38uG`=lV?S(={`!e!OZ@|y^dZ@MX|CY{g%EUEA{}}7nhffi@bn1rZPbr~#f)ht-^bAoRlN1w{JLq*s zc;Pn~>-$t5G6@GpvQ&DCXn*zcjdD>xuei$1^d%t>onqz5LDBo&bgQ#zoCX?wL=v0_ zzYvvI7kzs`rD~{W@BsC^qj)*A;fB1{7;qn`CvW)4%?!*|+=&h`{kBv9K_&uuQ#Do6 z$fDj|cysUTVQ=wP0uXu#%k&yyJHjvT)M+JU z4}a1;Ya-A&wU5dC@0=8l0Pmx1j_>nA(l!F|DWQk>1T)CG>PhO-Bu!X77YHMT3I|w8AsI zT4@7*2Scz85-tTPy|rw>C@;@ueu9({Eobit6~!xA`iU^k+wA zx@noH>kt(;>8ckbRR^IG;3Gq@u3@4Y1H(tF-y`GZ64efM0a)A`^|BMH%;=H2T84-xJx+<$XD0qG5TW`W5)ZT>1Vx)>o9Ru+*_)^KP4k+v{gv6m$2?E1lHQT`y0rNMk&?e4l&9 z^#vNhcZlB1oTQwXHfqq_wmARlTNKa3XY$|Vy6ew${~fjDk*~inQN4+*pnTspXl3PB zQxc82@=v(icqAH;tA=zUzN?R(Esb&Vbl$&AUmXi;OD0V`@r|H1(yW3U^Sn_?YOKpX z#ZL7hVU3#g&B)Raw90VRsuEGZSRCwE3x5jPW+CTcOcs=;>`~y%LzrWOAyf9_{GJ}? zHK8YpW33(HS~me$vdv28FuilQ}&2{t$ zt!|dZg(RT2XItW#nJT9qk31Mds`@@a9#s2vm{<>`hK%xVy7Ub-OdWbhxfgr>8OXs7 zM^zicBnIwQ0U{*^J6}*2vofj1duq2#t6w4JW!63w35me|Oxe*t~2z)*r2 zcBc+&I<&b(lzZ#X0f!Mjp>m#YlP0|BQ}qAe3z)4xgBd<$Z^{}M&ao*+*Z5w2bB=(1 zfgF3;@^JCKV;(wL#$lTftI8)>QQU{=)K#7@ydD}%cjlYzLe5s8%*ySZe#EEzJ)$zV zwkhv9gbc3Fae5nq&l@~B6+XU4jiWx7Yb;f#1}YsId0$0_ zpPnP^>iHvKvf9_Zue?41xB{84vR()gSPa)VjM!ZPG%)*%?WouvcEU+mzqJvr7}rpb z>7jn@MsO{*XgZ@gAYOatmQW44D#}ny4g8>-D(poPT^O>}; z6JMX#Y--yAbwNIO`|W(6NTFvjKgAy9g!H|4CQz(%aK-Y(l&(xFw3NFAt=|#6oD&kL zw*BAY?c*Y&lNtE`;?A(-R1j%?oT&>-F=6ut?^+k zu>E3FM+So5fD~JB+PTuiB71CYdTU>e&<4Jv8Ua7Z(vn4VlF4N51!n@X<;FhQWm3fN zKjufMhf|zwP$s0xvXCl}xO~bpdI-_nOqnd~kblrID13jQAgO&FK<8GDBn?4qZ*%!; zJgXA@Sr0|EZf0M8SQJ4@@us^i_U2ynNpE^^5!n}Uy*)6iS|IiED64Oti>hIznlDB7 zNUOpR?eTYBhhl&5IN3-iclppA`mAc?NGyoBYU6P zizbDEkiC~Dg5S5-@MMj0$DlbF*+@en(kQ-aQoT!ENC;{Pe4p;aq3uNYL`K2U0d_dnZXNtRR{IaaZN7i!>zRhUKetDXL3S!+M(&W zAmCHqAx$%DPYLv*B&4V&_5MuP81pV`%Id1}R|tf3;n-*)d;|n+TaI}bKiD(`?U#69 z&W60#BX$S!UsEn2DnpE7rLype0 zn)6>1Itv=D^!hq`66v4ZbLUGchCdh{6QbH%x%IIJMqseeT5{EIiE_Pf(kRgKAltOc z2F<-=v6=-_&Klj%NnRnJE(i~rVas2-cV11hJwmEH(AByT(rLZqVTfsm&)GH2+B25{ z>9djd7k4327YMJxqDMO~-PH)RB4k?<0n8fS)5U~yM#R@k%bz#SclTX=dHjm;T@_t| zFZzx`@O+<(jq?9yctEV%NT0BCZ>kRm-z6uM{Ou-=oZ!7z&<4{5?)1%sk9g6LR^PGK zhDl#yDrC<9>SQ_NGFAOpyV8mHm}*h~{OcwMDE}K)Z6I8COa$Gb(D!MU^r%M2ysfsx z$}0IYVkicf;)|NTNZvZ}nnW-rIc~zX{F#<11=BUt_Vy@J#hNi{DUFj~Cwy6f!F2Jy zEeW`=Y11C&b}lb|0r5ub;o7OzG@#@F-%YY{g#;fC4j5DARb zq5fcuhS;+_-&;6^FU_LXEwF)?c5awf;dJ8YT!4KcEce#)#TPBA1(8D9gWMUT<=oSl zcJ=xH6duGO$6%}HX(4m6gSMR7XCWLY+ZVpH?xD}o9oY9&)w@XxDxpc`ELGS>O-(Re z%FL6opGAG&RH#Up^P*Vop5*1y;Xx2;3m%k`vZ z>l0^a!0&Na5D-QPlTOrndE0F#0 zAxRNNSpVmdxwy~*;m(McPRNVdaW#qqsJ-~2b`39rZlhp|AAl1n9jIAy6s5t&^!T6p zs;->+Q@$(!%NZwoA%>B!KOD(BrSBhf8s_9L6!u8nF zP2Sj<_O^02o`#t#xpQdjy^ztaOKl}fhH~HZ*&K1)?gh*u`-xueF_=^YxM>QS>8gvw zAME~5twAcsdnnQCI|E+}%URmwFB!(%C|c2;@~;KlELV&mOZ@`~!opA3ZE>%bNXSzi z#$(U&;2pKr-TrsuV%(BM4v#OH>%`;7YGdW7`M-b;eoU-9WltY%^7m{HYkNnn!lqgt zrPevL!d>#xkd8?DfyQ~}yO2o}ueZz7g?oar=P+w;eD>6s3-$wF0qtU}*hCPP_*|vg zM^pnIO5Ulna$8sX%wJRY`U7I0=EiW*_6B*qo@~M?Z%i~LF1`6VB?jw-WpeiBB)^bS zLgzS$ErqE~zXI3wd^{d~{FR`b05kZXP@XmAI&|STlVArgmRIvcBlt7ZHkaQ8Of34^ z7e{`M!3hV3-dd>!X)4+pRY5=v`^88^X#v40i4k$LY)@R)Rla}Ph6tR=b~Rr46oRP! zu+{dXOl1pkSBr%VPv=!s3vS*mx()9{_EYuQCLfqY+(&Z}9WlYQh4gU6LpZ#VrS_J+ z60Dw%JjG%`ed-W`*VL73G`%{3o|5Q(pJAcM%F~ zMj!}#O{_*4^I6Ypf8hdO4&PE6vP$k>2~|s3&YE8<((WfG!Vf?9elzMg1O=mz>jooW zGH^x2`4-=&(fMlB4u6h1`CuEnQQnz*s=DEcQKr2k=-u6tS`jh;pmaL95XNw~CIN;h zb@Ha&?rI+=^vVAT2Zx#exHH(7j0Htc-`C->cKSqKr=@s&NLAg~*ur~bxcWyLAX zw1JFhWnZ`|BhUB5F#i0{Jp72e-{!RG54q}>^0`zWjiN0fcT!w;aBPtmVn}3Qm9AR} zL)lg%{Pucpg98EhPmdH1!zJqZg zsh*~~CMUO1$JRk6JH7ZiipJI=Ku>qTCJdnBFPf%gRQ}jY-$Tw*-bj{1f8*hg$P55F zeUShegBqg_i@QkNUk%WRr6H^Qf|HrQ0ByI`mG;z^*K<{a@JIC59dxQ2e%Z*T+IP8{ zyS#!zh%7CTl;*@~YpXHM#zWo7b1IgED$o)&RPr^}7uj{tzLr?l5obD4W#)*WFQEyA zTVw1T^M}qFYH0yHx6d}3yRh01`m_o}%t`2P63Y+7-w2B?1mOQgyBET0Iw>o17NA|Z z-FyB~hK;#`E1P%_XLT_@m(M&U%uFF{-JGWBf%)u#et3^{>Jv)*LbRr}wlg8zr$0&L za8K|cIuA4kCU6@08c#Y7k{3Qeu?BxPs%=m8RIK+MXmLNeV+Y2PEt}a^baDjWxx`R{ z%scBmc=J~|eWuF!OZYW+r*aT-*Pi{Z+T&UNI`13ZM3$?%l_Kip6{O(3F3})W&w`hdUuUrPFK^4LfyoLGX-`Q!9RNN)9C;ojj~=gB%Wf4!}{5x zi5>d^w`q!>>JxgrrAltvN%WTrRar=)p~o)H3z9wU4Vh94$HIk0o;|&^A#LPsB>`OPHv#})64${W{y@(I6Gh*Y#lD#h1O4`Q zD>$2b8OHYD@23Sfm_0D6?}BxFpc8#G+Sya{(T&nU?2a-Rqx!S z66;rM%&So-LY9*ehW(doXvCGB1J~6`CVqU?ARFKE{=!0M9s@aD0+SS`?HtmdoqZ$5MUw+{@ z(jXd-;A|Jm>E#1L`FJ?n#8tDUBslv#*Pt<)7C!J&Pbk=<{uqDX&SnO<9N~FG`zX{s zDX0l@xH0j=z}Rru)@w6 z;ctOg~! zd41sVcR+rogJL$>DsW3{6(duMmAU?v`igS)aP4& zQHmzn9BS?&)mf?DQFv35%Q^$`U9bYNE`b)VuQt(V@cTeyDZP_`R@}jh-%=aI3N3O2 zmQ(-V3)nlwV_CBJPxrpub7+?8`70k{U7|E!XZS9%);PSnx=)_Rv|W!gsoW8Odm7F= z-;VX&7zv{ENc2$qj-0m-7^s}yfqpYX1gFqSJVa()QF-3s@|#cqx{u}_^O*@ zm9Lgl)z>pYltiq!!><9J%S&L04x*t7=TwbU>iAG2ul70fgCtnTGnbSly#Al>u2g=2 zx*0iKn4SGvUsRZ!Zq(6REIJ zUx3J+>(#9@I8MlcAv+m&gsK-o=%(WQYwCF@>Fiu$33&O^52bq$ljQRRQih>-VA^>xrS^yq<=#DRj>-1U(Wl8;2dFYg9S|>(!MI4 zJpV~3_=p1px8~8K!?&WxG#bktwuE9o2~+d5sLXX)|xkApATf9 zitC{~Pdh!oa+kc!N@LYPepw({^-nd21ds&Z?daroypUXG2j z4FhCZ9u4fM^tR$7jxDkCj=j8dA3Tt*wpX1I#nwS+q)S@D0U+N|Un>06@Bv0kWWTiZ zwl!fOPXiG`S%iN|u#=UP%deF9fM)I*Vc8c?@J&9<11k+P+MbBJU%=(kD%^T5rl{E~ z&f+nb*U=lz^8|X>rz+9QkH!it;M98?j9KG>F0b`d2p7-%sQk=DJoBFoZ=yS3INGD- zV!OYD53RO)JtC+MNHIPZ3kKMwXOM4AR-Wg@P}i~tY3@{Bg=gyQ=O%L-C8S@al;Fk^ zQS8!EQVE4?SPZ-tp70*LwUqc8^wcqA7Ejs1A@*z-gSviRpjBO+b8O9=8q3$m*O74w z+Vp>w-+Tj9tci}Bf4nWS#@AzIMO~qovoEYxi=3M>oZIysP_e3xc#0;m9P(69JAZDJ z>wnxZ2CmP~oQqXikMhqFww*&)J$tSKjUQq+Pp}7fg-Y7iUY@;^mx|fcn-YPeeCi-ylu@;2t9caJLvpbG{tWocTPS@sPO!{@!v;qK&nOX%oebd zt`SxGMnYOYoDV?cYR11YPsm%Poy?1yYggTsYt7`@&u(beju;bFA+j={NMks~SC0`y zmhJugyR%&EhfP4?svmYR21j8I^>4V8z+t(kGxhlK#uBCvpX%)=oncqNUp*&+Vnb?ybD zGDaR4SAxYd0w1-Hjzyb{m2-#2l$@;PjpbI$O*S*LH|)E)ikqW|5U=Gnu zRhY6mloT$EFc;ni221wNja#>??8Qtg!F|3%;|MtG(qda*>WTEp_g~u4iICP+pfY=p zCgNLykKW&Fy<=`J;>4kF-R>pyWFjHK6mT-RN-3f8%&^|L7Psg%3!@+oY>85DPEy>j zCS!o7{F+i;Hp~pv#hcJz%3-1YJ_uFhqyNDA!?`Ch`^r|-;u9K<2$?FeO@1wcE6Nz3 z@^gS)xRd8~9;ac_7j`rO&^5FI47W*lX$ZcmuT?HlKqU(~p&sJ#rEshA<9yL%mc**r zIM8k^&!BDHVC|Uld*zQ3jpo(udsD@pC7m0KY3z%scEBZtNPrM4VfF0S2JF!XiImt) zn6Mk?mz^43FqSVyTzKohkUIqP_An*fExPRzuHYtFeBnl&;iIU(iK4{+vMg!=)dJ8j zNn>6=*dN1L{}xeQNT}9+P7z|pS8kBVri-4Fs6<VVG4gGlt84wK@G3Nb~VwhBSbqGQOfeSoa_1I$~UOw zs-UAfgr&>T4>uar9e94MvR9d-qBYanWa$Z+hy!Mgex&!(+%CX#7(F3%W{@OztAE`m zB8w;ZyvOVH!-Fuc6aOkHt%Smsx(;k5>L}?I_;mx-a)A8&iV00AYc;HxXKlTv38|LH zL9j>%EgOXV~2R+tH1JnZ7_6tgf&%>dEjV$0Me1pq%D=vBUIV~%M}QZCo71pR$IixU+KOQ8vHdT z+S~WzW_VN~ciWTLe3n0y(48W9ORuQ5sw&T27OaO&h9mUb5MeuXn6uGU1OY}wWKu2n zrjGKiHvp4{EMe+!*{V){6`oah^;5kIqZFJx;Jt5LKWo3X*Xei@9Xt@+@aWhu%6Bwd z_eyb7qK3iv9~-5BNc9E|a7}iCVevvHcZTT7k<=Q^ z>XViyp!SU@ZN{=S=jWfJxTTtT#p#@4TT=Mg)A*fuA8jud;(~izEh2#&N={BwQPU;} zCFn0TP(xSap<>ipt;L;-tJ-=S2AVu28xkOs6?71klcVRULAL&FreC%Mj(oK<8e{nI zr;?t02^&yByGC{s#==NN=O^#KT;&!1eZ;(2%nyEj4dY25z8H{Wy>|R(MBM(P6%O_`W(x$vD@_4DZTAha*kDN2;&==j&)MN} zHAw5F`@mk?E$7lxED?Z_nMhuk67K2B23`xH|AUY_K-F&9GT#t0G?D^K9N8Xq`tk+V z1_dU{AtkZ6^ly*7PqayV_6Pi%KL@^VXHQY8_ZM@3>*oMs-cY?@T^CPL=SN-Wx7uQs>E`&9Vh3Mj&NkbPURzLh-|Erd}NSC># zBc_h)>C0iEh4I%vgD$yc&9~u$!W~Yt^62qs*H7qA6(gz*NJ$R zI_l>1)k2O52N0(;%PEkiqHQPL(pM2P{n(B_o=p&6e0+_Jh|cM8>1;*_YOLp<{pWBPKgQU<5?0)Rm zeEvRg)e$P_NX1_3TX>4L<#OBcko+}+oKg;K`t6)5057#hUlTn#juWX@Hugw`kGqP6 zz(6KQ;dS&>*V>}SX{AA)WYqE!m(PbInYe{OE8VjHMn}XfJxr=#EOzHj{BrkXePCb$ zk|30v2rldd(Un8-tv}Vqobe*ajVbdSCCk8)#GD*|4$SMbyiNutprpqU0NDgY^8mD{ zKkg6*li!ZFAsMeIt2X~a@9I`3LW^Jhv|NB;N2EFl+W}sHA8)|Si(0>^`o|%XjUiiz z@EG8+YJs{J%!%5H!G@NI<}JlRCr{$ATtY3iqQEFzlo6e}(Id>NgNE%B)WeD*Uv7Ey zlM4qU=<0H7*;kr>9O5Am?+yN0uRR4@SAcUCk|kl+{QZ{h zi3EX#dB}p_$y?b9+a>?d>U@-i z_5VttWzUa?WXA1rUxY&bzZYN3i7_1*UOd^uu`h`YdZzlZWWn#$_4?0DFizJMluv;N*x zou4DnpjN@Y0)I&gxX`XkFr6X%~zTeFWU!-gD)E1KXCG zJIY0F`N{S~E))D3ym!#oW$%vvM!nKM0YLpXEte2<3Dt7k{OP*G&C-A6geWOF4Bykl z?*n7?`!UI0wMd|e8yVYdO3Kgi1r#{7^Mubbf(%o0yy7cH57C6#ycU_i*W(yO%7Y5I z@i*xbLh+iCWSydMTFM3iHso|61y%fh3S2H4CAmZ@+2VIIk!SI6+AFw_Ev`{Dq54Fo zrWv!gxHQvVh1nqj91(cGMdTNDl~KKrHQ~M)f>=rL4<}Zq+sq9%V?HDKrsyF_(KGyk zi0F7BazHr7SbMirlhW@pR6jOb} z_il>?5>{3QVwc|v)Sm$|)Ybs}E4ZTRqC{juVb{YmepzR)669$GN6peY$9|LOq0>N} zY)v@QnO`!&3zs}fhP$$~LPdwK^_s&TpCgC1%R7nD$ZM6Br@h^}SE&q&4=EmpO?S{jtNB-VCe%F0UEPlW=zs>(>LugtxX&`p`5xR9EU7uL@HD zk+|Harcd5aj8V`xrJ2G}J3PsDYurwZNX$rtXjx&%s{{kC%o>2sk9qc=no^giFLbdMI=b%(=4ch{=&b7PVVNBW z2`NE#)c3jsZi0d@Ar*1)PR3qvIR%l^ZKH&uLL^+{t|TlsCKGCK<`?L%0-t_ul<<>z zC8M$f?ex+8Qo#Q^M*1zkms8eGmGK4hPH-J{lx~O5shR6rNhfK;5P3cE*9qaoZ(NM^ zj*K;26qWbHQpdY5VcYY!-361v%rS4wyA;SOC*6EEg2Lr@w+GuB&dCQKDwE2TNrFR4 zC^hHT7-(+pVF`b+`denYNA+mmF(+w1q0EVs2g9O}eYec1X|`NG_h8QdC0vfKu(7_I zt>^UxLnzD;U%`su*@rl05+!8pG}stEP~3UKf$SB-z_) zojt7X9!}Z7Fuy}#?eK#^V=j-kw%d%pO=i@XDcV=Z*&LrZ!50~$XWeyr<{^n&Q-c`4 zbTU!=zC#uX1cnh%iN`rlSqjh$DKEQ4&4MHs=kqw* zgZhiTwH4x*Y^Ft&8gEiBdm1}ZslCcr9D|g0xNkHlQUU*Lb~g_8HT4F^$_hPj=DNme ziG|=IKYylOj{{l!T%r#*&LWjf{q)B|pQnLTHYi?VA0$~JAO67g1-_&`Saauu4rYM5 z0IEl$)3S7p?2S)#^i)2P?B-S}#}MHOV*UF`vH_in>a4DLk;s;jp&=LM;)sJqnhj}U z19%6CC0tKewz7Qaya8I-aFGd2$aL+s`n}WUMqTa&v2Ae{*56$dcg8HVeLU1pn%nKk zvltdtjKco7d-&x#LUID|_ijG1$L1&s+i_DQ)9-nfBHG9FpH60^?{B=87>=)oNK!+Qu z21yF@Vp!$QE`ml@s1*L1ifSdWinhXGaS{}ysQKI45`zuII$Qeeun=qHKND+24D!}m za3162U87k0GEm8l9H^A>ak4E(NxhiefJjJ$qX%aX^yA!#Aj+R#WW<^3Nv_WjGj-!% zumr;>pF_LzEarMReIBSlq! zi=Fq~r)4#9Hmdp|9qoI^GhfAfu@q1%jueBGp~AjYxI^<-;9mVE5_oupje8%cO5zCm zOE{Qzm@r%6S%&BMn2}Jzub8-Z4jVi~du(!GHld!1c4n-UE8&x8P@7P#f4S$)QWH1+ z7r1p_Md$X@;{*N^!1I6$S>*c8Yx{-g59_rtOlYy`UinrlBR?|$puj_$X4e&s*uGo-7Rt}gR^Imj z3yB2Fgt)nK-+|2U7aLYWafdy4Rre8J8WVJ11Z*b4l~z@9Mg(_Y#sH8X&GIn`cFtXP zC2?c_>Zf-E%>ayT!&sVPySl3DpO1K+P@Z%=i-J*BSg51A1Z{* zknIlIIZo9`8x4PY{UFRHVRt=`I9B8_);4~I>_>vTEvcA1ud#)j?HWloJu3Z-Jar~4 za%eU)4pZytj=Sql%vDTu=psS=P!=ULa?XINArCGlI$QrnY;=$H;MkDrNuUTWJbrjJ zw|x%y0h7!{PDD7dJC$lyM4Y2^R1AH=*?lAsx{9=Hn9f7Vv<@;txS2Kb#Uab^Y{RB0 zL%Er9yF}fI@!0*JVnM$jpzw|5KL;Eejg`~_FlEkl6oAS;M?fP%;YAMv0kx2Yl#wMA z&4yqNcCn_WWIJ6FG(WewvDf{Z z6_5zVt~j&g*j2{Na=LtkJ=0gqI(|lFgGH}DaSma#c^o`9E&g{y2+*K!Q{ohn+Fqb^ z;i^_~n0@JaQM)lu7viQk5{fGk$m^d0Z*e1LJ072!+EMq3hYg2(;WM*}f{}oRwI4TS z32qzme(3_d&XDebx(O*%P@w&Fp|&Em3uUs>L+t+Hx029YeBjS8uf@+5Gkd+M59{@| zxRNMg4?mm60bQr%o+x@m#zT}C8yG2Z^=0J-702smVFENc0z|>_JZt1dxab)74v|n5ket4VyFXJkQ_EZv zDWA`hHBlee4?ti?*zH=|aWX_`<6fNXbobx0>iffLdF}(0M_f^QuYxxR?%CuKMn@J$ z=PW_QsjDm*u0v<;&!<@Hg|1+Tq3M9h$(yZ$y}7Xljx~V+m9ARn8<&C=8fs4>ClAq; zI_@qqxlD+v##Qm4d~NP%EB`lkTosD@kdma&voY>L_4ngtYM}6y z%$x#GT}jC-+K(+=CyeoPrH4T?kk;JsM`ynw(6){ zWBm4Z$%NT5bVL8AMTPyiE$v`T#0!HGMI)}2bUHhV2v6WqbZ z{iM_6mjnu5Pj2+-y*#yhyvT2duJ2i#>sv(RF8`mro^+)N*eO7@Wj#+fZ%wpZS(F(Su?4>Fu$)_R3_~(w=25SDRn1r0bufq@RQB0DhN|QcG8gK7c^5k|E$CkD1sl zs=2jgGA{14<6y^RHFdRflpAm{0CyZB8QD3PAksM}#h)iI*OUC+XP`Wd%O@vn`%CSs zTEo9CesjhPp?opFTg5Fh3TFlw%Xg9wHTShl*6#O4g z-{2V6`#s$zP13lHZQI-=jcwbFZL_g$tFi5*8{4++jo?Tt+*c~2Znz_ew{NX430}7wr=zYn z=3xEAO!gbYfr%_1VwpuZS4d_IMQvdXD$^PMdy}Bf3D{4!mISdG*+)z9EHJNV%?dk) zsp{1**~nC7UJxAqu9ED#OV>N%xTs8ylxev~fUbG^+2@|E0YWb>l~m?AXgcmbC2eL-;%jz(U%KgbP1huT63RwxHwF~AF zOuAS}72)3@%0mi@0#VgAsx+(7E8R=42zg!hQXLI@xg)3I184x$+G#Bf?7P@$N^1AF zjl2Lw1+lXBUzN{(C*699@*V-H5fx~Obg93Ui)KvLedj;U+}CTc5sP(0+*I@h-{=vC z820Vz|9yTnR|J<`FDF%g)3U|ONi%5Dfb5^DMvc3D zH?ZIMi+Vu3yIHE-o{?;8>0g51Y;#!;*qkUIgxXCwTD$C)^d_lk)EC?L9ArU%suA>= zrPSg>SR#4XLV{!?V<1B{EywIpXUwJj$X;1_F`+$18O}mFFElGBp5r~o3E@ogD;u;r z$F7L7hX@p_{PYroTap`sraW@8boF+aA9^~+1;=@_)H-EBq8{%hAVHwdYLShN?aIuv z!Bs+$$9n!bMWsgoVZp~J2xMo{rBjt}Pr;H?fvL;jXR)? zRz8Z0>t-MR(TIp;@Ix>M*|3`3H7A68#Uv*A!pxJFrfM#iJ2fvNwKxLD`0}!_B_l|m z@0KOk@8#;Ivp}@|aIO$jqJ0Apw4aoEUAt_)Zu^NQFxno*>HLx8by&VpHULs0Of!T;1RGzNp0(f)JkdULx!u4zG%&k^dh{{Xu6+IvM1ER%5K$&_S$PaPVeS{dj`s!!)fmt%>cxf=x z*NV2irsvbB9zly1+B`h8a^Bvld)J>9SzGg8#yN1eXIVh2xZ2Q(p>)BjBp)v7UWn$g zpE6E(pG^St#OG?(^Iw;>kuuo3ufwS;-4bcfuA?*S~~Qd z8z*ReQ{*PT&=}D1ayxrZLU2QZUS%I$b-?eq^=*KVbb;M1QJ!3Egax8JQn-DC{$Ghp zzS{A5boHGo38rKCp0DSGXH>6TEw-;abi!dY`yf$)zGiL`)*^VPrJ+MH}XRM>d~P_QYSzMF5%# zvN1&REwqm04;}<8sN&#D;X(!Q$4Us|y?MV>xr?5C3EQh1c93RU-<5C2(f9J?Ftg8D zsxx$GE>1wqf=ywCv3TQt(;Vrs;7DPgFOmLf)$c&L%tQdw0&){a*`3Bce=vo1x%P(0 z{@XxBGNwVf+EQG0#K@*sy_EtA6R1zp0zI9xCmwtx9xh0&OCNt5vvZ~bJGOHn_Qh0y z-QPc)E?W$P=cC9<1^ZZ(EyYkI8K<*}n>6Sr*W-^6=Y=~MN{LqK3??nf^HCcya4ela zrzFS)q)g81<%>#Hb$`;_lcP@4_UG<qFW+rFXzVC&`!V?I#+2ucGuzb@((tZ0s^;%+hYvsgO!ou%r!URN$0n5|_3|lU z#fMu?c5v{ALd1wWP_4(wI4GyN0Iu|v@okQFO}P|BHmpUsC54y9z}25S=DL{03(ljP zeOfEP>a?m7#xaUq8?%J~^~8KXMx5oBrcUV;eB^w{He?Dd!PO+MVZ^H^Z@V4Oa<)<} z?#_o2UfyYRXX(-+(aqev@8E|4tI*`P@#?%kpFR2Ly}>a%{U`pS$smZgg^$v!5^Hbf z0THFpp2t$i5Vpf7u_>;)RT^fR_**W3&1{+q_s_X1eb%-|(A}H9ICa+XxPHfb>IL%t z(NYyj2M$y?W&O1n;$aWv(kYSrz|{1P@{Sp~_GK9pd67(}naNWwj`Ejpbm3!@FO*Dp zmb^sC-I4??wqA+RV0%eDV_HMSnXK2i#zago`cYt&CVq*k^!1VX7vW&P|2VWgWLwM-9 zzX@JTuzun{9RC%tdg9?ATbq{H)zO!Fv4eV*`AT>XoqeSc{;npNo2+cw0A7*kp%qOw zZlMBQoWS*kYNE!kXXbgksr`?_Eo(Cx-~6RW7~g1}Y^*$sYWU%5?@apl>*lJ-8v|1O z4TkioVIz0T=`AFDojQrC^O}e_9^*ios~&xwY(cl(Jbze9+|-tHr`|SX%&!M+29Xo$ zew|Q@?$+d00C7ZFL*CSVp!o$)G6MI(IEIJ0=l}K?EMMY3ofmtJ#p+pc^xQ zCMINnV=o0!Oh1OSu{5-`0RwCd+z@_^7R3nc7D>+2fvJI|QI{cUvXHhsY<@>O;^d^r zWdv-7$q=5NDx7}dfJI3WS8Zs|M%xevXiJI#cqfYHN9#1aEC|Ls)evUG{mvtj7rV+Y zrkb6QR+EAs!;q&%n80|S5&Y;HBAY6c$L;w}1DS(b>-X z{2^{*Uo{*>ZO$uaRz3Qilf_k~axK=X;(=ydOc8q-3 zB48cbt~ZQh+m}RuIAn6><}>?Ii*_1k#Gyt4l4DO_VxyYOl}b zotT#jgUGIvU8!PCG}atbk0Yt2i78wik9xp~o^58YaOfSFARuZ`5G1>1-b_z@Zejh} za4!PFM9JpI*3q=31M?2$#90dB`c_{$XUKra1WyxZvoNXst+m}f&;u8M8L!K1r-w~i zPWlJ_V%BV)i~8&l0OhI?1nY_S`_I2x1^Z&-^D3NmfE>Xd=OKq{L-m-YAQ~;x51VZw zKh8^(aP*W6IB~7UZkdU_a0JZwYz0pI-snEh-%oRW7`9*Njtg#7lV1baLQsx~CPJ`r z)VLYE%;p*mV_{?9MG{0H7rtix2|Ip*F%Yrq-@IRgl^~xGz|4X+^feUk?Wt-Wjl`x) z(qZd{G&`s7p;d+>LrLz_1 ztzVuR2S-3g^FDGIHn@bzw$U%cy8i!jG$VKMdEcBdI5JwP#ttiF2In*Tc`UCQVCXbv z>J2Ud=xbMNH=2Vs11kd*-lV}CU2actt_%|5rxZ7{@)2&u(>lh5IRuo8U_`E%2IfV$ z@JyT|tQ!uw3gX7IfL#Uk!mIMf$TbfjdJ^6M7yStntgdw@29Ah$jubb@u^L9@p?Ck3MlJq{P zVPmt^gmpfPg>7k&qww&40!y>1-}#meM`tkTUDnP{*T~C3&CfB)?r?zPWoo3rN=bAF z7uYr((>an8_q)|gH8w*H6Voh$h!`DV6O^J`w@XxYsVE0Ng~&k?%T!s)C4O*O2h-(D zt!4%eJZ(I!w>SGLrb=5qPvD~fLb6>fqDR?$dn9ja(b2)nkQ1LR`qxBT-m`W-)rBw6 z(TU%kpql;8u`L4H%?I1w?iFy zG*sjx7%J}^g_2ew@6#Fv@O^MSf&fjr1|P+UJMt!@@ zE-Rmo9B%sa)Cg1kmRX2n>48RN@+M3;9yT~&5g6BgPX}et0Vv@o@g=C7g>TCD6>Odp zgnM6-+c{j!CQ;48j@Q(}X6LQ5Yulwux4B^7yaD#_U;lpD^>&9|@>(fnc$U@YU0aji z*9aQV^&peADM;2yq#jNiD|)~V;6H!MTz?pG*&=(*R_XohW0&O+?$=CbUgp#y+q~AQ zH5$+=%h7@Fij=ny3DqXk&ukve zh|-i#`^`kS{XZ^14r&~#u9vS6Cx0`EFGgG}7p~$$ZxBL6yEM_V_W8r|9()`GN=4Ex z#!2lvpW9+q#2D1kP)ATOb%?8r59%tg)E|c)rSZaCsj=-th3Np-c5jdsT=fC}do#W; z%RhY5B>37V_}UK*=e_5tmqPZGxEnffY-n?Y&Hm}Ya!*X zH|3PKt&Hmg^8}}uFU965sO&T{&E5sN@wat95|(C{%t0-xK2Bv|vOBf~Xw;}nb9-J0 zuE!VOu>F2E<}X+l*p{vLY<|Y%8z*;Zv~+eV06)3~rtFdhh z3+JCjEP;ravY?ovB=oU$y$)G5_f6c9Zr7=XcU_P42FY}bhr#w4J(+ryA_#b?U-h3A zONBYu`4B8dt8?ciIk`g-d*X_mx-@AQ0y6P|xe6ZqEu9raJ2BW=UI5bUOZD)qwn2=5 zz@uM10uQU5+X{QO>fCD_N|ppou%lN)#u|HdNec%Ihxcr4kIkY_y}Q3$$Zb(g-I;B- zZ@+w*=mXq{`E={*V9>U-%timZU07Z~x>3aOQ7Y57HVmn{iRM9{;mK0V&?&9L(o(Hv z0+bL2XTS28(c%_nmu6@|GF<T{8l1H$D9=1F=5y~J z`qc^^|NAq`ID(?b=0bYDgrokp9w1Af%Q`^g(Td4}*gZ!Xm-ho=Kw7 z@i4kj_m`D?i|O+Hv#USf!z1YUKCw;EhCj#vcxOgj`BxNUp~%Ta9}sU+y;&c0?@!#l zm2l%%3q5;Qd~+Y11j=aRD0rGA*ApQGOYTcHe@Db*L86&irFi!SRPYY+Vu&n^mh`&8 zJB`B=MvKlm!ZpK>M3@eQXfSo-?J1tP3^<%Lj(QoA^?gS6v`+=_x?PmzX11gEda#2d z0-6MuJ*otn@iFv=9Jn!qle|5({!t$vvY*e+tYmkrPONW-;TAW`36i=e9Jzas7TbG17j*=xLUSN>cRh;2UM z;Qrml$_$_x-lSES$nVN;qjR`nSBJ`E6CoXuXB+^7zm2@7jLc)Ax)>Dic!8>QD^^zQ zM;4qB*-M{3cu93S(*x2OU`2r4c^NTk&i>nw8|H6%Au?1W0^l5D2!La}AizpCQfo~} z>T#q>wUh*mH~h5X3Mmy5g>c;@KB7^@82LmhI!*&pUMrPNqa0m0eJjm8EpOx&ZtwT8 ziS2znd%dfwrIsbmi8?{V2&fQg^sqJNc^Xc8C|t9XNo?Cv4W75zbH&yU3^Q|d9-mK1 zO6$tPsnPGBvz4vcK^YUU?2E(e&kI!#R1Ulc458S13KM1{dTD}mGf3Hc?G`vGDd;@Y zFC9HMIxu_b!L8sNC*r_ITFBptyt$&SEE*i#0@ptR{$addtxzd}(5j4brb<`_W+?a; z{u-oqmkm*~lo2!0iJf$Uj-rg!wFv6OBLmX`0v~S8Y;He*ISZ@=niH>1RB>gW!H`3Z z-j@}$7~N}$CzX2Ybvk{vP!w=vfaEA)>ceo@@(2~!!n!|Af0KO)!~6BKg!|D771?p2 z9+CNb4g!Xt1TJS08OrrOR15F4S{7bFk}P2bpfy#r9t%I2KW2;hqMDoR37sA{8q01L z!MjyR@L>7ou^pyMD+ubO_Ai+o4e|ES_4afc`kHgL;Po!|FnkOuDtvN$r9zxhb2si{ zlQ7Zmg-58?i3wYRZJhVsO^b3nLESu&Cf|iSS5a1T`!T=ynTmewlBVo-^k|pJ z4$m-kJ1AoBvFa!6ec8=~lzWUw9v8XwXH-dYlMOb+M1S1dC~{jKIl>w2N@WaSM!>^I5r_90*ct8{ z<HGTWAz`&lebYNjxggy)I0;(9o#5TKqE`v(#AO{JFjWP|z${TfP=Sh+syZpu zkw9v)v4~#f3pyOyiu#-}0ae*@BkVAH#e>bB!&uJoSqORdPN}LowyFzU9XE~!^Tw6f&6UJ&{c@}(_KLMMyF&g8 z*Tk_9+Uu)g7!yR(PFw{yRZhL`gD5z3J&V8OZ%yog2V%8C@-bo*QPX9^`8)zf)+0ux zzsW3wIgss7n3^o-K5!3FLBm@h(P4(=q*q?#E>3$t6YX4sNykEDAz@4t!QO`9Ay2Ru z8Sk->-y`=UtU<}Vu4|!qkEairxL}|S7obzSa&w*8oq-qqT<|%+l;an!9?I_{Gv(x) z0!f%A+Tm+)CZ!>g?5P{18JEZ!NzY@`y-Zw7R9#+Ut_@MwUx=-q6p1dFl)Tmtd09Uw z>-$gwdi@_n3(72nP0QZ>8*68WIUq7Xc>}zIU5c&w-niJxy9(JCs*LqJnTaDWdMl>E5HXNCa^(9rjk~Z3Zp~?QV>8 zs&`ejMPfzj{wqN-C(StT4}{_s2?k;Qw5cp!jeFf)FuI1O^3?2m6=%l-{T1JX`4i@ zt2DODGkb_MokAHp}Uw#8HA~aP_vvRY>#+jHpiA%sMoN-V66HR_InWnvg7+XEVS=}BuU#SN>a`p8ZRI|U z6QVcbU>-BIgLwbeWih|=Z+R%rbN6k-VxEsQ>sp~h>Fq!DQm?+T3G zs>ZP-JDY!P2{T3-QW2ov*<4`s5xZ;}EW6;Ku4Il_c3vhc<1!c>yJGY4CT%j*M!ZSm z58)!~N?1_hQRp1$+z!v#nxR4>H8qyIOC{}MsEQR?-z-|_(b^MUd%Ne)CL_3gLU-LA>d9 zw0np9!VzlJVm%e$EGHpyJ*!Kdt7Y{FbG*UY<*VkehRL;^v*B>5wOiJ!>oS0T z`UU2=Yvad0)(_Dc{EJ_PyyiX=w(O`WjEd((c&Vhr-Q8rf!aGJ7Tq0i&mbN9+mKkT= z0T?(2vzUDQsixlp&xNb^oqWTr&-{Lm)JfzGczTePNj$wo$ zKtni#?c_XHK!?nPNf^U?j6R(DLvcKK08>r-Cy($d#W6W&7a5)gd4Ij15T_LuDLw{W z;^|0hC@WztNa2FZP;Z2oVJ>q9+{&{$dI1lBc68%*V`z@P7(>L{akoZJDEf^2jXER? z>&?UP+$HXMl}t1f?(=yCcg`c;CUr%wPg}-=!qEaqYurQk&E)Z4$3Nryex~a~89$BZ zi8=)c!e&_GF6ABd7dKRLq|^)Jqt9_DVLzlg`V7L;iw*iC*k+Q_?pnI*hR(>syGLiR zK+M%F>w0?Ncyaxab!Qu8Ivt;5bkgDqaM;d63eaL*Xw@`QQOZGKZOAxp{DV9oH&M}HK9WdEMlFJ)ySE<-RyMcl^s{vp?Vepl zK3Ky5D!M3{#rxy)=I?Unq}RIFa-LVaWjVT9sY z>1WJVTwu;~ed9@R;vHK!!;a?L@N2go7E?i@q0^<1P=%^y4|B=4QSi_+`s)ayW@9bd z$M^xyO@v^9^&6QgkAgXejr7Ox`>TDdZDR4>GMxG8z2-n}oJ+Rg=WD(ZlfQDsY~PP& z2he74#4V9EA6~=v7}pxOiOPuTp^?n*AJP>Unf(dp3QnTN3Vbz3!3@MC_I;vbMvEuu z*`ompJB7~1wAQU~U?n=a(-d{5r2}`up?E^t(k{db`pxSGGSY3wwOY~!>#e~jpTE0Q zSr(WT*?84FH$j8IALmGgK9_RsXXA!8~bn#W4bqW-qkZ5~mOmGBRz!)3zq#w~ho67~4}`3`zz; z|4H^QYC;sLYGDL?EkflnQ98#a%+CI*EV z^Duge!d;WulG{MNabe=c{-52({~2zC%z$gX>pbSzb4#RBZyxcJpp)Q-DkkR>SHV1a z@7yB`N0AagGoj=n;R@*uWcUA-W# z9#p$iQ8K-0Uv5|Ik+Zp^U0|xv!7qHRQ6@1HLPa>lv+HkFECCK>|HlQmS{K?~zcEh_ zfw!LPBtgu-{rXO{?s*&IX-hCRxtEU(UR5?#X3LHa7tyrEyVV9v8QCh8hw_?aCCp5V z#HL*!BQ9~-#BddcWLF#+A?I~9ZL=2JxakDLYbpY?yF_J7P1PT?psuSvwqmYBYngT= zb9g(0Kh3MP@*(_N5dwTHqKxU4jFhdv+sq4wUflMm6nv0m?d_ha^Ozg6U| z!Qr!ftG8=;enrOB$KRAD7}U#xk%{MIOS826Bl}MatI3^)GCf_c z0A1l*?rMKfsWZ&bDxoo4Ut(NhtgC3rAf~s{8LPYj`p>)H`rCKcH>X~^H#f)uca|fU zw^Z!8EMvF_m@@*Ym>SP)`VTUqK`@Y=7IHx7Ca~2B23=Z}ImY)v3kXx80 zzDu0M6zekEgKgRtKN+j>E?`9M_5_1Se95z4j=`IZ21){MZ~aE}=RF8$6y8OAA*Z~zkdarj7B(Fg)E6Qe9A=*BeG0X3I8;NANyOvKVhEJZ1F2yMCLZOsyBdfC#<*yWu0|m zTfLkWp#y!PRe*)3MRNPKaiN~w&CViWTNuIXv=QqPe71<#T;YMU@~Q{h?IMAD)3y%x zFP-zIbf}nPaf*yDV+_9x0zf?%8}q(349HGoTC3aAV8B_RLw_QROSbSy^Dm?yc6hA2 zex7~sx|J_;66k5rIrOD_C$!$3adI zMDEYDegQ|kH?td7$Jqcux4K>CSAn7+YokYCSc)D=I6dHH%QHB=JYuVDmiO#KTjOxB z&|^-~M;l2F;&Dln2SnIxW(%c&P(0J&;JNLYrQ}Pi(4Nzwb1b1BZww+~3H&sYrwRSv zBh|Qi_*O(s2_`V=9e%|SYR%SR;*Rm~6mqyhl7@Q+#?zP*FqnD7VHjqrX^#iiekJ{c z@TVJ8>=%QP01<>Oj*uaOEPEB%sS;OHLT9OIOx265`IaD8&djBIAlKf2|E@fQ8r2^M ziA#CAG-7UZ834s(7mly)B>Qxm_1M@_se&SlOdQy~=;k_w(lSAayd4p(VP7SxkeWt0 zv?L_LvAivxg4w4NC9s#ADN5MgVdlRj6tG~+PrI`_9C)+ffzdd`%a0!0h3)ZPo>VJpoW0$S-v8T4I6`%~vm$JDr81c{$ps|q+VDc&+iqG9u2DDijCkGFK z5aqNKR^c;Dp)tjkxAO7lDtc9de+bHX0_}}H)bIv5*?BIvstQy5XxD>-<-IB&X*e*~ zc?)E8vQGD|2X5+;brqSSHs9h_xhg{1*(fbEfVM*x&$M~CtXyT!b+6rvAm4+`phgem zKLN4w!>@gL3^_gXR`a?TEED|K>vej7jxix~=mepg{k=j+1ySzeiV?}a`FTamCf zw62%BFdY)bs>d^3Io4xh7RbuL!WJdVq3!I^W2%0wO&xnus1-Yo&j()GYVx#1AYbq9 z9bdh-J8+D_i2p2dWrifOMjW(czJATVf!MxEm3rTw*lsM=JHrIXMkftsyRs88K3rmM z1GR@Qp$pCSW;&kABCP-1%8(c*9^0?_;wAI#-<@@1n*}DVfVs{1QtVeNZ0BE7X}GhN zfboubLoyjk z1)t$!I{jvs{eTp7yML%XFQxjKQ53jXcPe3F`i5r3$pE6j#G$Cw%g-#nE^WMD5(fmNW5Otv0UgDFiZQS zZG8*++hvjrQ!ybCi9_7QECpe5i_8r}PL-lWiOdFY+tP%SD=}t>HQFHvdw*r^dI4r9 z^QBTZqE;-<3Aca+&eddohmwoRoW~t&%)6v>c9~@B?>jfwvwZ<0ezJone+^*3R*lsW4>x+l#F!ZRz54&d;~*i4B8 zPo7|*2jVd8m9p5aPr0gWnG8Hj_nqdEr_Rju^+66ckyKs|8Dkx2clWx=X)nv5XSfyw ze}Js8YqU~_USOGLmI?!cD7W8PnaTFAH{ULr4Crl%4NhtIzmUb{gT8>fLsm;<$Y1F? z%CpIl0zdtRUMk^HC|(qtq(k{ma#RWY^h}lPY7Ew_d&gL9?C4a02QJm6kW`E``qgc? zZxN|JAU}~Ivv~SM$!>6%w2EdN8Eh`m$P^o1+CaHpx`@gH!>?s@^Qs9fhGupi*T7n_ zPgWUlU737b~sdvkR?D_x^?STyAH&NF3w$#WHyX=(Q1qxHwMKDj7GwI zsj|y$@YfJGpYBIZ!yrMAB2C9)b0n_fD{!2Fj7M*2N*v*htefgkhFrRQt91b8&JtOd z=Ono-Z|Pw3c7OKCe0ezeN1mDN+E40Y6LPmyT?te$pWNYU$0-C8Ynq98e@ZK~PSr|E* zf5EeM|LiH@K_F?7?WWXse&pz$*S>q+Em`lz-SXexNCj&$U=$0RJslgj;j_wcW(AA^ zfWmUPdI^N~QbNi{Sn1PZ3(r;OAAOkWUxS<q1HnA_a{*^t-82xRt8DF3GPfwj(y88MHJwZC~aVzw#iLl@*n^lbd#}vk+UeI2GqxNM z=;nXksE9Wbl3h#iel_#-;&VTg6(t;q#}#~{1`L&ak!Y_cO)+&>xd;ygcPf?D!*O(f@n)>vI zvi2eukgN0{BIo8+Wz`E<2Hy9s2-DUYsOAKb1MbK1FFiw086xd+58)LqeiQ6N&q}cW z)N(KIFMRKJ=HF+3=YpgG#ScX42Q4HZQFmok@(C}A*lR=rU1 zbG7}W-+LCVCRff$1qWH{=D+JfSt4tw8SU&CDJQw~lu(T>=!=!w-jbI*KEmINl?$hM zIt#Yacij!uWoh8TVS@K#fJ@$bUx^*z#AitSF`==#Y)>Z{j#yetBR*VY;w`?|o$EhMhncVY{Go zyqD2?J~m?+@@k)d4r8lgMtB~vyf=vJa5Q;Y^-22MB75t;fY|Gxnk~MVI&Uqr1hkt- ztvHk^pdt6^xDqEoqTRa|+S<0>e7VTdheJtQ;sFY0a(C!T2R%UzDLU7r&CFRy({{4E zmz&Go688=j27buL$gX~*_vkZS7Z9p^gYa)DjJeViB*1R;0jFTZlV27)J`R&ZqUycQ z2Wvr`h#TvKJg%#zX@Rb{^&kj;NLl~>o_zSc3p{~dWfa*0GQ4Mr*ZFf zo0)c0AS-$nlXwuY>F34E34NdCU7u^;voWJEaF)`>32x%tjBIxq_DcGX0S$COwB2BJ ze?!Yy2=i+kni1ueAMpH|oV0l}StuFln&+HsV;SLi%;GR7fx@NKAev zNHuMOP3R)$q&n)G9)Y{~$j`EDa2n0U1BC1m#)>=;SzH*#CT@SOwRc)*%azR3iOsF^ z>kg=E04WR8lPSzV4duZK6&r{Nf?PM|PwbKjp>d`W#(j`8p551&Y~=OqBiwGocy?(^ z@cIdYGYL96)+0y6Ta+6%)-4w$xJj3K>##VRY{9yT|FD4U$NV@N3S$&%S~-96CgGZe z$9UHUXC3T#CV<{$KmXkO%}QkWv238wh(w;Ts#_C*h*3c6m)+D@-P6{_VKl!&{aaee zB+XlXrRD_f!vNacyp~VmDr&hkw6m-rPr(5iKw~XXdAkOeKFGzByCRnris4L0g8uuI zZ)a<KnUd0yox53ewM`BiqO3I1Eg$R#G~k^3XGF(!M>Gifys1>dkgUz*c}_7VNsJ zAh#QO-%X;eSDsP(|4^Kj2c{Dt!%mBnh@Q<0XXa}7`NLXdP19dyn0tE_d{hek$Aw{4 zltf;xeqXdo9$GwOSobM=CmPy!P^?U4=$v3h4qS4^((Pd(avZc*=TbV?JNffdo%L~f){mvTVh=vKA0P1Bv+rOidRg`{iT$ISNR zMZAz=|AO;`{38ISS%Gd#X8ka-HB6WEA8(Z%__2iewKF7j@KABN>*3pr1Q}yJjUs7@ zky~nnbxR7GVcI$sokZ%U&MGB4M&mlQ60Q86va*ay7+5rW!ED>tg-vHaA#Y_<6rr!TQa*v`c-1>+|1U zB*BKeX|oYmCM655>3wQJTXnL|sazR`pkz>dnW-PSy0ej7oe?&XlpaXR0q&Y^(_JS4 zCnQq;`6<-&Vo3`NjOl`N#~-@N-Wic0s4DvC_iP;98QJ06^1m|{aMcNwl5(uV8)JI^ z>Ms=#xzF~6>EavwL{`H+R1H$PhQSS5h8cw%%u3Yu6S^wJ<3NXE@FKS5aMD$*x9`5J zIp!mR+PGD@Nltc<+MG~%qDrWKU4&$@FW(>9A36pRkIgBix)h2cPQ@vlkgJfjxdTad z)Uts&d?;hA=Zl`(-m2_82-%7jLFxg+0MWeO*aaoaVUzj_BEOr_WU%-HLh5MhTsw-Y zR8m!V?D_3lXvO;D3fMsa_qPak);!bS*X2yfqaImJ{USlHW34{A2pc39d#(S#sQAb7 z3hoHY^HI|bD_plx)2R0HtKNG|F{UE5^^<&8Og9-Yr{C;s6=r#Vy8>QEeXm%xj2rqs z61-Gc48M+iE%$~C zfmM8`zXW#|`Z}JTv1GLIO6`M--_ZtaJ-u!8HC=rrjVvBA-bq}k<^G(C!?{SU5Yu2lt-X>x18dn;Q2s>r8*I(5>`E*% z8kLoLpFI7tYkTWMN^7I(Hn*Yv_}fU)w&bDe2D5IZitK3k+Q`9p>F+A`!UwFvaSD5P zk{=~3+S&+*j&k1EQQt@^i;?31nfj1?P1UIR+Ao>Ya^hz?j;(vaGcidTiTTH}S1mgz zw;i1$!*i46F=&kbkpH-I*4SzV9UCV6hyW02*y2g!Vc3;(7R>S-}c5AFp z?WTPN>cCvVZhLS1ZA(3UJOLk=9;vXHkE3Roc zzoKGk!ob~OONgCNiBlOC2=6(`kDwV?XOK^DoFOzRLwVIuL^D)2I~Hi>l}-|fUdXZl zUE>*A!%~??2OVvzXqm<2Xk+*EQDjvkkRxvF5nP;6=vfa|9boMl;L}q@#8+{C)w+Nk z3?KoTX4}PhaXb*ba?f3s&r;iQLFpr1e=i8A&9l$W1~xtf#3R8Ve0H^^Y`LtA)iI2d z(1s=2SW4}}qa=lbp=f5Z+yo47eZ)*HWH8la(u1d5G8YI{*v;GRsE!65Q=a-E>RKK5 zXvR7cKr6mk*mQpS?UFrl7*Sskwg8|rCN`G1%`+#3Yyi@$!5~sypKc^3X@gg@bys(< zWzVr$ihYU-@qQ-(d>^#Sa<@453EKC3%5uE236 zv~+}{Bs7SUA&TUKHC>=WOsMVQNgQvSL!yp&EHOekXu#2s!sH{Z*-=(`qV`hxt8G;H{h3moH~{jzu=V$`Pe6 zs>)9GOHucoBFA7dmf#Mib+#kjFu^GxByfD))uQq*UWw0FRR98yDnBsGM zg$M|ijzaYD%-h&`WaNVYx+SlJb7G#ROU-2YHE~E}t9RaiNT--0+ zbuy%F3y!$)%ogG;$&w9auU*M)agN(x=7)mLjT==ZzUeS&!RP13(K90lYrD+ zFQI2Hr39AL+g0MQ08$+*Of`Al4YLqhyyp^MQP>`e1c?@s_@em|R26SwG(>!1WG~^m z1dnMI&XcfsWr8onGw?jDO3Sl492i=gjmqg zfk?oWFGeHrS0pPU;8jJX&eo>Pt*;|I^-7{g;^^M1ad;R49}7C|Q`YdM)a0CHVTr{h z_f=S5K1U8SY?5;}fz+8nTwM|lJuY0dE(tEHmUx+%@`n9x2bsBW&!(p>JH?Siptm3| zvI__Vx@=`n{w^P@{}~xaM)E-yLt*UUX&}H{90U5Ykfhx&%cG8xF*AzP!!W3HmGlV7IF*lEcfI2~#1L9SMw|sg#hY+r4YOIatvC&`g?&5>2}h zyPTW$I=BBvfpVCv?FFWqML|QUjd{S(qKEf)&c`h+wK6S(!=3tyt2S>u#8m(Lgdtw> z^g2{z%^6=73<5(6wWQ=HCEKe%%#(_niTp39RgUEQnG3gWyu3Y(SBMyyn&7*3k!p{Z z*h=9rnc)l#BdC8IQt||I=3+&Nt|>>nkeb&pDFMjwSAGKr_J@9t>RqNYwGyddyq6{v z6RQ*?oU?s`k7i5l&INaGH5#wv=1#|g(<73 z7H0t;HfZ1vl+ov8bXW6baDw=(b(q>3nl=Zc5sYRGR&p&Ov4)E&2%Bb?JHHxz=N&6}Btn=;fdbvW6%9sIld&?KgrwUOmmy90^ksc_1gvZQET*{05d)`DD?+rfG+B zEl%Z30bR(fX;y4%C2)l7C=CA*v6PJD&b7)oddUKW^!C=as?vzEo5n}Ac!U5#19rVS z81xyLVqELouFQ3W3z}}r%}hErU4GyP^QTRf=toy+Zh#7blkdq|B2+pF#-crnwgf?|&PJNh%rRZX@UG>AjDoXiTVrs( zeOV*QQ}Wmd%#Ih3occlXa0YRA2b-h6ls^Y|B^G-+(ruJlL$33beY=r@_lY=mLR?i+B9oZNM4Ww}H6 zZCl15QhC4dYUWx#6>mjybpcYHn89!ZcnE{FT|N zAJ(B>#8#=Y1Z9ytetO1nD5#)7*X!fIfg_=$hP!ZzWIp3Fj?VRP)Wo7YvxFQpC_Jdz zmEvh{wCup*>LM&=o3dm(1m85CW#@S$JC;%qi5it7L+L$EwWh=&e_X#rBajFFDRt&w z%fZW?tx5ihX(2o2tTNheu1$)_2xko4D3ObWC-tJ7rimyP>;z{&HDN*>5igJjm|7(8 z*IxWQ_{u9**Fou#PX=IJp&FWVbv}hxVchedEnv3t+X?N*i(1LB=*Tz16chvoh(?z7 zk%j?Te9>D{aP0Rw4cans{&h?5k_6lnZ%c!$Mc<`LJOb3c7Zm8UFn6hr1ROU_kjnXZ z=CG1*?=(=@sPC0~Y;{v&>gWpd8xZK8%bM36&jAuhcN&rtYKW2mJN7p3w6FFzWgx+` z`U#e=uzp3Y&FK?Xivn_L4~TMa4Dv$ia>U==wBfyB`w_ywLRwmHMVI*gR!w3Y*9(j? z7pk47$6LD-oRXAD$yb8N_Gz+s0e{Ig9O7B`hqqA399`)dFb#ENbvC*d_(t&R5u)g4;TbQA(-NrbBEB-zNn1PLOjN&2R zC2>3j0j~q{1b%$u8UI*cf8?lgtb{Ps;2eRUBYp3&ob4u8TqYteBII$Pi!qT zH;|1mJ^pJ8RX|GYx38h)X&;<3x$d(duACEIcS-ZJ3pYu-lB#6*ZI?O6Ye~`qv+6CF z7a}mhuD^zL6usLWME?g&Rc5hIT__>pxMYeA7J$>8in92eofkJ(hUcz?>u2Ga-;uP; z`(4yv6>3ADL+s)-b4W9nV3%>#hFpO2MSK(MPYgfX$B)|#QU__0OKlV^G0B&s zzA++eq$$$K!elT0c`WeC7NOgyCZ6Y1GZj3+=UhMs)k6#kl=P5hA2%OD51`jx9s6#l zzLeo`z@`RwFxX`#%Ekd?cp2UcBk&>x^zmclV7l!;@0dhBlX8ld<4usC`R6wCm4XgL)}p`s63TJn-kyifx1Wf6)LYyZ3=$oueW%ZOitw z95+(Ys^@vf_$y;{RPAw9MseSWPLzZ7TpUd}BGj>Zy?1eV3-X%71n-dnp)>9+^L?;N zxnETNl-fPIPV#X*39hkD-oeff$O0=jq07-QIeqARs2uo^klv$_-@VCMJ^d%vv9~=V zwBNkguExk?xa5%hD0V4QC)s>Hf7O@T>%1eZYe9O&(=gZv5_hxPff6>`P`9LjC=rD7 z9kjt9S{mKK%+XI-=KFXZw=YlGri2~|j`e(0*8(M-GgVeSMXvpS9l)#}7Z5`Sw6=V{ zuZ9@UQtccHHJeQR9MbTXUa|B(M+$-pHJvrNf|m@$nnpz)x91oV4(A9G#?Lvw8U~iP z0yfGQ)O6~ER)aMc8GntOM}8IRY{kr#jlK(;(be5ntO>fqfYFW}H*nl0^Pr=F2~5uU zM#eo3r}eQ|vFLl=3zqpB!R95IGw>^;2ZiTVN1%UD#q>Z2qzOb0Cf zlKIR8r+YP)`adP(<>{DD@L&D=BK#iEbCiSn0-OFU#Vb|Zm@`K%XoM^0#*I8MsyIaB z8c~u{Ziv$TvK#OQi!r@0*XTmbQXd5m|gURI<6axpFtMcjPo*MVS51ljucmd>U`p6$N7B~u zd3^Pf@;;FC0!^I?TPQN(xzq@^oIkAfQBvZ4M>@f;K2f!N><<y4 zVpB5chy(-`=CU*iObXl&cyQIF$k0dE1wbGJ^iU!WM<`JTDI?SrA*JmpB=@a+f{&GN z#1Zo zog;&xt-xlpVdOEKSjiKN6=iju{gbkAD0|&H^?Hl;KK{SAEBWR78yM8|n(Gn_Y3wIq zAZHpXmlt(0{zTv<0DOx?O~<_qjvmO>_f6T<0 zpqG$OD2JaPS6KbmBkA7nh3c?6FEiN>{~L4v+>@bEZvLjcvzOxW(!=zM<`J6Yt(c}3 zmACdLJ%ACFe^0qiUW2nv4OX}&3Sf&PNoFWb%{rwFQZwq-NNg;}o~u@tVfbPqQJq1U zBCH;~^P&VfI6I^MM^!6Hz^*wgIH@5TW-xbWi`|LS z5#w|8P+?{iI#oJhnA({TrCKs$|9(aQ1m}g3KGa5Vi}_ayXF!eyhg#$}2@_(+EfCy{ zvzPy}+|y0xGDR%@sp#fmYj^Ra3J8&D&!_M<^Do43*L?tNW$3lAF9$31RN*h3@%L(j zJ+ds%7`R5HQVQ8$ft1@>NEYy>T5tu!$B8FW%I303ANBcrR%1tE(#wm~#fqvZeM$r` zkcmBXONf!2Yid4{HP>!<%9l^G3yiL!4%=ZZs=2B{$I3C6d-{+aJs8EBXxqB(rY3Eg zq4ZOK9wZ~1ri5bVSX7U0R724{k$ztTq>skW2e6|w?B&yAQ%TBtSQzI!`P&c*vXE4=AW16?tn6fTv;Ll^5|1B&pB0N!9MxQ;rN|R#A)g>Rei84|o4^j+` z$rOIh=Qg|JFqiTx|LDhM&mB)*)ADZPbV6ognS03Ae+#nt%{knl?-nJt4{u@?HSg2F zjF0L(&-#Wv!Z3)A}@Sa=gu$TKbgSvCF-}2Dd(c zN^E6qgF2_s%UkMKMxB1c`_omfQPuXk;JmEEgZv`PDQEw00n(nE4Y`?&^JhQG_%|Fu zU`=sFp0F<3=xYy=wB%W6uMAs&KktAm;fI)#H3aWB#$7!qB)J$^>#&mfP^%%|Ki==x z580__+v4H#l714d(a*--;qrO%)uM~kKEpLd?e0&V?P-nEAQs?k6kB?vSLw&BYnB^e z(H^nkG8%q5aKC%&1Km|uK+*>kw`_6-vKtg7@ph2LfcrHY%A3b&RndLQ&&^@4pNSKl zf%0>vh%G&4D68jwwHFc*m@(|kE}uL2SXr+qOkUoU=(YN=ICeEc+2gg>f&nkTWJjys z{kU1?+Uhz#B^2AY}m&L7f4qsf)CaVEj{I$4HKAH_W`yIFn`1)r6>R~lUZfku$4$^?fkJllJWK_fUz;_hXV&#e%x^`P-VdemOKQxuY7B}OjS-Tn0 z$x=oH`P>L*iXVPxM_$rlqWvt83bMsadukRF7M0bjKk6Y3X6~AyHh2Hi0(3j^Awz$Z z%{KOj2{Jz9LSL;!$5app1^f`?nxLt~Sn7SqgB$mm#=S;LzSDHa$MjiLRFa6guq1ZM zB`D&bJQ#e&z_`|~ylRpC=9i*A&ygOCAF_G)K2Ydi{@*ZY)seVZM(f(CiK5{n0N4AB^AkaKg38A*I;x{g4_EB5{h2vQXWY@~+(2#2TZk}xb^IRDI)k=Nu%!Fk5 zV-Zq=8);&JqL3|hElTEh4CZrO_v|Zg{qOsKct}l6EuE98=aD9JdY=TfjvGyQSXmLx z^l5{O0pPZ17d~0Bj<)BPN5`MLWtVdx-raJ{-%I8vve4W7Fcgybd>lfUnquwX{RN#T zD1LS^XX7Y-YQ|Ez7&5W<98JBEjn`jG87c%e+HvPP^}8!fZLz)RILB;EFDa^6|smUaTrp=i$yV@GQmYoP1(EBT=Hz1f+Wsc_bR#J zkD1Sio&G~)hkRnrZb27|^z{PTm(}mh0;8zR%r*4`Sa%dUeYpXt_~#;czS@5kzn?IN z#M{%h72hO9%i+~t`EQmDST_XrD6ku)qh-$ujifEDhUnDp^+TWJ(Ri6Ol1n=@^$aLf zprOTs%4D|Kxk|s;hOy>LkgjqnHtjHwaQD(59U%=xa#}Z(%aLe`w|WFkS}l%|Zz?qY zAU2LIU<5;nIv9Wev$nz#MjSF_*rrm^?fRE#8~^gadje2y_Lvba`j8HNkJ- z;(3O$E1y^<8vAk{(!D~Ude=IWk5KKF(1z-Y`!9+lZMIOYPoKkUWQWJ9fhw$ODqov* z$kR@b`I~UyZ!uQrOh#=<1m#mJI%4{_}fh?sgRaM)4OP-0@@W~1Jo zjw2*N>{hm&BMwoK+n-xG^K+j*t)C-H^yg8ZZX`8syF$Rq_B2k+y$)4hlIkS$RLn~x z?x>+!v-+-SgFalJ!wFjLt{(AwRFMQ-?1}?cS^orouhumx<7s4{osaq6&yOviuF&*} zg~N#tu=KP^{Gt|VPf{n@n2M|7%`|S9eSZ_P$QPTsox+tvI)eAL03K4@xmi1cduVI< zN9KMU1d7c4L#~vy<^J#J_7V6Cd09dk&>0u@S?eE|gvK=}1}Y;h&qh$z73^zKpSG9u zPki?K;q`w%`Mx*y-TTEdQ)GR)$&&o{v%V`wbxksooTCWZvu_s11dHO8zmX@~5G)J= z+F0!oI8soLD2QrHTb9{mh2t6c{R^@=9s!pEXC0u^^TMv6s?Guo13V51EmjS<)i$9g zPIGVL@2#WLX&nloDS5Q0q|5yVje2@L}B)nh25CUshy*asfJ)81_6QGn<0K zl7QbG**!od5;&grxGnazo4XFzMz&`h&MPmz&$0L!vj$wPaii<)l%*?Zt=c8m#jw_i z)B6r3w>c?)AJpsxSHi|m80&s9F0VAi zh4>J%=t(ZcE>b0G8+nOQt)ps0fGg zCkM)&L?*Kdo4WRqjv+PzLj{|V!$s4%L(Yg#zvw zbeZEUL`;&njR;g5g9tR-9*rm_%ul?Nm{fQP7Sri_B~=auOC!gG%|w8y9MZ+a$L1w> zz8RUfSWv}w>0j_S=FL!MB* zT@2h1R{iT?by4*-aY9hj#UJ#abSULGL3X6`mf%1H)f0{Y{2ehdn8{~kr(bQo&RvuB zAgu;h?a3k@D+v?W7cK?=*k(&zTzHMV}??`?WLAt#9KXIDli!-}09P z{-s;!{)6Puhe=~TDgAr&GMQ>_T#EH$xR!Spk-i5z@aWYEX36LHMW2)Ia-mhJJf02c^%FB6$u8WVf8l6#Y07-GF> zWC|%yI~{f_sIo5>-&tei>AH4H#P+jLV3T{8ama$|UUnr%_YFN_kHB42##?HxhGzD4 zPnnU!!TpYcE}TUC6sthHi#TOGt83NtUSUqtFQ(Y`N1LZA-imC zl`gyyLQUpSJhq4^vhlQ?}@$jcLp)NX?Vr7#o72R|a4233FfnCa*l;S|Q^xz2pic4i_fv zG(GO-Z!%z1EfGbkfLJJ6r+4#d+z1`(wN zgiwJ^N78R-{H9=V9(^sQvByuCAEDxxzGn{Ot|N!+OWDWkabZ?UN~t& zx3_5iIr2P@2f#ThG;2B5fsxdmL=TXLFoySD9C51E#>8Ls)F(_X<@uI^0CCJg@`rfP9F_)5vwatHh`mw$LQ~OS=fn{vK%a@5I{mMiKR><0kThLA>v~b zz^SEb0aQLZ!FBY&#SPZE8>pbLS%Jx1KUzSjh?6EhDw@DCIZ8u-j|l9y-L}J&?d$;e zQN_LFYL`YK=NHj=POY!ah#*HsW{F9KUCRAWwtc4<7{ehQB{Ld#A8;fv{wE%jYV+gD z-cAJV?m>qAErf$e-jAITIJ^a|^j1AEc971-MC6LF`ne^Hbn zv5p@L9IRZ!Y1ySpdZ%X+JF#^3Jw--!t@hgu(ew{x@X`1oSJBx)vhE-6_Wq!jZ*B*z z+V&iUSkB#lp2aBjDn~uYk|>LF#J4KXJ)OGZAmf8We-Ls%&rq_t@ zA}=kV&dgkmdvb=PX19y`!Q#LSu*YdDd;?3v41YK*(jP!%Uy9H1$+wQ0w^XHvHDVle zrQgae16RZOcSw)oyO)1!d-ZUf7RxBsM~$j$Ow8;qZ@DOhvH2jA7}h71rz3SE*YX?H zc3KkGYxHQfa!Mc3{i0~6AbD@h-LavHq4}UXJn5a@(G{5^ag+UB8hPA`4YbC&%Es!g z)Rl5mKcofxcRX8jY>M1*zlGPHDI^3$)MFzmdsG%bUDFQYQx+Fe2z+`L7LPu?frjkM z7|Lv}^R&w{D+vYkbXLP*1*(gO$Cw**`hmGVDf&a4=r-z)-BXF*Md~MUZX|fwK!>=E z<1|o--`18b_d>D(Hr!NH-~%HYGN$i0vEg&%=x+#=;g$baKBHI?Z>J~3lv2-$%voYW z7HzoO!^21i<=aZ1H;5O=BAKd~Id&tDc5F9-G4hm_O~2K@?``-hO2e0*5X5IQb}mXAe9#p^Jj%_*XIS&d-)F+ zPYresh%~sa<)rnjKHOwb2Q)Zdfb4#??(hErq*zwY=JEu@eGN%=^P*yY$#=3J>-e|h zqXRZ7-KoZw>-Wtx;133eAm8fYLA554Qo>nDeJNK^-p;o1gtJ#=#>M7PAzUXSp%yi|BmApSgtOW2 zDMT47252{z$A}lgb**E&5Wr3o_@Sian>2+Q{(o~1I zPCGZR3(wtQp3alUe9P5?7qfWWC^4WTS?{NgnG9?|dqwozYbnRd=m1dG<-p>R<9Vhn zoUp_hy^J6Ux0-UL$}l_9j1OjoQ52_QpJv+-s!o`U`?SvT^clW{lZ0}_bk5j8l>CAQ zDO}Hd@FKkk4w~QV!oioEjwWIc5zDXBOe3aF@6aC%b>Y#T)0~Xb-$E>U{|^)J6K@~$ zNTulb_7G(&e|u5SHtR>EeS1T5C`EGYRQgI2J&ju8cRCfbgC)&Ew2B95c)o?(&-=Uk zWnZT{yApIPq(aqSMBZGMmRK6iwCvO!MVMortR^5#>6J*~n^Hhon~fjzZ*!Rf%&9QX zr_&Y?+zGrm^=X&XMr(+z9O*dk1?V#rBrbOg9|Zw3hZ<1KwUzFNc71B>WeU9u5*FY^ z+l+9dC^w@S%i+HP{^RU^=AHL`oOe7zA&{@gI>SSWN1A1yQnq?h3bN(2CqWSz{-RXB z^oeEGxPBR%_`QhOkJKK+)=0S@)6IfU>;Mqb6HLw94#%T;*w?($qHigdid}JgnAJlq z{C9qW;N@Z37S%z?&1=OZm@e8_1&4(IQnO=I2go z{!>hd{(!mnD#Gk3ZK6Muo>e~ma=+1T+Gp`n=`HBpgSlvrlHi15j*>3GUTVv6=76t+ zlu9_XIrm(~5x`hQTMh5<*%0krO9&_?i$esKorbQFSY} zli5(bpvbj`7Ud@_pOt)QT)!exGR|J1Kd5VzbA^w{eQRT7-0daI4Q>HOAi*8%)40jc z$%_L65y5r01Yzn;B%tSOx72UC^m zHBmy=6+AW@a7V8Idw^Ie8Yg7MQ6yGAJb&E?eZ()yU-19Dvw4PWLcvB zEzFfi*?J@Te$6(s#Nrr6y+<`x*ZcY$8v99H7H1WBE&-DnPvM^hLK&T-d)8K=jrANH zz7=+S+_9rkB=w2FDGrY=;X;_KAkAoce~S^RA^%fj%6YNlyDD1?VX=0xnnVOVSLlSy zwN-y^FuUpyaj&k~GU~*DCA12bQdQ|WlWGn)30H(YuF;)Mt=S&8X=Oto4al;yrL z!BrDMoR1l+Xpm#QFUr;NOY8?>_3n84aw_&5#8Pv;G4W)FpdUC zY>fk#AyQ@hb-O`KlQC?!JR*OTW>wGe*gA7#UdQiZEavGe{bNFjPQ}ApiCQSl5&;=g zcq*G34_cN-@&k)k@}?f2}0P>5>SKGe$(c|qca;>{jE2n3n!9%;?PLq?@BeT zE;x^)kkBQw&ig*j`(@AnMfjTRF7NoDUiJ!9>_0zq&ola#P({h3fJC8mjRZ53uU*7jGZEhs>z+rX`>1vd z1ktRZA`!>bPYlO2rgOI}A}M6xS=AROmU~N?G#VylXLD-%+UcV~1(F`N{*ja!5tOPp zUiF9)^)T*$ICfW61t~S?`lvA8vEN|7B+TXf4Su--fC0HU_|d~yTLyxs$koT`SM*7- zt(1o#I%$1(JjQe(P{%XqU}OQdFQbIdKL*$SwB3@=u|g|8qAX9w#{(y1Fb1IF6Dv6E zA5jT@WWw`Od+Aw`F;YJrzTR=tk2a2QCcV;&-$b9oHFpF18;5m88i=a|~%B=m6=66Ai#hKG1+PBh2)9`fg-hn6LhL z03k}});G}{=;D*9NcfC^qn)|cQ&ed-V@5>g7%5(RpJ;y`mpf2VW@_Qq;}aJq(PC%KabZ z=`l*@nbq^@U<3q}K8>x_QB#{tj7guDe|4*2b17o~Fm0p8TZC$~VOfszwXC>yFn8230Xhpx zWZ2wX2WFh=ehM=$pXbroh7b&HU741Sgb{j74>qZe;!)PVQpAe1H88S>;V+nWW7f zqvl*!1Z|JsQQ~sbcd1Fl1O)_n94A;THZda0L0J1~?4E%~-qTULl|S*>;sgYhC`6mI zabnSZJ{q4Fnat%g=NGk|?LkLV0U79vn6M@Z)U3TF-r7;5Zm29oa7JpHYaJ;ZTXdv( zg&+I!xpb#K0PaTarEZ8uHt?#x2}2zl-G$W}k$}-YoWY)3mxNXy*BfV~ClJxZe>qhb z9bSoUxg7t1&dFxF4BaOBSZn?JYE9#*0x;V0-F<7{{fRz#`HX2Hk#r3)>tl_)MN)G> zR^2T%Q$gI`SZdiJ=qQBAwvYJwA)x!l^sncVu0tUJwpAHV`tniw+M_yNP0B3aLl@-v zp-Pibx$fv{=GrL+HSN{s#PMiGK(*Z#)r8BzzKUslw-}t_PKN?7*ypSxAE2(UTXd9r z*m@?oRSt_cSX9m*Z2d^sbPKrn`Oez`AHL+=A!B2o^yUJfkX}|ocB4?uPx1ds!Ti}c ze`gpL0{JFTbrcSvF@_=?FlIw3q9UTL^hEnD$y+tb*yLPi1t^B-41(g<=MdJ~t0p$y z+^G-p5J+>E@e4~U=g+f|3=V=n^ftWH&lpo|x1IZ%d`C^r24(5kk=}7=!?rkM{JjS- zebz*|-{l?Egd%yvi2`~lcd|eD+tZx-$0e0l&iaw;^1R%jSH-<;ZAlrSt+Z=HY@Ktx zAJ<&^v<`OY_Bm$DcQAjol~6a7GGPK;J+eVE@DKQ&PusQz9ZB^$8vMl8*Xuoxn6Z9#7#|F6kReetvunO{z~pC)sdv$=_~QO}=L!@bo!s`nD_w&*sVt%G}Drq4`u zVN8A>AO59AtnUtYzdz)4#cjAi6f{tf!)2gkC{T?i7PZ=m$+CoZH(ByjX#3YyKIL?5 zXUHJTruG{(4Au@VQ!q|KED}^ULfv|gONa0ky4_y85Nnjt*?=UHL<1yjdFWO=iHHq z7YNX-@4={$=P;RZ$#FaOp#;!Y3d@lrO!N&EuZtkZ*r{NA;9WG}Dy5*M-`5$}h~z&l zAekD}qroX3Oln^~o>+9qTj;O91-eIgY8?%CHitO{epCap(&Bk)7Bm2pLZVZP(`VwkiMqO)-`jAl*BFMAP(V&J*Nz=vHVH8fBl+}Qu%}3xZ<~U2#p%%qw&(%zxDC|%`{%T^G8ryOBPF76(9&X}ywAFWk=239$eU8FXF!VQ$q z<vvXZ9q;O~7O@wc#i>=DZy-(egw^+0ykWN!N-?TFeNPF<<>aX} zEUKxn)A=0LoiwW!+D(o4c9*3dBJuJmG7YA>q9OONrRV;WnMav*SXUHC_hac0gQedLe+xcjY3#NW^$n8!J#jSqgDfN0{-@x#}B1J7@g`lZCGdwG&{qW$6loy zT)sY@w@hQf?gFC$b?!x7LD>C-VB@Gj7y$@wbJ0AITHmty!;L9m56G0o?b-Yx>s0ID z{)5+5)cuDjY;X$ezpbZk1h6t(%k1?Y?dtPkH9;c@Rufo^39}b3hggv#v8z-z2pohY zAR+iUt}O7FO0);IpvzMc($Nb~T?y$qJM8k3_|kk@W?I-XG|XN`$ z{ifa_B_rk#r}|sh?#DT3Q4tVf>Kmd-fqu`DD#%Ey5HXWk4LLoNPf9t$3Z5xY4g|wa z_M~-~&r1U+04&n49iwr4u`URp*K5;e`d^^p=yQuj;r@Pm+#42GtXh=54feE9d5j zF(mBZ{iczSl9`h?VJaw}$}oHu(Zn5EJMvA~ZP49FH)e?%3SgvVZbfNbAT*_VrXidh zITk1SU0rIXEV+5^pb3d0WA7JfRH2T*VQpNCjMU0} zxl^odyl^nR|4*Cs4I2Y5+M|2)nw0z zsE;P5Mo0N54xQ-=1N)wanW|us?O>tAad4^M=qKg zEU`h8eRwEI<5Ig{)a_Eq(q%?ptRBZAa5dx$7^)P$63N{KjD}gyG~aqhL5DCZSuHH` zku>$|Je~gFs^M=bpsXWF`~92;xG;swN4hD-*&4C=$yLyipHAdy`&r^n_;mkGS|t(X zCT{I2^4@18t-O|)I>^E~8WD6QvBkeHnDEzL@z0Zi%A%VPrfml=R+(&Q9-YG2YJ_2M zV2A`Nhb4WpPeRM_h3-45M*U)+{JHZFS}eV2Ey(Shw=V9Mmq7qK0MIO!G-POE=`qbR z*s7RPNfF=huPlE}W>lYLk?7hNVi6jNmVpbFS6fZ#?Ijuz_3BLh7U> zfg)S17%bEHNW&E4j&nZI0OMM{9mRIc+X0nwsvx)irjFIAsoUj#(Cl7QO)%N(#tjV> zhvNb8&S#`<8Z;1Ko5)M@;5@=}+a&nc3#s;SbuoDrz~}GPFRJ_W9!<$k{Am*?;E`tQQ?kVllUd3X95BMh!w2a!TDjq&d8K3^=#3& zZD($;hU0sqyA-<0m(pXAv2p2gNL@WDRxLw-RXNLQ&WFj`i%E$pKhN+4#i5~x@XG8@ znnQvJwT>TZcvvqf)&qJ?2Gi(l)$7O=aMk$m_6Y#IYI2QMKCu< zPXp3?=sfl(wJA?e`H&+qe*n$G&Xok_`TdG#6+I_lOt1f~8u$z?pBZ^yy50o@Pif=7 zk_CBl+E)qmnuK|sbr>Z5T?PERXAnQ6fw9Mt*!8$lr3?+59oj|b$Irmo4JdDxSewKW z`l*FC@=7u6n#JaZYvoSpOF4YI;FX3{_NVedHHKpR(2DRc2$2sMujPNZ>Of?9=eN3@ zw|kp?J*GeS19WoO$`;z@+=Lv~p(;CTa0H00mE8OMAkCMIT@u*214MVJh0=Ju?08nG z?k+JfcZ%vf4?v~2bpl^I%9K6pLsA&CFq}{?|E%c+-r0zL{(vk%&lK)yP5OXL@Sh0<0_wkp1nBqq?$_sTXZFh6 z_cB4Nlm2nFPxAhcG$}b71+nFT#D{O?s65bq31uHW+Ax5fF~*d?eKg}2ETnzKmv=Hy zAb;x~f%BIBK;|7PnDcun2=;W0#iK7B-88DiI z-2+^#w#6dX`v0I;sRkun;My;X`ms?iPEco(XN1EOpmYLyZ1R7mC2VK8%{2wac^caZ z8dUuMn;YUir~8d>O?gxWzwNKzjG^fU$`mj8yjf(=R7+33T$ ziMdaMAc?CKZYC4em5hpZI$(riO2W;tkkPDh5?)rCBos#TC}ceYzJ1*DN=^>=a*e>m z9kX~JV>$E?pC!`6cOceX9EuSIg?Dz3BMO_|@07O7Q5qW`rG`>Y6t&(nmmGzRJnLrV^2D5sY`l#s=px>LUyIv}BtZq1Jk9)s9YH zcQn9xaq&C7kN(}}>ELaCMr>&KlLh6r%UV5T`-ko=BVnm}3DRJy@y>W^n@wO5#aD*f zV_3<=Xj%MfAw!1=R4(RAnPYo%tPbF#iMli{fB9&&NrQUk(VH35$ zVtX=yBKMv5T&~Gww~3|+hLD_wmBI`MIl;C5!C^q+@qO=61_~X&;Org@Zy)1EU1Wf< zyByIWoBv+Q;fMan5jTuPl>w@f+-i*v^P+t-CmcZAtO-kqbp3RYohQ|GnW>7oJ@q4z zZVrkBhRsK%mg?&FM$sLh`^{aNRrOxNgL&L{Iq`aUtI??Oov-W^uy?EB-q)6Sb%Bmf zd?>E5;0O#pC?0D?B||M?PmQS+o|Ph!+Z7eWqE9ifa4vt=q(x zh1pKk<(4{Db(FM!*EPNwLNaKX)$4N* zT&MVT$hVhf`5N4eD5z5eR!?$2?~(K|`nIXbsGDf0(P885LjyZjfl)~VJTG@-uC&gk zj*i2b5jFQYb-U*o7W>eC>En;|3Cqn5^NeIZK7709wmsy`)rHjh8+S+QWM~T;1-bSc zP~Y{4;*QJyj>kh@c=?aJSI~r0B#T=ba8{c;?2FT~ja{n53&7$je0^6HA+@Dr%NrYq zH{6gKN_-rRv=E1hi)>fzkn${v$1xZ=$lC$IADG8R*7;f`fOuc8T%#!6%v-ZqE;GCy z7+`gzoN!pDbp{l&6gN{=l8XUYo<^eqM07oCIcvu=n1vb~u$yuTK}5|j)Pj+iiL4{h zLrm)&%${st;9*zK{KGhMj##Zy018FUNYN5@2{{#5_>-N(vvuCv!D<}KmW5h!!+((Z z=LB{+1O2Hc3y`RXsSxNhwjIEH_=D(w)WWdu97r_pr?z4vq3>Wb!~YsR&;Kce1piDv zjw>Ojp_2=G$j<(91k-zbP`}U?eNU*H+ol&2@KMw4QAz5((H8sdci^pWj(5n@*&d2t zNQqdSmtk@Ub}U|SA=k<1cHeVEjsRQGuMBX^>O6Ac%R;K_g!{0eN^iV3nP?* zhJ=>#hX$e{k$#kjS1m-RoRnT8s&cm&I`lAmUVo|>_6r(*@Aa)6CRu719KKuSSi>{3 zGUq_2RKj$g`ZC4ab$wP{eWFulAS9re@AiyNx2d7myi;}Vb*iy=mJm*!nW>APkXf1m zrSfBbJ#?Y3X3#108-+@hC|M37usCS|g?#G^yK$*!GO6GiUA+$9N-f&sNFZ;lk~-Cnn2o%gm~98g`TnEMS9rGOid;M;bb<(4Z1Zt zwdu#pXXtB99wMja65jAtcJ)eX{y87hCW>tmQPfC;$_PtwbiLvsIFvx3){^|F7qN3? zY(^}Hd>g!XF##77`)fjF`L|1Rb6l5aV|{`;qmIWh%#r~3^Z)q`i0SkB+3_Y}@-5?6 zBip4_G}&`GRYF6U6%eY;ZNW7;EA?9F%{2bSmql4cC9x?OSd8ZF${e$L!QCc{?mLX- zRaLFyzOJO1oOr6i5!2~q{h^y98W$`zWyWJOCk>x;%0 zE!%^aH-J@vH3R&Q5_}sSwx8?3nk|(!ItFi@FWia%>Q_E-+FfxQF8-fp?{FPl^qBUf zsa5#D^alz*W=*GOHt0%U({b1Esi;kByb^8e+8cgLnB4#UD+9Kp^%64&0ngxj&|X2r zff`@Ir%e(;4YZtT2drA$x(xOnBk_W%4^afco&JPJ6*=+kqF@}V`cNSnfL3?--!&n9 z)J}bYR6G8g!!{bT9#Gg%zDZmxEiU9$#$T7L$#fVwG(J2LQ|d}?eE|Jv@a4~7c%23Q z@c6CBpz5xy9iJIpf@~a?m?Dz6g@42*kI9IHGBR`KI5p__I{rHo3EK!HJ0hMn5}x%& zV8IyLr&(m#+iqhlbTEvhv>c2MWC_!!B@Z{Hw5MGDGIMKy5y7N!AiQCoU$K$q3SQx3 z!%{_&4D7KKm-K6F>PQ6}=?T)}v6S=`R*S5MosiTHcWPivR0VTUN?+xh{6t(8ky}=C zC1DVl=Qng+xVE~aB_-vNY5MaFZ#(yv1Uo?%F^;itqt6WEf7?O&$dUX4iA9N|+SkQ! z1`Tssv0jn*%3Odwp)L;ITf+1g}wX154qe-qqo5zIAS`O>07FS@z z4``}tY-XpAO1joAfmS+JJ~YpwR1SEA>N>%ET{5y?7$=>o`Z1N9ZR9?dGcpB=7cZk* z!m@qJ^w=G-=8T=c(M})3GmIv#@P++Z#6%UrGO%gkAB3t%)>K4?ZJRq2P##LM|7EPY zmD`Ex|EhY+ptz!@TNnbt-5D&nyGtOrySonV?i$<)t^tBu7~CPaySuv$?jO&4-{;nM z=hvyJnwmO&_U_$loz=bi1O_XJAS3qKt`$^s$jsOIm}gXzR%IHoM5GPOh-`4DznGDa z0zYSprYc4Brq)#2It}q>cc|AdN^=M;uZ48Dn_`i}^13>^N3{7iJ5fDc9q`r_IKw5F z>A?fQydK4UJW#e9N(?j{m%n)E$tnoT{x@YjU(o93DP&y4&U57teK*~aZ%=X*zzpa+ z09X|bIjj1|Xmf}1>$Ut=G7tM0honTqB8{`7S=yiEv>fO!D~_hJ zDg=^YSdmM~ebz&mrfV6+FfB;T2P~mg!Oa>vZ_>Fq#HzA`iB6w>xMbGr>4{5pvh$H4 zL|mtAxNgn5p0&fFZ>?rGj!RLH)RCec6lXuq! z2HV|_RAhn%iZEYU?g(oZh<8{lBb&vPQTmKwM&n3!VNyR}@M&FUlpw#cgp)YM>0tC`*;*=~R7p&8zIh;*8PP%$|wd{r>capZ! zjZh9HAHL|vVZt90U={*%VNvG4d*ty;n=3^K6H>~a_gjII;uSgUa~d#2EEHc>o;*O> z+@)ptDDepWjAE$=jI!h)lgvs#t!!W6X!Jh`p)rq}kOS?=Ey%>G#*~(XdtBh5z!XE# z4xLbU%KwdxhhiW^NhAvaSvDbnoH;vk{>}7+J&6>Z5mWO(k0ScY!rW(Ppi)4Tl-08U zpxNgRA1=034nU*&x~IWMH^vYtg*iXZdVTn4i9LT~d=ya>fBk%*ui;Zyzdctg^)Lx6 zWo>WKyjYz@=Cn5n6HtCwMW3^yQf~Oj;E%;0R?|+3Z;`M&E)2lfrE{ZEpLj}1iG{b4DThd{Yj*wB6Bv&?Fa8&3oIfC?>E5fD8`k&>XBodG6Wf2Iqrz$Y} z4Q@k)-qU`~Eb_~Mvi||gBf1V6MkM$+&1tEr19rBwumvE^3*t{VBD zyrEo<5(LtjJvp3>-k_=O=%f_=B<#Z=apb#d#|(6i=jhJHTQ<>YapN}*0baRqvIfGx zlUr;a^-|~5qS`wg_4&H!zh9_ z|NEIo(6zZ00m*2PQ~pSWQ?}<~zK{5}uH!zLGU13vCAljrQ{hOk#WTRCoYQ;xx*=Jyg2ZNwxwT5aT{Gp&*OuwjqD|C3ao z7k?bL*25NO#z8BaUO{ETA*#qqtK~sE{GNZsBpgQ4_WAl+;&@d{mW+rwBxgzLEc|nc zh0|~3N+!a|UGpX^(i&c=w~th6VK1_G`P;wde7LHV_O5ODZKz%;HE{s_%*?jHG&1g) z9<(eJfGJ$xyZE6awB%oH8cJ6&X=cAw9jfTpZ(-mqbaE6~UJ)xwQDpRrOjh;Ovfwee z-Cy&M=GS0jOKBPf?*=Gr3xfik={U^$5_ykNz2|%sy|m?P-J(oAVW-hA{X2JKv)8{5 zUjKnk)GRBi6ut_@O z(W}A82(nq6$)ij5X6SgGu9l2<{_D?Zm`A@<>gNdBV()%;bnct?z~#-1`i{}dU+a&| zBYt<&jgdtu;hh1c{^wtGl;lpge%ZJm2%K5HWe3AcR08+C$27+!4bmwl%_c%$d-_Oq zN9_Z6B2D+PVvP@e!4rPqZrItrz}RtI(um!Z*+_+1RNls~rBOEMBYPH5)CTZ2PlHar zo-oAJUE>PJ{Qcbz2O1b+geS3VR9ZtR=z@}~XYb}ZH>u!-YENxV{BM-tKBFXS7zzg? zL>>8|>eD!EL9AYdZekXUPv(3RFuMbqN!bS)Ma#<09;>+nLyKpN_JJ8mCcj;aX-@Tl z{gnNbz@m(u9W}cCS*Voc)Z(aiXmN3IM=LL{48Ww(W?ViH8%RmnpRt293`(gyoGgA- z`L;?{lRO5V!GJRtqg`egeIBMM=d!1oYpkz_R>1+XC6L~1mguSJ&D8^4?w;LTRN3{i z7Xxv;fWqI4)dLf59s0cg!k{>zLd{0$J<)z( z%J|A()kmvX)|5DOT4TH1Y3Uq*DE)It<*mGUk67y4hfZTu3>(vnXGTS8_4^1nLZz$C zbfEHOM}0%XY5(p$aFsk4BgbZOF^w~KZ+W*AsZNn8At^=9fM>7`H@{!+$jPoAjAWJ{ zm*Ee9mv5?jUmuh)XF-0)qSaoS z3S^{Zlr1?P8HwU9%U^w)_-WJN)-Z0D^&{;77pL<3?uli;#dfe1)TM9s=?D25zL4iymgdx;uibX;Lz+#f<0rY$&hyw1r;gcMTL-+cb^Qs zfZ`8z)G(Ldf8G=Ex;gtgn)#bo`UyY;?t+SI&%tT|s(y2z)aq3yqOr+S*nWov7* z?qvBPb=m!IO;22Yyt)w9orHgGX+=dxgKI$u&foAbF*gqCsJFav;}m6N&63wIL{ z@IJV^`rzJpzOmfiV0W1RR_F)iGFwMk)IVtGLz`0YIgU9&dh@(3m;KV?XoDI>#3hXQ z)~U^EwNszpyVbn7_@0m-+J3ulh~|&gY73FSLTubQ-%PKD#$jik@)L8?A%D=f)9(*$$(*X9sHpYzbh9Dd@p zR;cly^wj%C9)wRD#=_UmI{6-N7m#rHXO>iD&Bc|8fB< zd0x9I(?O(DkJN^KwU-+qMMe7^k|=?r9D;m}eu@^W6LuXdG_8?bnWjL6U&$jD?(4Kvou4qkS+_CSev06XUYSUUzQq zOOv~OO=&rR81IWkrJdx9i$gX59}oKDGGo!;tj#CD$*Selak3if1@MDimpf<|_8jP3 zIVVhEvQ>J^B1VH9NXBU-J5YNv^w;Qk<+6Z9sM#ugWSeDee%a-YZK}uwQL}in6y|=HX(4c}`Wpy(9eYxp%yq z)o9!4af-5rZ`|5ox9R=bLTz(;%4KJD&Q~AM9598O28GY{);CJm^3F5?_w{4?TuEpy?kaQ9 z&%g7ld-Tszi*S}5wV-JQNM+nX(mKm?IM!do8Dl7A6BrWLOK2mi{8~}0b^#+8h0b$R z6v2P6I7v&Tqa=n{{zJJ4lv$bXmZ>sx%q_ZKoGo=0zTKbm&-6%@sDy;{Mn^~Q@&D@RK*lgVI2{8bfGb|~oSsULlFnH9c0J~y{I zj_ADVGvAsyJGWkSHmIN*KA|l1?t_?g)`4>C4B}`4JA=xQBPkl`J++D3C{u=>@ zXH8v?uu(>4wP2E0>y<_~XER${$Dw$W?rg71%=Q5!s<&~MG-ACr_}sl}YLtym&#!-J z10%a>3^%nVXU&wu+L@BMBNL7z%h)di5C)!eF(q{xo8(dA<>KS>ygq)B*K{uV?BbYZ zVWZmCBv){AUv5mdR+t_c8)~!Onl(f3OcS``_pW9vpWpn~P+=%}n_S2NGr>f+npbZV7d+GIBDHfUrdMZDW3&DhGqnfL&y&HY|r z&*gPKjd-ou?Xx4($SN?A;E?G_Xg>lSj}R|s1^Mp1l)W<#m1QH^@Y4|K{8G@p*~w+p z(LqQoRbAss#fb6?At}mLENW~Z|94I<^cXsb7{Lh?Ei#^M3;!2h)6~K^Ibgj$2pw)9 zKks82rz`rR-Q~W*@D*yt?2j_T50bZhBv)H2uO~1rZn*agkO=4CKr!I;<-#;P@Z%oU zFcQCSAWWirI_Flm&jsROrA5}GdR=X`TWsrrU?-y#Erne}ub=g`!!`W<=2Z6$XWjqs zEbVg{Fq|HWx17zpq}dy`X>030?Tu28(vLvGR@)!F~nDFz$$&8$CDJlw;&C4M< zI{&r%x6}V^XJ&>(@VWkU%bysksGDzkdDh}$qglNvKmWyX@@NQ-{KOu}s`A?bJ0*oc zH*gnKi@eTDw7|m5H4LFh!P=kwt)f6OP zJCkh8NN5v2X>@sTG2DenhphA;g#V!Icqn8Pl+KTL>Mg7GNAPfK>&pAP@Kw~q^R%Nqrr#KB%UX&*yvv8BAjp@UZdTL+bb? zzet_{FyZghQ=w99X>k~L5G&8^u-*Z$giKo97?{S-B`Bdn%R+r{aPaM5AXXRZEu_T2 zYkO8vFe@{c>g#M6GQj{fRp;Z54TN~E-!l&uhoInf4{V;Rt8Gn{ZoF#nI*KTi=+x?} z#}nAC8_9^K?ZHDhsdj{)*Suvbvm+mH?j+()jfNs~1SGUg^Xp<=k zj}7v7dvPbRQV&0F^`D=f%F4=KK+3J&{vsd+i%l@6Rk!9R5TGB`eoUM&>lXfkm&zT2 zaF&)P;+IXqG3P6&njIt#h|3$I=D=(~ID!7C`b!3J1SOYJ$h7Tcx$!S9x8sz1j?v2} zB*aro2+9KD%wbaVZnnF9#m($v?e_NmVjVjLJHgz`Yk%}X2vUpS5uABa774#;P6-j> zu)ID!xAJA{BoMU^olH5>nva;P=rAI{I?DD0X~e)I#>-*a;ki>~1wx z%6%ZG+iCtO%!SaN_8b?N+;b7cFN{(|xr3<8lcW*w?;`&erI9$lHc0neLIPCuOtgl4 zTF8W-mMriUIZ1vp*q=_=lZKnu3)6C5@UM_AkB2pw1>dOWekgbjMbp!VhXy0yZL0B| zOXzn$8J1O+F;&nUBJT{QZ4<+SQq-}3-|)2H>21bg38;(mE>lPoXHJpo%xyQ(jHQH? zGm%F}u?6)^8arlirR)^-ICjUBmg!SNZ_7kEFl(h7zOFk6ez{E3%*$6=!2Pk#{eG@H z`Edk1qNMXSvskPadh!VH-+3xw@25oL6=3n*K6TL4z$>REIwNR5Wo($a&sl}_fz?RW z=xg3Vxe`eQ7WR^_^6`hkhJ!Xt5^;I?+1r{dNU->>{(elvuIg!Do8u5-6c`za@Wah} znY<%flmS$9o9VPg+#-zt7=Vp-H9zW=WOZHqcjb_hfxHD#DMAloaggyKI_F&2#ESeJ zUG!b9WsV5&aO4G2*`jS3sm@j#q;V_&gs-j_TKA>1ru?Lm8z_Z%PjY1_G*KTh0hC4L`G)r%5rV*YNf6Y$WFIylmObWskPPH)CKcu z%Vj}rkpcb(sLF13(*M3h=y`fHB_$+%oZW(cKUj}9H_w*x zeCYf>6;z@aps%UB*x-TNH|1(QTO8|qW;C~jipQdm=XYP0#eF$8$vmf~>7so_m*)$P zjK*b_ms9xu@yfncE~W+_wtF-k!V628qcFd?=;mtM=D5uk4;k*ec##twJ*vrM7|vIT zn*#%Y{qc~>nC0Nbe@b}Z}TSm=z;{pbYOLTh1_2POVwIB{A|+KKit)$(bjhCTmFe$Y~8*a~jI z^RDV=_NUz6_h8ab@j_r*JPHx_!fD@^?ZNPRy{p6R^nTclgIXux;+8e^9t`p$g1twF z{PRgN&{mbVx;*hAZA@$CP9`T`nI));-bnmlgB&^Fjf;=@QoR1QhZ)Et9~ZZMvGDE7 z@J-IX*iR6oHY<#PUlt$Q)vO1ur#Cb++E>{vG-3Ulf$0t5z~=l$m^rk2Lg*@@)mBBq zV?n3-*3Jdy^}1Oq2?-D^rSdbdviI(>1Dbwvs!9!A5=9-tD$WAY@!Oi=R5D8=}x8^c6K=WJ3yBNo`h zBGhzwzV@*<{aHGyYpCle<8DA}d1VCR*x4rgA(Pg_nLXt3w07nzppYnsr<9A%%3h_P-jHY$+3YFMvE6ZsOJYNdgTGVBFfBCo@os(XxzdP!Cb@rmGyEV)@6zROG)ZCWodJQ| z8cr`aTj*Eq?j4k!V9<`iV9@b!nOt#t6YA9N=KzjQ@Gi;QbY6$HvVKpvP{l@>S;V_k zsf#eWup&D;U5HUmo>=H1UXuEUcDP3Gl^A1&N_k;#{YE0=+z72yYN$2s3&YtrvO_`u z3wnVNFN!s6sEdw*3bY)X`pdph*!$!y3dKb=l??HYLeG>xY5_7ou|#p`$$8HLa|EtR zexQaGP)&`P5&?VMHWyFd1pF!Kgpov36*Z5R`_Ic!i!XzB%pYK(_cIFz{Vso(vCS+l zUQWL!Fz2jChuh7>(h(1jGBUx5*C%5(6Pwi}DKX&v^6W*i2k`^uhZpjlTQnjfCg!hd z=gYN@rlKnB^hU<2&%vE6Nrwjq9|sQa%v<5#zw4vV!!(uGxxl_ciXs%7Y~r{1zu|CP zt#A5zo-TZD?cdFAr`BQNl40QzTwM0wo@Ni^$9*1L7t}P98omYAbn(1#b_W%jn$Bc! zmz5V=J2`C|J8Z7|JPcBY2x~Xl6LC2D+Z%g&Hq+$LG1A7;!2R91xadGjk}5AR6>xrp z(0ZR8vLYeK3ncZw`r8y>^jpjGJ@74;=UPnPj#1D81@CfdYN(-t8|M&rR@{nsd8H9Q z=Bdr&B2iL895TJzH!o@X%`ACP=~hAK60h8|UZwm@|5tTY;s4bIT*vJj%1jg3@CxvM zXLY+T+`JU>`nQVY`^2Znd0`jyo@|kVVL79D>Hj6FxyptcuUSpYP!>@ZQ^*LkH+D2Nwt1 z47bwe8i!|ByoKxVDp&@!5`0##s*^Y{Q#^?WdiW(ppc{M$qDIf%uz3+yhi4UK43mi#aK~FdH zjsrv}?n7V2jKMl?xw)O{u5`T2jrC!zQKjPG;Gd8Vi#p!C7PT$fgLA>t&dkJm&)4~h znJYT~Hp}ftjgr;88cp;w8)D3(mPyf zSo?EAc(&tu)NcKG?QKJKzdO4#OvZLyZ@5XjH0ao-#JygN9X+S|JZ4l zoi~s>qxcNRCDISELJ?N&D?iaxG-9K5O^o<6ymo#Qe;GfPvK-LucoEd7MHi(E~@ zRgjl^d%oPTvi&3!;j7IxL7EeW!Ci0RKKHI3Iq&C(7=KN|?4^)<$}#e(#blJ#eg2`K zmKa@av}^?rvVYvuiIRn}w{ahD&KUKI|(IxZ-9;FTs3meu! zYvv>3Z<-vRfCS-Qj}*Lj27UK&=d!mftz@{w^{JZ7eoAF0?=4(ybcm$^eqzeYj|(C& z9Go-Nj+>FW?#PG?0r%X;bi4wj;M4D>_&vof5LkZEMnqA-$?~l=li%YK>aQHQBq|Cl zpOqEV;(EOD`cJ@VHi!S={iNoddRTl*Kj3xxGS}~7`2N0;el1J%_Lw?PI@cixhUcw2 z=pw&ooAMTgOUw6Zt5=c7&_JUxU^90!;J%;S`whDU%fRQ5lvAStUndF`=R6X%`RQ64 zJ;_KucRk>cfvNXn7$irL01Q%1*6(z?Fj=i85~sv(ac91Uf@kjClyV@EpKd*%qJl7k z3n#vc1Vx*;&_F_i3H}F2|0%VRU$fu}l_Dp$QW-`ezPfV~nd@pW2 z?b~+g`b;K#RMYDPa?|Zykyv7ueBx$FCQN&K*VOC9#v2slk5+vT$roP*^ z_B;ljz>!xI3Z108{t-GlDv1G7d2#jqv#~S&uGdu$|EDgAxBS-%5`C^j+fHWb@wZP#xVS2-8K!@9yQcJw z6S8Dd{x%MX?2kVR7H!B+-}GvVpM#sMIuwVD=+-f_qjb!SOufy2IzrVovT1WeQ;b-( z&CM+i4i84@=wBIOZ2kRvbTMRtMnc>zv{)v^`ddKHAAD^O9Q7Pt2*2**-bLifX*wPp zJ>2YK9n4BTvy-En6xws|A+~VSg=Lr5IiCs#l^5M0ReKRMs0diZ-1W55y5iP7IX*5d ztinYvnYQ&JhGvd`qIsY}l*OPb56^mJiNP-Z}@RCg3%g%e6cdX4Qak z-TCsqfckYbrt=p>2fpo5jz+8qZ-2OL9DS9<*FcEs`wk>fu`$*uYJfC4xsn*cpomVE zt;mLJ@PR|mcMn?rXLKT?9c%`lM0xa%`C9Av1s3!_VguPvF#bSt>wa+(p`f92a&913 z)bYz-fGS5O1?&=BmVB%D2^&j_^7G$~_u4Ye&3h(t&d<)$Gc$8DkneNOSDQ+f!&&o_ zizM&g8M~c(^dMnG;!fGFe!RweK%nv*zF&0oO{YFTKl?m*f4qD=+60zCB3IKeQ^yA$ z93GZ!R-|BK2fQBGppD2no3dO7*_5v0mP|sJpl;E{Lt_ykv7^MKnMDl_4tBtpKbdgK zm&{r=@l(|Y73mX3rAybNWUb&tI%w(w$oA@JRBKZU z^m$p2-jLoJSV&cM_`p(`n4Iu?SG=5<9D90F#jAT+bZEFdhb~F0g3ja301z2w8cMx{ z%-K8DIy-B(uVg1vHIf&(x$QSv&TkzAbqsDh3+CQ#YpXFOslo>* zd>_jozKYcUEUbzCd=Axm0nhP`sSfStl>WI+O z@P4*L>dX#4-6x|+P(bVcvc7f!r31yEr0D6#&Et6o39DmAjTHM^}d3}~*e z*GnE2cssdaiQGP!cVIRUys`T{0qTUj%RmGCHnp{Gv!4TxP_aS^MMp7~xKbLS{&i)fc}aIKO_YUWpanHv#9R+v$;MBOA&t_P1mw_Eiw5gc5< zB9mxEEtcqOA|tn6G#9Iglu~pZAi1;De@<=gR{ytyXl6l8-8O$$*R#Fh65UlUY+T%? z2D{wM%%}O9jeQHHCI_3%PmFJ+J?wMo-&bUm@z~w-HW)_|wEX^QJ3dN|dw|<*O3O^2 zlRJEka`;&YcRbG2U3R?G#^4hI{NMLxGfYqcULSAq!#Y!)9c}z?h5vec$-AD$!xL_b zqSFlh_KW=VeZD1W5^N1dr&WJJQfLnaKN*JTpID9_j5CUgZe)4)SUniv>KO97IN-3z zU1iA1$iCkyZbGG00wievXg5U(WL;#>TFlAUCh( z%5bTusbytl_xb*{xZoOkUN7$#VRu&x37tPtiHedZJWhU`jkmOfs?jyO2pyfDudQD% z=sG|II^8Usw>@0^;w;$Mcy9>}C0cDVX!o2?IXEtf%i(b{v$EQMLltz-Z`%@a*k~^+ zE{>|1$bPvu+4i%cY-QiAiojE3wwFIbt&6}r6Cd=2HqmaWLWv%QR*R*GgEl8}{9-bS zJX$>EWLWWA#jE%tvHvR~f&S8gF@SD|R;G77J=xls)mTTm4Tiu#qfX8~xF7Uy55dbS z;o7nth$0YPXpHx;%;EqBb)7Xur>Q&FJ;2zec&ZA=UcRzM8b2+(>ud^@TfvIp@ zEf9`~JkiZDMK)nKzpP1{WHnINnn2k6SVNnf-rnHG^UTlYJNg_Vk!yr$Ccg+E2g>Q8 zcH;}X2d*-Q1(Y_czKU2ox{euu4~?#7RDw^r`l>Az`+O0&>%oqk#6?f!4h2rKycGaT# zeFQ(E?T<2l_jv!e-|+T0^&s+*w34I*9cmFs%XfM@2#5J2{()TjF_U(}R83|DRqkqy z<9)zHCw%BJWf5^j2G5Ay=Ly39Fvk;CIroobAVv_cjgtCvMF1dlm3 zXh~_}v$yUj){qxNhQ-yI8x4)MXKP8}1B3Is@S#7Y)LDsUf*Hjqy(I7C$Khch2rWMu z2*+a%CyEjlR-S@+jnvQnwV@9$3&%N_D0rWt9SA9S!z!~EY+I`9%@xe%n?bGF1E&<;OErvj=48ceVV@;|MQ+TD`> zLk*JfF)}eQF*DjEA|gg>2ka6Tf5Px?TOt54sgUn;+Fa^SvIuu`Hn6rhGPSVuNjMM2 zOSQIW0vUI&FGuDRyDmD@b#m`dd1=9V-uYlL)}`P16x~L35(4hj6c`mNNFo|PGh0jx znllrB7U>mZBmrmahhfqgxsqH9sc#GP!W2e~Zyj$8ep0oPWl=iz|IJ*v%JlBH)yONu zK2el$J~rSm{vOG+UjC}_sq<^FNQsqZ+GSHXwl-u{s~nb$VH@Y0*-LiIcTo^a3v0#l z@I}X{ctUKB8VH>TDIEK4@#@W>8)I=&`lt9cqRs z>D0UWr>bWnF2dTOIs?C^X2BrUS8*Rl>+t`|=OZr0u(Bq-%k9xpelq%>L`-9}A(K!E zLyTn&plzr{CaxwMR{{bQ3%Vg7koBa+gw-T|JF5e(*Z%A0fAY`Dv=sA?+u+oWA`i5hQplBmnQ3lWbt>pT z?^G9ATV=G9DqK%WTc(S*49rrrX6>4s{(OmbH|S9bjA}jFRe1phWVo zV03&6A;aRf42;?-Z$D@H8J94W^+k|f4rya;Kl!i#!k}*~3t_tUzY1ZdPlfP(Bk_xQ zh*iS2XP#=MY7Vss8-dkg^O-GSe9aD@GM1>ze$A)VOWyb#T5=fYhAusRHa4a8=zQO! z06XS5TvPOu04Eav#TV&ZUCyN^<+DwiUV0>;cfpD*AnA<2;FZw%FE9<>0@Wd#e5DO& zt3VEP-~HTwofPPJzQXYZ{a;IHfh&0wi;vc(c9}NS*PJf&YjdWSO<&?-Xk}vwEs=z) zCY}~Z%IIo&!*$L@2=XikVU;W&C`vIfb#a>5wi+T$&VL=<9~@B@9tY8}IaLQOWjA>$ zsL9BsJ=$xL#u@5q%W@BD`PO>q@i^_vGnE)*wAM<6cF z&0-C*oE8MGT1T7OitCE-2=d`O>8ZrZ0yZ}axa!wF&A{tlY3~tfBw7O02@F}EEt6QT zgIOcFvaBLnf1|Z0#4O=rX)#gYPtHnizb+|TP6K&!^5Db(59T~*_BkB1%r4nD-w2fX zY9r_$NL&|EjV&(uC6c^I{;sWtxzuwX>cueF=cFPk5V^0qQ!1k6YY4rGs52!^Hn zW=+^j=hv<@&gNDQ|D~O?ly5+}390ZukvY09hJfViz_Oy(I)^zERyJ{(kLcz8RUABT z%~1uX4Qo!HX86m}TI0+!Wk5y=VJD=7qft~GU8ogy8Ij8d0wMM94_;x#aE10i zW9iy~$JCvL;&!FX|7;_RGBt9m7p}J|BRi`{uD|he=SlK1j;P~E;>1HvkQy{eYyYxj z`WihYC%KZaXdmU}=HVzy?@Agt25+_N=mX|6H2<4ej7#gtd8suuXr`1Sja zRP^9Y>YVlABc><&xNs;|9P?Ax>Qi-YII^T|LFmC6l=;deGzIx^d}q;<&zVOR>-&I#@<~zdZPu+Dx&f2x%HX7yQK@twnk5I z6LO+V`RPb~EHR4ACg;DMC$&Yc`h20WbWv+kvr8D0F7a1hMis*5f++HJ3&0~8+6xXg z$uJ(+a`PE`j?8nK%8T)P+)GP=$B9&eV0hMpEj&^DAVIZP zQ&?veag5YJXQJN&;DUF=D*z8*9HotO%6ma#p(^JRFH?1OLGDz7J#$JJFU-38+K<;a z3ufZJqqA=gi$-q&Se13)9Eex^DvF!ADVm?pSd#eq zexO+iOXY=?GAH*9Zixx_d$K1|?F?H-TVUZI2?zlI>IO($lYe{mSVDsFVuUcUqZdrZ zus!Viv%;`c6}M$*or? zVs-$|w!PDSwEI#iX}@ha${b$d&KzIS?S!)b$v7EP$=3=7r!hl2VDG$Ml!(dLa<+YZ z#ac6O`tG?-OoS4fx}x(51?#P(<8&L89w})kBP>t0mj`TqYQK#Gsb9nW|GWR;av%=| zvaPW&=ef6FG)5k$5)Xv7q$NNPf8S9!c{EHlmu+XAJb`U)GcYb2z0^# z<5w@*+!OVio@bQ^Oxk69I=Af$! z=K0tgTIQzN-V`v-AC*m%H7Y9I7iU~0z*I?udFi^Mw_-4pOV*7Ot#R22OU4S?8iAE< zS*8q~OSE&AYCTt#a$|A2g^c_EQ#kmFJ@ozY1zJIZLX+Dx{zLfvM+kq*lMoJpS^tEy znwQ#dW>(7Tw#!tPp`oTV^7E$`__6XwQiy6_d5>7=CZ@pU*BPMTd)-Mzxe{^A(JFuK z_QYORk+x-V7?qwvVHEF%%sJcNQYh&GDHL&Jr)71Xq~% zBd17AT~V?TGV4=3fGZA4LC3c$L3FnXtM2`_B6cl+V-6%$P&jGV1HC57Uk1|Y!v_)d ze=p1Ouo7AE)lbofR_@peX?!qIshEd6yvjD&td!T0{dn?n=uBc`ggYtrCovN>D|YN2 zJ$sx+3=fUl>h;`XlqAc|Ie4I#!ohBjL?*Gz6C+)!G z-?XPC4-=lKgNe5O&ypc_kolYoA4oJ%t}x?6YHym(CzeiUpBh}(PlmKFIyLzXw%#~% zOBOE@Cxfj=R@)0^$rZxPGIxbCOcmYYrhNYGclmV4%#BOCz{Z*kwUWlGg1Or$A-73{ z6HGc9C4X?XSIj-Vx^P_NndXK|0peZlLRbo(X>1B?UVlFTIIe^b9GpMmJEAkgblo>v zz(2IIE2Bq_u8d3#SvJs9v{s{XtP06%WuJ8X_apUlS{zO$+PS4Tk5L!{v&1yz-2pma z;b?XdXE3CorIM@PLcXLQt_%us{J4J4)m-E9>Nl&@Het+#aigc*E11lth-~)c)p}YJ zLvoPppXAAyP}u*QH-;nw{Zz*MjHMEnCIuu4W>h(YNSsTeCE2W!+fs`o&(-;$?Z)C* z@+k_UV;M19u;(>AZ6m^{vb^I^nq+O*l!5D9RllgihNTIIodGoFzDLnZJ5E02BW@`v zpd8&e2l3^kX_m136x6=aONf#Po=}@R+d27lwRWztsBEn+n93sU{?)7^(IWM!<3Ev1 z-Eh{HcdAK~3$vvgakTPw)T`3Dl&i=#I)S!K7%4FlkNN_-h~bQvHyL`WOFG$*6Na4N zUqw&DDn7>9vGJV%= 60 + ? `${Math.floor(m / 60)}:${String(m % 60).padStart(2, '0')} h` + : `${m}:${String(Math.round(s % 60)).padStart(2, '0')} min` +} + +function TitelWahlDialog({ + id, + stand, + schliessen, +}: { + id: string + stand: TitelStand | undefined + schliessen: () => void +}) { + const [gewaehlt, setGewaehlt] = useState | null>(null) + // Rippys Vorauswahl gilt, bis der Nutzer sie anfasst. + const aktiv = gewaehlt ?? new Set((stand?.titel ?? []).filter((t) => t.gewaehlt).map((t) => t.nr)) + const umschalten = (nr: number): void => { + const neu = new Set(aktiv) + if (neu.has(nr)) neu.delete(nr) + else neu.add(nr) + setGewaehlt(neu) + } + const alle = stand?.titel ?? [] + const gesamtBytes = alle.filter((t) => aktiv.has(t.nr)).reduce((s, t) => s + t.groesseBytes, 0) + + return ( +
+
e.stopPropagation()} + > +

Was soll gerippt werden?

+ + {stand === undefined || stand.laeuft ? ( +

+ Rippy liest die Titel der Disc … das dauert bis zu zwei Minuten. Solange dreht das Laufwerk. +

+ ) : stand.fehler.length > 0 ? ( +

✗ {stand.fehler}

+ ) : ( + <> +

+ {stand.unsicher ? '⚠ ' : ''} + {stand.einordnung} +

+ +
+ + + +
+ +
+ {alle.map((t) => ( + + ))} + {alle.length === 0 && ( +

Die Disc gab keine Titel her.

+ )} +
+ +

+ {aktiv.size} von {alle.length} gewählt · zusammen {gb(gesamtBytes)} +

+ + )} + +
+ + +
+
+
+ ) +} + function LaufwerkKachel({ geraet, rip, @@ -360,6 +497,7 @@ function LaufwerkKachel({ ripStartMs, protokoll, verbindung, + titelStand, }: { geraet: GeraeteInfo rip: RipStatus | undefined @@ -368,8 +506,10 @@ function LaufwerkKachel({ ripStartMs: number | undefined protokoll: string[] verbindung: Verbindung + titelStand: TitelStand | undefined }) { const [aendernOffen, setAendernOffen] = useState(false) + const [titelOffen, setTitelOffen] = useState(false) const [protokollOffen, setProtokollOffen] = useState(false) const ripLaeuft = rip !== undefined && LAUFENDE_PHASEN.includes(rip.phase) const discDa = geraet.status === 'ready' @@ -416,10 +556,14 @@ function LaufwerkKachel({ ) : ( + + oder weiter versuchen — abbrechen geht oben. + + + + )} +

> {rip.text}

@@ -587,6 +766,10 @@ function LaufwerkKachel({ )} + {titelOffen && ( + setTitelOffen(false)} /> + )} + {aendernOffen && ( ))} diff --git a/rippy-windows/src/fenster/kernverbindung.ts b/rippy-windows/src/fenster/kernverbindung.ts index d7f5ba4..017adec 100644 --- a/rippy-windows/src/fenster/kernverbindung.ts +++ b/rippy-windows/src/fenster/kernverbindung.ts @@ -1,300 +1,319 @@ -// Hält den EINEN MessagePort zum Kern — bewusst außerhalb von React: -// Die Port-Übergabe vom Haupt passiert genau einmal je Fenster-Ladung; -// React-Re-Mounts (StrictMode im Dev, HMR) dürfen sie nicht verlieren. -// -// R2 gilt auch hier: Der letzte bekannte Stand bleibt stehen und wird -// jedem neuen Abonnenten sofort wiedergegeben — er wird nie auf »leer« -// zurückgesetzt, nur weil gerade keine Nachricht kam. Insbesondere die -// Laufwerksliste: Sie ändert sich NUR durch eine neue Liste vom Kern. -import { - istKernNachricht, - type BeschaffungStand, - type BibliothekEintrag, - type DiscInfoStand, - type GeraeteInfo, - type KernNachricht, - type MetaVorschlag, - type RipStatus, - type WerkzeugAuskunft, -} from '../gemeinsam/nachrichten' - -export interface Verbindung { - verbunden: boolean - kern: Extract | null - pongLatenzMs: number | null - laufwerke: GeraeteInfo[] - /** Letzter Rip-Stand je Laufwerks-Kennung. Bleibt nach dem Ende stehen, - * bis ein neuer Rip startet (R2: kein Verschwinden ohne neue Auskunft). */ - rips: Record - /** Was Rippy über die eingelegte Disc weiß (§ 5 Schritt 3). */ - discInfos: Record - /** Suchergebnisse des Ändern-Dialogs je Laufwerk (§ 5 Schritt 4). */ - vorschlaege: Record - /** Wann der laufende Vorgang je Laufwerk begann (für die Restzeit). */ - ripStart: Record - /** Statuszeilen des (letzten) Vorgangs je Laufwerk — das aufklappbare - * Protokoll der Kachel. Bleibt nach dem Ende stehen (R2), bis ein neuer - * Vorgang beginnt. */ - ripProtokoll: Record - einstellungen: Record - werkzeuge: WerkzeugAuskunft | null - bibliothek: BibliothekEintrag[] - schluessel: { - quelle: string - angenommen: boolean | null - weiterBetrieb: boolean - gueltigBis: string - geholtAm: string - text: string - version: string - } | null - /** Stand der MakeMKV-Beschaffung (§ 9) — null, solange nie eine lief. */ - beschaffung: BeschaffungStand | null - /** Kurze Ereigniszeilen (neueste zuerst): Disc rein/raus, Auswurf, Fehler. */ - meldungen: string[] -} - -type Horcher = (stand: Verbindung) => void - -const MAX_MELDUNGEN = 20 - -const stand: Verbindung = { - verbunden: false, - kern: null, - pongLatenzMs: null, - laufwerke: [], - rips: {}, - discInfos: {}, - vorschlaege: {}, - ripStart: {}, - ripProtokoll: {}, - einstellungen: {}, - werkzeuge: null, - bibliothek: [], - schluessel: null, - beschaffung: null, - meldungen: [], -} -const horcher = new Set() -let gestartet = false -let port: MessagePort | null = null - -function melden(): void { - for (const h of horcher) { - h({ - ...stand, - laufwerke: [...stand.laufwerke], - rips: { ...stand.rips }, - discInfos: { ...stand.discInfos }, - vorschlaege: { ...stand.vorschlaege }, - einstellungen: { ...stand.einstellungen }, - bibliothek: [...stand.bibliothek], - meldungen: [...stand.meldungen], - }) - } -} - -function meldung(text: string): void { - stand.meldungen = [text, ...stand.meldungen].slice(0, MAX_MELDUNGEN) -} - -function kernNachricht(nachricht: KernNachricht): void { - switch (nachricht.art) { - case 'kern-bereit': - stand.kern = nachricht - break - case 'pong': - stand.pongLatenzMs = Math.max(0, Date.now() - nachricht.zeit) - // Der Beweis für den Smoke-Lauf: Ping ging hin, Pong kam zurück. - window.rippy.melden('kern-pong') - break - case 'kern-fehler': - meldung(`⚠ ${nachricht.text}`) - break - case 'laufwerke': - stand.laufwerke = nachricht.liste - for (const ereignis of nachricht.ereignisse) { - if (ereignis.art === 'disc-eingelegt') { - meldung(`Disc erkannt in ${ereignis.geraet.name} — ${ereignis.geraet.typ}`) - } else if (ereignis.art === 'disc-entnommen') { - meldung(`Disc entnommen aus ${ereignis.geraet.name}`) - } else if (ereignis.art === 'laufwerk-weg') { - meldung(`Laufwerk ${ereignis.id}: nicht mehr da`) - } - } - break - case 'auswurf-ergebnis': { - const text = - nachricht.grund === 'ok' - ? `Laufwerk ${nachricht.id}: ausgeworfen (nachgesehen)` - : `Laufwerk ${nachricht.id}: Auswurf ${nachricht.grund}${nachricht.fehler !== null ? ` — ${nachricht.fehler}` : ''}` - meldung(nachricht.grund === 'ok' ? text : `⚠ ${text}`) - break - } - case 'disc-info': { - stand.discInfos = { ...stand.discInfos, [nachricht.info.id]: nachricht.info } - if (nachricht.info.titel.length > 0) { - meldung( - `Laufwerk ${nachricht.info.id}: erkannt als „${nachricht.info.titel}${nachricht.info.jahr !== null ? ` (${nachricht.info.jahr})` : ''}“ · ${Math.round(nachricht.info.confidence * 100)} %`, - ) - } - break - } - case 'metadaten-vorschlaege': - stand.vorschlaege = { ...stand.vorschlaege, [nachricht.id]: nachricht.vorschlaege } - break - case 'einstellungen': - stand.einstellungen = nachricht.werte - break - case 'werkzeuge': - stand.werkzeuge = nachricht.auskunft - break - case 'bibliothek': - stand.bibliothek = nachricht.eintraege - break - case 'schluessel-status': - stand.schluessel = nachricht.stand - if (nachricht.stand.angenommen === false) meldung(`⚠ MakeMKV-Schlüssel: ${nachricht.stand.text}`) - break - case 'beschaffung-status': - stand.beschaffung = nachricht.stand - if (nachricht.stand.fehler) meldung(`⚠ MakeMKV-Update: ${nachricht.stand.text}`) - break - case 'rip-status': { - stand.rips = { ...stand.rips, [nachricht.status.id]: nachricht.status } - const laeuft = ['liest-info', 'rippt', 'komprimiert', 'legt-ab'].includes(nachricht.status.phase) - if (laeuft && stand.ripStart[nachricht.status.id] === undefined) { - stand.ripStart = { ...stand.ripStart, [nachricht.status.id]: Date.now() } - // Ein NEUER Vorgang beginnt — das Protokoll des alten weicht. - stand.ripProtokoll = { ...stand.ripProtokoll, [nachricht.status.id]: [] } - } else if (!laeuft) { - const { [nachricht.status.id]: _weg, ...rest } = stand.ripStart - stand.ripStart = rest - } - // Jede NEUE Statuszeile wandert ins Kachel-Protokoll (Prozent-Ticks - // wiederholen den Text — nur echte Änderungen zählen). - const bisher = stand.ripProtokoll[nachricht.status.id] ?? [] - if (nachricht.status.text.length > 0 && bisher[bisher.length - 1] !== nachricht.status.text) { - stand.ripProtokoll = { - ...stand.ripProtokoll, - [nachricht.status.id]: [...bisher, nachricht.status.text].slice(-80), - } - } - if (nachricht.status.phase === 'fertig') { - meldung( - `Laufwerk ${nachricht.status.id}: Rip fertig — ${nachricht.status.dateien.length} Datei(en)` + - (nachricht.status.lesefehler ? ' ⚠ mit Lesefehlern' : ''), - ) - } else if (nachricht.status.phase === 'fehler') { - meldung(`⚠ Laufwerk ${nachricht.status.id}: ${nachricht.status.text}`) - } else if (nachricht.status.phase === 'abgebrochen') { - meldung(`Laufwerk ${nachricht.status.id}: Rip abgebrochen`) - } - break - } - } - melden() -} - -function portAnnehmen(neuerPort: MessagePort): void { - port = neuerPort - stand.verbunden = true - neuerPort.onmessage = (ereignis: MessageEvent) => { - const nachricht: unknown = ereignis.data - if (istKernNachricht(nachricht)) kernNachricht(nachricht) - } - neuerPort.start() - neuerPort.postMessage({ art: 'ping', zeit: Date.now() }) - neuerPort.postMessage({ art: 'einstellungen-laden' }) - neuerPort.postMessage({ art: 'werkzeuge-laden' }) - neuerPort.postMessage({ art: 'bibliothek-laden' }) - melden() -} - -/** Idempotent — der erste Aufruf registriert den Horcher und meldet der - * Brücke, dass gepufferte Ports jetzt zugestellt werden können. */ -export function verbindungStarten(): void { - if (gestartet) return - gestartet = true - window.addEventListener('message', (ereignis: MessageEvent) => { - const daten: unknown = ereignis.data - if ( - typeof daten === 'object' && - daten !== null && - (daten as Record).art === 'kern-port' && - ereignis.ports.length > 0 - ) { - portAnnehmen(ereignis.ports[0]) - } - }) - window.rippy.bereit() -} - -export function aufVerbindung(h: Horcher): () => void { - horcher.add(h) - h({ - ...stand, - laufwerke: [...stand.laufwerke], - rips: { ...stand.rips }, - discInfos: { ...stand.discInfos }, - vorschlaege: { ...stand.vorschlaege }, - einstellungen: { ...stand.einstellungen }, - bibliothek: [...stand.bibliothek], - meldungen: [...stand.meldungen], - }) - return () => horcher.delete(h) -} - -function anKern(nachricht: { art: string; id: string }, wasWar: string): void { - if (port === null) { - meldung(`⚠ ${wasWar}: keine Verbindung zum Kern`) - melden() - return - } - port.postMessage(nachricht) -} - -export function auswerfen(id: string): void { - anKern({ art: 'auswerfen', id }, `Auswerfen ${id}`) -} - -export function ripStarten(id: string): void { - anKern({ art: 'rip-start', id }, `Rip ${id}`) -} - -export function ripAbbrechen(id: string): void { - anKern({ art: 'rip-abbruch', id }, `Rip-Abbruch ${id}`) -} - -export function metadatenSuchen(id: string, text: string): void { - if (port === null) return - port.postMessage({ art: 'metadaten-suchen', id, text }) -} - -export function zuordnungSetzen(id: string, vorschlag: MetaVorschlag): void { - if (port === null) return - port.postMessage({ art: 'zuordnung-setzen', id, vorschlag }) -} - -export function makemkvUpdate(): void { - if (port === null) { - meldung('⚠ MakeMKV-Update: keine Verbindung zum Kern') - melden() - return - } - port.postMessage({ art: 'makemkv-update' }) -} - -export function schluesselPruefen(): void { - if (port === null) return - port.postMessage({ art: 'schluessel-pruefen' }) -} - -export function einstellungSetzen(schluessel: string, wert: string): void { - if (port === null) { - meldung(`⚠ Einstellung ${schluessel}: keine Verbindung zum Kern`) - melden() - return - } - port.postMessage({ art: 'einstellung-setzen', schluessel, wert }) -} +// Hält den EINEN MessagePort zum Kern — bewusst außerhalb von React: +// Die Port-Übergabe vom Haupt passiert genau einmal je Fenster-Ladung; +// React-Re-Mounts (StrictMode im Dev, HMR) dürfen sie nicht verlieren. +// +// R2 gilt auch hier: Der letzte bekannte Stand bleibt stehen und wird +// jedem neuen Abonnenten sofort wiedergegeben — er wird nie auf »leer« +// zurückgesetzt, nur weil gerade keine Nachricht kam. Insbesondere die +// Laufwerksliste: Sie ändert sich NUR durch eine neue Liste vom Kern. +import { + istKernNachricht, + type BeschaffungStand, + type BibliothekEintrag, + type DiscInfoStand, + type GeraeteInfo, + type KernNachricht, + type MetaVorschlag, + type TitelStand, + type RipStatus, + type WerkzeugAuskunft, +} from '../gemeinsam/nachrichten' + +export interface Verbindung { + verbunden: boolean + kern: Extract | null + pongLatenzMs: number | null + laufwerke: GeraeteInfo[] + /** Letzter Rip-Stand je Laufwerks-Kennung. Bleibt nach dem Ende stehen, + * bis ein neuer Rip startet (R2: kein Verschwinden ohne neue Auskunft). */ + rips: Record + /** Was Rippy über die eingelegte Disc weiß (§ 5 Schritt 3). */ + discInfos: Record + /** Suchergebnisse des Ändern-Dialogs je Laufwerk (§ 5 Schritt 4). */ + vorschlaege: Record + /** Die Titel der Disc je Laufwerk (§ 6.2) — Ergebnis des Info-Laufs. */ + discTitel: Record + /** Wann der laufende Vorgang je Laufwerk begann (für die Restzeit). */ + ripStart: Record + /** Statuszeilen des (letzten) Vorgangs je Laufwerk — das aufklappbare + * Protokoll der Kachel. Bleibt nach dem Ende stehen (R2), bis ein neuer + * Vorgang beginnt. */ + ripProtokoll: Record + einstellungen: Record + werkzeuge: WerkzeugAuskunft | null + bibliothek: BibliothekEintrag[] + schluessel: { + quelle: string + angenommen: boolean | null + weiterBetrieb: boolean + gueltigBis: string + geholtAm: string + text: string + version: string + } | null + /** Stand der MakeMKV-Beschaffung (§ 9) — null, solange nie eine lief. */ + beschaffung: BeschaffungStand | null + /** Kurze Ereigniszeilen (neueste zuerst): Disc rein/raus, Auswurf, Fehler. */ + meldungen: string[] +} + +type Horcher = (stand: Verbindung) => void + +const MAX_MELDUNGEN = 20 + +const stand: Verbindung = { + verbunden: false, + kern: null, + pongLatenzMs: null, + laufwerke: [], + rips: {}, + discInfos: {}, + discTitel: {}, + vorschlaege: {}, + ripStart: {}, + ripProtokoll: {}, + einstellungen: {}, + werkzeuge: null, + bibliothek: [], + schluessel: null, + beschaffung: null, + meldungen: [], +} +const horcher = new Set() +let gestartet = false +let port: MessagePort | null = null + +function melden(): void { + for (const h of horcher) { + h({ + ...stand, + laufwerke: [...stand.laufwerke], + rips: { ...stand.rips }, + discInfos: { ...stand.discInfos }, + vorschlaege: { ...stand.vorschlaege }, + einstellungen: { ...stand.einstellungen }, + bibliothek: [...stand.bibliothek], + meldungen: [...stand.meldungen], + }) + } +} + +function meldung(text: string): void { + stand.meldungen = [text, ...stand.meldungen].slice(0, MAX_MELDUNGEN) +} + +function kernNachricht(nachricht: KernNachricht): void { + switch (nachricht.art) { + case 'kern-bereit': + stand.kern = nachricht + break + case 'pong': + stand.pongLatenzMs = Math.max(0, Date.now() - nachricht.zeit) + // Der Beweis für den Smoke-Lauf: Ping ging hin, Pong kam zurück. + window.rippy.melden('kern-pong') + break + case 'kern-fehler': + meldung(`⚠ ${nachricht.text}`) + break + case 'laufwerke': + stand.laufwerke = nachricht.liste + for (const ereignis of nachricht.ereignisse) { + if (ereignis.art === 'disc-eingelegt') { + meldung(`Disc erkannt in ${ereignis.geraet.name} — ${ereignis.geraet.typ}`) + } else if (ereignis.art === 'disc-entnommen') { + meldung(`Disc entnommen aus ${ereignis.geraet.name}`) + } else if (ereignis.art === 'laufwerk-weg') { + meldung(`Laufwerk ${ereignis.id}: nicht mehr da`) + } + } + break + case 'auswurf-ergebnis': { + const text = + nachricht.grund === 'ok' + ? `Laufwerk ${nachricht.id}: ausgeworfen (nachgesehen)` + : `Laufwerk ${nachricht.id}: Auswurf ${nachricht.grund}${nachricht.fehler !== null ? ` — ${nachricht.fehler}` : ''}` + meldung(nachricht.grund === 'ok' ? text : `⚠ ${text}`) + break + } + case 'disc-info': { + stand.discInfos = { ...stand.discInfos, [nachricht.info.id]: nachricht.info } + if (nachricht.info.titel.length > 0) { + meldung( + `Laufwerk ${nachricht.info.id}: erkannt als „${nachricht.info.titel}${nachricht.info.jahr !== null ? ` (${nachricht.info.jahr})` : ''}“ · ${Math.round(nachricht.info.confidence * 100)} %`, + ) + } + break + } + case 'disc-titel': + stand.discTitel = { ...stand.discTitel, [nachricht.stand.id]: nachricht.stand } + if (nachricht.stand.fehler.length > 0) meldung(`⚠ Titel lesen: ${nachricht.stand.fehler}`) + break + case 'metadaten-vorschlaege': + stand.vorschlaege = { ...stand.vorschlaege, [nachricht.id]: nachricht.vorschlaege } + break + case 'einstellungen': + stand.einstellungen = nachricht.werte + break + case 'werkzeuge': + stand.werkzeuge = nachricht.auskunft + break + case 'bibliothek': + stand.bibliothek = nachricht.eintraege + break + case 'schluessel-status': + stand.schluessel = nachricht.stand + if (nachricht.stand.angenommen === false) meldung(`⚠ MakeMKV-Schlüssel: ${nachricht.stand.text}`) + break + case 'beschaffung-status': + stand.beschaffung = nachricht.stand + if (nachricht.stand.fehler) meldung(`⚠ MakeMKV-Update: ${nachricht.stand.text}`) + break + case 'rip-status': { + stand.rips = { ...stand.rips, [nachricht.status.id]: nachricht.status } + const laeuft = ['liest-info', 'rippt', 'komprimiert', 'legt-ab'].includes(nachricht.status.phase) + if (laeuft && stand.ripStart[nachricht.status.id] === undefined) { + stand.ripStart = { ...stand.ripStart, [nachricht.status.id]: Date.now() } + // Ein NEUER Vorgang beginnt — das Protokoll des alten weicht. + stand.ripProtokoll = { ...stand.ripProtokoll, [nachricht.status.id]: [] } + } else if (!laeuft) { + const { [nachricht.status.id]: _weg, ...rest } = stand.ripStart + stand.ripStart = rest + } + // Jede NEUE Statuszeile wandert ins Kachel-Protokoll (Prozent-Ticks + // wiederholen den Text — nur echte Änderungen zählen). + const bisher = stand.ripProtokoll[nachricht.status.id] ?? [] + if (nachricht.status.text.length > 0 && bisher[bisher.length - 1] !== nachricht.status.text) { + stand.ripProtokoll = { + ...stand.ripProtokoll, + [nachricht.status.id]: [...bisher, nachricht.status.text].slice(-80), + } + } + if (nachricht.status.phase === 'fertig') { + meldung( + `Laufwerk ${nachricht.status.id}: Rip fertig — ${nachricht.status.dateien.length} Datei(en)` + + (nachricht.status.lesefehler ? ' ⚠ mit Lesefehlern' : ''), + ) + } else if (nachricht.status.phase === 'fehler') { + meldung(`⚠ Laufwerk ${nachricht.status.id}: ${nachricht.status.text}`) + } else if (nachricht.status.phase === 'abgebrochen') { + meldung(`Laufwerk ${nachricht.status.id}: Rip abgebrochen`) + } + break + } + } + melden() +} + +function portAnnehmen(neuerPort: MessagePort): void { + port = neuerPort + stand.verbunden = true + neuerPort.onmessage = (ereignis: MessageEvent) => { + const nachricht: unknown = ereignis.data + if (istKernNachricht(nachricht)) kernNachricht(nachricht) + } + neuerPort.start() + neuerPort.postMessage({ art: 'ping', zeit: Date.now() }) + neuerPort.postMessage({ art: 'einstellungen-laden' }) + neuerPort.postMessage({ art: 'werkzeuge-laden' }) + neuerPort.postMessage({ art: 'bibliothek-laden' }) + melden() +} + +/** Idempotent — der erste Aufruf registriert den Horcher und meldet der + * Brücke, dass gepufferte Ports jetzt zugestellt werden können. */ +export function verbindungStarten(): void { + if (gestartet) return + gestartet = true + window.addEventListener('message', (ereignis: MessageEvent) => { + const daten: unknown = ereignis.data + if ( + typeof daten === 'object' && + daten !== null && + (daten as Record).art === 'kern-port' && + ereignis.ports.length > 0 + ) { + portAnnehmen(ereignis.ports[0]) + } + }) + window.rippy.bereit() +} + +export function aufVerbindung(h: Horcher): () => void { + horcher.add(h) + h({ + ...stand, + laufwerke: [...stand.laufwerke], + rips: { ...stand.rips }, + discInfos: { ...stand.discInfos }, + vorschlaege: { ...stand.vorschlaege }, + einstellungen: { ...stand.einstellungen }, + bibliothek: [...stand.bibliothek], + meldungen: [...stand.meldungen], + }) + return () => horcher.delete(h) +} + +function anKern(nachricht: { art: string; id: string; titel?: number[] }, wasWar: string): void { + if (port === null) { + meldung(`⚠ ${wasWar}: keine Verbindung zum Kern`) + melden() + return + } + port.postMessage(nachricht) +} + +export function auswerfen(id: string): void { + anKern({ art: 'auswerfen', id }, `Auswerfen ${id}`) +} + +/** Den Info-Lauf anstoßen (20–120 s) — erst auf Zuruf, nie beim Einlegen. */ +export function titelLesen(id: string): void { + anKern({ art: 'titel-lesen', id }, `Titel lesen ${id}`) +} + +/** `titel` leer heißt: alles rippen. */ +export function ripStarten(id: string, titel: number[] = []): void { + anKern({ art: 'rip-start', id, titel }, `Rip ${id}`) +} + +/** Den laufenden Titel aufgeben und mit dem nächsten weitermachen. */ +export function ripUeberspringen(id: string): void { + anKern({ art: 'rip-ueberspringen', id }, `Titel überspringen ${id}`) +} + +export function ripAbbrechen(id: string): void { + anKern({ art: 'rip-abbruch', id }, `Rip-Abbruch ${id}`) +} + +export function metadatenSuchen(id: string, text: string): void { + if (port === null) return + port.postMessage({ art: 'metadaten-suchen', id, text }) +} + +export function zuordnungSetzen(id: string, vorschlag: MetaVorschlag): void { + if (port === null) return + port.postMessage({ art: 'zuordnung-setzen', id, vorschlag }) +} + +export function makemkvUpdate(): void { + if (port === null) { + meldung('⚠ MakeMKV-Update: keine Verbindung zum Kern') + melden() + return + } + port.postMessage({ art: 'makemkv-update' }) +} + +export function schluesselPruefen(): void { + if (port === null) return + port.postMessage({ art: 'schluessel-pruefen' }) +} + +export function einstellungSetzen(schluessel: string, wert: string): void { + if (port === null) { + meldung(`⚠ Einstellung ${schluessel}: keine Verbindung zum Kern`) + melden() + return + } + port.postMessage({ art: 'einstellung-setzen', schluessel, wert }) +} diff --git a/rippy-windows/src/gemeinsam/nachrichten.ts b/rippy-windows/src/gemeinsam/nachrichten.ts index 2ece012..4ee50ab 100644 --- a/rippy-windows/src/gemeinsam/nachrichten.ts +++ b/rippy-windows/src/gemeinsam/nachrichten.ts @@ -57,6 +57,40 @@ export interface RipStatus { text: string dateien: string[] lesefehler: boolean + /** Der wievielte gewählte Titel läuft gerade (1-basiert) und wie viele es + * insgesamt sind — Rippy rippt Titel für Titel. Fehlt bei Audio-CD, ISO + * und in Fehler-Meldungen; die kennen keine Titel. */ + titelNr?: number + titelGesamt?: number + /** Der Lauf klemmt an einer festen Stelle der Disc — ein physischer + * Defekt, kein Fortschrittsproblem. Fehlt/null heißt: alles in Ordnung. */ + haengt?: { offset: string; wiederholungen: number } | null +} + +/** Ein Titel der Disc, wie ihn der Auswahl-Dialog zeigt (§ 6.2). */ +export interface DiscTitelVorschlag { + nr: number + dauerS: number + groesseBytes: number + kapitel: number + /** Von Rippy vorausgewählt. */ + gewaehlt: boolean + /** Warum — Klartext („Folge", „Sammeltitel …", „zu kurz …"). */ + grund: string +} + +/** Was der Info-Lauf über die Titel der Disc ergab. Er dauert 20–120 s, + * deshalb trägt der Stand ein eigenes `laeuft` — das Fenster steht in der + * Zeit nicht stumm da (R2: nichts ohne Auskunft). */ +export interface TitelStand { + id: string + laeuft: boolean + titel: DiscTitelVorschlag[] + /** Einordnung („Serie: 2 Folgen erwartet, 2 gefunden — passt."). */ + einordnung: string + /** Rippy ist unsicher — das Fenster fragt dann deutlicher nach. */ + unsicher: boolean + fehler: string } /** Was Rippy über die eingelegte Disc herausgefunden hat (§ 5 Schritt 3). */ @@ -136,6 +170,7 @@ export type KernNachricht = | { art: 'auswurf-ergebnis'; id: string; grund: AuswurfGrund; fehler: string | null } | { art: 'rip-status'; status: RipStatus } | { art: 'disc-info'; info: DiscInfoStand } + | { art: 'disc-titel'; stand: TitelStand } | { art: 'metadaten-vorschlaege'; id: string; vorschlaege: MetaVorschlag[] } | { art: 'einstellungen'; werte: Record } | { art: 'werkzeuge'; auskunft: WerkzeugAuskunft } @@ -163,8 +198,16 @@ export type KernNachricht = export type FensterNachricht = | { art: 'ping'; zeit: number } | { art: 'auswerfen'; id: string } - | { art: 'rip-start'; id: string } + /** Titel-Lauf anstoßen (§ 6.2): dauert 20–120 s, deshalb erst auf Zuruf + * und nicht schon beim Einlegen (der 30.08.-Fund „das Erkennen dauert + * sehr sehr lange"). */ + | { art: 'titel-lesen'; id: string } + /** `titel` leer heißt: alles rippen — wie vor 5.2. */ + | { art: 'rip-start'; id: string; titel?: number[] } | { art: 'rip-abbruch'; id: string } + /** Den gerade laufenden Titel aufgeben und mit dem nächsten weitermachen + * — der Ausweg, wenn die Disc an einer Stelle einen Defekt hat. */ + | { art: 'rip-ueberspringen'; id: string } | { art: 'einstellung-setzen'; schluessel: string; wert: string } | { art: 'metadaten-suchen'; id: string; text: string } | { art: 'zuordnung-setzen'; id: string; vorschlag: MetaVorschlag } @@ -250,6 +293,13 @@ export function istKernNachricht(wert: unknown): wert is KernNachricht { typeof (wert.info as Record).titel === 'string' && typeof (wert.info as Record).confidence === 'number' ) + case 'disc-titel': + return ( + istObjekt(wert.stand) && + typeof (wert.stand as Record).id === 'string' && + typeof (wert.stand as Record).laeuft === 'boolean' && + Array.isArray((wert.stand as Record).titel) + ) case 'einstellungen': return istObjekt(wert.werte) case 'werkzeuge': diff --git a/rippy-windows/src/kern/ablauf/pipeline.ts b/rippy-windows/src/kern/ablauf/pipeline.ts index 2c02294..73178d5 100644 --- a/rippy-windows/src/kern/ablauf/pipeline.ts +++ b/rippy-windows/src/kern/ablauf/pipeline.ts @@ -27,7 +27,12 @@ import { mkdtempSync, rmSync, createWriteStream } from 'node:fs' import { tmpdir } from 'node:os' interface LaufenderVorgang { + /** Beendet den GANZEN Auftrag. */ abbruch: AbortController + /** Beendet nur den gerade laufenden Titel (überspringen). */ + titelAbbruch?: AbortController + /** Der laufende Titel wurde übersprungen, nicht der Auftrag abgebrochen. */ + uebersprungen?: boolean status: RipStatus } @@ -86,8 +91,19 @@ export class Pipeline { return { id, phase: 'fehler', prozent: -1, text, dateien: [], lesefehler: false } } - /** Startet die Kette für die ganze Disc ('all'). */ - async starten(id: string): Promise { + /** Bricht nur den GERADE LAUFENDEN Titel ab und macht mit dem nächsten + * weiter — der Ausweg bei einem Disc-Defekt (Commander 01.09.2026: + * MakeMKV hing eine halbe Stunde an derselben Stelle in Folge 1, + * während Folge 2 heil daneben lag). */ + ueberspringen(id: string): void { + const vorgang = this.laufend.get(id) + if (vorgang === undefined || vorgang.titelAbbruch === undefined) return + vorgang.uebersprungen = true + vorgang.titelAbbruch.abort() + } + + /** Startet die Kette. `titelWahl` leer heißt: alles rippen (wie früher). */ + async starten(id: string, titelWahl: readonly number[] = []): Promise { if (this.laufend.has(id)) { this.umgebung.melden(this.fehler(id, `Auf Laufwerk ${id}: läuft schon ein Vorgang.`)) return @@ -143,48 +159,134 @@ export class Pipeline { } const rohOrdner = join(this.umgebung.ablage(), 'roh', vorgangsName) + mkdirSync(rohOrdner, { recursive: true }) - const start: RipStatus = { - id, - phase: 'rippt', - prozent: -1, - text: `Rippe verlustfrei nach ${rohOrdner} …`, - dateien: [], - lesefehler: false, - } - this.laufend.set(id, { abbruch, status: start }) - this.melden(start) + // TITEL FÜR TITEL statt einem 'all'-Aufruf (Commander-Wunsch + // 01.09.2026). Zwei Gründe, und beide brauchen denselben Umbau: + // * Auswählen geht nur so — vorher rippte Rippy IMMER alles, samt + // Trailer, Werbung und Alterskennzeichen. + // * Ein Titel, der an einem Disc-Defekt hängen bleibt, reißt nicht + // mehr den ganzen Auftrag mit. Bei der Spartacus-Disc lag der + // Defekt in Folge 1 — Folge 2 war heil und ging trotzdem verloren. + const auftrag = titelWahl.length > 0 ? titelWahl.map(String) : ['all'] + const alleDateien = new Set() + let lesefehlerGesamt = false + const gescheitert: string[] = [] + const uebersprungen: string[] = [] - const rip = await rippen({ - programm, - geraetepfad: geraet.pfad, - zielOrdner: rohOrdner, - titel: 'all', - abbruch: abbruch.signal, - aufFortschritt: (prozent) => { - const alt = this.laufend.get(id)?.status - if (alt !== undefined) this.melden({ ...alt, prozent }) - }, - aufMeldung: (_code, text) => { - const alt = this.laufend.get(id)?.status - if (alt !== undefined) this.melden({ ...alt, text }) - }, + this.laufend.set(id, { + abbruch, + status: { id, phase: 'rippt', prozent: -1, text: 'Beginne …', dateien: [], lesefehler: false }, }) - if (rip.status === 'cancelled') { - this.laufend.delete(id) - this.melden({ id, phase: 'abgebrochen', prozent: -1, text: 'Abgebrochen.', dateien: [], lesefehler: false }) - return + for (let i = 0; i < auftrag.length; i++) { + const welcher = auftrag[i] + // Eigener Abbruch je Titel: „überspringen" beendet NUR diesen Lauf, + // „abbrechen" beendet den ganzen Auftrag — und reicht nach unten durch. + const titelAbbruch = new AbortController() + const weiterreichen = (): void => titelAbbruch.abort() + abbruch.signal.addEventListener('abort', weiterreichen, { once: true }) + const vorgang = this.laufend.get(id) + if (vorgang !== undefined) { + vorgang.titelAbbruch = titelAbbruch + vorgang.uebersprungen = false + } + + const beschriftung = + welcher === 'all' ? 'alle Titel' : `Titel ${welcher} (${i + 1} von ${auftrag.length})` + this.melden({ + id, + phase: 'rippt', + prozent: -1, + text: `Rippe ${beschriftung} verlustfrei nach ${rohOrdner} …`, + dateien: [...alleDateien], + lesefehler: lesefehlerGesamt, + titelNr: i + 1, + titelGesamt: auftrag.length, + haengt: null, + }) + + const rip = await rippen({ + programm, + geraetepfad: geraet.pfad, + zielOrdner: rohOrdner, + titel: welcher, + abbruch: titelAbbruch.signal, + aufFortschritt: (prozent) => { + const alt = this.laufend.get(id)?.status + if (alt !== undefined) this.melden({ ...alt, prozent }) + }, + aufMeldung: (_code, text) => { + const alt = this.laufend.get(id)?.status + if (alt !== undefined) this.melden({ ...alt, text }) + }, + aufHaengt: (klemmt) => { + const alt = this.laufend.get(id)?.status + if (alt !== undefined) this.melden({ ...alt, haengt: klemmt }) + }, + }) + abbruch.signal.removeEventListener('abort', weiterreichen) + + if (rip.status === 'cancelled') { + // Nur dieser Titel — oder der ganze Auftrag? + if (this.laufend.get(id)?.uebersprungen !== true) { + this.laufend.delete(id) + this.melden({ + id, + phase: 'abgebrochen', + prozent: -1, + text: 'Abgebrochen.', + dateien: [...alleDateien], + lesefehler: lesefehlerGesamt, + }) + return + } + uebersprungen.push(beschriftung) + continue + } + + lesefehlerGesamt = lesefehlerGesamt || rip.lesefehler + if (rip.status === 'error') { + // EIN kaputter Titel beendet den Auftrag nicht — die anderen sind + // vielleicht heil. Der Grund wird gesammelt und am Ende genannt. + gescheitert.push(`${beschriftung}: ${rip.fehler}`) + continue + } + // rippen() liefert den ganzen Zielordner zurück, also auch die + // Dateien der vorigen Titel — neu ist, was noch nicht bekannt war. + const neu = rip.dateien.filter((d) => !alleDateien.has(d)) + for (const d of rip.dateien) alleDateien.add(d) + if (neu.length === 0) { + // MakeMKV kann mit Code 0 enden und trotzdem nichts abgelegt haben + // (30.08.2026 gemessen) — dann ist dieser Titel NICHT gesichert. + gescheitert.push(`${beschriftung}: keine Datei entstanden`) + } } - if (rip.status === 'error') { + + const nachLauf = this.laufend.get(id) + if (nachLauf !== undefined) nachLauf.titelAbbruch = undefined + + if (alleDateien.size === 0) { this.laufend.delete(id) - this.melden({ id, phase: 'fehler', prozent: -1, text: rip.fehler, dateien: [], lesefehler: rip.lesefehler }) + this.melden({ + id, + phase: 'fehler', + prozent: -1, + text: gescheitert.length > 0 ? gescheitert.join(' · ') : 'Kein Titel konnte gesichert werden.', + dateien: [], + lesefehler: lesefehlerGesamt, + }) return } - const lesefehlerHinweis = rip.lesefehler - ? ' ⚠ Die Disc ließ sich stellenweise nicht lesen — mindestens ein Titel könnte fehlen (makemkv.com/errors/read).' - : '' + const rip = { dateien: [...alleDateien].sort(), lesefehler: lesefehlerGesamt } + + const lesefehlerHinweis = + (rip.lesefehler + ? ' ⚠ Die Disc ließ sich stellenweise nicht lesen — mindestens ein Titel könnte fehlen (makemkv.com/errors/read).' + : '') + + (uebersprungen.length > 0 ? ` ⚠ Übersprungen: ${uebersprungen.join(', ')}.` : '') + + (gescheitert.length > 0 ? ` ⚠ Nicht gesichert: ${gescheitert.join(' · ')}` : '') // ── Kompression (W-3) ──────────────────────────────────────────────── const einstellungen = this.umgebung.einstellungen() diff --git a/rippy-windows/src/kern/index.ts b/rippy-windows/src/kern/index.ts index 9c224bf..8bc37d8 100644 --- a/rippy-windows/src/kern/index.ts +++ b/rippy-windows/src/kern/index.ts @@ -32,6 +32,8 @@ import { TmdbClient } from './metadaten/tmdb' import { zuordnen, type Zuordnung } from './metadaten/zuordnung' import { presetEmpfehlung } from '../gemeinsam/preset-empfehlung' import { Datenbank } from './speicher/db' +import { titelInfoLesen } from './rip/makemkv' +import { titelVorauswahl } from './rip/titelwahl' import { finden } from './werkzeuge/katalog' // --datenbank= kommt vom Haupt (der Kern kennt Electrons app.getPath @@ -278,6 +280,53 @@ const laufwerkeBereit: Promise = (async () => { // ── Rippen (W-2) ──────────────────────────────────────────────────────── // Die Ablage kommt aus der EINEN Einstellungsquelle (§ 6.7); solange dort // nichts steht, gilt Videos\Rippy im Benutzerprofil. +// ── Titel der Disc lesen (§ 6.2) ──────────────────────────────────────── +// Der Info-Lauf dauert 20–120 s — deshalb geschieht er erst auf Zuruf und +// nicht schon beim Einlegen (der 30.08.-Fund: „das Erkennen dauert sehr +// sehr lange"). Das Fenster bekommt sofort `laeuft: true`, damit es in der +// Zeit nicht stumm dasteht (R2). +async function titelLesen(id: string): Promise { + const leer = { id, titel: [], einordnung: '', unsicher: false } + if (ripVerwaltung.laeuft(id)) { + anFenster({ art: 'disc-titel', stand: { ...leer, laeuft: false, fehler: 'Auf diesem Laufwerk läuft schon ein Vorgang.' } }) + return + } + const geraet = geraetVon(id) + if (geraet === null || laufwerkApi === null) { + anFenster({ art: 'disc-titel', stand: { ...leer, laeuft: false, fehler: `Laufwerk ${id}: gibt es nicht.` } }) + return + } + const geraetepfad = geraeteInfo(laufwerkApi, geraet).pfad + const programm = finden('makemkv', db?.einstellungLesen('werkzeug.makemkv') ?? '') + if (programm.length === 0) { + anFenster({ + art: 'disc-titel', + stand: { ...leer, laeuft: false, fehler: 'makemkvcon wurde nicht gefunden — ist MakeMKV installiert?' }, + }) + return + } + anFenster({ art: 'disc-titel', stand: { ...leer, laeuft: true, fehler: '' } }) + try { + const info = await titelInfoLesen(programm, geraetepfad) + const merkmale = discMerkmale.get(id) + const wahl = titelVorauswahl(info.titel, { + istSerie: merkmale?.istSerie ?? false, + folgen: merkmale?.folgen ?? 0, + }) + anFenster({ + art: 'disc-titel', + stand: { id, laeuft: false, titel: wahl.titel, einordnung: wahl.einordnung, unsicher: wahl.unsicher, fehler: '' }, + }) + } catch (fehler) { + // R4: laut scheitern. „Konnte nicht nachsehen" ist etwas anderes als + // „die Disc hat keine Titel" — beides zu vermischen erzeugt Unsinn. + anFenster({ + art: 'disc-titel', + stand: { ...leer, laeuft: false, fehler: `Titel lesen: ${String(fehler).slice(0, 200)}` }, + }) + } +} + function ablageOrdner(): string { const eingestellt = db?.einstellungLesen('ablage') if (eingestellt !== null && eingestellt !== undefined && eingestellt.length > 0) return eingestellt @@ -581,10 +630,14 @@ process.parentPort.on('message', (ereignis) => { anFenster({ art: 'pong', zeit: frage.zeit }) } else if (frage.art === 'auswerfen') { void auswerfen(frage.id) + } else if (frage.art === 'titel-lesen') { + void titelLesen(frage.id) } else if (frage.art === 'rip-start') { - void laufwerkeBereit.then(() => ripVerwaltung.starten(frage.id)) + void laufwerkeBereit.then(() => ripVerwaltung.starten(frage.id, frage.titel ?? [])) } else if (frage.art === 'rip-abbruch') { ripVerwaltung.abbrechen(frage.id) + } else if (frage.art === 'rip-ueberspringen') { + ripVerwaltung.ueberspringen(frage.id) } else if (frage.art === 'metadaten-suchen') { void metadatenSuchen(frage.id, frage.text) } else if (frage.art === 'zuordnung-setzen') { diff --git a/rippy-windows/src/kern/rip/makemkv.ts b/rippy-windows/src/kern/rip/makemkv.ts index 59aa9c5..73bf1f2 100644 --- a/rippy-windows/src/kern/rip/makemkv.ts +++ b/rippy-windows/src/kern/rip/makemkv.ts @@ -18,6 +18,7 @@ import { KRITISCHE_CODES, KRITISCHE_TEXTE, LESEFEHLER_MARKE, + offsetAusMeldung, parseMsg, parseStreamInfo, parseTitelInfo, @@ -38,18 +39,37 @@ export function buildRipArgs(geraetepfad: string, zielOrdner: string, titel: str return ['-r', '--noscan', '--progress=-same', 'mkv', quelle(geraetepfad), titel, zielOrdner] } +/** Ab so vielen Meldungen an DERSELBEN Stelle gilt der Lauf als hängend. + * Jeder Leseversuch wirft zwei Zeilen (SCSI-Fehler + Betriebssystemfehler), + * zwölf sind also rund sechs Versuche — genug, um einen kurzen Aussetzer + * von einem echten Defekt zu unterscheiden. */ +export const HAENGT_AB = 12 + /** Auswertung der Rip-Ausgabe — pur, eine Zeile nach der anderen. */ export class RipAuswertung { prozent = -1 letzteMeldung = '' lesefehler = false kritischeMeldungen: string[] = [] + /** Die Stelle, an der es zuletzt klemmte — '' wenn keine. */ + haengtBei = '' + /** Wie oft dieselbe Stelle schon gemeldet wurde. */ + haengtWiederholungen = 0 + + /** Klemmt der Lauf an einer festen Stelle? Dann ist das ein Defekt auf + * der Disc und kein Fortschrittsproblem — Weiterversuchen hilft nicht. */ + haengt(): boolean { + return this.haengtBei.length > 0 && this.haengtWiederholungen >= HAENGT_AB + } /** Verarbeitet eine Zeile; gibt einen neuen Prozentwert zurück oder null. */ verarbeite(zeile: string): { prozent?: number; meldung?: { code: number; text: string } } { const p = progressAusPrgv(zeile) if (p >= 0) { if (p === this.prozent) return {} + // Es geht wieder voran — was vorher klemmte, klemmt nicht mehr. + this.haengtBei = '' + this.haengtWiederholungen = 0 this.prozent = p return { prozent: p } } @@ -57,6 +77,16 @@ export class RipAuswertung { if (meldung === null) return {} this.letzteMeldung = meldung.text if (meldung.text.includes(LESEFEHLER_MARKE)) this.lesefehler = true + // Dieselbe Stelle wieder und wieder heißt: physischer Defekt. + const stelle = offsetAusMeldung(meldung.text) + if (stelle.length > 0) { + if (stelle === this.haengtBei) { + this.haengtWiederholungen += 1 + } else { + this.haengtBei = stelle + this.haengtWiederholungen = 1 + } + } if (meldung.code in KRITISCHE_CODES) { this.kritischeMeldungen.push(`${KRITISCHE_CODES[meldung.code]} (${meldung.text.trim()})`) } else if (KRITISCHE_TEXTE.some((muster) => meldung.text.includes(muster))) { @@ -154,6 +184,9 @@ export interface RipLaufOptionen { titel: string aufFortschritt?: (prozent: number) => void aufMeldung?: (code: number, text: string) => void + /** Der Lauf klemmt an einer festen Stelle (oder klemmt nicht mehr) — + * das ist ein Disc-Defekt, kein Fortschrittsproblem. */ + aufHaengt?: (klemmt: { offset: string; wiederholungen: number } | null) => void abbruch?: AbortSignal } @@ -179,12 +212,22 @@ export function rippen(optionen: RipLaufOptionen): Promise { } optionen.abbruch?.addEventListener('abort', abbrechen, { once: true }) + // Ob es klemmt, wird gemeldet, sobald es sich ÄNDERT — nicht bei jeder + // Zeile, sonst rauscht dieselbe Nachricht hundertfach durchs Fenster. + let klemmteVorher = false const zeile = (z: string): void => { const ergebnis = auswertung.verarbeite(z) if (ergebnis.prozent !== undefined) optionen.aufFortschritt?.(ergebnis.prozent) if (ergebnis.meldung !== undefined) { optionen.aufMeldung?.(ergebnis.meldung.code, ergebnis.meldung.text) } + const klemmt = auswertung.haengt() + if (klemmt !== klemmteVorher || (klemmt && auswertung.haengtWiederholungen % 10 === 0)) { + klemmteVorher = klemmt + optionen.aufHaengt?.( + klemmt ? { offset: auswertung.haengtBei, wiederholungen: auswertung.haengtWiederholungen } : null, + ) + } } kind.stdout.on('data', (stueck: Buffer) => leser.hinzu(stueck).forEach(zeile)) kind.stderr.on('data', (stueck: Buffer) => leser.hinzu(stueck).forEach(zeile)) diff --git a/rippy-windows/src/kern/rip/parser.ts b/rippy-windows/src/kern/rip/parser.ts index 4acdd3a..727471c 100644 --- a/rippy-windows/src/kern/rip/parser.ts +++ b/rippy-windows/src/kern/rip/parser.ts @@ -249,6 +249,26 @@ export function episodenTitel(dauern: Map, episodenMinuten: numb // (30.08.2026, Spartacus Disc 2 — 1 von 2 Titeln kam an, Rückgabewert 0). export const LESEFEHLER_MARKE = 'makemkv.com/errors/read' +/** Die STELLE, an der ein Lesefehler auftrat. MakeMKV hängt sie ans Ende + * der Meldung, in jeder Sprache als letzte Zahl in Anführungszeichen: + * + * … während des Auslesens von '/BDMV/STREAM/00047.m2ts' bei Offset '56881152' + * … while reading '/BDMV/STREAM/00047.m2ts' at offset '56881152' + * + * Deshalb wird die letzte gequotete Zahl gelesen und nicht das Wort davor + * — das wäre von der MakeMKV-Sprache abhängig. '' wenn keine dasteht. + * + * Wozu (01.09.2026, an der Spartacus-Disc gesehen): Wiederholt sich + * DIESELBE Stelle, ist das kein Fortschritt, sondern ein physischer + * Defekt — MakeMKV versucht es dann stundenlang, das Laufwerk hämmert, + * und Windows protokolliert einen fehlerhaften Block nach dem anderen. */ +export function offsetAusMeldung(text: string): string { + // Mindestens zwei Ziffern: Titel- und Kapitelnummern stehen ebenfalls in + // Anführungszeichen, ein Offset ist immer groß. + const treffer = /'(\d{2,})'\s*$/.exec(text.trim()) + return treffer === null ? '' : treffer[1] +} + // Meldungs-Nummern, die die URSACHE eines Fehlschlags benennen — sie sind // sprachunabhängig, anders als die Texte. Jede Nummer wurde am Laufwerk // des Commanders GESEHEN (makemkv_aufruf.py, im Wortlaut dokumentiert). diff --git a/rippy-windows/src/kern/rip/titelwahl.ts b/rippy-windows/src/kern/rip/titelwahl.ts new file mode 100644 index 0000000..26a5428 --- /dev/null +++ b/rippy-windows/src/kern/rip/titelwahl.ts @@ -0,0 +1,147 @@ +// Welche Titel einer Disc will man wirklich? — PUR, ohne Laufwerk, damit +// die Ampel das auf Linux prüfen kann. +// +// Anlass (01.09.2026, Commander): „es fehlt generell noch komplett die +// auswahl WAS man rippen möchte. Bei Serien eben genau das die folgen, +// bei filmen z. B. nur das hauptfeature oder auch die extras." +// +// Bis hierher übergab die Pipeline fest `titel: 'all'` — Rippy rippte +// IMMER alles, inklusive Trailer, Werbung und Alterskennzeichen. +// +// Diese Datei RÄT NICHT INS BLAUE. Sie rechnet mit dem, was messbar ist +// (Dauer, Größe, Kapitelzahl) und mit dem, was die Disc selbst bezeugt +// (Folgenzahl aus dem bdmt-Inhaltsverzeichnis, siehe discmerkmale.ts). +// Wo es nicht eindeutig ist, sagt sie das — statt sich zu entscheiden und +// zu schweigen. +import type { TitelInfo } from './parser' + +/** Kürzer als das ist kein Film und keine Folge, sondern ein Logo, eine + * Warnung oder ein Menü-Schnipsel. Dieselbe Grenze benutzt makemkvcon + * standardmäßig für seine eigene Mindestlänge. */ +export const KURZ_S = 120 + +/** Folgen einer Staffel sind ähnlich lang — 45 bis 55 Minuten sind eine + * Serie, 50 Minuten und 3 Minuten sind es nicht. */ +export const AEHNLICH = 0.15 + +/** Mehrere Titel dicht am längsten heißen fast immer „Seamless Branching" + * bzw. Kamerawinkel: dieselbe Fassung in Varianten. Dann ist die Wahl + * nicht eindeutig, und Rippy sagt das. */ +export const FILM_GLEICHAUF = 0.05 + +/** Ein Titel, der ungefähr so lang ist wie die anderen ZUSAMMEN, ist ein + * Sammeltitel („Alle Folgen am Stück"). Der ist der längste und würde + * eine Film-Auswahl sonst gewinnen — und dann rippt Rippy alles doppelt. */ +export const SAMMEL_TOLERANZ = 0.1 + +export interface TitelVorschlag extends TitelInfo { + /** Von Rippy vorausgewählt? */ + gewaehlt: boolean + /** Warum — im Klartext, das Fenster zeigt es an. */ + grund: string +} + +export interface TitelWahl { + titel: TitelVorschlag[] + /** Einordnung fürs Fenster, z. B. „Serie: 2 Folgen erwartet, 2 gefunden". */ + einordnung: string + /** Rippy ist sich NICHT sicher — das Fenster fragt dann deutlicher nach. */ + unsicher: boolean +} + +/** Was die Disc über sich selbst bezeugt (discmerkmale.discTitel()). */ +export interface DiscHinweis { + istSerie: boolean + /** Folgen laut bdmt-Inhaltsverzeichnis; 0 wenn es keines gibt. */ + folgen: number +} + +function dauerText(s: number): string { + const m = Math.round(s / 60) + return m >= 60 ? `${Math.floor(m / 60)} h ${String(m % 60).padStart(2, '0')} min` : `${m} min` +} + +/** Ist dieser Titel ungefähr so lang wie die kürzeren zusammen? */ +function istSammeltitel(kandidat: TitelInfo, alle: readonly TitelInfo[]): boolean { + const kuerzere = alle.filter((t) => t.nr !== kandidat.nr && t.dauerS >= KURZ_S && t.dauerS < kandidat.dauerS) + // Mit weniger als zwei Teilen gibt es nichts zu sammeln. + if (kuerzere.length < 2) return false + const summe = kuerzere.reduce((s, t) => s + t.dauerS, 0) + if (summe <= 0) return false + return Math.abs(kandidat.dauerS - summe) / kandidat.dauerS <= SAMMEL_TOLERANZ +} + +/** + * Die Vorauswahl. Sie wählt VOR — entschieden wird im Fenster. + * + * Drei Fälle: + * * Serie (von der Disc bezeugt): die längsten Titel, so viele wie das + * Inhaltsverzeichnis Folgen nennt. + * * Film: der längste Titel, der kein Sammeltitel ist. + * * Unklar: nichts vorausgewählt — lieber fragen als raten. + */ +export function titelVorauswahl(alle: readonly TitelInfo[], hinweis: DiscHinweis): TitelWahl { + if (alle.length === 0) { + return { titel: [], einordnung: 'Keine Titel gefunden — die Disc gab nichts her.', unsicher: true } + } + + const sammel = new Set(alle.filter((t) => istSammeltitel(t, alle)).map((t) => t.nr)) + const kandidaten = alle + .filter((t) => t.dauerS >= KURZ_S && !sammel.has(t.nr)) + .sort((a, b) => b.dauerS - a.dauerS) + + const gewaehlt = new Set() + let einordnung: string + let unsicher = false + + if (kandidaten.length === 0) { + einordnung = `Kein Titel über ${Math.round(KURZ_S / 60)} Minuten — hier ist nichts, was nach Hauptinhalt aussieht.` + unsicher = true + } else if (hinweis.istSerie && hinweis.folgen >= 2) { + const folgen = kandidaten.slice(0, hinweis.folgen) + for (const t of folgen) gewaehlt.add(t.nr) + const laengste = folgen[0].dauerS + const passen = folgen.every((t) => Math.abs(t.dauerS - laengste) / laengste <= AEHNLICH) + if (folgen.length < hinweis.folgen) { + einordnung = `Serie: ${hinweis.folgen} Folgen erwartet, nur ${folgen.length} gefunden — bitte nachsehen.` + unsicher = true + } else if (!passen) { + einordnung = `Serie: ${hinweis.folgen} Folgen erwartet, aber die gefundenen sind unterschiedlich lang — bitte nachsehen.` + unsicher = true + } else { + einordnung = `Serie: ${hinweis.folgen} Folgen erwartet, ${folgen.length} gefunden — passt.` + } + } else { + const laengster = kandidaten[0] + const gleichauf = kandidaten.filter( + (t) => Math.abs(t.dauerS - laengster.dauerS) / laengster.dauerS <= FILM_GLEICHAUF, + ) + if (gleichauf.length > 1) { + // Mehrere Fassungen derselben Länge: die mit den meisten Kapiteln ist + // erfahrungsgemäß die Hauptfassung — sicher ist das nicht. + const beste = [...gleichauf].sort((a, b) => b.kapitel - a.kapitel || a.nr - b.nr)[0] + gewaehlt.add(beste.nr) + einordnung = `${gleichauf.length} Titel sind fast gleich lang (${dauerText(laengster.dauerS)}) — Rippy hat den mit den meisten Kapiteln gewählt. Bitte nachsehen.` + unsicher = true + } else { + gewaehlt.add(laengster.nr) + einordnung = `Film: ein Hauptinhalt von ${dauerText(laengster.dauerS)} gefunden.` + } + } + + const titel: TitelVorschlag[] = alle.map((t) => ({ + ...t, + gewaehlt: gewaehlt.has(t.nr), + grund: gewaehlt.has(t.nr) + ? hinweis.istSerie && hinweis.folgen >= 2 + ? 'Folge' + : 'Hauptinhalt' + : sammel.has(t.nr) + ? 'Sammeltitel — enthält vermutlich alles am Stück' + : t.dauerS < KURZ_S + ? 'zu kurz — Logo, Warnung oder Menü' + : 'Zugabe', + })) + + return { titel, einordnung, unsicher } +} diff --git a/rippy-windows/test/titelwahl.test.ts b/rippy-windows/test/titelwahl.test.ts new file mode 100644 index 0000000..2e966b6 --- /dev/null +++ b/rippy-windows/test/titelwahl.test.ts @@ -0,0 +1,179 @@ +// Welche Titel schlägt Rippy vor? — und wann sagt es „ich bin unsicher"? +// +// Anlass (01.09.2026): Bis dahin übergab die Pipeline fest `titel: 'all'` +// — Rippy rippte IMMER alles, inklusive Trailer, Werbung und +// Alterskennzeichen. Der Commander: „es fehlt generell noch komplett die +// auswahl WAS man rippen möchte." +import { describe, expect, it } from 'vitest' +import { offsetAusMeldung } from '../src/kern/rip/parser' +import { HAENGT_AB, RipAuswertung } from '../src/kern/rip/makemkv' +import { AEHNLICH, KURZ_S, titelVorauswahl } from '../src/kern/rip/titelwahl' +import type { TitelInfo } from '../src/kern/rip/parser' + +function titel(nr: number, minuten: number, kapitel = 8, gb = 1): TitelInfo { + return { nr, dauerS: Math.round(minuten * 60), groesseBytes: Math.round(gb * 1e9), kapitel } +} + +const KEIN_HINWEIS = { istSerie: false, folgen: 0 } + +describe('titelVorauswahl — Serie', () => { + it('die echte Spartacus-Disc: zwei Folgen, sonst nichts', () => { + // Gemessen an der Disc: zwei große Ströme (15,76 GB / 14,89 GB) und + // Kleinkram. Das bdmt-Inhaltsverzeichnis nennt EP 1 und EP 2. + const wahl = titelVorauswahl( + [titel(0, 52.2, 8, 15.76), titel(1, 49.6, 8, 14.89), titel(2, 0.5, 1), titel(3, 0.2, 1)], + { istSerie: true, folgen: 2 }, + ) + expect(wahl.titel.filter((t) => t.gewaehlt).map((t) => t.nr)).toEqual([0, 1]) + expect(wahl.unsicher).toBe(false) + expect(wahl.einordnung).toContain('2 Folgen erwartet, 2 gefunden') + expect(wahl.titel[0].grund).toBe('Folge') + expect(wahl.titel[3].grund).toContain('zu kurz') + }) + + it('weniger Folgen gefunden als erwartet — Rippy sagt es', () => { + const wahl = titelVorauswahl([titel(0, 50), titel(1, 0.4, 1)], { istSerie: true, folgen: 3 }) + expect(wahl.unsicher).toBe(true) + expect(wahl.einordnung).toContain('nur 1 gefunden') + }) + + it('gefundene Folgen sind unterschiedlich lang — auch das sagt Rippy', () => { + // 50 min und 20 min sind keine Staffel; die Auswahl bleibt, aber + // Rippy behauptet nicht, sie sei sicher. + const wahl = titelVorauswahl([titel(0, 50), titel(1, 20)], { istSerie: true, folgen: 2 }) + expect(wahl.titel.filter((t) => t.gewaehlt).map((t) => t.nr)).toEqual([0, 1]) + expect(wahl.unsicher).toBe(true) + expect(wahl.einordnung).toContain('unterschiedlich lang') + }) + + it('ähnlich lange Folgen bleiben innerhalb der Toleranz sicher', () => { + // 45 und 50 Minuten liegen bei 10 % — unter AEHNLICH. + expect((50 - 45) / 50).toBeLessThan(AEHNLICH) + const wahl = titelVorauswahl([titel(0, 50), titel(1, 45)], { istSerie: true, folgen: 2 }) + expect(wahl.unsicher).toBe(false) + }) +}) + +describe('titelVorauswahl — Film', () => { + it('der längste Titel ist der Hauptinhalt', () => { + const wahl = titelVorauswahl([titel(0, 118), titel(1, 4), titel(2, 2)], KEIN_HINWEIS) + expect(wahl.titel.filter((t) => t.gewaehlt).map((t) => t.nr)).toEqual([0]) + expect(wahl.unsicher).toBe(false) + expect(wahl.titel[0].grund).toBe('Hauptinhalt') + expect(wahl.titel[1].grund).toBe('Zugabe') + }) + + it('DIE ANGEL-FALLE: mehrere fast gleich lange Fassungen', () => { + // Seamless Branching / Kamerawinkel — dieselbe Fassung in Varianten. + // Rippy nimmt die mit den meisten Kapiteln UND sagt, dass es unsicher ist. + const wahl = titelVorauswahl( + [titel(0, 120, 12), titel(1, 119, 24), titel(2, 118, 6)], + KEIN_HINWEIS, + ) + expect(wahl.titel.filter((t) => t.gewaehlt).map((t) => t.nr)).toEqual([1]) + expect(wahl.unsicher).toBe(true) + expect(wahl.einordnung).toContain('fast gleich lang') + }) +}) + +describe('titelVorauswahl — die Sammeltitel-Falle', () => { + it('„alle Folgen am Stück" gewinnt NICHT die Film-Auswahl', () => { + // 150 min = 50 + 50 + 50. Ohne diese Regel wäre der Sammeltitel der + // längste — und Rippy würde alles doppelt sichern. + const wahl = titelVorauswahl( + [titel(0, 150), titel(1, 50), titel(2, 50), titel(3, 50)], + KEIN_HINWEIS, + ) + expect(wahl.titel[0].gewaehlt).toBe(false) + expect(wahl.titel[0].grund).toContain('Sammeltitel') + expect(wahl.titel.filter((t) => t.gewaehlt).map((t) => t.nr)).toEqual([1]) + }) + + it('auch bei einer Serie bleibt der Sammeltitel außen vor', () => { + const wahl = titelVorauswahl( + [titel(0, 100), titel(1, 50), titel(2, 50)], + { istSerie: true, folgen: 2 }, + ) + expect(wahl.titel.filter((t) => t.gewaehlt).map((t) => t.nr)).toEqual([1, 2]) + }) + + it('ein einzelner langer Titel ist KEIN Sammeltitel', () => { + // Ein Film mit einem Trailer daneben — 118 min sind nicht die Summe + // von irgendetwas, sonst würde jeder Film als Sammeltitel gelten. + const wahl = titelVorauswahl([titel(0, 118), titel(1, 4)], KEIN_HINWEIS) + expect(wahl.titel[0].gewaehlt).toBe(true) + }) +}) + +describe('titelVorauswahl — wenn nichts passt, wird nichts behauptet', () => { + it('nur Schnipsel: keine Vorauswahl, aber eine Ansage', () => { + const wahl = titelVorauswahl([titel(0, 1, 1), titel(1, 0.5, 1)], KEIN_HINWEIS) + expect(wahl.titel.every((t) => !t.gewaehlt)).toBe(true) + expect(wahl.unsicher).toBe(true) + expect(wahl.einordnung).toContain(`${Math.round(KURZ_S / 60)} Minuten`) + }) + + it('gar keine Titel', () => { + const wahl = titelVorauswahl([], KEIN_HINWEIS) + expect(wahl.titel).toEqual([]) + expect(wahl.unsicher).toBe(true) + }) +}) + +// ── Der Defekt-Wächter ────────────────────────────────────────────────── +// Gemessen an der Spartacus-Disc (01.09.2026): MakeMKV meldete eine halbe +// Stunde lang denselben Offset, makemkvcon verbrauchte dabei 1,7 s CPU +// (es wartete also), und Windows protokollierte 41 fehlerhafte Blöcke in +// 10 Minuten. Dieselbe Stelle wieder und wieder ist kein Fortschritt. +const FEHLER_DE = + "Fehler 'SCSI-Fehler - MEDIUM ERROR:L-EC UNCORRECTABLE ERROR' trat auf während des Auslesens von '/BDMV/STREAM/00047.m2ts' bei Offset '56881152'" +const FEHLER_EN = + "Error 'SCSI error - MEDIUM ERROR:L-EC UNCORRECTABLE ERROR' occurred while reading '/BDMV/STREAM/00047.m2ts' at offset '56881152'" + +describe('offsetAusMeldung', () => { + it('liest die Stelle — unabhängig von MakeMKVs Sprache', () => { + expect(offsetAusMeldung(FEHLER_DE)).toBe('56881152') + expect(offsetAusMeldung(FEHLER_EN)).toBe('56881152') + }) + + it('ohne Stelle bleibt es leer', () => { + expect(offsetAusMeldung('Kopiere 2 Titel')).toBe('') + expect(offsetAusMeldung('')).toBe('') + // Eine einzelne Ziffer ist eine Titelnummer, kein Offset. + expect(offsetAusMeldung("Titel '3'")).toBe('') + }) +}) + +describe('RipAuswertung — hängt der Lauf an einer festen Stelle?', () => { + const zeile = (text: string): string => `MSG:2003,0,3,"${text}"` + + it('dieselbe Stelle immer wieder = Defekt', () => { + const a = new RipAuswertung() + for (let i = 0; i < HAENGT_AB; i++) a.verarbeite(zeile(FEHLER_DE)) + expect(a.haengtBei).toBe('56881152') + expect(a.haengt()).toBe(true) + }) + + it('ein kurzer Aussetzer ist noch kein Defekt', () => { + const a = new RipAuswertung() + for (let i = 0; i < HAENGT_AB - 1; i++) a.verarbeite(zeile(FEHLER_DE)) + expect(a.haengt()).toBe(false) + }) + + it('Fortschritt räumt den Verdacht ab — es ging ja weiter', () => { + const a = new RipAuswertung() + for (let i = 0; i < HAENGT_AB; i++) a.verarbeite(zeile(FEHLER_DE)) + expect(a.haengt()).toBe(true) + a.verarbeite('PRGV:16384,16384,65536') + expect(a.haengt()).toBe(false) + expect(a.haengtBei).toBe('') + }) + + it('wandernde Stellen sind normale Lesefehler, kein Hängen', () => { + const a = new RipAuswertung() + for (let i = 0; i < HAENGT_AB * 2; i++) { + a.verarbeite(zeile(FEHLER_DE.replace('56881152', String(56881152 + i * 2048)))) + } + expect(a.haengt()).toBe(false) + }) +})