From 07c87a1c8494c7adc0a459af4669f36ad5e0d2f1 Mon Sep 17 00:00:00 2001 From: ex0dus-0x <17283637+ex0dus-0x@users.noreply.github.com> Date: Sat, 8 Jan 2022 15:50:44 -0500 Subject: [PATCH] Cleanup and prepare for v1.0 release --- README.md | 21 +++++++++++++++++++-- analyzer/repo_analysis.py | 13 +++++++------ infrastructure.png | Bin 0 -> 41639 bytes 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 infrastructure.png diff --git a/README.md b/README.md index b45f7d3..dc9dc9e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ In the past, __Fork Sentry__ has already found and taken down instances of: (TODO: include writeups, and links to paper releases) -## Actions Usage +## Usage __Fork Sentry__ operates out of a seperate cloud infrastructure, which you can self-host with our open-sourced code, or reach out for an API token (WIP) to the existing one. This way we're able to scale analysis to large volumes of forks, while outsourcing scheduling to Action's CI/CD runner. @@ -44,6 +44,10 @@ jobs: ## Architecture +![infrastructure](infrastructure.png) + +For more information about self-hosting, check out the spec here. + ### Dispatcher The Golang dispatcher ingests authenticated requests for analysis of a target parent repository. The request can @@ -53,10 +57,23 @@ be invoked adhoc similarly like so: $ curl -X POST -d '{"owner":"OWNER", "name": "NAME", "github_token": "ghp_TOKEN", "api_token": "API_TOKEN"}' -H 'Content-Type: application/json' https://endpoint.example/dispatch ``` -or preferably through the Actions runner itself, which can be put on a schedule. The __dispatcher__ extracts all forks and enqueues them for the analyzer. +or preferably through the Actions runner itself, which can be put on a schedule. The __dispatcher__ extracts all forks and publishes each for analyzers to subscribe and +consume. ### Analyzer +For an individual fork, we check the following: + +* Name typosquatting +* Known malware signatures +* Suspicious capabilities + +Previously detected samples are also checked using their _locality-sensitive hashes_ against a database with [this technique](https://www.virusbulletin.com/virusbulletin/2015/11/optimizing-ssdeep-use-scale). + +### Alert Function + +Potentially malicious forks are written back to the issue tracker in this step. + ## License Fork Sentry is release under a Apache License 2.0 License diff --git a/analyzer/repo_analysis.py b/analyzer/repo_analysis.py index 7040c84..edc1392 100644 --- a/analyzer/repo_analysis.py +++ b/analyzer/repo_analysis.py @@ -56,7 +56,10 @@ class RepoAnalysis: """ - Implements an interface for conducting fork integrity analysis across a single repository. + Implements an interface for conducting fork integrity analysis across a single fork repository. + + During analysis, recovers all interesting filetypes from both repository tree and branches, and + applies malware detection techniques. """ def __init__( @@ -67,9 +70,9 @@ def __init__( vt_token: t.Optional[str] = None, ): self.gh = Github(token) + self.token = token # fork attributes - self.token = token self.repo = self.gh.get_repo(repo_name) self.uuid = "".join( random.choice(string.ascii_uppercase + string.digits) for _ in range(6) @@ -143,7 +146,7 @@ def _analyze_artifact(self, path) -> t.Optional[str]: # trigger ClamAV scan first results = scanner.instream(iobuf) for path, tags in results.items(): - found, name = tags[0], tags[1] + found, name = tags[0], tags[1] if found == "FOUND": iocs += [f"clamav:{name}"] @@ -174,11 +177,9 @@ def _detect_sims(self, path: str): fhash = ssdeep.hash(fd.read()) # recover attributes from fuzzy hash - chunksize, chunk, double_chunk = fhash.split(':') + chunksize, chunk, double_chunk = fhash.split(":") chunksize = int(chunksize) - - def detect_suspicious(self): """ Analyze an individual fork repository and detect suspicious artifacts and releases. diff --git a/infrastructure.png b/infrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..34a63e77f3f139f7940f043e1c7de6dd93e5cfe0 GIT binary patch literal 41639 zcmeFY1zX(Q^FO?cZGqy&9a>6};_ehJR@}X~%i``%DOR9JahKxmP~6?!WpP;KS?=%e z1^i#Ylj|aEa*~|M%$%9eNW#C#OQN9=p#T5?G-)X@B>(^s0sz1*yn&qnuqLzb!2Tha ziO7in09CQ5kA{e_V+vy_B{=}Vg9ZTb3jzQhV5j`{0RS*F0B~pk0Py|-0PyX9H!1SN z2H=cjB*g$Pp|Qj5up?x9DNQE;fFSMl4=4=|On{vPIZMllgLZ)+JY_em;QOut(G=olZ#x4n^Lk`3I_33jA+_j zi~Aw=grML4or}#Y%@<|{)?uNP+jOHeHQ&@M{!-2@d7Vqcv4c-(-V~UxG_W5aqisc} za_BomC1;ON#J2mA3?%t}_{ne-dhPK@DI>X8z|eX%3vC%addgD_!W2yiV%qZr!G3Iq ziFr{5(c)r5f-$pIqhX^oFUEDkw#t@fAMuRL^*0@>*F z)|TA2OQo*Du|{>WDR=PzlIrh&1r*4UnWndO2ZKw=vyQY3Ifu*REMN^3m$`A|xm(c(zyu zrANNqeWOpPr5pYD%y=tes=$+6+k(nD3*Rd#`sT@-U9zUy)#VF)pDZqp4{;EBr9 z%UC&KTUxgn62XcCg$9g^vYqt3&X|+_yY_+-M;3l3IxMkY z^ak@SZ8JlbXfzjDw#XVuXZ(ImI~KZarQZm5PKn)wU)I{x8*e%ekcxTskc%c_!1Q>5 z<5?{Aaz&RZqLEFdLstk>$$19(;^NJG4xQiNtYBiQ8HXCCE;*1LWE_XKa@Ie;wFWHTe?pnU2Z3FdN_ z1cpH=i($vSDq5BRx8aL;)ep`#%<4*<1bl1jvM+qPXqb@FNXdbI4wAHf(;9lBIHc0r zBV3BoEY zlaz^>cMi4;)d#KX7P%;l)?1o|PF0iH6=93B_x)-@Z3W0xr0ceup>$gFdb=R}{VfH3 zc04D3CDSR@`J!(Jrnf`)&-h`^Fmpp?qgMf`A98tHY;902;Wo8DC0}#M7s#zA`{31j z?g0oxfQwN0gHbAB)NbhvoH6#G5Pr{3>2wLjtJJ2(lG~tI<^T&F%1+mI@_1hKjG$xoV|;WD>~xvTKAen`YkXIxtuMbN4=sbQQ4;Z`TSlO8V_5nu|4TDyJ%` zmg>B((e)uK;RTNd($8)SscEBaw@FB;Tpb0N;d|Fdcpb>H(q$?P0E~J_40cQwt#X|$ zN8kd{#zjz(4A2O=ia|rekBz`Ii*`h#_hvoguOQkTul@B@RrqM$-807M^H0_|zR6f7 zvBh@-sT=)Sd4&xJN+&28whkD&7YcOc}x>N zg|L70XbdFx48;w*JL3H~+z@i0!=}Dw5wQJ)FD|}#Cz^ZmXImzo9dTbKXtgTo;l>}Z zI@c#?;IYldXMo&5O;TS0DDfyOTL$JbwB(UicA}ikIMlia+_LuSxw0u!%K2_JhJKwSUS`qQ8>B`M$L)5N7@5y z@flzmjTX}xmq|QeB@<|?E@MYIHSuOQz?8uVj|{Gs4bK)hE9WuTg0_fF=|EcP?yE89 zQz$~3sCF)XEooK!JATeQ7#@daz6@bKuEu2uuJc<1>3&2=iRD~>yQXb79Eo&l7502C zm```RCboJU5}U1ImZLJ`=taAEN^l zoIsdmw|;oQexmgQ>5^Msz>y#|@zkUVhsy+_b5H##(!4U81B-eni&^OR!*|I{(Yu}) zLA0MYq`{Eu*w4y_vdCXjki*adM%;d@4Cuw8>+O#AY!$A$t~f@rto)*HbGF80Fcsjf zOSC6N`02+gcNK~l>IY0l<<*WBxs+D zVk{Ax_?S+8*LQ1*Dn;YbyXQzMDlGjlxH(oi0WV6{*WaReyjcO)l~+lTr9XVUC{Y$n zaPRyPyy8e55tA^3t;3b;2@;Qje+eASV7-EnR$kFJigYkeit8%=;7&BQFl0W3FW-zGCs9K-8f0vNP7s*nQ8CV z78=;KAQt@x*YntlC+uZ*+a?Qn8C%vH7&TyLy)IMZYPb$Cuf+oRj^{>p_T& zpO*;QyT5P#wLUY0{$i=qYApj=1EUU${&Z=4pX2{1q*(1DTp=SRAtjAAf!suc$Vo`# z5~ur_NT^SqR<$o%aYVy59WC+GKfN3#gy{=QbnV=)B2tP~@zi=L4qkrkVIrV5YfnGZ z#T0$_CoaoTIih-yyFS<`xAo=u`hFFeQVik_Rn1Uf*_J7fdFAZE%qIfsPSyV&f<@%M zlwnyB^FI_gSwj7v0DL-`2ZP^Gig`>HmQy$K28%j^gD?r>bVw2DO zRCL(+BHC|og-buh?-DluzI-qNsG%~*KA|YY;rxU>>(^}mKGx^Q5Ph^^OOBnj^#>CT z##|x`F~e7!^XcxczWw3aSJtA_touT|{kD1Su2}4OlLD*VKuVXCZL$wim9Dq!TX3XBeg6CmW9sp8UIi`dr$7~FkVZ-1G7{K> zy57$%t25~(hTJNVXdDj|07oWHwN=09nv_} z_RGwU4nU=4c|`oP$@;0CJHXgkT4 z8I3#J=s}YFm)AW(LYFlB?p4)#NHlB0RP9Z;AMbOa75hpVHiJi(`tYDNFtXZ%U5c3$zleW-oq@BK65T?5-J=e z^@2CA(@{~sDs)5AJVo6>e&{DQLawQ>LsOYHSDo+jR6c)xz?hA?$cJBKSW8Gyn&aA} zdAR=V0gHF5zgMx%5GykuyvQR6 zK7wKEY|4#p(`}n`loW&ArlOzqi}6#jjaxIRfnB25<0ecm5Wm1!q=PD6I<_=o>RBCM zXFhrL3qnDZW}0%&j+3K=-k6me_bT0QQ8hxo+-p#Z-Nr2jHePF==^0}h9aY4QV!T!p zlW6FBO4pIWQQB{+xbh5`mPN(d3qGt!H7db;E2_@wwc|>GTBLZG`)@RSuH43tY+1#v*adiQCqoP3`kri> z^^v}S}6`lD?! z9KHQ7KNGJc_WA+Sm#^H*DTCn43i-|-ER|yD8iz;5_+vE| z6&y7A+))(FD~UB8GRy}P5z=F+>4y^@E|*emu|?Z?EJ#T;5Y%9pevzrJiSMkMaxL`3d-VbWn4r7Qx!7_9b6g{9YPue*$l*;%k-SR6vHsY68ejgr&HJb7sJ7pnJ&7KI%6b+NvTLFh| z`Z(lQgdl`WsYHmJU4vfa2~q{+qsbDNt<_x=#s=ZmytR?4+WDST#mRY)A;Ce__!GXT zjJ_gev*o&9#QopjGEnx^3|r_jfv;1#eNG2&Az?LAJxuRli!DOt_!wgBro;_o*iDV{ zSAAVR?-Dza?Ab?s1dL|?yOpH+j_&)9%WRmFdesOqMV4l3>~qvFM2)oIc+QFSP5zsSgQ--}c_YQL6V-fWtIs6cM%3)b zh}i$T9^d-Tg@|3GN?SG$H&HaqGq}SmcO8y@{_?KN$4gi6!yWHATYGIzN%tSH@Gxo31KbkCbr%{YRt$5nudd3m2PqS4r4ysr zCVC8lGC%mKUXz=wiu2P=GHF~jfIGHjl z5_t#t$Sq}J9sA+otAMFb#>hu+1;em63;@-O+GxvBoGy#AGbO2h+T4H+37q*P2n~V< zF%b2)zsVyvQvR$On*hHx@EyI`g|}GV$%(E)KG8)UIZTZ&k#~fzhV$B_70eek(@`NH zE_jtfSkfWcvxDgVZC!Dk-0gBz7s3_mIGRDYSJD|Z_NSj=`m``@+Wsp0#ozX9`v8Jd zg^cG%ypL#O_1(I-Z0m#E<<^1$r6|Q(D3vhGPsG2j2+do`*pJ;;Nhnl|ht| z8^g0b<~oBtmeCp(Vu}?z?HzA5o7+l&|g*1~bC9hIt@wybl;z3<@AD|_D;yg!$^PBYc`;8<{db3YU6SJg&r(s5BIB`js z6QlVB7vA4Le2&&he~m26f<@?x{%;l2$XY0Fxt8+b0?ZH$Fwn*$wFC9GsI>bd)7ZUm z!Ly412&(-Oyau%!=d>t3ILo}RwxJJB13t;hT6?(2SV_9<4)$)pv~d9ptxrj;TgtxM z$F^z}wd?TbC)!#uPxGDi#j~Z%t>cox3!0F0TmgJCEn~RUIg&H)1|`EW6NX*mvzsek zwYhl!v?|BDwU$0vhRf$aHMjAi+|BW-tImtoZ^$M8Ut06=6{L!W$-er+SHCm59Kk?5 zIv2t;?1M{1Y7yoC;q|VfXJzX9`Qv{@IriRd7<#e_qsw?vSg&Z3?U)p9mN$v<-+`&* zXM|X|NbkstC%A;4arGb6CBr5;$BiC!eU{Fc2ITHY+a8(r9-^DecJ2keSOi|fO$Bmt zehwGk`?+LIMy^p+C*N%x0mlucm-#JKVkH}g2%UHs!jKsC;ah8_*iEK?SzHk^?D`J` z(=rUpr}^HY5Vb$YZb&cLds`W{VYEy~A>hJrJLjv6JEZRPYn7*D^}YCL=lo~jerPoi zv;`=dov@(^5~P~Os1DX!HwxHM2)|;Px2S_dR`qXvA4*W$QwVNDi zq3=t|^>3nyx2}oe#&4UezRDcs>*-mk{Axu~$pUM${HS=8sua zyY^ATi_ZX5@o zx@eZl{|gQfw`}};M{f1PR9?*@Ec4AW(Sg|^wC%~&L-Io>{S_-_fBOwISdY*#)_(tg zW|tPzj@Val@YW~n-G2~Jc`r1oz0>O~?4Mxxe+Wd(@QwTfJxcoa;X6v0&IB92j|&${ za3sLG|L=|7>Jl{L58jrCmB#qQ_OynWUfF5Zw5+UpQHJFH^IE|68oH7<>8Q;XkdF>tc+}z{13Z%&i7g9pz_uzPO z6tsQ6rMpp)L4c)8Iw>|>t9@rzeA;{Kg+a8Wld(byBhth#p>*q&`y%K1)`%I1N8S4E zS0N#{O_oL=5%>Kj40H)9IbG>=zFE4@=E6PAG}S8+{r7>5-pH^VywtFG&zy=qzg@_F zyvXzjN-7f6`dhtVSK16otbzB4*mV;x_s@h!?HO2xnyd4`lEOvNcwhvNg7Zxs%!$r1 za(P%81$t+BtynYU-|9D=aIy&#FzlX(VqGzF3cu_-dZ7jViR$cpxzMfz?kl2{9ZCM@ z|Nl9akD?lQPayottN_{p&%r9t(az*LQuaU8oDC%B0oR%O_yo- zhcE{nu~&-b77@=Ac5bMI)yQg&Z2>z_{QIN(p;YHkHRA>lBV3}>^#v;BX7&Dxq7GLPc2AK0wkyP zoc{drIP6amx1KE;H?k!J_v)czVQFZ9!p$SbjlvBZpbEJgBnz4IckQsr&tfoN{VNEI zD|%Fed9{BtLc1*({&-?+dltxatYG9X_GCtek;^sdTkx-D0pk4X^FJW0D+3tEYyNt7 zc}kWQ!!}3&7_sm?2sthOpC%wfS+<;xJB%zS^mx8bbekcWvVmO7(=$=J8A3xFZK|9D zXGf&$!qFrP#*FF`(O{c<33eVJ(8#Xr)gpR4WUVbLXXAt>hBJIMep|}Z26trDM=m2Q zbeDuwXcS#>z`c>v<)4ikValBEij7>kc+0x-DyAA|B?GWxNM7E>_a{3USyFWft z7yv8Tk>o)n9aaF^Xv;A&dNEOHRIPOR0^Eciu%?KrD#zWsO{+%qET%T(c-&E=(@Ie> zn_`R17Gf+~kOoj9bj%xI9W-~~kLK<Fz7Znb#K4-ta!-T376| z94WTHap~MP8jAXx+CK!&?8srzZ{1o($Ii}Q30#*`55^Ew{;Bs7I0IC~j>xK8S%JLs z(c&=00!QJ7e$jF`VL`Znwyt6O16q}~n-8mRgl3JhUI_Si(^TC=;k#_k$G3y)wf-Q= zqO=fFFHd4)pfu+M#fmU;(vyT?^T91km_@R^#dFO@w%d>HRQmP>6D7tB9hS})GA#uv zaqpUy%j@dut_;%cJ@40y>8a&dlrw3nwEjNpmbvFBEGa2Tn}kSZrgk1)>?hr=;o{`C z{h9A{R``w?49=o`CYZ?j=nye(8JKug>Az(k5`8Zic25g~V~yNSRyXbs>+pN zQXft`+A|cQH8uc)|G%xI*%1&mJ2#VgmX}!<(r-&cnys-Z9a8f1ui8ro*yTfI{0Ic? zQjtrckW^Z;_>U5`Rpb*x?8N6kZcAGuo3Y2#fixaf+;G|>724{#4UBOih(#C*JRgk> z8sTQ|1oDOuRmhzHmI$RwBjW@xtw&7Q%kKjw!|9PWV^9Gr1?`46!wdZ+flwC;OyI3+ z$0_CJEs`O0KDHNE?M?A77p>^k4<>Ux(bl==KOuW8$wNCR4LmaJB#7A?1V5%{azZy< zyC8g3=RwM>Ro^xZ?{YagC5^PMzGJ;d`RvrF^Er9QmPG8WFh))+Iht5^^}*U;bgEb? zTffv`@H2{9=GfllJvNS-lOI=t^ui>TTM*mCdI|#_ zNaGFVXUA2=p2^yPj|{-6xUKNA-?N$?(63YT%7A4FAk7wA`_W-321#Y+`Gbyq*OE!3 z?JU5I{`~%#vvh1BJl#jSyUC_D1(q-(p!df*StJ&5Uqts{gd9}$2SOGJozKDub~GY; z29nv&ORFc!A6l;9ddM(NtH7SXrd@;KFot5`r#NH^lB&lzW zTHI`IgW&7yF%%|aBR#2{a`YVWbtMxMlbhLDHBHUTGwM`{;|0*#zgxlY`j6yu%7g^o z)fXcZ6BAtYOwmYm@cLeD&9GxG`Z**)_x8U&&R1)6^d=1+^h#80_CCwqMt z&GfFm&-ZMJb}=!6%J7Gg)ua_rR9Vu)VmeM{`1MpuMe?N4@zR`gph?GrMIiD$7fZJLdq&d$!RJBy6> zg5~!I`+*qf`P^1TPkku2>1Z9O_p8y^I1dh!;qhaH>zwgL4(W)6W&N8fIlHcI6Jk%o z!tHw1T2;qWTPwC8(&+KxQ~Tc2*14D`GT(nbESpXaZXa2`5mhbExy)vqZ8amU><9k+ zg>fDb-KPMr$hK^(61{@IY`e$B&`h>dskfflN3IEHV-rJR?JDv?ZWMKhM5I9(()L$& z=TB9u`a8y=rRj;RWrCV=c+NZOu^lMES3Ups{=em8sMbt9`eT>ix21FdtA4lo@_c?w z^K)33izIQY64c zPZmyYw=8-ZPB)RlEZuWrMX^O!N`P8C*2!>QC=Fo*l22m3_AO`2nWl3c2}d zhey{rHbR0%a1A)F{J+fUfWaY=SL00)11_%*%fFFeVgDo_?W6+YBi!($YgCFbP zZH8XjL2%QEDu+6sCYgXM#U#s!bL&gL8joF?tJBZ)6dRf}MypJR>auU}&t4TJ)j_~@ zgq|*5Q>ft2q5V~y3827Nc9L$TvzXsV9obiKLB{58@3@gv9MO$V7^@rI=oQp(kVa{A zJ5^pDZgi3Qf)Zc$TdjSvOZ6dkBs_>JgOveb6d-6cw@p782_uN2%{XUn#8tht46= zUg@1#OrML$`H8Q;@Ik9f z)-5rAh6d-b8v`bAaCcqlt+QI4lHr1&YH44RqrYxeO_7(T{mkH3I64e-r@V0+w~P|c za`j9E2$-%MRr{Y_FF051O&J%?y8VfgZ|^55?{*ha)?*|6*1Y*4exFs+yVx;jZGjb?^4x`#m-dl+l<}D;Rc*1uu87T9N(`N$%-os+phJax1Q?-_6N3c z6r{C8h@NA34zH}T;h=oF^Ok%3hPDLYeaeu~D;Vk<$e)_=E5qkr*shz%^B_XzU>;J| zGr}`XDRFv+Y}D9>k_-8cEXD1in|Tdw>`9cndtU4Q?m9Mha^>GxFI{tJ;u?n{bf7X7 zl9Gg)abz}CppFNQt|lwQ>c2g7buA0$IOzBAw6#Wo=R1@KG3cdl`Isd)N&31>x_o6( z-KvGAfq3x!N&432%B0(L+fkZCuI-g{lmagjI;29nf5%%nFr01-PeJr9dBB;; z8?fS|K)u|7Rd`AY)f!JFk+T=IKxqEL_=rUoDI0TmsIw7ax6h;0M(V#8;-y{=hF(5@ zfj@`s_NLked<$P}xM90JwlzHn+DX%3jJ&`o$7xu7d9eTj$(}gQ*D^dLvMNP6zsg-_ zLr(<1RRS7SQtiqC)24q;c*6?z2!)O*388mkpX(MY?Z#=6;L>iv;CvjFCezXnPMVAn ztZV~=O{vQ1s_mAuMu$fOam@9AueF5l*kn(W8bJ-c^G+3$Z>+n{PN(}~T}o8&lMXHvv_gj&4a{4(IvdYqY>dUwycmx#!QQc4P1?RhD%7AM^F0%BQx0k(&*PdVNr+L#eYYN1 z5fjrVAt{M^;F44l_7n?x>3`erS@iefa*TdX@N$@KjQ?^N3ZWFpEF$r4{|_ZG(Pa{n zK4qK9nCvY2$_&2@@9)E4jCO|mZi-n3a#Wk<0vj){N6}xK8pjjZ(0;pW8;=8gmHzj~ zc3Pz|6*V~%)Y8WD0do;2Z(=is%KQ3RMj4$|-!ajNuq$_j0ehLG88G~GsOfd3Z>HQD!Eqzv{ z>7#x2l7T&bOhu1~)H{EYJE}IAyW`3WlP~pVvY#=p^&7hXAn zIX_?XSuw2W@$c|GE*)(I6cfPjouGOY8|#|z6E6EKHP+SZ(HA2GmXi|mgNQwbC$6!~ zf|uZW)c!t&WbpP6Jr1AgIl1>&brUNJ?3mjgaq2;!IyIouB@Y+b>Wuu10CUW=->odl z#}I@5JLDzSRgkTikp+Sv*i!)0Gx9?zdWem^_jZp3KDpG z!IIBR2p__(qzn?scRA?uUf`1j3GS1{BBoF47^Mnj|8qCb@hZqSNGz20@xqscl! z;cLV|n&%97NpB({aZ6b?#$b;W^jS8gdXaQqe=WyH>+&9zACOh6d4>XycbVGpU~?Si zc6=|Gik;*j^!zrQvDa?U|LNc2tPiW#MQCdFx9(lrk(Ddai%V6J`q@>a^`}30=!ogz zQ(E}I$j!6q#iLXo)T=u4bejZ+kJ`<(cr!c}-Fd%C;Kiub*nSlUuyhc>Elb@3>@CxI zBT6Vz8$UT|Wc?iaZA|(ry@O8&7TXU^xP|q1Yv@2CSyq*@H_q4p{>vI=ox1B-cZfiv zqxsOgEeBRlRCj9m@i=n?zRO&^>zdX~OW-__9IfNMMT|ugrrs=v#nycOtyY0^#13|& zx1Ga$JcT7rz5Py?tR*go{wX*2aKMggWNZI!J$rtkjp+92v%WpV-aS>36mFINw(?e= z(lJfH^u^gQ&k|&rIV`3KyXzjbWJ_JrbUHtj>+ArwwNyB@aw!ZJkKH&s{ofzjR~%K6a~Tnk^BnvCf$FnfsZhvOy>P z8Rs(~o|+(2r%#;X=a~SW_$#1H*@NXE{4(3&>05P3yS;x0eY59Z>IfLZ+D95Mz6m_Q z_|zm*1^70PpQoJ@z{f-K;jxg9q|6d%3o^hw+z*K#m1N=Z;K+tvwDxC9!HNVN>oU6O zzcs1m(q-*Vh~-dH!QK}&dvl&J7{t9K|F|JOlalwjGESi;DoGiSark>x1)r*_<}M_# zm+%dDfSa|oU9k!5dlcQ%A%+I=O)VBn)&cw@3dkI;+6<)igZrtd(# z`R7@ydVS-Nxazgh+p4|Pg+>Gh;0d$BQn-F+R5jc%-)-ya+sFOYDNqS7UG?88dONZ~ zw*~0S`#jEs1x-T|9Me7Q;WBM~-;PvgTCMe(ta%=ajx-1N+R^w-setowv>=(JrWZ# zKudt@`yhop=+qfK6T)r6bzz$qc{An~tIbw-A|aHs!s|-W^eK4|lxk1)-e+WoMM zh;VF%@LsI>JZ+(rey?0V>0)fqtKqNr8@x4dJBcTV&V7F-M(1XYC)6kwB$6_PjYW>X zLA=w)^X!NFY?Zy-^1fN1pW3eAcS*c^Pv%6CuBQGD39Vh~(wo|LrpvZJv3y95PmbR^ zFBqL1pQ(u@7NLgj%BB!9gYUPWXkYXXLW<{M4KKq&u`iCFSe>8~^grjeJDV@3D~COL z$Ss&6@JZ%>)>=zFl_*cyYfZ1_N>+8UPs&AX(K`{nHrs*NxV_$(y8qlhr$jj&p1C(V zVIEwSw2R1gmm7RB+eQ1a@Xw=sQ~~O*ItX^>NmbFkGXS{AtzpE8l*^Zmfunikxvuq` z7{hhaV_kte^-RsXaKYPMAoz99B4+J-a`J$kBeVLL>rB#}>CD72+YbvI$2n4Kw9UJv zsFk#O@nbd0%#~b`C!w%P8Ef=ix1ftceLuV;>cgJ*GM&$TJSA^FG*Qs0GiyGpmt zNj4N;A+5v-4v!1hqXX3TUSG~P7>@J^ z4s=$ZnJu#p7b*4BOh+s)fhN}wjH`fM#v>p*EmM~t zMs3FqL-|?Hw8$76>je(&nCQC(Fz#^^EA(2HS;I8|2mFzh=Xi*q!hIqIlEdXGewoT} zC&QiCI;Jug8@$DsyUtD6)4aV9?jA10_sXE@bC1tay} zY}v%UndTE{^a5H*s+!>dbN6+N#|rkCX^3gT#9r5&P|nfO$_qE$bky)BdT}${N12ew zjAh>uO|7eUvux>^7$VA?F=tGEtqU58E@D}4w5q3G39{;i5!6Xrl1lmt%X|OrirX%{ zow2CsG7K0tEgBYYFuZQR|qpc7QPWsX^ux|zp*Vs&M|Px`qJ-?a=qR3W2Pjqi?Y zDwb3i;oV*ATYT^8GcBi}nYWVn&v%%mBZJ{x;uu{;M#E{0?1WxdyXoS>b-v8`Vuy#a zoR9Uf!_EeMnsaxW3vF)QEUQ=3_2vd9)< znOu;#*@lm2H#`bleY(7oUp+muiayn;>Op()fqlpM46DQF(FhGrL43Kj zl@AA1to6>rlRVYJ`+xl`ony6a9lNdgi*-S>ts51nBLD6ao+acwvmrh$8;p;qPne!H zr}Ok_9sn;n@W)Z*^jySsRO!y@$xw4o>Ir8CHP`hwLfUg-@ zV}4CdZ>?CZ7WI#x-JyB2Lv8 zSe`!p6DuEmyzvVsI;}F?W6bUhW&D=OO>BAUjV3!pWw`pigs?dtqw3Zc2{rsM{<>hU z!{)%tim1Q_s-mj;q-Ph%$KD(@=B%(PXwuNF2D;Oxe-?~IU0v$DB zvuLH&1+B~WG#B5gwBnh`jnETyTobIdd`vq}n0w#0c5qew6cSN4UC-{aShtKcuXEx* zR}g+Doh&MOO(?M)b7+bRE2h>0xXuY_mYR=w0it1B|&R;tks0KENdxx05 zYHn;F!pb9b%?t)k!9;L7*Tz!{PWa9bWkQ8W+Sjw!aUb>Bfk)QsmVyiK?#_FULmpF{ zz&ZdIKs97YG~Aa(Q^zlltiu%EIvR5S4w3m2ipm!+0)}eu5Hx)6a{0kcefOcFuMehs zv@zr<^FRiZaU}1KBR3*Kp<0h0F^A5dS5q7pUA!p>I6{y15zQ5wtvmJ@=_>o>sTzyx z2E^*;7Er#K3|oFTLS$fY8}1iA{4#!I$~`pV@x!|=_Xe60b}f#hE6uh#SH~gqg)ahI zC83eGAh5-trskMzCj@c;Ov1jb9x+c#xz&6*kA!?Ixy2klbsPV*clcfV)Aph4cSR3> z`vRnW<_=4ojW^_uAaBeQ#LxElznSHOFtDR5Nzk1rdq?kz)R(mS|626BtCkQGv2!nA zIzagmd^kj|OK#k5c}o|!`nLIyon2SeVyvx?J|Xa)pM+FbVg1Ht z0e!+{T8#D0%&&Wu}YxG&E<5>zc z*qo_by<5<~-ThRp>IdOu6YI=#Kh80PKaK%Jehr8 zE@AUxXy!8tIVkSQ$ivg%y%gsn?-h#CWP4nca*1V7rEdRyLe%$JYiQ#qqSbcZ_EcTl z>Z)FCt&eC&<|4=R^3=xrUn)-qU7t3`wtVe$5rsx%a7&kw!D9nE(ZLK_syi`js%(r) z$xPG*N&*gP4#Y1JuKPlBX5fPKLmudK(ODHXtyy2pk`t}wQ@Ud>pYtasYMu{$9bfyO z1^tLjiXhlg$?#I@yE1sC^`Yg8?|F#MRN4`;h|xe!V6au>;aY-uiax>$+}lL}qayAZ zlRS&F!Bnm5AF8#A&bLjTo#)0g+5IhUvHZ&1Bwj z#6Gxcaxaw3UlJezlHLIFfKNoT0H0j@n4>84Th}N}9uV^nw-UxC@|gVb!eYDD8-91p zr9Z_Ba`tH$Mj!|KZ6Y>Y(-sApd@NrPC#xi7El#ZPJ&}H`faWbl0X?J6-5&hRze4MB zhfm=GhPl9Nw&Eo9dOvby4Gu%$B|&@xAxJMmNTu00 zNUy8gF1nKr#Bqc|7akNIjP37W=NfeyxJ>MOw-@<`dQI|IRW(*{peB)`<1;t0L(OL9 z`QM=CrQ6VKz#m(IVsL14ty`ID8K2@-Ni$!umHQd?hDkIK6$`L$hV^GZ{KxRE}{E;&Z z4fd^EuWXBl@LjhyHj~EHG8n~gHI^(!9cR2>f#8rldZ#D|Q~_-wq$t)N4sz0LVdopo z3}9r-i(kocchz7I?cSetaC2oq&9?5EoKPuPc2YD+L$0RQDA>n}UDGg1aSav!qDiRV z8E_^v)=^|MQnolUHD+mc^5gE-r-2pnG6U@gk%zUXQ4}jDnVS&q&|dvBQa(F>`AdJJ8;Y^o`Q(fK)v%{=0-h1JYLei+-$* z2}{FDc}OG6AiVG`J<(Ze97KP;1Y;wgb7MLNc!;3+i0p zjwY!W;MgyVYTah+iaEARP88cBV26-ca3T!uPiyu0&0*!Yr_hr931hCG`Z(!~yuyDF-&ELTuU8cN*l8+m%)dB&PMUZlDOEJV-cw_Q1VJfWlhx1WmEZnGA z8cblRDy~&^hB(La^$H34>9xjv<|?7@+Gu`x%t4&Nd!Jcpt1c&~nQmuNGSG%TBhs?R zdp_#4*9i)G?m&yS7E>jIyQ$wOb;~&sD?zlEQb5BC}w}n>S~X$2$yoBg`_SGFv<bwtEYwe&$Qc>wIale+LBX*w63YrS8r@44j5&eooCo` zh-6Z8#0PO%#EhRGVU5|w#^CFUT>GIHrp4Z4&x;nTtd$kIl_FMkX=(nDN+FdO;6gMi zU?;oR_R-q(!b>MZIVne;|GWoFZe+AR0d5@tZ=AtE@I+m9l(5)2|2cNiwjwnRQ!JpX z5_V*Jl6>;RW0Ia?rs2{n?sCD6_*=JcY#T6`! zw>l3+!_T$^HWBZT2-ddZo5;yp8!ia~(eQI^&qgeAElt)igr-H?z5})QK-KmUihdb+ zc!^xLOg4HVeog{xR(O|hPHw8VFr7n>(iHm?9GAG*uu-@o9yYO!@c9IEB%CTuxMp(P z(DomcqHd{ji`?^L#JZfjpST=vmR}m%`bmX!J*4v#y)|$9N~1ry>Cqb_&vaFBo9I5 zJGGG0hx8?x%r_y>ecR2Jy01_~-m`G7T}mt7Y|OBN20^nr(iIj=)9OP5>he4#!jXa4wcFK0&PuAoz|P;Uv~HE{nUg zx!HNf7xGT7k9Mgd-F{7br-Z*EMn;4_AL-JF+Cp-jobqTc=&AL#n`36c3xVR=voB!} zd=kOKVm|qXH|0vxeq9}?qnd=FlXrh{4L+y`-ZqyfS#(-eqC6uW4Yi_6Z{deCf~=Hw zW)3=6ukiMFwx!&OBI}@l>!XmWaFF7M&1aJ`orV*owq#Ub&9n08mf)jL4eds|&HXW> zFVupp2#|>`HV+S89?tS)TKVMH^LB+#-(};^yqS#jVXIhwwxPV~B;It0hm+f2c)n=m zcxynh!_zU_^}&6`&g|jS;lvXvewcC9JA=gH!2U}5p%(tzGagmiQ5G{AJG{ldwI>In zCze`ZH0=h@Z9bG{KTN$bwCSSmhBoWg4y>&&^kvZ4lgO3O)k^tm zsG56}oM2`F-j4bT=H$~hs<9b*gwCY+*wjk@)8(2=_@|;TZv_3BdanDHoINI{P?S@U zVce^BqCpHE%BY#RexnYt-`teN*lbOHaLw1u5L_#jsD6P!4UK=$&*Cl{cP3H^>~`;h8d)APHJsF4OICbPE^xh$ch&u6f%d##_JV%hZF9*p3M z<58G``StB4DJ7y&1FgLwv677Lm)O4X75k2#caMP%59%L;<|bxm&1`0a{Y7Fr-~9rd z8-;JR$dKN!K2He{Iw>8%o5$POz<1pROAP%eo;kh|xS~)b>H2VrMdkT=L~-UA1+1+} zxVK{FQsU;ikZto>T{3!{&wff*Cut^s1FAS?7@;i_7s3PQ;_El9y{-%NT;6g~tB=R- z>@*vv=6F^nmOA3Jg~mY>9Es`wnxqPkIEG%IyH)k-9>g#Uw?C5Y=WKpNc_P2eBjj<* z@2k}{-2&0eG23=Vud42EDw{olM+XF#1_wZO&Ti+s#kriboB0>93V44oX_lBi2%1%H z9;u8oaD>2g@2&W=NmB#v3_PxgK^sC+Z2Wsl;0sO5bs*SJr*bv~{?QrD}g=Lp|!qV8T8G@_Dz6spX<99bbWWiN< z@ByV$I$p-2pK!S^dq2d&5J>u9BpwQ9tVN>awKZSs*Kk&Kx z`2CT16Hu5*Kfa|7cn}SVM^6enrH4pAO+|s8Fy@{*Vy`h$XO?6O7M!d#-TCn>ip+)t z+~?>UOp60}_0p!!D{j3d$#aNNMf`CKg-E9oznKV4MXS0Ui;EYz2l1pyY7~)~vKX8= zk`~nl+zIRY2w(N8z9BzI9^qCoXYg=y>+#bU+s+oS@9;jfNekZ5miev>j>w-O9F;Ik=@>%AQ(h~ok{8$G z?_C=_;%3?qw#}nI0FHL2icqYdyxik}YjX_Wph6K?rn~LVjZV5CPluJJWKQJ@Cv{Yt z!0doozA@EUZg_Z1J`dYGT1I6z_hEYI1Ujza`ZPJLUw`757`5iWnc3InI7T*Ie=V3E ze`x1&5I8h1if`QUTe)IvQ*0obhHXi6PwLg`{Cao}y#{*Z7lFH&@fDa)Z?eeh(}VVY zjN5YzAdM2_wd|k!lb83}0ok=8F0Bj2V48 zcJpeidB-NZlK?S)-Px^2tgSy)z8rZjV<4){wh~y##?8DCZ?Nk4y_eK;(D@$&U2H(L zDR_{a4Y$h=TGE=NW3zp~$(88pNNDp&sz=#08#fxgFeRUg&|UF)bb+ z#AKiMth^KR8Y{gk=(m2g*bUZZb}l3Sq*LnLEuwTPteJ{;u~E|1ADF%wD~9!C3J<2+ zitM}3PXOwa{ptjN{)AIcs?~5VQs@+IEEG)4q6RLt__eBEd>xNWd;@A-ivP3mxyYta zI7mgTj=sh(UJ11WhD3;s`{&IL#TZs-AbXFpT;HZ@9SzY;?bdP~fdOg9;@fesFt`S} zp_Uq{O329Jh)UUu>Y%7}M&oqj2mP@AtyP865?TT?Q6pq(h>36b05#t5IRJ|W|nEQNcVj#!7POt+N?rt(5guoi1)Bt9e+EX@pL)& zdJ-8&1p`arYIRa$GST47U`4F-hC^j)Nm2D5gy}j-Bs)<|BNv3VT6jm)Qq1`_`vYg> zFq&jJLaH^uy*pSJEAr>*VPkstWIGICdx3>Hs%Q+#_6+c}%HGX6Qoa2GLMPsrcTCE;9o& zJMW>IVRQh(+NVr+tS;m4vHQf?-guLPn2(+gSncmLt?8niji{E$ke=KNX%(U%VRtw- zL~k}k3Z26tw(k?@9NSJJBSnI-F%sVF>qdZ+ochRb&4@Xcz6qMSHVx=d>BTRh41duQ zo}wa%fMJhCuj;dOBn_`-$wje+8|yB@OVuTI$WnOtAX{KaTMj>52z{_X>gj%@sp$cp&ntKumczt zj@i2m@az*+p0f!!p2oXX2AfrV{XM8v$Kmz;%da8Sd=RFFVj!Y8WIt;{rzeCv@4M5C z`VMlc5O8~iT;Y8_dm>g|ioR|DzwQXNA*MQ#<=oFAt()PLczcaH?E2eESK0IBd{$n- zxTsFeW%mr{GD6B4s4SU9`E)T7UDrZwXGe$K2umYfg$gify#0gMTB*PK*eFyTq?`HZ ze)Q$Fcacsi(V^CoYw8JYMuEK5iDjJmiy*Hrb>se;T1`Vdd;;0~d8# z7*A~h-!k{u6;zy@PDtG5z_N`-`n8@g`r1BxEkxdJF5xD4>_=9NgfB-I?rvhThnln7 zPRhA@k*Aw8{#Er`A4%Dv0d{p-e|%!iiwr&0D7BX(|HoNHlXm4yO&_E;?%n3*5UEsN ziF|Zj-I}h?k~_c)U&_gY#~K0Bie6d8Fd9HC{BB_zYocqVFv6FHoXQLgFd><+TP&l) z6lIZ}q!>dJP{6jV^yWm`Fc_?TRqI&(-!qfLf||6OAvdqN_`YVf2pm$K*u*O(s3(>t z6&nJm#X`4ZMhDf|zikZ3Rwxe3V-~HM?^4LK@^e;_d#Gv{W;#(q+pVyf#+&&&d9pp! zOvmttc*pUWpr>q?*Y!I(D>J^MT==V2OB)N7ROI4Q0hcueG6qTUK}WI0Nx^!c`S(v| zEnlmL@A<0f1*E@tYsVY2kNZnb5#Pde@JSzLr#SQ=QzPPQs&Fo21NIF?d6UJY#-xnO zM`6agsfM+{rw!w`5jI#N-oR$CWtHa_VeW5MBmsG+-B(izotSav#dEKjxR>-0eciDY zo*Q&0+RXeiONZk6!a7kuwqDdA*K*XLSMX7J8t7dOEluMuS}lDr(sXYrb+##tHz0UD zYI6=@aWr*s^AJe~lz>doQjErG$A!A2&V>uzCrC@y`T225OM=|6FmTwky)j zP$4vo@M#y(-|cDV5bfsMovRc}z15kKSR9_Q&Y$5*ds!hd4{vyoV}Myl{QKLgio?y# zfR_5bRXUD<%TGI8L{CK;M!MJeTWM*JiY2xFR-D7gE*+K?zB+9MZ1;*%4Vc?LgdghK znnevKpZQ=|M^6Txsyu#9tg-`yrCLK-gOL?ug_0} zC;I`av31WmtbUB-KAasJp)+#+`tOL4Wrs+fnWWzf{PE~zE`lB}&G}JJk-qh6ylOl% zA`mdB?QtDo?qulU8ImV&FQZGGGd*sY9{8frtt-N(0|Jb}?iE;7j#Gsjj0=Kqp*PQo z+lE0r26leW3BbLY(M(B#(s?_!RZDd)zaY*1^<((@jOOXHpWNO3ZS@mtILwLCV@v-s z>0IOPLG1av@$u29-G|u3$GLZhmA`rf3-QdB<3%3qu|#0TSJGNlzf#{aI3zV5A_9e!uv4y3Gg?+%f&t zJCWYdWw%4$Z$&XN3AKM>zNw{A!iSZ>Mvl7Bj0TeIH+UX=i|+Ft?rx!E24LKX4Y#u1mjrPudkeLaXH-m>b5^W>^ z3P4GS1Y`whZCf~RK>U11vjFq#w#0Fuix|&gWw*@rV@K5D>&G`*;t_4XPv2-Q2&WhH zuj#oRzV-hgjm&+^d%*=w#mR31a5A$@&Tgwiqun8!0WPm0FD;QLpMWkA>Rg1+gU z|23S0KU6xq^&|Zd=E$o5?qmeO0z&9$F6cEajOd(BkG0DrQ7HSEsQgpq*2hiT%tVq4 zj&gltizxnb61FHb!+V!p@Q9LhuABE~`5w}@4p1ngWPsb4jO=Do;l4Hd!R|baHDUkf z+PAjxj1Cw5s?GEN0Bl(uV8={bU{Cu=8J<3lEZsG3@4}0QX z3+JPKp)nb+GF<9`zWsfnQ-U5y`-R;iq5L10Or~P&^)0c1@_$qpkT!28vk3BE21kqx zuqR&u-PsR9r3~3Rkgu7zPXv%2DruD!3JC!1AtO}RaAYbB7}eJ?Y)pUo0)G)x1W))Z zyFTQ7dH^DT9_V&*%SKM`+O`j^#LzoU3xa=tqyKS^!x7k}ivA@?3=b&Ypq>?60FI#V zQpJ8~^y|}P>DgsuLHO!@t%EPuO?Z=|@=2q%IACts_`17hY4A^N`^d%{t#1K?X*rF{ z5kRj>@60>`;u`8aeQtj*Rqh<}rnPo}DixF%(>7>1{uRbK^^F(z1Pq3zn`mBV4^5_O z(0j1L2tRc`CzLWPE(C`Y?pO^^WoT~DZUU$?2^P1@T6Z^XEb0w~!$IkR+tx}F;qt$kazRrR@LOs{kKE%S}88dKxrS$jgp>h7F6u!(s*YsV(cW(i>am?Ea zy~FF>$8e-|;GePhm7ZH!Rr99*zr7;UN!sC4BxQm_5P6z$S7^$m%^ISTO$r-R>|N% zC&9}<`?gqLl8lD!8^4QA3rwFgGZ}U%p@@9V3VyoUOX)b`BLV=o?B%Nk2xc$1r{fWE z_CKou&v(A302l(=_GmrSZuF=BF9zBUAf>%<$A|_c^+^-#RQ{c`UMM|;`BjhSUNDLv zxLNz5o7Iu#3t^aS1kai(q&5)tck;h*kM!Bb#FJ;>>oz}G5$w&2&e#V2Qh&1mxS+yD z$6M$lE=rJWcxxL1lGjMo@-)D@+WKm9WFQ;TC6c+*CD|Y&@|T^)9t;Wd1AYnV)lWFp zrzd#n^S{Ww^i@w0X;jw(Q7`bA4!uueJ^=C3qy(UP5_xi*$8!0q$g};={O9e|7YQ%; zk7j;jq{u=)S=WOY+IP&uH*v2q|3l-LC+^MCM=FApt*+Y7w{{gu5?aelGthFXEuE8}4tobNQ z0JA`Z*Du6m)}b4NtxtSiIa@xgJGB1-Li%Dl5Fe~MJg7W0#Jo0QTy&uTTI7W%m%h-m z{eHR_K0r@p&7t;Xz8hh!z&)4_a!8%N(NzSNjxWS7C;T;rVyV-7=TCe0cGspDWySzU z!q^-=ElsW9Ce8r>e?~H8hJKKXFcU94KQd{y4;0LALO$A-TZnhtq-`pDGLTJx@A+3!EfBtUqz z_j?Gyjup|$zA)c)%oq6CnWG-ST?Fg+4tgWI(eXgiEIdsgF6g=k?0=lHq@?)$@;&WYCIKe*+r7g z*O#J~t@%Qa8^d8V9wm4D1TGjJ0F>1m;O1csLxcy0>8YaN^J1IhQzdfXucg|zX(A_Y zU<-MAsGy)7GCx#p0IVQkqDUnSojKJi;P)7$nCKVAv3m@aMVBP}OHXPBOnee4= z9Xip9grPyxo5|e%8^9&&))df0n@=UNrHyrRA`Ca0(px#r3m`;y8m{XnN_9>p5gnUt zgp&j08mh_{9ko+l1AV3IWv{WJhWL{gc_>uXJSriF9PYybFGzDky5v22f*Y`6u3Fa2 zh0O^a9scs$=RJBU|0(>5L-uAM`2p5P4-eNx+Jco8`ZD8gZ&t^>v*i=ZjTh7raPHm~ zw3Dau5T4X$qi45}hw)39x97u>SDE>h>>?O1`g^F$H4@0Va3Ht&tzR8X2^agc)0c0} z?h=mA{gc!GM$37p;WKcFe{d=zPqjFm-qX_>r@ZrU$k^5iTY_;I0#t4Qi$z`1i@Ck4 zwz`lCeZV(qT%a${fdEPrF8^Km1sW)Bx^SzBF1+4*x9xZ^e>BT}zWkXVRz!`^$sKfZ ze6C$TFlDp7q~Bos_JV57*t0{Fp?y0Nptx1%dJO|JXYlVZM%HdHGa}hpUh`W6kp86& zc_6YX7E}j*N!O0Xw!#nL23DeXg|?S{(;(SWCK~o`kWQ58ZJ1*lybN}{$HqXie#|vNolCzro&p!!;T~eQ9;!Ld ze%Xr4Z@}7{o|{gv|gnh z-A+YdJ&F4QLAt*Pzi7uczWxeqrK5M?t(~zsvQ34K=X^z;Y64SWq;3raznabH()$Qx zJEXt<#!W|^4=-p6za-R_QaAAnB{p!M(jbU}M8T-^lT9NbXZJ*w%U#XR>QZaAJlB>S zz$}lJ@<%I0D>FWeA+Qgc)(ua3;7Tr9^%I<-n1^AYK;wl?RfbQGp{Ik{#zP98t8(`M z9@x2gCJ&ZBWgS|1R@?%6Clv3xVow^^cQ!F0W4Xu zpU5=ut(`)P34A>Wr8!8*w=44m+b^b~W_eQ8$+FW{R(xEgzwejj%GO=_W9d0F;`Rio4#tU8syH83G~tz#so!TT9}EAM~j0FYu? zo7Lp!^duf8f;5b}7YiQzXkI-(_kcN7Kl6~r94*8Zgy7A%dJ+k78K@=ZVKU~PKF5y{bfB?468%-wbxYP%~P3<)d`zCG=y@0?U~ z6=evj*8mH6VO~>C2<&uHt(HJ0;b)-vDBfa_!UcnTXYQ8zex0EO%@z;Uz zLEHWMHd_PIH2y7@l{9`R`G)MUdz+Jjda0bPqevl-91nsrcO!dR=9wSkQxzUPr6W&6 zUY*e!3ifptJ#RW2p`6HjP|mrDU=eRDOd{BNi|nnuf-NE~9BqO?A7@eG@CTh)dwTsuMWv&e>+qR*Opjs}y-9xlHy-B=E%b|}p@&G-oT0?z$ z_x|cPaEZx4=A?_C)105hKeANx-Z`sAiEH7a*}J|=J;DN?0qw+UHI}o(0$8moVZq~j zV8A?yU@T0Pv`K}8xs=UB9W>dkaYg3|5w^2OX(Ap!BU-q~RSiqwx5F@(j3eGDd2=P- z&+6=5i{tBaJHFk{nTm%#^ZVyo{lscpauIXU;$DOuVSOr7Qctz3gO~dz2g9HRx6av- zN<8eNHgIs74xR#~cb_kg->I4Pk}|@`t<$!99}jI4POT=0_@xB=uF|y#$bxi2l^64B ze|RbSmx)z4yCEsZ?0o(4s>jXqWN}v=uB)YFclDxkb-8W&R9h2ig6#A4+j#*ih^DIr zViwmpx}SkV{B7M@^VNl)UCO?>&M3eXR(%k6lm>S+vYd5k=?XS*f#=UO*mx&UCJJ;& zyVvn@1W;(qx>AxNY)@%5zFyeEsAjt6OG)sLH# zXDmusT~|%XHYuz|{y0`%TUG9})1mcJWSTY@rGN8){Oz{o-EGEmvTLqYRa0U>UHZY{ z<}QEL66{Z&j&od9{R(LN-CcFDEczF#Y&M^R4n%m(4@0y2mz&xaCjt8PoJGy1S}Xh( zuS9s7`Tdr8p4Q#q(8}c=l{u!lO+?;U)+DRiw{6DL!yZ9S``LBUF!fz{jCKDw_PAw^ za{H^9D45)fzs^)WyN|qYIJQ%YNeNmbR5mD7b|GK3g;VoLqSq;~>fkE;+*@sKEYc6j zN42y0oK-kzqFPtsy-q4fvo0>}b_9+4onh@Rm0WZjl06g0>HNln<7%|tj;of~trUw~ZQXEEyEx6Kf3kmN zEWz5p2{@zF01W3{#JLRg@fz_=y`I7EidGr8_bkkK--eNq86C>5Y-QH6c2iNfxkas_ z45lD-n9Rh{o>Zc@!O%&>sP)j`nKMQW_t{Cfj!Ah=A`Bs6DK#z*c*3t!9KtlHn>edO zXp{j(olyXW$e!;T_~B{;l7V99pyMF=Lv6BoE4W%0akJ2@z&fQBtdHkKozUc>oPO-C zEI}hAw)Te_%$}2$Mg#2yqK`M%uJ*#SRUeROL73#i+ecx-r#6_Ybiy~QtA&|tyDVq^ z*pt_p?Wc1MdlTA?1w|DsDG*}Sf3jNm8)<2Kkg8$u+mP`N-@}qC!~24u^;1s6fjm|v zrKL77wo6teZsRnqdGo++3*;W5$>}J;iq>TFa^bZuKvTBc{t(!Upyq^a6h@ckgb~)e zahAW&fvK4vO8HvZ7N@hXE)0Fok)w+l$DFYni#ZH&BKA6d5weLOXy)en=z zTF#;NvjYu=V>)0LEbvq)bY0d4Bfiz^5cHkOI!e_p{)T;kA5QjS#rT0}n1F~v%VIf; zdun0}LT@$tW<;VvcSkD4c{Q#grccyoA-7%=W6yr4( zH!-8<)FR3!I|@DX8GnHN2S*8rf1{NCuU|_ z#{#O@2_kq{JJB3hlD#q;-9acNB}MG)8`1Q&t_Y5Tj_4iqhKxC8j%6+@eLVQav)5Ps zontZy)g`WvB;T7IBj)u(2I?g%Tt)K)*1X{)aQlByW9 zt?2U343qxI?iY|WBZn#AChk+7YV{{r;gf?0(9Mgj?!3dfl?3L7Qr7Tr=(@D(l)S3l|mi%Pu5b4kpd%Gr{vgL=HR0 zT&M41q)60M#CjSST^g1J2BE4$%dS>Gy~)`pOn>ngOVZ(({A>ggCm^6;zn0YAme1T& z-Hhi@hB+|>X;u=o&Qd%vw~gHLRRjV~k)!dkYNnqGx15)@Ebpp3-Vmy3!JFHXb(UBT znN%4c#0Xb<4Ac-F1hyEJe;pUP9>Mn4vxr?+o7ZgoBlge85ENB8T~EIoE70Hb6)#7x ztz5(&K_W|h=23OwX4Ps_C4HARQ*yU7!TQH4B2D8Ae^)VqjVMi~37DZ66{HrVkS{r? zmqZ=ze-Z}czkbaZ4WJpGL0VOo(bH)8=0i*?tlvA-1&%)Mq z@G=v;6!EL^Rj$s8YOBy0brtEwinE-wQU!MBKftY+;1*Zdy%tty(1aYDUC}LCXpRKs zwdp8EGYKOqLb4}#hmn%kD<(EwP>>{S;?Q%##-_K6khpX~22g${3BbtPuLkWY!Psgb zQ37_zE{wbp?8BB3LS_tprZLlIWM0n?NRGHwbPllI9_LjtDZVh4E0K6~gj&d_#GU=Z z;rA#Xk4)(ZPG-ALHuN;GXaPdrf}F9`EL;YjAuvy{XSTrnKHM zh!1kX<-h;yyA8*uiT{D9QVrWKEx|Cw<+e6xy0~(ZKDcIn(N+-lpjfYa8_hc_-$|S_ zAmV=|7wl|;Gk`Yl__@@@V4}+YMe4o#Q(!52UbW$LT|T>2C|heZ57*4l^pJe(Ab*H0$64t1A7 zS?yPgoS9ZVSJu}amSNQ=m&5U|S9G<3C*BF8`e`raza}ACH)5G+m*Dz!R_PMH5u{w7No9`k%1TyT3AYj6B|t z!S}Ef5%k^WqcXwLmV{kY5taDGFlkt(M2{1 z$zs_Ot?OpnPV2fxicsWK2FcrmFmxaHSCjZfi{BabN!l=9-9&3;7vxoRgR`Rj+DZWC zv@v5I(r4cc=?8$!#OEVPcR zt{G2YT%#@ql&8GD6h$?3!)2HU*?ryHFI9d?gbQA zg)-zuj)|<_6(Ts5ciioZk%ma#I9NrxZRUCx>ZS9R``D?x_JxEVExX-<^kwmn4kHT! zHZS69y;xiOgh1Av_80~NJ>8!!LiYD>k1u}X>}z^xhbR+yN3AqvsBu&icA0)#Eim6< z6Krlgq_Bs}Fif%A|(_NNtWXZxtHWgLD|tG8!h zOs=bbM6otEgU1r+Xeha`aKmEH$&jL;_4aWEN&&ag@!s8d0GWlQ-6RxMJdM#7M<~Hl zusbCWqhkk6>xJd~7w^x3y(}zBcMo#ufDlLTe>=EH`1GX*Cz(~|ONT77xAkJl9kNpv znLWUn=FPQVBgtDvH)uHnA6$Gb;Xkgvdet?~4pcYZ!UEE7R!ajD$Ja1pQm==luJ8#( zbLPrRb8$aY5E}~mx2$`!_TPlCHm#6(Gr&Pp=H%ag_Tx?@Q#yM^$~bbnc| zkGRk}B}0a^2+&{;z~+k`cyfdH_m7<|?{OI;MV=PElVbLiTz2m4gpN@8H~lEtW>9LJ z`_Yo$-GX=PkBIi`#f$z@^GNOZC11peJ|h#LBKth;=duVdL{iO=KJeA4Z%%OZM)fj( z%BK4X0XYcX)}fx>fGP=HD1=L+*YkEyDAxR*`fc!@rHSmH-sYw>Q`dnGQ<&HTA0((iOAFul|09> z_Oj&D)e?505AAVHjrjv1OzEBOU#u0x5KKhrpS7C$GExo*v<@YDa#i5dm2MQXuTbnc zY~KiYw8AxI$naJ-rO33=b{9G#d4|Snz0QsZTEHLwr;)Diorof@h^eo|C<$OzA7ldG zOr(3;tFEaRX6aw-KSa`b1)zmXowwud?~PRjY>uz*rN~b85W97u*}OyO>g8Y}u@0y! zDM1pAFB*~O1HHK*N!t?uuQ6ibnPmKvcP(97lKAHpIoNH2tCTcbO80i}2~w6*gsSNI z_6CWG_2B%e_8-~4IbCn71#Iu4Rt}61ot}GLaHVzG5~yjKc^ZuM%jg+P=lbK(_tsy~ z?ZU>!I?Fv~YX>apUlB2E^y?7AA0{7&bsf)Vx0ectz7Cr^vv5=Qjuk}}c=>?d1c>Aw* z_3<>~zqbZ9k^RUo2EWAz;lp~?%^JE@jbWzEfb2>jAq{_gHW^RQ`zAn`%TrY>uMMf{ zP6mckTUNeIEW@gKJm?($^ycfx*WuCAz^)+ax;O1G>}-1}I|hdiZ&bR}S3ff6EmVLh zm^!!$;Puf(Ku{Z+9r9M6dcnJBhPXK$-JA%KZ~kLx{U=sQ-q3MHy|-+wd_yF*FrPD( zkOdJ8?&`dOJ@pS_8oL(*CYT5oWzKgo;LDA75F8D!-5Y~ou-NwuUl9D%>- z?z(-wdt3pGUWxVotZ{~2={Q{s2ReDq*HiO`pLk(3Smn;dhx@B94};LsccyK@^)s(U zR=z~1K|~gWs(0U)O`4Pq33=_U-2e>QOwR^WA&0$8>L-q_@0{MeyiZY?$>!KTNroHo zO5GlEoT?Vw3mK81)(|l3xhsMm_GW4}E=%l?b6-7!KRC9iw0Vb8IVHMq3clN?4pJ= zrwn!y&b|^X_L$XkbT+ju$9`psSatU`Ab_{zcHTTBZH91>Mi6OT?fJn5ybDwVZS=

4LozFdBg_mHpQcKPdJ(b2bf$w=q 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≺b9BZHFP*UZ-nkLoe5ui`Q5Ul(Fz>E(j@1UM6i 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