From 0aec4e39a5e87adfbf631dee9780e4d16f14e1dd Mon Sep 17 00:00:00 2001 From: Hugo <hnouts@grandlyon.com> Date: Wed, 29 Jul 2020 17:33:32 +0200 Subject: [PATCH] update proxy --- docs/proxy/description.md | 41 +++++++++++++++++++----------- docs/proxy/enedis-auth-params.png | Bin 0 -> 29465 bytes 2 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 docs/proxy/enedis-auth-params.png diff --git a/docs/proxy/description.md b/docs/proxy/description.md index db12c53..7a7caae 100644 --- a/docs/proxy/description.md +++ b/docs/proxy/description.md @@ -1,17 +1,17 @@ !!! warning "" :construction: Section under Construction :construction: -This section of documentation refers to the Enedis Oauth protocol working hand in hand with our custom proxy and the cozy-stack. -To fully understand its whereabouts, you should also look at the [enedis konnector](./konnectors/enedis.md) documentation. +This section of documentation refers to the Oauth protocols working hand in hand with our custom proxy and the cozy-stack. +To fully understand its whereabouts, you should also look at the [enedis konnector](../konnectors/enedis.md) and [grdf konnector](../konnectors/grdf.md) documentation. !!! info "proxy code source" Feel free to check the proxy [code](https://forge.grandlyon.com/pocs/cozy/cozy-oauth-proxy) at all time when reading this documentation. ## Oauth Dance -In order to access customer data from Ecolyo, one must first obtain customer authorization. This authorization is materialized by an access token and it must be obtained by the Authorization API exposed by Enedis. +In order for Ecolyo to access customer data, one must first obtain customer authorization. This authorization is materialized by an access token and it must be obtained by the APIs exposed by each energy providers. -The API is implemented on Oauth 2.0 protocol, it requires authentication from the customer along with its given consent. +These APIs implement Oauth 2.0 protocol, it requires authentication from the customer along with its given consent. ### Enedis Data Connect @@ -30,7 +30,7 @@ Regarding Enedis, two endpoints are exposed: </colgroup> <thead> <tr class="header"> - <th>Name</th> + <th>Paramater</th> <th>Description</th> </tr> </thead> @@ -66,7 +66,7 @@ Regarding Enedis, two endpoints are exposed: </colgroup> <thead> <tr class="header"> - <th>Name</th> + <th>Paramater</th> <th>Description</th> </tr> </thead> @@ -106,6 +106,8 @@ On success, response will contain **access_token** or **refresh_token**, **usage ### Grdf Adict +#### /access_token + ### Cozy Oauth Protocol !!! info "cozy oauth flow documentation" @@ -113,10 +115,10 @@ On success, response will contain **access_token** or **refresh_token**, **usage #### Couchdb -It is necessary to add in a couchdb database all informations needed for the konnector authentication to work properly. +The couchdb database must hold all informations needed for the konnector authentication to work properly. Auth informations are stored in the **secrets/io-cozy-account_types** database. -You can create manually the document by entering these parameters: +You can create manually the document by entering these parameters for each konnector: <table> <colgroup> @@ -186,13 +188,13 @@ Exemple: #### Result -With that in mind, the proxy is now the one calling the auth and token endpoints. It's also the proxy that is registered as redirect_uri. +With that in mind, the proxy is now the one calling the auth and token provider endpoints. The instance name will be contained in redirect_uri, the stack will insert this parameters by itself in the /auth call. 3 endpoints are created in the proxy: -- One for the auth (called by the cozy-stack) -- One for the token (also called by the cozy-stack) -- One for the redirect_uri (called by the service provider) +- One for the auth +- One for the token +- One for the redirect #### Proxy flow @@ -210,11 +212,17 @@ It is composed of three endpoints as seen above. The first endpoint to be called #### auth -Originally called from a cozy-stack trying to setup its konnector. The proxy gets this informations from the query: +Originally called from a cozy-stack trying to setup its konnector. The proxy gets these informations from the query: -- clientId +- client_id +- duration +- redirect_uri (auto inserted by the cozy-stack, except if you specify **skip_redirect_uri:true** in the couchdb) +- response_type - state (as it was conceived by the cozy-stack) -- redirect_uri (**will be used later to trace back the stack**) + + + +The state will be merged with the instance name, then decomposed again when reaching /redirect. This way the proxy is able to keep track of the cozy instance originally calling. With all these informations, the proxy can contact the provider **/auth** endpoint to start the oauth dance. @@ -240,6 +248,9 @@ Split the customed state that was modified in the **/auth** process. From this s Finally redirect all these parameters in a query to the cozy-stack (the cozy-stack which is still waiting for an answer from its /auth call). +!!! warning "state / instance" + The state must be recovered without the instance name, otherwise the cozy-stack won't recognized it and the handshake will fail. + #### token Gathering from query or parameters all params. diff --git a/docs/proxy/enedis-auth-params.png b/docs/proxy/enedis-auth-params.png new file mode 100644 index 0000000000000000000000000000000000000000..829d96e5eb9e0daac815eec8b1d68acb39120c76 GIT binary patch literal 29465 zcmaI7V|ZjyyRMrKI<}pTZQHhO+eXK>ZQD*dw(X>1+uHfo-s|jj&W}?+W=+&JYhsL- z&mAr=D+UXN1qB2I1S=sftOx`Iit)2f4)ObEsk|t$^794iBq*T_@$>P9Fb@0K#&i}@ zcUH19b#^mwGyyWRwX-pyaWZl=F|l<rw{yM*>E#6iA^?&Q7EpH2y2$q6Pg+{}o2%ik zzz>G1O#cfET2g*40Y-65J3^AWUf5{}>^WD8wmm7MpuBxwlQuXxMT)kZf;O)Jl9E<G z0P5`TU;2NO^!J|(qnz|0Wi&h7eiZjT&)pO4$5~!iq&K$TA!x{?(rNSt{Xvlby%LT^ z@X^Vn|3CKp*P)kZBPjZ`vfqZ5y%!T?xY=J<QQRs)bk9brd~QYG{&o_{IS-n=QPY-0 zcLntYhqD$i4(NP^n`!j7)(V`@22Y@R7c72mvN`ZGN@_ebUo<w0bqnl0Cs#LaW&^^o z<q@#n%O6_Cy`*VuH$_f=*<_%<w!O`VRM~sCqig6i7f;elqa|uF270}$|17G{IesvU zvV3<s-Oc2g3;%h-7`<>cd*S|I9PjUCIbn%xr_0tqnj9$lh|Y&7FM}rPu@RfEYya5v z#LDc<Irc+-P9y|Pw?gNIdDvGm^P*OWOTZYSJ8yBIZeFc`0E2UXf-ktPoL)?>7?q9K zYi-_G^&)FsWV-SJdEI3(!#Nv8Fe66nwZoq9>mD`|aL}FH>||gc&1HRJ41(fdlNCnj zxeQQvB%0NnUFA#rwZ-F}?+@Cy1v-7bIoVOBob*@tQg-*~_JMxo-qw{E`n{HHSlVx0 zFd7xE*6sKc2!H+HTl!>ipa@dnEr1UH>8Y?glE=kTXnTMd;AUg=7(b|ZNGVyGPiFVq zwbV>YE8!^W&xPsf4$XznDJs_AT;lM?PUJYj_%4h@{BRLAQd^k8?jXc@DCNx!&cJXl zrHSIg>dOeb9iR>`_JyJvP#00CaCFyt10!aMV2guh?2(o^ytLHKi$dAG!H4oHNnn}E zTkn-?JiVw0es*7y{rO{tmrkuiCY$}R#7mV=)Q_g};npZx@V~;MpKpvPqSk+r%!wCm ztYf>&B-hH342wa0CrTF_-tA4lQ2#}l#0dLzrG0)Qg-*zCL9?iK-KY|DfAZKj){Dv$ z9Dgm5KiO=kNTPrG9cpYK)d#b{xiIGV_RnO9`lz$dgleu)0yT|!y`Du1ZL%(+OP#>S zkHgijB|>)eMAh$*@g`fJ-h)#LnO{x)E%sNZ%kBqIy&ZNpuqIIQyzX`)a8jWhK=W5h z=+B%SUaW*!Y_i5ZZ$AS}xU{GhZs=KZ_A}WUnRuars@p+yuYcdjn!#h?<xJgNU!xRj zReG@TzAeT+u`)IRqefsWc=!5pl`c@yO6ekdotZ=F5XHmR`1?QDUJEq-W~5F^-|RJH zk4_LjbDuZjchj{y6(3lSbD_&Qk=e73nh?xu{^tWwEOD0{?^Yv_+>2#Uf~2!Uix$<| zNR|x@e90^3VJr_2gJdZFBqEwHi-I?SAxy@tHj^=HQlhSWuRRKi@A#+B@nFydi=tF2 zgdpVEx-UWn36@Tw{pEvw?o09X`S31cc-C@LsFla(OGjG2KX8asLm;Zh^GQ71u;QHZ zkl^s;hpdqtG<T<%KIxC>tAcu<OYU&E6yNt?R|9xT@7^T;=&b*;ZeDK*cx$jh7QXrC z%Dxr7_b*n(r^Hc*NO5iNbIqOCqN36(zc`{YSH{?)!J(b1SS<(f=ap|a0@rDEX653Y zeVInt)=-$*O&Pl2TRA#8e|bOMsz|TLhbeFP_wm6L2<@4vaHMm0U=G#LARex_Hq;Lx zYj~ayONvf&Rr*~hmSQKWfh+p07!O~y!T+_{W#+wa9)ck+BN2KZfDwFN;?Kw8mnSH6 z1<|q$ANq?W5a~~yMPT%ObNKNUwfV1N{p?IJy8%U_^WQoeIF&{@KK?N7;b0)>{MV5S zTtJreyc5%yH29+shX<zPd=No`i@_j09o}bKx<w@ND0y9}NH4;$G?Xx}A(w+9Lb;87 zHfN51e_&Mx)^ITl=F|=Zsj(+{z$x_VJ^wRoXWt)hL)WD2`+;x?75%lv++X{GuX=AN zCAsqyCKiRf-n{eCT-f~>4h-o5oH;MC(55ND5x3ZY2Phv2OE=t^#nyuh4c6dVB$QEI z82x`IW75l$`cG@r$^iBjSe$<?jMr<RK4XHJ_nT$<9g=y?yT!K)uR$1agT=EY^q!=P z>U)6mFu;vzk9J}|2-s?yGnu;}Iguh6{kJ71g~ej%3>mxQw=}mJqfeR65m!phCkESc z^rqba25!2xfd|z%{NIWimSs0z{qfb$kZkjR4K`fbwihN#u@akOiu$@ck+wtu>D$K! zb3nB@(jjj*+ySiGE4kvLr0E*)@sW#VOiW`Pxh5|I-@;!*hqGZ!?WyS!q9IsgJ{%V9 zszvBPzuzYLLL|?0iy8(V8^@%}uqS4Arp+Fwq@k*CJc_Ldx_i@N?k_m1dOyFpMsMWm zNxp@d;bZO|)3UYw7){Fz^J@7C$xh9Q#TFEEG;<zaL6UjD*~8O(#29+@d^lFjkym*P ze)S%pe#;cN7FM@LMDB##ZrO0GVOeE#V@-}q1dig>r|mRuzUu2DOxMS2N4k|5gg*qi zbTD{Vz=KI0GXV^-B;#SHcwtP=n&8E;UyU4m)C6+^(R+^SFEnua9+RZ+rf_dxh=XS9 zF*h>}S3|;+;hZxN#3S2us$OYBv|^2!eOc1>_60rs=Cyr2)1)p6{(vTX$SraQ)s7t4 zzxC8NtKr2jhfgmE-gI`Qdl=E$lkNOYeHMbq=7HE-UBVe-sPP_tlMg{OS};QB0}$J) z7^G~ZIWB^xn?dM#gL<V(@0|})3qSQdVB(KoXx^ta?Zb^jeGuNWjWCU{B|3=#+V{R5 z%=%5}KyTNup=^1`(UhzI)pcQ{a18h+*E`lWKOOD23p91LMROG9fRZ`)V(!oIR=1#< z)6|{v<Y?eBaXc)c^xGysN5k+KiLZQ=h#x+vA#+66#O!DzNlNWEJZ~aYm@r#fOKl-p zzF3@?3ZXzKlh0HczntCiwy7rmi~ZyD${-ch9!*5!`J2gbnP8Df4Y@qB5*tS=ENNL? zQpG%@cTDTZY%N`n7yhy1ZH`baSkV;r1f`VQkk*LExpxCbcXYB;-PCAyI~wp05|iz| zyg`R8<^N1%<+Ce`{n*>f+XFK!REFQxq={Lb=|$*&>3I^l?xd6cl9DAPC!!(Xc|?Ol zv5bEh+fwfgg?Hd}X`Wb^|I8`<1$EY$4Y4ZiX#VV>sU5ZYn<ScRztsx!@YBy~r?j>Y z1O*9=vLwrSy9=TZds4b4H<5_x(GK`~fwz4|RbjHk!k{j2^i?J|bO$@o`EK7slepcf zcOT<H8VEBzL$p_5me`sr<HH8wvuF5!-2sv*lsq02YW-_l=u|kfR$%RewCSVYDb~lW zQt8~MURVZbYOFSUBWc1{rbh*ehY6l8=<hY-b#|sIy!l=m=?u2Nta>5=bRws@LCrp| z#$DL4Xj6NYiKyV{loRlO=M_b>N1*1Tam<bJxBB0R95xfq*AH*E%w0eKj5O5qq{x|) zUYHz^Gg3(lWjVyYV>;qN|KZb+6%`$t`AU3cOBEtgj?1Aqw*771<T!tAa(kl3d{k3) zHT40`Fijg`l3RPcB2{io?&y)_89gd<|7y+Gl!*~^yp#6q2mFnqb+;ot^*NgT;n-~1 zI3||}EJ2Cxdd=jix}*MMuw1KGB@U96866kPoEBcrcLk=)Y%EMG-+e|_%f0Ij@IxDv zi?>nRy=FOm;div97shl1u%1~j4u!i@nrh58pQpY#2Qy^I+T)T$V<e;B90<`}hwNJo zlrEy`3@k06{3bK|0&wTFy~;$(rvXp+nQQSE;v1<CtNPB!Al1N|b5}g0hgdj$*~d%S z+X3RLHXZ+P!Q|sa0nZaJM-kZFp3Dp#|25MPIKdbJHXJ*25ddFQ;OOC`!j3Ry*RHR8 zCivyk4@Q!>Ovfmh``Eje%V&2T>0n=l?Rc=Lton><GUQQJo-Ofq^%IF*b2D4Ia01TS zJF|)LNCrl;(OO1PT472q-AshRiT8oD_8xZ;3zMWrvs~2;N$!C3w~#CwrIbb~Is3je zGnms1KdKo?HZ?E--oF`LO~L>*Tch6jKsdV7qt<9ltukv9^}`Xzw+0?uuC?TModVa9 z*1~`jWQkGZ2EXa$zASb)A8eaN<1@Y-%Onw)*|wR~$%j@k^P|a#=FfPsNrUlx<sjdM z)eDcm{*g0^c`f;m0rK1}7lhqfZklW<3TnUMpMvjYs)%^rU-xV&giKS$a;;M9j~Z$~ zpo3hSu(-o~={5}WmE(PF=&)Dt_CrM3%<UeBxQ9EFawTVJGIJ*fyHCkYR#qF?!J;uC zuC5Gkr~40!0<;~+-K#Y7p{ny%=gOW#uv3oJkW?himx}Nr_O`2@+%4&lNd5+7-A%6< z<wMODlQiAzHkU}?<Z5)JTH=e{z8~_3xUU$E^gKXOY3{AX#K6nazvpx)Ka}pyBg#qy zx^IC262^N=eHL<Q;bZ6@=`6hsLk2fvOt*hM`25N7Ij5Sg<fZ02nWkdM#BfpSMW*_R zSbFVQ?Zi}jKqagdz}Jkn7*{Jw3Q@J@W|u;FzmRBcDRdbWTT_C%uu-{I*2Tm$Iy8cj zX7Tif*nsy%TTmxzFgo`l)4tphiF#;sW31M!(4;Q?OjqwB%b;2ZU@osjdCDU`l2)No zKQTApDQQ9%!(##iUvE&oj1^HMxYB>(+o!|^jCg#5Lf3~&M1C=JD`5>t?M;+vHgxB^ z8Vi=3%kD4g^)q0C`^@1C!OuKU&}gn%zn|!_;deEEUw0!z5%V43aD<PE<%6+YOSPU2 zR~g{$N-ImCHv?19UI6mh+UDS5fn<ySGP@}mGO0bCYt_F-bYJ=mZp+NrI?PCya^0&r zGv}<ccEJnvr>PO!6$$kfUa76g36-jF9*AMN7L@UZ2p%h3AT6{1P|0!7X0wi$IkYZu znWe%@A_p0Fr<Ke?3IlyYWNGQ(t1g<zE@-~d1{8hzh!EAqU{RFq3x-lxmZ|~La2f~N z6>gCRlck7>rxz;!w7|Zmmn&>njfvy!l=dzq`Z)Opk|c#c!U3Zx4AVnu!lsZx&3Sj> z5$=QG5X;sG#6!wGD4hvDk&>Q(h!8si9E_=~o9W4LR6O?BdytiN<ivPzyd51x$lE@? zT>iMk-ofZLVKbpcc+D0E+fx_NSU$8tLM#K$;Fpk44bqBWr0Su`squK2n7`#QHHYPt z4E#zIM`@>|BfQjP$7=IF+Zqa9^VBk0MCphW+u$)KJIza*a+qm_(zUq(!UYX^<N=BE zLYmd>7Bwr-yy@X2PJrLkRLTm)Xghp!kLJTE95oS?48zUlPch>BI=^^JY_Cj^ePIl- zn7+Bz8EpdYEY&lGii?49B|SNhq8;cxo?J=jm&Z8Suyxu(gs>6Lr132N+&aEKs_v!G zl6Axy)3r$y_XIC{GnGA_ySzCgcr}}VJ|&C#C}Ti`u1S9Qks-2oM!~>p1A>Wj5~$?^ zd8W+~duJj(bN=mnNs9OK_$=tkodq5IBsSXyg8%$j>Y}7|HcD(h4|ug1qV#P`hAtbU zVS=tiEt97b_&yTM%YnCRC#$my-t#Q4%C<S*Anf)FNJ9Dw5ltI9<U^wW{s)_R={8<P zKCj1X<Wn||5WaQFG9K+kb&QaFIzV-pgRpS2q|f^`8kw@3HzvJz)&s$M)f=+D>WES2 z?|EO`JTlIk=rvaS2`(T>Or}J7A3^ou+kV$@T1fgPQT9_VSS8?wqcQUAg2ES~OG-?w z7}FN<RbhBL6g<TIH<Ci8-ob@gj9BTP*TrX56{Sjg{F4mTdILm<k0`Pxm%nw4awxQp zDo(I`uGLD^qHaOXp0bD9v<!kG12JYt(yI=Y)IG<rQr&<(W@e&ITNo#o(l@z~`x;#4 zMyI?nn|Q)l(U3r;RClv+g<irQwI?ZRGp90K_kKo;g&Eba<}59emO#Gx;Hw?cxJ3@2 z9dzTx1c}kr)(8(TBn4pCK4^_iXLupAPXqfySB;#gInZFvwb@l*pvbq?gHetqE&mO2 zzD>7N)iOSTg=P5fcd|6JXGUI~YKDb?2B_DH8ad*hibm56L5PcUNxrn8ttwPIBcvRf z3#5$~gIkMBu}#NIM2F(*Zyhf%zcV>2F)QJA#{?tz2A2f}N018JO4zaO+=4saqw9eb zr##)$1`Hw)!@r#yrHq6gNZ4Jm^ab{HdGO)uIcy>C^-hnBB|2061-b|eDbhz$*WxX; zSpy}?EJxe>>bzypVq#yTu=QZkzhjP-`dE7~eEh*Bsc=MP%+BIMqcnXmi`k>^nI`C- z=f!kI^PMP04{r-2a*<o_^L0GAE3X3Otwj=lFLQHh_ViC7A&XaC${|~Y%_HBSP~o0j zm`v#Po^d91gcD6UDzc}*lMEPX3edJ*nHrv2$0j{Molj2=p*0rGN1){Krwu-OwRD{m z6j(#37c~?rxrrq_Q&-OQ9Fln@ZbI{?p-#9lr8?v#a8gIApYn&Q#(h}%@P6!2Z)UD5 zs#Os3{7Kk4cXi~1Z6X8<Pc>xs(^Ig}1jc62Jbq4VEZ~DRL4s;XXlt;;w(?uZhRmnK z{V{GlE7GN@G<mXn7ZLPF->*e;gX$XU3pZP1RS@$Wudzyi_Bt1*Ti*dBMk0AL1L--i z^>LHu?OS(@7fu>h>*J0h`i!073@a{xJn+$_VA?84Ff7yXjaf>XCvU!V<_GPwXp&xr zmcB7xSsBiMhVLYv-0s#CHAFaRIe%2O6#|hNTIkjk<(OOm5VIksEzf6LCvDU$21he@ z045u4l7NyKRx`MIl|%8yBG8##&Op!!br6!8=QP}5Gv5Hjy9heR0`EAbvasbHl}1lq z^6PBtitaK^`ap&?3uCWERT?|?aT>((^tx<7e}JfvDHB^AnAnPTX`Y7O*9vc<&3=ge zQ#}T>8T>kg^Bqw=41seI4?1sV9{}8v7`Btav<Kb;dO+PxNN2x;uFk12*#_8b=A13Y z(g1j*row$<;@7llU2rLA$UzNIT*c*WHjd=RDnv@KHh~08gA>%7tD}ggNGrTtl|xB) zX#jNNWA0pj)k=oHl4e4aAL_mw@x404(RT7!6-H+)8B-rgL~>%P1BH~Jj~m~%Q`7JH zJY96rC>PQ{)=*NmhlCcZ(GE_6uloJkzSM<!Bn%AN7*_*UE^z3dru*j+ucyf!Or|hJ zBq^@?CzDr;TRl;bVu@o3>U%f3<WA$Uniaw-mm4mS;=<|L?-rOlx)LOX|KMgI6EQLD za~gNf&UC2m^WA13RDF4qBVXlPm&i+GAVqn-eToAa>*xKa?*&gBnX)(r=;A7x`wkzk zx;7E$XYoZe$vUQB3J&QEqBt@lGy#&a9DkyGiZ&v^^J@0RzQ4fNx{Tp6=O>aT#D7db zOmlqw695v7H}Qpc5EkgL83IjqV+Iza@qOJ&OT*iOaUVUJ=&Cdj$Lk=>k55feEd+I` z+aprH1g_!mA%S8tc1F<nkiRp3|5U5OW{^FY+N35H<|jz_{H#oCKh%r|(IQB`VYkHA z^G*CWfCKs18DrMRuO}<LRl8yfZS^`^FM^bsa+;Zewy>+imyx?ZNC={0RF;j;H!h;S zf`>gdr1%=QnR@@Pf%nN$JW*AbH^1bKS6RV>MU@#FReD2cBF$5$+D$EMk|~JdljNgE zA6Sp1B97htr)K75X;m9<EzH3P8e)^j+ms=l6kA<ikF4Y<ku91v#?u}J=OWC%Bui6O z?%QyN(@%fTGr5%*r6}*)(lWUcm4NQUsMfAmEY-=_ZnwS-dztKhAsW4p%qDhWjO4gr z#L;8H#I--MA>{K_#lV>Hr(Anl<Ot8XNs2K2Drou+5G=Z^Ue4H#tmIu1#4y91&)HEz zJ$#xxj%Z2343RdO_8{IO3w^AefrUsw>R&j~TF*`aUDf?+Zi~=IH$?w^#?b#>bfd3? z;KD}*Lkf|1QEx-2fgU3F82IRfftdY!c^gy~-Xz3Tc8<dwshP(v>T0@HDwTnT7uq1( zHtL--%nfeJ#Ekb~E9y|&(=r%27?rRg|CCI?IdQO&SHNa*6_{XUIe>Gm)x&)sE3`TP zr8R=!O7fQAdkAlOa}8ZqQ`Cu(+GKHA@$jFRi+4c>zMSbBReg}0-f+1yOT*jtLk6O7 zAyiL(s|@UkgMp2nsPwJahYbcYq0(5hV}ExldW<0Z9g1}`@Azw4#@+qK@F;(BNVTSa z1ojTierhEriE^B0a%7Rc?N~}dSj?R#cPq`gk{S$B*U21hu#eTxkX{xcy|!T=pJJ_D zxWdG_Drvqo`A08?v~o!(Tfx;;lad}`om}zJD2N)HjC6LYarI|bQ{GM-;`;bg`UO%) zV`{KD&V<Un>ewS(J6Krp6)&v=36jH7gyWYxl17TSWwMvp$$TKKD#Jx|)!Mw8%rI}y zhdF(2$h1KpB&MAl{9bj(a4+5b>cYQev{Kq><Byhz_5m?^a%bM1Vh;v;O?+LXll7<d zm?djoz1Mc2gtYFe)t2-_WYGn`fA*wRVT7gc?!4CpOhs?=3h88b3n#xo;j{WDVIkFh zICE}AO1~>4*l}cEj#Q+v8G^n7OKu)%QEB%{kpb$TATBUtHEToSgjQa&^*8eR20Zxd z>%&eL0a)?tzhmKX+Pf)$v%6LAUv6mOtTyhSnAmaHdV~3VYz$v)ACZO1NvU}A%`qz& zUJ)x$wKuSa*P+V~pcjiqY)n5nthhUwnJD1}f1DppBD+tC{cjbQXrcP_#pH00ys~v& zh+^g(9%wg5R;_2<t0m)kRD}z5_o&SFjy~Uc6%I5PYnS?-bwg@}ywT-k8n!)PGN{5m zD0Hu^>#XD0{?AY_iujKlYZ)F1(%A9JV9Lam*&I@f^v&A3$O?}e`bPHJ-}ItpXyU}; z$gOunDbOM@@n<U-NO}~$qO%t+oCkyUZ2{@%`KqGBHS|5So7d*zqDAYjUHhfGC-d1K zuj<jNaT9?P@9K?uZe@9gT)xcV>zeFV&=v3CYu<AyY~JHsqn0KpVt@;e>TFmb#b7F% zZWV1__ldG5%h$JsuXT88o{EW1{%nzXm3G8tEe@4tJD_s2Cx_h`WxVpAdOXRKGL-6L z<c21R#O`i@j|kI=h8fYzS3UaIcJevtr4-MJ1>V@O3MWS%L3HLw%gsV=$a}*0K&~4K zxcYbJ)s24i8CLH{R*(|gOo5FFr37&3k?pavr$alEjkU!~Qi>y%C6UqP5VCMQ^a(a| z)}O?bda9M!IVMhQ?rL44Nx;{fIH0~XTn#8N6nxi#F9I1dxYCkYwdv#%jB6kgE{b|o z^5`zGAwoa~P=WXWi8qx-=jL#qEHL>sT3!|%+!|AV4!^}JQ%#U6RtjiWsYQJ9e2A3a z{rjAB#eTUl92-0FP1_e~i>sWqY4h@rHt-V1E2t25+fW(a?P9Pa{cJdA>%}<>UKVT| ziOCx^wYGy-S%P{SW6=DZC+KpnS46U?rSFo5jgd99kxHTUOeopgAD<0xfo6oI04Ky+ zKiI`QXEfd@of#iT8XX+E=&uNmS{EOjNf=jI1tYAcxXeRhkpWvsZ{hBUi5~__xp7pN zGO<(gyNZ0eHUx|6Dr;SdZ>4M7$d$=Z5CaS@b1;b)Nz?m|`}RtsiFz%cmGA~u!aa9r z342=m+?flQ!uc_i#|?yFiKzY9pR}3Zy+J7ZIUa&8&NAhWSk-EjVtMiUe_}|y`*^2| zQQznQ%(T}FHixRf<C7Q#wvu&@^j|P>oWFeC2W?D5oHY%w=B%}_1BW)YZYi6Tek@fc zc7Mbjon-W}XADa;_KEKddwcLuuP&1%KNSM!{d5Crl~!j!^tl<+GEMj;(?GZ?7F!F@ z*0@>Z2oxSvBFB>yDP50_^+egRP^)M?PS|uY0a;*_=3{;N@Y4q6yRam@=gUAj$&f4a zw=R+z739OIm6Fh%%~uTHRch<q<CroYH2)`id?dEp^2<f~`0TM!$`A%-*&T$mIw?y$ zQiBw8Ntrx<v8FtWW1k2h%4}7zgLiI06VkMRxMmCp#A~7=V0k@rcLv0~&4<^i_5>wO zwTzHVPtYbDl$^!^I2u%{T+(e;n__VF0dMBGb`Y8O)PBx4(c1+sVx5s%3dissG`Siy zS&~d801ZTgwOJ?r#%hMz<RoK)Td};1Bqh1iMIbMkASFOjMN<=06FLi+8!;zM&9bDj z-~randF!h*Qfok6)ekYBC&OWP1Im_QHjp1_rbgrZl?5K*FFjkbRb@-Poe;fUhxPFt zY@o!6<1KkiS>n*QpYtceIcrCKhaR}*MeWBfjfyTM+n4$b@Eox!*sGx)yHHUV(o{Lw zD{<stnSDy<l+pG^O_ion^kekj@gB!DmBS%qOcJAUY?<A6u2J2`e|wwo+6aHe_rs)o zFzI5_M&^-NMU<rk8=^51a<BG4=FxHLWq9SAoa?E7-z$;-23sS6&C56t=1`?uCp=8) ztEm`^CSx7SrL|i}bfHE~4kr6mZ9?pAb$~cwf{?Uon}<p{CZ=dPmRTgcs_gASXEi^< z<WLRX`V~cT_8f@QUcr=O%4XQU`r_ir7H#UINSko<<=i4icvS0m^a~;6AjTS@TzQjA z=gk#c#*-L)p7g#XH4PcPZ+r)Juf7iIJy9}iF!xvzN7;g3RGAW88x_*JTdJJ`(SI4Z zbhu^F*MM0{3;kP%DxP4nwcsMD^T$XY?n5qKo`z5P4{Z9C<N8+ISM`7Z*XK7KEc&hG zy!#Df^9UJy_N7u^8fd-PppKoB((f02g~_X2U<dS{PjkL4EKLNO%2dUV8H<bd*P;Bk z762(GiM$d@C7c<W*iljOUrP_F{4Fa>eIl;vSZTX%^i+`x_L|Z1YV_E|HsxEUD51dn z3FS}RHlIirpCi;*5!*IyV+`|?Y^}M`)|vSOH=_P|aNtw@$^#&Y>%21<rA6(SN*lZq zu>j}e*7*EpxRVldjnbJ~6N_PIn<6&IcF0TwJEO)M#x;EOwlbxG%2OIl)UqE`_jsA> zE<~r%S~a9fF!&QOHzq#z9PHYZL7%e=zLD0<gIJvNt7vd0H^vQ~{t!=OfzQ-q`(cYS zEGGCHotJZ5ji@!zIxoBSSfugM39~yCjEPFVwTbo66vj_GA<-^#P|w6Uu;&h!em=B< zJT?`lgW(MXmCsN0_OC{f!(e-PR#D|!pbQq#xWVl23LA4KC%iwj9pC6-iK}dat%Q>G zMwpR7eK2WFNqOs(4N6FDp7j2el2%D7ElVLLy#*Z+=$&`V?D%&p(+r+Bd2+gvhEbC$ z2WqIr`Es<(1oUbMtqf7gX3*#2X+wG=18a-Eh=H6e2c@_}WJ#(AGgu2PArBfE=|353 z;G|w#t-GK5FqkVHmqg`|-TZCl#03)|J%R17vdT)5C9=rUgQSRgFy$R!I+ZI_#OjK_ z63DNk$+@Jy8YW%3f1hf&nBqq*P?S#dEJvDz#Ux%cglx1Qnuz+LLGEQ@W8gA}M(p4% ziothKIXW>)!=}n$YW=6iN<bjSHmaE0Bgx5UXK)5U-Fx8g!G@0`S4|`dlpvN)UKAsO z45X4@!K>h3Kr*!idGQK8>!cL1-7&jRl04={lnlnc=E%qR)t;kQJTp=SH}e7TGLS{F z3bmW_>MqFdJ}$>DrT>cClclV?AvPC9sOb%6I9In+5Hb(a*z|~#&|%|ZSMj8;w!H{Y zYRS@LqHsv)#(4i}MSU)zw8-uVI)|e*w<Qi%YhK#32DTyf|AdOORrM?uYKqS9jmSi4 z94>b8@HL8~3cwYaj&~dDMtb)3i+?Z)e|kq)V-gayxTgrqclo7iNMfNWIRT5xaXt0s zVC^5MbR#YHyXKRfnlhxAvCxI7B-7!u=7*aSske%_TglW*q!iKbDK1f}P_Jr=@y~Np z2*oGeElN{?Mbgw=6X4Djf+h`>8-ZA%j>2Brts;t@jZqWl&U4%pd1%G<?nlzD7z_>y z3%&&Lk_ePku`y~Xxe=s!mKMYiFhyEPJ<RC?PEU7$`BUoa6bV-W($?pY`a8iZrd|rc zLYbqBECv`y=i_EIpBqe;OuS=N1`{8g*v8m;*JSYfqe-JV5U^Jd32g|i;`8Ult}Cmp ziG!GEB3K%r?#hNi=9U&xCM8{B?2s~LGu0bef8ykc-Z4mzE!?$NZEqeXj_yLs6$TYj zqTgy~z|SqRX5$R|1;Ytt;xX_~12Z2Op`4xs?2TdPNC@Usa#DHC{KjyUJWLg+@r`s* z6s3_HY}b1W954z$?N_Te;}C?Qr|e4S4PxEgLAT$mGMN&@zwhmI0|!2V22)uX9Bzm1 zI^=+l<O~jFO(2>QC|ea&$PtJgZhN9yWT<y5a!i0uOcA$$H}cmx{R@MocA7JkYkbg$ z6-z~69-E0hYeDOqob!e-2A`3_P~A^23@XxocbD9oj7ZB`NAG6JgpZPJr8Sf}ha#5S zxH|yce@FQ0Z?DW9wnz%@sr2yJv^P_9ECSK(aEDx*P3nImr^}lpkb*%|+L_Jbs<(L@ zF|hKDg^t5rzw&Nw<ErKBP;2nYR5<V|i+EIh$KX$$kD9j_gZboil_e82{%tu|o&8>C zC7ovKk{Oogn1osV2kd}_zA~*ZY0z!15U+IdjvBVm_BLSn^(=IIulQ_0Jr=&CBVc~; z3ap=Xp{A_Xp7Zr!tsiMWNw}QsuB)sS^3sUvUT(O`=<PGNl!H1ZHRmNds$K4lc~dDl z5gd@kTxTiIDPMtl;CSp0tdR{!{Kz--LxX9p{=>m0H$hxoL*ptance!w*FF}d9He1= zn5WPVZ3sh039Y)x({l(T=xE!!gBhYVt=oDFp)a`?g&CtUX-@82Ne<pWA}Wfy;Q_Qh z8dpnwIWd2F4)-dSF#?3aALd#))~9#**ajbr%=E-Lkw0EyJu!T@)ZR$tkT)I_y0}8p zj7M2m<c=mz{l*d2$G<nx3`-xObnB>AlecYMFe<0V;^OOg96?h1lz}NtZJO5TZTn8@ zX8t=&4D*fjayfPLp0dOjUJgrVU6T@^GeedXer<-tVC2&tsL$M9pVfgYUQ5e*!K==_ ziy*ZzcS^!>%yyPk^%MBNb>GFiuLYAAh=I=*-+n22t%Fs2yUSqCWMn2``7A=-><>Bd z)sdzuf;2_Uv*9tgWJiK?59c+A1GKYP7PwmZJN7*1ynfQBt4Br&sfso0y1HVJXvLXC zWp*la2pc8rGoB7fO|W^Y9~0A5Ok?q^Sb?iePuvN#u0_VK%@wwy7bKcee-W+}h=~HB z*p_W51+NAjhmAM6*o1G)7gu<p?1^8fs(FE`!onwyaq2sil0+qex@_Rz)O1W@xfG+? z>SubF8cM+#dc~nDR4yB_@2-eL=6Bhjw&dHSg*{?WkC7Q;i}KMER<1P;zG$iW9PnO0 zIPqz|u^#YgHnCDoJQKfME8d2lqy8Zyaq77sPMn5{g=ln8L#P}duYK{(d8w<o`@RdK zXKL6K&q7R;kd&#N__|QQFqp*9^5eSww#JI`Lz(7{hPQ^QmWLfFX~X1vxaGYl!!o>f z%9@%2wC5F3SJ~GF>H)vx);MV%t2dbybNaxb!DK#9E-|ED@-8_y41=m7S*G2)<Hjzx zlG$vZs+AeHebQ6gMuRDj&gZ&O?sjY?pbv)>!3}umDi%al1hVYp?mH;)RFTMkG+k*c zA>IP7{yC&_rT8qP5^{~h<rb%(&mm~oR@Ijd#EIC?E)&LF-6VfZ*9}?GV@iWuB>Cum zO55g>?jh;d27PL!;uZRNr9S20I#Y(L_T|>?iwB!B#TP}cy2%?FZZgJvjp8X;)7AF7 z+6~_NRq(}pu@>i~jQTpKz3HegjK+!B=-@xfCj?<aY}?XRz+(g|4%2Weg&v#`D+0l{ z0cA0*WA#af4YV9D&XM$82ZyMRi6+v%v7Vof1TD4M$=`WD<njx5Ckb-e9cdF4q~ZsU zp*zE_$>j0QU%eGg+GP^lxx(FU>vIpO04u6sEUFC7(a{)6+@#vkTpGF87M7x!Ab3NL zO#Fb_QZNPd$aBF<K-iDpOVdW6gyAcs(;Gg?Xuzmcqr3;96uc94)9r0ej<1|KGff3k z!S1&JYu}U^{dtAh^F~7;n#q;ex)v1Hqkwds(lU6X5j21&(%luW1qh48yAeXPZ)D0? zOINyg04DtGBW!X&mN(||<6p`*ITMBxWS*{(YE9ik($q5*1_JqX?^J8Li9*yJVs(`Y zBCn-<ah-ByN>JDg!)KIWsp=?0xg;82qt4q1)V~<eY<dAbIHJd;b%Gj2E(PZg2;OwH zhF4F*-7(cS<Fu-z9<z3m=-k#rKgvsHFP@<A+OgNucL1E~h!w^HucCwgn`O+IM!P0~ z>^`7G9P~Pru^>C!)=nBk&QlgTZz#O_!bjahS4H^#-W9A?7DtqgjB2vUuxhK5!LbM% zp6!y7M15FW#sUVZnXB6jcK>r3ZZR2%5L=rwn7+mas`u0K;|by?iSEpNc3d!{|GszW z7X`tRBGZh9JXjhG{KzU`qOQS*C2DK_s%+&qquzkQ7msCyV~z`VVZ&~^90-cF3IDt$ zrs$tPg=j)!#%GD1ZQZoc7JK#%OzmK>{Y%tJB<rYE6nWyyU4o9AZBs@979EUB(;32e zl}zlrrgT{77fCPby3}u#6`8PydL}fWL>6J11x;M8{Z8@gJ@)rpcldNw*m=i3lO+<- zR<5t~3}8mwxAva&6Y9B%$fe-32#B++A_c!OWLe~$3is!>nmnjG;m<e&$yH<}15=tP zxltxtWcW%R9I2aO)ScLZ-)Y_(jJKdtX0XM~duf~MJ&q!a<eRUCe-yTL$me&erRhx3 z4NTCjeC1<pRHd>jnARGdajy%a3`M16GCA|jeUfV|UoRA3BY8mGY6{C|XyWiL#9VZ! zP%<@HN#0(%*5#Gx&|Z4KrEf}f4Oo_h&Cm`;>|Z*VehqAn@|O6iR`$EWj)p~GJmn<a zs+!}kub#Xa;;QL|bnVBWxOcsiw{pKT_HV#Z1b@~&vzLIK_F76)jgoxXbF1QmF0dTK zltz+u!jvR8(?x_{?i7lF=oCv>dqZAcE7(fBHHs$D5#U262yWSIw}JFsbEYyb5=OJc z(AYTF8^y!g3I(2KIQ-QEP|0a|Il+51uHT-@+u?|GRAb0+J>>6HqMomiiPPblqz;G5 zfv2plY_`BJkh=D5k2c0yp21`Mlyok@{+3A4kxJ7nUmHr1>Ef}3Juix_DUErcfB~3o zam4%T^&qygs^SVN!Bb`b1ho;{b2H*LGpC<`IA-xekZ+z-4Ocw!3w~Nh-cejJMrh=| z0k%hhnW`}?knKEWpGsd(d2r_b@|P3pQ3+V9toj$rb}jF~rvhj1p_$W|GwL%g*u>mC z2JlgC&QSiS?^NBF^6GyTS2Q&)Z~m(Nv+(*+jnYEBs=;i}s?1Bj9a=&Ab6J3%*wQDl zKM#%zucD@~TOLm4sg5gdYRW%WY?gg+(Pk}D0Xo2<-48YLyJ}l_`hHd}c`WizI@9of zG$l<VZnuqP;K(6v|Av4O)@Cm*5kgjn?(XXWK!HD6O%WR_@#&x8i?fj+oM?~_+HvMw z?XeH%&0K&RkPDAQLVuNhcJ^bW3e{j<f1&<SteDLhgIbu|id$MKbgwHztr(qZ9NsPl z(3gMg3e<Q$np$h=@cc+vk(dV~H$T0o)T^~}IC0+?YD%r5YXg~0t$!I>n=m?}V2WHr z*5DrU>vHkpo=paJ&keQim7#Kvrzn&{nN6w${mB)tjsT3Bcy&CxjVNlJus!1scG4-+ zP+Exh9D>8&m8$89zH{i8gT*I<O#8gg7T$12QEr@Bj_Ybf#rqc!iyXt>DYXhr!ab86 zk8+DD8~FK({A2=~x~RhyfBHb_pz>;zgBeM3ln^)Azfgv80X2Qz7uK-Ti5d&d2X3g^ zZ<fr^v}dy6v3eN89r*$<FN_FY;ZPoqFuhZdW_Eizgo?#vTcS+^(>MXWYvT6dcH&nb z|AHVpAgW0nxSUcR0SmEYjm}Lh05OV9_WE?X7M<gI#OaTLo&L0PNK^h3ZeDW&0ed$8 zd+g);skQl#3kw|?4FYL^c2UIhHon|S{IYrh0neWh9;f~_I|2elw4btf%CsWlhXsV* zZ!M#m>4U4+Ztvy`3<^Pna%1-H3z73G9qW>S?j(Tpm7c=wu-CqaSr7}7e?Zp8ZPvFb zFZRAOqM(34xHD)uH#=6~-4+3<pRpVd6Kd==34&I`^qo>0?Q{Nd+1i60flyMmgrpz} z-*nWjI;!nBd1QS<rYCtw6doS&w?ap+u}HOHiVJ;UDJ|iwpqtk4p-|_lx5TG%ifyuR zb^E`VnQBaSYwk$TK>lnAz!ik+ik+FVFEb$+g&AP%oG}{}e>4sXrHEwYW+BQ(7>(0B zz>BZ(&6(UNmF8dz2h1W|Y^|LzVlNx&d}26tE|FXQ6K8tG(Mnr8%fTLA-`Wh{H=Qx@ z`kHr(F}0{gJNV^N;Nu$Ein=*ZBJ%h-7;!Mof6@sh*G<*I_L7oT0@uO8;b^E;@C8sU z-h<a(Jl;6)Hp<x)QCv;R<k%7vHr2_V6BoR^376^?fUyV(Hx)s??o^tjyL)ry8imyw zb{LC#P&DLd?*NLHnEi|BpazLg?5F-a+-E$9-28#4<8s`_h&czfw7Er}TemClklmYr zh=e-s1(~(puEF+ibX9DX5Hr`8JN@uaLqTN{A*(9R0aI)^ASf8!#x=P|OT&nO=CB(g zr3x0XAklcc^p~8<UkE$a@ZKOfQk$p={<-cc7Gap?Ey0$9a#7<JX9HEp^BrIogk_}( zDrYL9gZWec6uSl2U_Gwu>nvhfH}=i!gla?-kk;l4TPJr<LKvVshoK`=gRZ@u$g(#M z3`}dDMsrHOikQ%A#U~Ll-*lbJcmoMpFH6d){ih2AaiD-B2SvSn&Ec5vV@TJ~-^VXy zXr+eZ=}jdAPS6=M-E2&T9_ih%L!n#6DV}N!6$14G(0#+((HxbCUJb;k1EJx|7qlY| z3cTESKe-_~HIWw6B{tc6(q~$Ame)Sk9dLA!XM*DI)w8MzYWb(5bKxE5#}I*R_JKs5 zn@d|t=o))2wJ818dS{GAL;5pK&R%b7;?<OR`{cO-ZIMd0Ui9C($ca85Xj7!w$D)z? zzyl9K3cbrR3fk%-+PMNS8Ljbns-RtF_8?gK+C``MIil+QlMU8N@QFNI3)|^)eD;{s zUCZApg>xf)D};5U;yHwTlNlWI(R7VwqEy6xgEM-n&^IgGk~1V^I}t^E{HDK{!LrsO zI^bsV#Jm^o^XB$uwW=mYF)p!p`DQfzOwn#)?3-m`nPV|wDEcoWS>ol0jol5-z;q#l zSE+Ka8Fg?Ijsl#cjcb`RTCM}>jMbF{`{z~|MsqU0A-o9RaEu#r;7!hKXqRk7nbznj zN4ZcfE2GnWw&c`i(zji8p9VN&7)>x5hDmCasvb+2M&@Yn7l!~oaeeV1R1UBN>G%j^ zmDQ5{hU=f?x2b+=Kx!4BG+tm*8zo3JkMMkxwgm^izZGhSo_yytRQ;2~o6(tjBG6?; zopktuq(ELoWl2>{?P=UF3I?KUqxY6>d+&Bf*w`ktP<gsK^m{V!L^_Q;@-nYBJ-Iij zeh1A?2*I+-oWlao=R0e1F_1;ORuy(o5`6o`l-s67TEA}y&_j&oiPT0Kr@2sy<pNg9 z@Do_Ezx=)(3%zt7(+p6}+ubhj_U`@EpR?$j0f|2*PjTUyIiQo{Sps>IR>pM_0e|}d z2zlm$UDS+@vz`qE)Kf0Uu4x<|u6~mgNy=@%FXwI|LcbhR;C+4A2~f54&;7dE8TYIR z^$1sXWq;o&<Z$vIuSx$dy|0@1<NS2M(nwrTTg0<6uvjtCn2>7b|HtoXhrIBIIIyFI zEIwpIb~$$b;1k<)!J^WA@z1Y>)f@VBGhlN6!*m^j*l|t4;X?{@cd<g3S;h#KUcTu4 z83u_w6Z<eJJ(;C#PT8fx{7zuKD{wwc@zH+y3Xaa-YIxK~RCat6b{IU^|Em>4$_-u{ z_4dLy!d3Jq4myo}^!BjEj_&$!ugt{1)VnS0<PRC@2^1#b1{ae*6K;*gky!5;N6~&s zB~Y#yt-c%xL+wacbvP5~c>~1tp~B4|=MO_YJ2YZ0YkyxKskJg(WS(G+wept(2lH$l z(G(>DHDwU{X0~MQz|gI}$Pvh!#ecv=`Ti7!&c(hz;T{`lLrM35<7cQJOK1L{$3a*~ z*bGbO$D0226#UJmWWQ!?_6vbZ1;ri4>~y80n99RUmBB)+z`r$zr^SCEZMzQ(C|p=@ z_|nX~|8{5czHUjSuPLDKhX`X4Eo#a4*dgGx*cYcMhiXPrjzwn2t&i5L`SMvnT3@em zKE)5~jbuTSM12Jw?Zq9C<8pP}ZmS%tjBcyp+P;2W*k=)I=qJVSnNo3)_lPn4#4wwW zwIj9O3I_0mlYX&I-gTWePX})7FQ;lUTK_k4cB?mxqW>QzE!-?jlyVq}h2#67x$1v# zYKsU9X#WMJxraa`pE;@}r2k)n?N)EFDQ@}y;%xt$Yf~_i{`LF63Ag{f%b;I4ngI;s z|3kn1-1PtX^Z)+Uf1PR(L+S5-p2+{Wh%|ZyBbeV9lQh2(wvKgB0*>Reu?muJZi3w; zs>sT35Swkt3bL`dN2JrsV9NWGPySg5Z(uxkiEsTqVM9mWY5=f)wH7$1%ROM%@GqSo z@<k&0ynSQ)mBJyHV<TLC!_G~8cV8;Bz#Of&hF@*uM)h)R{)j`Hi)0xL0J%}hrxLY? z11D8qolb@T4TJ4}iPOKfnQ2~rHZj82vu*Fe=TGsyS90WyL?-eVFaTfh(?y8P7tAqq z9bDW?%*ioZFV+QgPZ^~dRRYqURcVCf%wAS#mGA0_nIJzt=wiPzt%(S+zV4U06_t#z zAy-TyuIyg-yY$@7WV4;q$9_oDYEL-lOu4^RIdIt3X~b5@mZx7TrFQt$8$%Z6t2g7r zH)y>FL8&KrfDWfMeu!Jc?KRX=bDjV)y<->Qta!dHa-14n?YDXpl5z@cehW&OXZMF1 z!(!>Tj5unI@Y6Z8nAvW&>L>G;EH3G+cwY-G%9Ddrr2`H=d12prd)EzJdt{?E<{&V5 zUA4%e>ebqv^m=oYECb!i;H`qs-mH9=U0Keyn`GY1)y8kxeI`Av$-e=bj7@x#1kQSA zOs`*lu$?^%CvHShwFOS!Dc4fTIo>xq5ZS0ucVKx-#C2v5j!%5hxw3?XzCM^xM4ScU zCZW$}`>#di)BI30D%zjcgi@8eUO*64ob>tuJadU|NMtNmxb^eDt~GwGR_jd5!B;+Y z6Jk9Y>~Z5;nw-DovwG0!`8b4a5DwH@{zTOD%s_r-I=S;jLr&)Rrmn+gs60eYm;Iss zzFlY5u_RE6NQEyZTdXm~XQDjw=-#h&t@xKZ7v)OWcX*_Ty;j(jvBU|{U{}bgj6;oG z_X_`qA(I39kt&q_>VvU877f&l%SD<=x5-??P}^>UB&q4*WK8>-QrYBfOvNVgvpN~e z^xryNTTUtBFoNi`XoDk0+e&L=KzK&-hpOfu>aJ!=Yhy!2SZK2$xbD6lns9AVFW5D( z<Q|b)R5Ee7Q3oO{W`WhKBk4}i4`Xm4_{o2m>67Mgv&)e?69f#<<J#ZmXlC(y(Gyp1 z_Z;CO1@fBn!u1HcJ>B=_MzIuPvO15S8yqefY|S4^Sq>_N&sbYVdXU-~lw}=OEUGS# zquO(P-RzXek>PljeYAG}ntc<z^_)rTlt)|?VfbowMt8eKxFqsh`3Kq|d~QGIl?Q|R zb0+@hq`nIh36$j{U8GNob4hRsY3*)C_HleR7bXy>j<#801l}89icwh*b@Wz}iEr@n z%m3<rbnab?d}(r;T#9nQ{hLXOE~TlIC-r0)lvX0F$`zOY{vP^w5dt?MO<E2$P`I;@ z1?ByywXff{_9GP#Ax3JAwcogZ`?*!VB`d&2Xg2ZZ33`~445;bVIuZg~BodMxK_WHd zt}c7n%4XK(!HIdf21YJ8RQ;P<YJ&lra%+-&Np<i4{@sK$&jZX~pQZ{u^TSeQ(kmbt zy*>0o=69g2vX&{#p5&GcK;h*EoM<x3e{6BQy4`cHH}fY$96!(9^ff}#{`Kvoi%pwY zh1lw~`Auhh#Pt5=2g|VB^0e4Z_3JAK2;{G5=D#aQ=ogY}y9q%KDB|+0FH6GGIoOx~ zpgj|oMMTT%3xmrUkt#P@L6(@&SR0D1Axudb;9{?yld?5@_28nQ=)ylLw;6~MA!YUj z^pRU}k`mu@eL=F&JXoE7u^Rt>^qktDYTFBE0ee?E-Ad67|1VbBEyx^%@vue6$=;0r z%}IT_-XrwjB@Udvcla0Sj2e@!<C|Pgnq;L))mdPRkG9<gO=tEsU=Jl1{!fajzy)NA z%*5vZMYq`)Z<U{E8u=W9mqcyVvXK)hbj~en4Gq~1yj-<pSx2)>>B5>G6bTr|s!#S= z3%TgGIYd{3#HXWwec3xM>bs6ErMYDc;_OII<AxuHbc!f=O4bT|)GCp__a8U13djoR zz;{Gr3@-M;V|E-dO7d8QmwAU*${V$1o$Vamo!S-eAWL!GoND?t(4GW9|9ImXr4c51 z_c#@$fwrVSg|FCsLDKLd^gh45@J_awtkC<vfl)7X>4V$H+Rd#x=N+UWa$%?S7cF%# zqXgE=;B#Z0_oqYXMYW|%@?yxo_5;#Q@(n*i+9JT8<$k)+0U-mVOv8?Jkt1}wl6dN? z@AGz&<VKC9^zRo7b7R9v&4kz$C|SlbClWx!NO~dG<n@{iM2VACp`#*}i|OgcTQdNU z`&^E|zD<CVJxAz7I@g=u%=u_J5Dm`D=l2eQy4Db)3~KI7Jn-H7_xIVOhvE|J2fTin z+_&F;ZrOnHI+J_u2ksglF`r!U@#ad7T4%+i-5zdpVoCbU750zIbaypB_u8{Sosr`L zxEBG-C%Uo*WV2;?3<<H#FCPduIL-t26V=}G=ZmK2PDUSgvMa0vs$mEGh|iN{v|boU z<2%#a%aq%Tbhn0jDj6>_HBLWkejHmRkXw@%yrTxRp#|6WeSG6_rB9ZWQX%RAAzy27 zogHcu6s>Lwt>W74dJuu`HvaJB<J_TH{k4tRa2wbUt{2f;fl#EXIbL?JF5n49gptf1 zqeJD2<Ux`gg~M{T$^6CX9>-*<m9eH;3pZ|PjSInyG^qmL{?3nXKg!kcH=aqg@zEG~ ztpX6=z)qW0zR*&~$D53kobdyQy|@g3IdZS>=hX7i2r0K_HG6-aBKZ9k3ibz?iu?s* zjWu!P@gA03iCEUy_WDkVmeX+f39pr(sf)Jopkn6u{QWQAcxzWH&L^6$Cz5F7677)E z;=i>3CYl(SI{zV2@s9!@Mog;0WJ$#!J>Y*D`&YDpZHOW-pZ)oAiUe&jT|bGw*UQj0 zMGWmJ8IIu?K9sK6ZAc<?Zk6#y>Pq%~yl18ZZZtvPhODTlW4o8=jkdz%ye51>?c-^E zqTma@x)%#bJV(e=o1VRrSdg@6BF{zfHue}c+ULXPT{Qt<HqkC93v7#KAHGN9MD{yb z?ijz8Kjk{eapr&a*=3%s3k>od=a_NE+H-LG6rn1V+j_!PL#O4bS~1B2Q~!O|yW>-J zPYNZhL>YDS?2d|`on~guNs3?2qTBijojY&kPM%Ngy@31OIlfF66bm#vg0ORT<GQHH z<a@x0gI;p1xd62-f*G)GZbzSQZ>gjE{;vRvF?G&EQ2TA7I(7%g24Eot#U(hf0PnwY z5G$K-DtHo{*b45w!M-k7Xd!M1txv=v(&I>qL|&YJ>r-%QqWj*%(+H2OrOka60!=M) zoQ4wDxjk3_%6K^T4c^yu8lbjx97l$>FHvSGSf@hxC>&fik!&>^@BP<`ewNjn!?E`g zaNn@0)Zjo?Zw|)-&e3Y)Zlqdt<@oR$$QX(DQQbhVc6J~~W_i$f`C{(+tp)empk6|B zo2v-Jr_d&&jO;WTz{NLOgKa~Q=0n<HnnbLlksgCmyOv=Y0YK<M^qU{Ui%uX)hYQ8^ zT3Ng3lMS`qP-6VuK?<nuz?J*Z>=n2<iT`Ww%mbn-*FXN5<qR;0h$4!D3YegQ8#cJ$ zmP@%M-5dQ%Ewx-rt<+oEO}%Niw9>AonM*FeTuQC9L@PH$L>L7XT)+esP!?GPWScY0 z{Qfv2>o7Bzx9#WmKR9R3dEaL{@AJIR`#ghw>d%pPy$D#JK*Ey~p?MhooA==8_$zsT z@4Zj-lXObVgc29Xsyjqgi7%1U7lL*In#*G4xNiq<;aZcWXu=Y#%7;_-aE|=Tmv(zn zxZZyVG;#!oJUF@pP2!!pF9i%uMssFp2()&A@;u1cjqm=0IE#{8#Ppv*MHg>rN50@V zjrOmnQ=SM$fjd1`bH#2Q@HF@|hel42yAA&zvbfNH9JE%0ovL1aFsIWBy&K8hCz9R0 zGq^ZH#a+0*p3Xl+RO)bp#$22Tk?YZ1Nw=<FCYf)wav>h34`pNh3=Yo`c;wShXkKQS z=Zy=8b8P+;P^)0f*J$;zv|all?qyBL37EsxfdODw4n^sp{RGYVT0s>vHVi;n;YHMt znc&+3D$3z@)qHK?xy<0m-S)G&ILJ?WV0ly(A5ApB*n1|0-F+oFFU<s@$^mc06pp^; z$RnSAf{OuEs$oQq9tR#K{^aka{a1TvDuU7&K-92_67K<SMnjnov`ePbmhI>RS93+S z0N*<kNqXEDPE4g&f{R6-+cHOMbEpnST`0%?8Gzeo3oDO&RO#OoG?$BQlYRTusKjT{ z`I=-uXBQp!?8B+H-8aKmrOtz>32z|$v>LI~ObEP-+XiVoa_5Oej~EQjfFZetj9RlP z_J!Svm_G%+nT96QWNU{V=dnW_IXz-9<Sj+>V}eDQx;H*^delG1{CD5hpox7+A71*x zljHM~@OvYaC*((2wCFIIG6z}@9naJeel%5ylxHN=NcVQ`@;p;t3Z_$I0exu>84)}9 zaOVX|Dw+|vY!=<VIficdP#$e8ps+6>b=yYPXfrE!)9l&~;f1Lq2yzubpTo5SJNWd6 zBq>c=FFnKm%iW|74q-q$HI8b5I|tVC!TuC<fYP-O<7R}?tF0P)eF3*pj<Id&0WKP) zT`)^yuMY~bB|#r7U{ZTE4qZQB-M9kIEq<Hz&1SOZnajL8|8QmctU^76*VhJcarz1l zwVuxEQI}bHGk|fAxua4F7}JiibM*nv-E&gpE$KRW5-)ak#X%>MmsFL8tq@x>^rOWL zi?rbwi=r8ij2X|Qo<6uM;Z9y6vAcJ$H7?gGT>(&e({J*4{-=vOYL!SydI41AaKm)@ zerZ=5_3<a+(P^xh+nuH=XuqX9vcw&{vf?DgDqn(M9>EYlAKaV;97;2Y-?NrgM>8=B z1DLdP3_TnKWS^`-b2pBSuYN&{Ogg#{Iy00(E!D{M1*C`VVAW5i`F5Jc+BbFVcu`7U zu9u|xX0(4Ql&1&!;pJ)?Z}e_fZP1b-2j%SyvXub@xGRY<(LttaLx)y5WTZ*nyHQq3 zaV=-gC>Jrx%x5kM_AT+!gfO;UA_u<6GkXtBgL%R~nFDJinb0?Di&t?5Q3Zfq)oo&A zBykhF^Qb|RPqAAF<D5>ga$g#{hQ@6z$d}Tg3F;#0*p785v2WIf&LczVnSFxQX7(#A z(ZDs}8QyqdAYEJqbZIf{S+kX&v-CF6;Kn1*^TE7<v{eXn-O!mAVpcL`lld%hnOIt9 zXTDUfqueAfI-k1Fn!aArHF>Kb#*Pf3Uwda1g~^=TvXRwi>mF6Hh1W`hF9V)(=JFaX zxu$nF?eB+E>}SN(7@wZZLvh@Cw<q0<=ZKN%$+=yCi=Pk8e#oo*Z6mLiIAtCsqte?{ z((JKNCWi*&*IcsM`Q>U<vC>t!Ljb+orV_EJ=J<_8F&w!V$`nmgzB-VHT&Q19?}@+6 zsHW|RnY=tI08hsfvJ=ACx~3{%U`b~yR5{$tb*7tNGe|Yj+0dBQK5B9==2m56Sg~WE zq*br+jC-y-9i72Ykiq2xyV-m&i9#FadOtAcA7kZK5glNRSj%eJZ(kI`wg7{A1XqTH z;c##wT{B%cHDU#&1CPU=IGV;zB{*XRkpuUl*&YEvDa#o2;Y5ziZNejKq=jcC+KeH! z;1fD;iAJq&!j0f%+;}DnmoE>}<W4`rXZpeq6VY7LVRQ)Kv{x|-z@RLKv?$0m<0N{$ z1daC6InjK2siPQzws#sWH&r<@^7L?MJe>HZdn(UEm;3aC+hMdVF)b=5&4hyGbY2~Y zlg^iuBj=IyypGOa9>m@V6)NDyCORHVpmDK^a=#^<8#0WNjeBSeQ057vN5jFTXnxGb zK^DsK*%LS$Kc}V>j_G|b&x7LC_^*q=soaAszh_Bl3S@z@#cVE&GQ!sr(PZh6HJwV# zgvDreGtpcVxvN`&=2PieGJ_-ekFDT}?`}G0i!{9(PuhgR+>s~I#2{Ti+07TOtgEy0 zXv{nX&3bZ6y^nUqU{}!tS^+MBl!d2bZv@dh5V8-^y!;NW4~!+Fa0_X|J9Pp-_fTr5 zgXpDnxp@u8GB2W@dXMyh(X<LnFnhlx8BqclRM2-K#H=Ua^F*9gQ;D2aMORCFsXbpO z{Wy+1*BZW>i6%?LUNMn~SwRr?9$l`P<jEnBgfV`Qu#~|4Nhlrw@70ZF6aHKi*gFHw zjcgP$Urr5QXqFs0brJz*?~?FnAQg$xD2!lN7QnTDBG{h@SeFj~gdtoX8HV%TH}K69 zk-IM;`tP9>C2gqV_^2yF2p{tl#4ILo_cavC0JMF3a$5~e@*T<QyM&64VR-%TJX#br zq1bmG3FF@2*2WKMRSbeb1;JC`@FxUrOQKOxPma%;$AyW>a73bsqb`(V^UdpnIh~dn zRAj3XY5db>9?8tc!O)M$DN~8}JB8-5Xxo@OMd7()0j={Lx$7~Q3*IhpCEYgqS%W2> z8xPR$gG?gcoC13#2M<8)@Df)C<l(+8ls5S)?zRl%qQl)fk2Yt+WClmB4p;~-o9X;{ z1dgH`r=D0w(&&5wzlpYq=Ys1zE)K|~^{%nBz9S%OwUC(52^6j0fRjO>u=^4U{o`@n zwHWVQkUR7vdfZgA(^u%-hzuDA8SfCd=Nf|Ci)h~#*z2XS#t)hY_RHzIDGmqGjmra< zamQ;f?Y}upBO??WRM34fNoCP^ezgMkLeVPEt<JH5b13H&q=b^)sR`{)OG2qq_lIWZ zX?wL8nZZWc@BIe4<DbxVTLO*B0*IWvfXiJEqd8mi8)c5K(m*^BL*9a0JLt3~f<_{e zJdNuBd#9keSuEMASKmULGY3s>!)!_=Tqkh)nRGb(Dw-R2tjd(KqJBLpy<*|JZzFU~ z19^FVM^X>2WzLB-isWFgna)3kWUy)B>zprC(lmG$@5~#`tyjO{nxNtDGyKS1GM5Rd zr8qS8rAzxN$3xJ&(`P~eUw^oS&FQ7sxeVczrL%ZBb0KR}^(fRsc;)SZ@Wm2d)#ie; zhR_AGSZG{gI?F9RqyK9o_+jNL-bpM(-efql|1*ZC4!y^>rH$!0Jrv)QOPTqvOpNv| z@#^JDxgJnRDZ}-R{fY&Lt3t>mYT;|-zP6GH=jSs&TuN^hQe%jHeJBH*53^IsUdApc zh|ZUfvfd<GMolPF!q)Qd*%!!@Ip8^A0Sn%^!@T#S$dftH>g74SB-_EiUpq^-t}&i7 z7x4C!+syp@B6>v$De-Z{W?9=#R?>3ZJm$8K;j?+Gh%Xdq?mv*H+c*QcR_Uq`The9m z971nyW!ZEssTE3GeaA3kk!$4}?w5AeAve^|ANhsPnLYCv<}Y(*|I1$xX9vgtm4JO} zB-{3^B`K#Ab-Ndt|F1C&3SYrNF`SLhXOO*R3@-m%#D;w7HwvRS!xxRA<M+#X{a7Y? z!IzOsrt?PrLKdGcM7$HvnbVL}fz`ZWCCME7bO$R^3&B~#bMK8|{G)L!y{tzkJIQxz zyEA{$V%|C)#?Nsg-v1Lqj}u#Y?}lmo=AIc8Oi*4TYqQ|q)~me9aOQn3)iID4Ca`VM zDt^j0KO(o$19>EB3m==rLRoN|Tt`1zH~`i3Tvl8_j!unpQ=kyq_VmMeDUp^lXY+zz z8(OLbO7jwk*s_&9iI!5#Ez6gznG&PV(=1stffj0kio#Sb9oWJ8A8VeCuLypNucu4F zb6wJIK6>XMzf`lc)@UG?`_bq59Cogn%ZdyEum73F+Y82Ud&d8A!3G+rl6SIbS`ITd zdvkj7I*Y+2b2Ml%H~^Q+Tex6n{#go|VNj~^8#R!d8<sOGE(gbe@ywn*i%D-UVq>Ol z^Q;bI;82E&F|3T&gCOaUhnq9`$La<g?NX9SX*3iMXNW0;{M}pme#vw`c&{@*?2RPF zWhl>%%3;sDQI!D)`wruIdy*@sKAF$b#6lE}JqemRhp{HUm3p+nt2l%3a;TmrV3d_| z?PdW^KJKW<LuW}(P5dyn3FhyecJulCwOlT1L*F-NF?aH9UR!mJ5-jU%g))~@8^h@N z_5wcY@H5{ZPNulu7+z3>@!3I%7Pi<ib+_rvpCE8#*<3zM5fMBCcxtdajf_cT**e#T zh)uO;6q$G|(-%??yZ@`OP26>d=<wwR0<w##kf+l(HU-ozsJNeVFvW-IcrY4!BN!BS z@cVfmG#^a7GsxtPK&68s9mqsvWpQXOn;bf2Hkzmpt9ENlaJbu(lOvkI&j-vFDXBci zeR@lcbKIr&(GcGfI(q=p;y6mv0^+1P0;=XA;1WfLgK?5mEhI7EyKT^HH1RD=&(1rD z=3*R9r6NXoG0iR}fZDSvsw&q()O%=Bq%j+c5~0WigG=47qpEobG(Ap-{Sl}|sF0`Q zdSwNg%OXmh2PgXlK=f)f*~K6eG3Ko!;D`)*_o~AO2m7g9>61*$eMclZXB+}CkSnHw zNDgH^5g$!Mo=`WGtCOFBUwp{+c9j114us^r;Lwvawd5$A=;8^NVr|=*l8HE9--71) zHS9#tE3OfIHVd3BR7<xYBb9WGUVuiMfP-E{mVF%Zs_1H!FV$dl^M;~mx|+@<i{)XE z+7#@wu)F718XV#L5;Sp1RROAB!Fz??jqt&N5VHo&4e5G?A%#b8)o(`JVxyr=KXObV zLBV+d7-Q*pvjOtqa2ffxYw$JgPCF$@dR&JtMu9BNFvwd^VB9rn&SC<ZqZ?>n0P5oY zB=@-s`}WYhMB<UtrPXk=2kBj^@%763N}83a6W}IrZb_vM>viV!p+23~tJ2Y&*@s_7 zHVPx?IE6!s08L!1j@hBCr!?lh8*ncaF(~e!&e((IWI}`Wt6nrf->W7o?aDirNOI(u z9f9UX&1g$~HcVaIpX|Ui+<ugH^DC6u3_N%MJO`6?@0AvKuGD!DImjDMt*3PXAQMsj zvI}&*x!g`bUD%6@gN*R=dc5;Qkcr3(lc2<Wz(uZi1T}EC7=;lG71z*Qibib&q0EE3 z?R0QH0hMX2-QyBL?SlQ?YLjw^rTwlgxEG4nd0zRO`sditIp|gC1Zh*CV=r_jzTfT~ z2q}kYAvQqvudPO-mFB8bCDQx`HOFj$uYeRpE!aZfk5X^}qd-pA;c#OMnw!$iW%_M2 zO=t-LUiW2F0B|gZy~`?P&YDbF(xV3fxlzrXz03JeWLjkgLBQYJaAV7E&KCmcDLTBD z!^WNr^9Ff^8b_5#eyPOI(!3<1wP}?LGNVl7moL{=79uOpKg6aefv&^70ca93kbn!@ zS)-M9q;v&ZcC3%XVb}<|msdUG>ZawD#o-j0iCigmrnMW$D%99F0)24_IzTMT<jS!N z+)!8_`~5&~OyKxgS9<nsDvd?o4By9HNj`G6(y=mT9_8~*7s!=Mi_FX|VVv*Smp*C` z=+4NX3=XV6OQv2*p}w{07*~7rCCDKCo%Ge`Y>l;iURPxd;;Dfp99y}E^F>m6c=p8u ztUH)u6J5(Y3}tMyIJSL$FKu2=VPY~__p&k`5bZ4Sr(P6a;O7Hcl5!-O(O-%|TkJ|} z3riL;U?@+O{KOYWq}@}4n8f$rrQ$ujn-s{s70wrH!mS2IDwMfgJaCAZ)It;8;)uB_ z(Acx;tbXP%$2f6Yz}-8Tr(c`I=;j%OYg6kzmu_q}fQi%Ekg{QKjY5`&I|q3GxyigV zYYEFvs2R3kI#0ON{k=eUhW8OUxv%OBy`d<E!@v0O)ayg&*jNcDaq-eH{GVfZ+*w4_ zNsg(jn={S32H~F&#+tdWGj-B@J_!>DdUFncvylF6O}>P<FxKqY%BOQ*W5UE&n7by1 z;t_NB*N~Pqo}-9d#@I2hFy*aP>@6M0YYPY0=wM-u2F8kH!an$dLusYR^o88~Vh3S# z=ZTI=n`rQB;Lv>%^B+rP+a}Ak3*`C|lD02r{n<>)WqR^1Y~_nH&U72%W%E2M>7{Q* z;0Qm;4*Xmxt1^Rtqn*fIvF<n1C>JTx2{bk7lTnw-nXqK?o3x?p6XTinf**FVF`PFA zL*<6Xba=Kq?AcgpPb&)3xLB<&ke$*I_1zMR%+=P&5fKDa2BZyoYREjshNXwNT&M?K z3MW_p%+(%`6RfbVvjC*W@nc*8_N@Zw`@(cy4TjVs3EVIRFl@17eoy;xXX{4xrj!DD z#I&<~vpJj_iU!Q}PYT;I7%GZuIFoV!0jk$(u^D=?#&7hpw8}+zX>Jtljt%Degw1Hv z<KfCdx}Hm@-;p&6+zuWGceW9D)BJ+b-r*%^7e$8+HJxdryqEz|@r1uHn3C`<G#7h= z*JV5oNQ<|-Ej=N3SB(xBI%N`EZwc-KWJ>9<MIOVs+@%+^_5_6h%2PE5P*KY?h~~cn zcUyYGon2--ZrBxgL)$DkS<Uf~i8N16fquS}5P{RZ`Ihw~d|C%MFsE|STIQ6%qo-wD z?Boa662M~s+&N5VGe>eNl-cywW)amp0AqXtC;i>vm*ptMPss1!i2aEG=#YxTcJpcV z=Ah8Kk>NL*>;7G!xeM4if~Bk<3o^pJ_)>YT6?t{K+QJtT3^}o2-;Z-`kE6MM2Zdt@ zcqAh~Qca%hQgHdDW?<{r@ZPS-8$9wL&i2{@rN%>$wu~Eoj<kr^kr)&JNsDnZ+9n@O z0A#w#H0K(_to66dsN%9~3rI~gdz44!;tdrkJW?$rsu!|&G^Ln}J|18xR;sTxfZF<C zMW+=qUru)!f!@y-TpEGB3Zku#S>Cu~oiX2oE%bA)`!n;fQQz;OJZBfAFXZZsK)4<Y z=MEBhJ-x;p>a$@o7jKaJl09})rCMOL14Syg)Zhyid2UzW4Q`ImcOBZk)h^l#-~@7K zKai#1eap5C4$=M^nnST@pIwhOARbbV)BfxcnwEghAqAgHkgVxN+4Tq<D?B(F><5{L zYGxIs$JROKRv*u+2vPqW8#)I7^`!{-TR)PV4-$CG7j0)1m>g)EWxrN7q5ySjJJiQl zKnhk}iLJ_3F{-%e;R4=op`B9wJ^?aauq$fOV4DI!aRUB%RkX1tQymQT>(PUNs7&Sj znJVX2VQ549=4v{<`T;Aeu~6YCkk(9zE;WYl_6PIM#~%}PF@X!w$2bt4Qn_0O5-F=A zFF6ON$6aY$k%ottD_JL#Yb@Y}q(tJH4aB=KoG&*2jC-gMGP$%ZfxpfAm~|r)i9Hp` z(ZgD<mRcV>X$?<VHOfj!Je-IyK8UtI93;c8JHf3IITlk|xm_gJ$tu&T0VvHO^{y*k z%|R5~(_ZkQ+wzZi@}6lj3fL)9Nm2tg7IGBb+v8i3%=VkqNDl{7HGC^{J=d-cu4zAU zwjT5NplD}_KbBzc){Xung9+*=?Yi4Ll@Mj&ewSA6*tPa!-l``m|7Q>cjQN*w*F#YQ zjt3a+J?R=Ulp!5`Xzi*-trjS{Bwdr+YnZ%b1a=#j@cP+8WJU+vdyirAn+s^OVj=6U z)TE2iS;P2$h0tQ>Qr^2{Zqj<na#J|BeL1U|f6T0rUi|cBts}?-htlunPt3nXrHoZ5 zb2+nY6^&+$VaCUyG@^vO)I=gqCsWWtB)tF-KxSXUh0V+P?6hfI@<OghY-CH%kC`;6 z1>b&U=1eG-<qJTce}R~jRe$GSImCv|etiC7A37YYnc-rTm2x-zEc=(0V7F#E&-;hh zD&kl_4U94oeNnY>*{70nT}@vP2P!VxKm#*lw*@NS7g;dXmCOHL%26BY{#M+r{(aMv zmXbr`POhl9R!s-3^V-;QAfwwRa$spy%Dz!9Qd}<3ND!#~VUrmIoK&Kz(}t4fq4W4> z`$+!t`XPQXfYQaE;K}1zGS`8H??;hW(gvTl1tf2%zl~P8zL=6mYMjhCn4+tIC{|@x zS<_RwDAsV^6*;L~(*@Jo&AQH(&=S8Tb9nK}M&6z;9h-1!H-Kkm&f|U8<;*>hhROyz z=F>KZ)XU}rwhfu<pAo-%^HhcC2!amu(r$=b+-zE0^d-@!9|c|KaZVFX`%N3n)>cp( zMxYJO!(m&rS*N1%9CySFvyQtl>o~~9a=~poy%qf+Z5J)7zsFMa#3)eE?GuuM^B{aX z{)ZB1Q6i;>{$5b%-G~@H5w5QwuzEFenMjMXr?}W}Fa@Nb4fKY~%j*r?*j+ybp}o+T z0zPSY9KS>R{B**H1|YlG8%m>j#Kw9dLYWsQpL-7)M?u7Ly56{kQ}d;q7~Ft)Rg)2` zXdquo6np8rJ%AIFR-?Uh7s^v$|FXI%`@iBHwIS21z)pk)6m!?B(g`|~MNCj2g7z-A z0`lPN|6<FT2T{T1K43|w?JEWmG3_O|y^E$tHqk!2m}>*JQ`sr(cN+7rfhZ)Q**^ij zQy_7j`@x_U#NJ*(*YBlFDr+{3ifB4){N(;y0o$d)H!~}bY}9~K1r=h$g2=a5(CgD( zWP0`FTBm2ZI(aaBJs(Y`NXy8jBzrF*e(D%Wm(#b=DJ;(7<E--B8t!8brRpfSG?vni zZm90`2j??%xba{+FIeSkEy(T#C!%JfIbGK{$@KjiY*XrmC7JpiRt$PY28S0d;wy8l ziDi1ycfZGsAH4|(45H7Iv-ogCBrE3aA+et434(yUT(t50wsjOIe8K!_dwJxs?)2;% z!kZ%o^5cSK?7wMc?Dq+~bCDc<C6uAA2U*{}JDtw&XPt#yRGC3Qp)&2L%0ONm!}?eL zS2_~#J3&wh$aR*5^+D0DKK|6#V$#0D%Pg4ZL*BQ$+4fBW=@~vev3Wc#th`4VzlDFS zI9GSKxdFiixxI#$R*u0hE{yG)c5~@^32v{i<TcZE$B`rGk+6%IXC;TlC@baGsV`XC z_+2)R?8fF5r>oANJ9J~r!ZG;%xSV&xGcE3d8)c<jPt3u!mQ$+Kc`|U6E7!JY>$C?n zh)Ep%WD!TJC_u9@i+M73I~VN0KncaU(Acdp)pwMPvQpBsOHem)#%$54`$cLlSx!xG zsmDfD$Wl3%rRFgY2e@2R=Xz}#n1jqHAh!e2w3}~@2KNIypJ$ji+lSPTm-5Ap`#U%9 zXb_OqqhIy$8kDpS38wj}&p1)-wFY@1>DdLi__c(nnsm{(Zjblf9DXPOyYlWlIZEW% zltYzmHTC%yh<a}a?ps3{(JG4nO%+h8EN6E(q^EMtF$f<!xKM2kC^I_X)!LcdOBv|6 zKRuNh1oSGAyQcYB(pf{hk-XeAn$N#XstgboT@Po=M{W6V$xym~_XQViuw#~B>s<e= z_}#lmC>=V3V>%wy?2NHI3ExW_2;R6DbiKLSuC9fa861fmIvOr)CZHZ?u)^ylu&ci| zL#bmdK5>npYamfQUEqAxj*&Vu4VnaSry7M+dS7Ul2^k{lJAowiQNrFOXf7n6{*?<m zb!Hkgulc@vD0fbQ8!f=IngeSTxb5Q&`AOVMqN(tj4Iano_*31YdF5q?Ah$C~KK;Nq z8MjOId(h>af-FDIYI;NADO!jiyKxF!`jHUe3s+B>J&s}yc8x}W_j%gxT!ZHNwfm}) zZcaw(LxcHZ6gbl(04^;daMLt2+df2-Y&kpQ*YaL;%!16OP%Cx5%!-4oz7zrO{m5@K z0LmihZ2D%~Dj&AODAVz1dOo!2Z1#A7F+T+q-uzN6#ZD=<;G$n9lwtq?5{F4dK~%RR z+`Rve57u;A@AWk3Hqmw8KHA@|d4tVkHk0OR3;m1=vCcx#VBhdLnuSb6c{dtO)Q1fG zY&UcmPLAnamTcI)IbAW6>SzmePHB))Yu?qLUz84l8#z_kxyTIGSIZUhbeiATLr~ak zJkPX&Zc?hIJ-wktB29PBM6+=wnjeoy>HijBiRZT9e&%3M+@ZfV5jytbrs;UZJ!ktt z$-cF3Q=Ku%i)o*o4?cco<@<hZN^Mw^DNB0v-#~>dgBuyHbn<nuc%Qx~g|p#1SvPwX z->8Ck(#QOLGNS{Jbap4>Mk?j<Qf?*}&?3OEMr=~_^`m=k1}P2c>Q#};FVTni@}q?; zjCZH+pcXcdy`d15iA2Vz=`_Tj$NISP%i$!8i%_whAKg?LBxHax_XgJ;+u-YJ;RiNA z$hb<9+J_FU>s~X;tkd;wb`H9h?lh|w#4@U?WcPv7&J2IdL1uK|k*9*N-?^OS`_Gb6 zV4H)Ne=CD>&yF@%%C8SX{}J@Pww-rBKg8J^g>`~pa!0jU$5GUY2!ep!y(650FQXQX zr_1S8yc?EggOj4f#mAX~f}9%n8Xq0WlXh`@A8)-SpS^b|uM8+)|IT|U{d!VjQ)${i zsK&7bxuG#_J=NSzu74NXl6=(%c}GuLW!@mQo;9Yj+?_{UL~h@%Z!YF(P~(mYA3C+m zAvMK(s!v@SGz>zE;k@!@ck)&(<?~<euMMKi=zvETS2C`p)-wk4^Hi#W7#3W>(eJO+ z`CZ=eM0DLBC&*ayIn76Qqg8w~XJuft6L3_Cl}8Kj!6+9g0|XTq$RRJ+nWk-PMuDnp zxuG<Hs2gnv8d9?br&1Nfpht6vjmf)jJ=L}Iql+$sYqxFC*+xp7%WGwWA!S9BBOs`3 zuw(L6Ze+OP-Nk&z4qN8>XT}2wFevmoaPp?0+S<loybFRG*PUuD<^&ItnoH;V1zArH zj~xsb_t8oRD)}I^eFl-|Bwd%;b%aKDp-4obcSGCzO|-t!%EnPX7QJsgJ}1pb8XfNT zBs!!C95Y{=L3)8m+t^rWI|V%Bc_g{Ya93m<fV}=(d9o*EGO1d7_^5G^yN}NI99^TT z(&<nd12{6WpY1z5MuCD3v(W}geM|MX_d-^Gu7nKYt^jh}xZ^zot-l+3RXY8SB|*?^ zw5=V%C?IP*k%U1;h&qMB2u|Wev`-mf@0Pli$}y!cpDKnyp>X>!p4BpM<c*&}J8BRm zCc~gtrK345!sFfH7b)mc=5PjX^&oe^UAUNC_XX7RJiQK#D#}eO4TWkLC!X-LOdAU_ zViPR!r54=*9=(wb{+|##YZKbB@1X73k34H$`LE!;PMt)r$b9HMmOMck6K*p}?rC|C zq*N6SS2}VjBoHoF1$k_d4{K2BJka)g6K#7(>3G1Ieb8b8u^L}=GBDWrqV4`F+Lln_ zcpSIWjbPLSZmXrU<VBrkK<hJjoVP3+mS9b%D-=3VG?MBmnJVVr_BRQZ4P$P5vJnh_ zm6WCeGJ_-K%}1l{+mmuT>-00~@}Ss*TWw6XsnIZwK0mlYJGw@>2xU&tyvm_BHlK*L zTL7g>0gM7=Exkd^Lan!M!%EdrG&<W9Mol22vGjY<Wi;CHZ<20<V=3BSqtB5P)4ZiI z$y7bjKDh#IM}aaS3NE)He@J(9GATpqM(>&6X@1hG5?{0fpW&)$e##0D(pmwxB_~>} zNQUAb<W1d;cJgwxBPXM6YuQt^$a5Re&^c7%<{_{jO;R5noUQ7<^B`p3rf*Yi$VA#k zMu7VSVgtOWkbzv`MP{cZXovaUw@s-HYcgd?k1AvqzWeuy3L%rEZ<BF<ZW1Frq-Chm z#h>7rZ!yDPiP2fZ^G|8;b~f>|bsO3`mT=P)i;@`y)E(R4B1j8w_kNR@+$ou#zL!4Y zIY0l*<?he&#$(M;0YZ~*jG5A%(t}|(?eHsgp7a_wgkCKjPyt4Jcf8!8EVI<=*lj_9 zDALTkWv%2asd~HEdpys#Od$Mh&Bb+v+7+)>()(0ue?n#k)9mnmV&tIL#jrodm4R;z zM_ThLaqt_!nD?hKST8w$zRyi#e4yo4eIjv$omBJ0tmo;`Oo`0sKoj2qOnJ&5l?`-t zI3LN8CXe%CkZED9@}}ooA@ngV!5#$dz%qX%QkGESSo7R=iA-|VL86D}gb)T*BZpBg zQd;JWd;2Q4NELsKy@p_3dfA_rN-!!L)B3UJdFLNPa5sS1Y5*_4I)DyV0;&p~h|x}M z+K5r&+$EH;0adzGayW+U;IX{=n5Su-r^Kb>Grayk&Yb;8s>7i$dh_Ih=?u8ImiKn1 z)NvLCy+6;sJB_~udP?y~MKjtDn$GOUGWhX_s&B8{&=@~cYs#}0#w<59#%J&}7QN}m z?T=RRL$&NyW5iy*Q;cNpD}8A1Aic|L*mS0}OyIll`U4D><jX<Vk{++T%*Y;|xT&RU ztsi@yx#L_(_~s-Taxi#2!`!!@p`TAP995un@}~35Nj$AT#{TpA2GBrFb2o|4Mte{E zXN_k-`cLe=ZaWQZh0tsO)7}Y2wst9>UTj!!!LEffD$_VT2Tf<{BMI#LInU;KLfzJs zHRg9|FQ26b@Z$U-1h^_ODjVa~cRK&*ox`_ZOBn!qV**EF+<EG?;RLu!I%;t8rqgR< zcq;1zN0LFWN<;fo4&Hwc;ZYfYlE#5AGi#u0<>q6BGM95(B9Z-V7Ow`i#K|Zfg&6ft z2pvvrC(M+2WKB;2jDlJ!!U@P*bmQ5XK{y`SPmIjE&I*Z<{HzXU`h;$HnEU~Ca}9r= ztD#BsQO?S2uw%+xE_|Ixqvxjcj9+8yj7scU`1APGA^7WTpX;9$4<zByaC0x@&Ln9@ z2wYi!CM-eP1wTC)@ul5p?{33?;~p9T$h{Gt+Kko#Fy_IP6?8r%oo_W7i^1txu8y55 zIdA$bIJug@EK>n7&)%TgjWWT5qtEq%s5fX<Pg}~o-V@>W=6Y*0+=H(05EKuGn>DLm zmp4kF&sQrrIcg&DGiICGRPM!hr_@2B#3h;@-}UCqsC8(|i$R}->|_{5A5WX<R^;9j z+|NKv5;}E~^u8x2a%sj)>3z3OAwMb|b}i3YN~a%ZaA}x{cDh73uu!USZxpyPU@$m3 z!kArXE8ma>-_1soF44g8@^Kjb44jCq;dI*B_W<uK%4Jpk?41&0A=DpIq?KBQG8@f> zY_#qP_*)68RexTIeizN77LxhG=VX?OP@G7cQ>RGPSa^U18L<Xi_)?wj3b%P^hnK^V z<xt@bt$m>LY_0|d;In>BWo?UwzQZa~7SsIvY_7iex%79zVLFDzbJ@54pBNN(=yxiG zh^b0k;%j~dEXs!sQ0QEseQzjTFU?W0m&dj!IXz+_=XyJWArEfs!z)p$U(!B&G1;=I zTzh$!luUT%6!NcEn{7R63zRx5It?gNHbcM+;$IpjrP${j#!Z_}w#kZF8*}Ru3rLsG zAm{nr<fwpxc!*q&!f2g-C5=zf?Ymx_9kCv5{~{<!z<d8@Ql7WH;#j$3B0Y|!aAxEd zv`@z4^4UV#>x#f<1_{BYE#s1S_-;E*Dy-WugW?XI55GgyfSIJd7($w=9PT7R%=*e! zn%1DtTtbJ#v$-;CJz6IflqbW5ZFEi)sZeIq=lkWH9Q6|CUYY_j5mI-<nTh7dqb!E< zF651P8m*HcwUkWTgnw){s`3CLUYH66yRZw-r`+8aTK0zL2BSSP2hC~o=}FdjZVe5c z!#$Kb#^QP2j<kRX{Htfz{aV>?z_+P3iiFMd+yv1h-XnI9qtu4=);_#`HU&WL!=}`R zHJP%iM`phJwLAAT6ooNsdDnS7li&WBPzR}E{KZ3i*&44$=2U{tGlZ${kEf{s^3n`0 z@7%~2)za#lbf3hM$DOeQ$};2lamiMGyvM7&Lwxdqz_bYqSTp%vJH=Hj-k(`-MgHnA z%1gK_^JDb<5xnFeAQMYSKf8lfM+-r2dF<A=cl2cK|C!|3b6K~ggv9^MW!X6?n4r8K zNu)TGQD;un352NZd>AqR1IDTaWcmVboY=_1?bp!B0a+<G)-Gr5l<|!JI0P4!h%O_M zsNFk=P=ZWU<K4MCfrWe7O8qGuMp-F0H!WrP_(_ai`WdeZBD!12MD5usIkZ;jsyCeF ztA9E3^0Ya8{4B`y1*GiT&A#SAHu2rotubr-F%-q{gEpAi|5?v->EH48+XuO}eK%KT z&SBNS5{mRC<R3l8p<hPeZhEF@pF-5$WCl%M$)@Rv?4GoOgCz0&l8vY*kKx@7uGotu z+_@UZ4?B;MAqSyJXL>xQ<BB32^GymRl$_kbX3ZoPEq|OMy-4xZNDiOKAjBk#;>|sL z@IeV<$Ias7SDaDFO#EBFl%3}!r&Rgmc*glSgU>wHJz1S+CB%RD8Xv`_awbyb>A%h4 z$r;W#Q9@pF9Q&7S<Y0A&rfD#vtF@-A4Vlq_cF#>`LVq9Ju1E6a+Z&0>s~POl%aho@ za4o{*P+nU*o<@k|r$n;nz1>7wFn^Zht4t^%>yk+Sr|0n0tIi0r5{hpm61#dSn=eQ- zkmbY>ks8XVnTwg=rbbbmLt6YXR{dLQA1jwzr-5FXO46wkMlJl9btYZ985hP!A0Dqf zE@BG}Y=O+^fZxP1^lB==KUT7%IxP%|?0Rt-`^?x;gQA3t=tRnfEMU#w)u?18<fg^( z?ZO>Iinh%Yq@Yyo)|Ayzq0A-mqvdRvI);hwhvF`X<fO&%<C2YpnU<mkc_CL<F6Xm} zp^STX1TEB33(B;FpZVy$ssg7aVQcx=Z9L;YdLMfulx9Y<>#GDNS1bByNZHAfRnPF! zxOuF6%^78W2EUxx%D;D9p-2u;YE@5lcjD3J4duBtYj{N|*^kQy*0S)&bjb$EE$b}$ z3w*m^E4m3G%>U1H90epBba*X`_Fa+esSS3l<m_7B`)WK>rhULjXOkT}yqm2`Tj%=c zg-p}4zZ3_3@*UQ++r`w+Et$VxhenQXarA{O{MT*yRf`Tg=LMX2_Hw<87j;Dl;jeYa zVcWubk5Al#s>GMbsc*osnU#+CUloqJP>#*@qV3ubYu1|h1K~l*h%Kny-~Jx#%lZ*9 zXG~?k_&*Ztn=T>Z$#A;vJaS*hP5!8`rqlo5&=4E;XMnot62hNO#(z^Sz4lp+Ht0Jv zJC6KrV>1h*KzhIR++qQm6Ze1Yr#Aj-d~GP2P5y{QH<vT(z<=McD)h|=dVeuPzIlyz z&;Ry4!2g?2>OATD*>pO7@HU@S3xFvena=9Tw^=%8kL6AYHbSNA#?xO8rS#Qhd~ag` z$ln@DohOffGK-F@|G~<%-+MGRqSf;(dqd=l*Z0`ma`U%_QQ4R_o{)8|u-;VrmOX-K zbu*5*jQdOH|MTOoLIWkv?Oai&WSR{yJj5Rd^?gGHVE|J$`4T_2q3uxrd#Kz8QtCu1 z0$yR|e<aVdEP5?(eU<XN4Xi$>N_;u-LTfm@)Vw2N6i5yp1{aoEU%(j!^giRj{xJRx z+)etkL0-{>i-U$k@`^ufaN)N`g(@EkfVSS~5>4Goi~^!t4<G@b`ZM@`7buMZL=5+U z*yz7haKWlh|9?Y6Y}lU!%KUs#dvM)Fpp&U<fkNiXsYeC4l4RxAzdh{aA>8VchQqc8 z7hL!&^3@i&hQ7msK2jeRK@hm}fD2~+86h_`#((x=rafZ*y8Y!HOk1t3*RgZx8$w9& z30B<VK3aL%4w+7b5_g7w@DYP#U^Jxi<2#>LWq|xnQ0SY{`JeNcVA`%!*p+bc0Tu21 zEg;v4lr{?H)iu&ir!w<rKK%Eg2ND!|P>|^hNwZi-T2JPgll;N<V18r#RcN56;CkjC zpeo-(m_vQvPyr2Nmxt0#0T>0;1qqz_1KGjK42ItVYKIwwKb=fx(=mhJ6RHwlA}20` zCh-uq<S(7Q;8+^Mv9~8c{$ASd+CqyzaOacXT1FI#?wlGj4%#%SYB87}jr)=9cozI| zWWvFD0mmo#!Y}LT`a{HDD!}j%{|{gk(0NYf+<-t(8zo&c<iq(b1fET@sZPjm0;51~ z&-EntE{CJ<p*jBm0}K!Gn?j*)#-s1dqSv>JSohyc%=}HE)Oj-G;{}AO68YhiReX1| zR!X|pi+ud|R91c%UZ?8+Lp;PoJj6ph#BYV)G{Eo>5AhHW@emL35D)PX5AhHW@emL3 c5PwblAMNkJQ?i(IH~;_u07*qoM6N<$f|cgKV*mgE literal 0 HcmV?d00001 -- GitLab