From f0bd1e911c1d5bb5c32e2e3803dc0c6751ce7736 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 10:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 10:20:18. --- .../20260511/20260511102001-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511102001-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511102001-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511102001-Binary.backup create mode 100644 MikroMaster/20260511/20260511102001-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511102001-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511102001-Binary.backup b/MikroMaster/20260511/20260511102001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9e23e838e799f3e4a0db0ba7208b89776e04026e GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3iSQze2ZZJ|}vI>v_Z5!$U000O80004Z`SAPzLud$Thcnc0 zJ4=*@Ax#CBqPT`s+777`*!=}W0lW1 zU^CHECq)VZvW(l!m{z+wWyGe5P-6$-Q@Loxh>zay-Ph#GU-DiZ8g@-qjgjCRpL%84 z!eX)GkCe5mQvV8*#_yhqm0j6SiMg>q+Y67@xLJfV4ufIoLTSG7=EyvoAHM&<+fULE z&Da=G9eslj_^YBF)1@l<^zYg|o8#?=jWOT#_nCmx%)6RQ&sCE~05)9>Lu@C*@5pj$ z85lrhD0Y@%AQ`b{2z84IDl=d2n@(5WqUgkpjgI)GQPa^9U2a}fr>?oYM&Ks{<;P-- z=j!-0bt#^%(#(6P4t%&5_Ii~_h*Kz=Sr0ruRcaU|OO_L(EqGhQUz69--agwZ>f4WR z$Q@1{(@?$NV<*A00xCu#U)4o^M06d9u)<6T(wutDSqLUCPPt87U^$v8CfSiKB*c0_ z^MG9K$rVL`%_8m_5*d!`sj@Ex z>e@^*sE!rNzDNDR+3aOCx|fxI9WSP|&$j@`BG*gPjMYJufcTe7@hNueOG94K7r5rq zQV}S3t(jzok@XonWxzFz{FQ8{YXyAmH1yo2)b0mC+<8XIYetO8CB+zF#flEh3@opI z|K>~TFx(n#b9nofH2e3y6nlS)*=bfMheaQsZZ#ij;xTXBCPFt$Ds)HW%ld2_D6uW#1jODPquN;&~yN(`I)XoafE z?vi5URBSZ_Lh7 z^T<%VgO^aDw_aH)gsO5SlAE;bj1LU8K)galF4Ur~>xLxr10?F{wPFkRj0b_(IS&b# z>U2MrWLsugOPoliSAv3b4?j+*2w^L}*XSOtQPY(jpBwIcR+X$n_#eGKfg_X%8EwdV4xXv;uO zB+74D1ysNLIwp|S-BWdI2P(JSbdU_)j~$~Qx}c(n$tC!(1TmFqHDbe*@Lpqs2+)e- zT>6HNjr5GUdsq?9s^%ifPc703t}r>Zk#Ber1extYY-q4RbD<@Fl-UI-XNW#PFk=1G z7H0tq4G}k01 zPakX}gkiGlP{6j;<~}CqituCNa5^``wa)2TUgeu{y!;5j8Uh@!RALH*1z7QjHUE4S zrBgd_i|SA*S&FMz2-f5pneU%Uwq&kpo^qvNlY#iz{MP2&Hd?rt%77EMP$lACnusOw zHtH|bHau~3n+RCZpTDsDN9)1^O%0auag&Ch`5W8~59U;2E%>z2Brp^-aAbulLTqTUhTQ=UM-%;3(OJHus8RP6is<1ei_MV?+-#oli2!JdiuwFn3XW{4E%i1Jf+wN96LrO@+<@&ux?y>Bm_VN!;W0gP^$D{1 z0=6F>n5)lA7LhDkH7tcjYV5bkLfFe@y4{Tz(1tH2 zB*`gu1arX)3Oa32@+FLJ`7YRaW+xJi90|YE;@5CgYFre^IbLuCO1`ED#R1r{{d;Bv zD@6-$e45P5$wR7OcyHZxz9Y6{jXX9YPrkBJ1~${YTM*SBt(y)|(*a+PENIFS-+tDm z*c7`RjmRIjZu!Bgn)Mu%guv$`g&as3vqFvs9f+q-2!RY#OfCVLoK|gN9)%(*mtlMauuhc1+j7dp zkbXdEaX{g-#_X>}JKjsPEq6$go*oS7=usDR9dr8BsPqzr? zShWXiHyX4#iSn~&@T9XuonrYJNz~hzAgSV2%a4g?C|?Z)_)C-Hzf^J-^B^`Iq%wzk z-T?YSO1a(cL@GZd>94mCnx!51^PgY_eNcHUNL~kgLa9y8U*-xnJ_}3y5}-;iopG)8 zpp$KGdNfHHc}rNtHczdt+;nsGM}ptOf-_7tzff8&R>8}ai4hArM^>QH<#T~ovx%GK zmNrEVkV=BwfzGQbpg(r+P4+DtXnR@rnt$FIOz)uuR`azy=D1hY|z8OXPavaI5HyDUU1xQE>C<7s&5h}LV z!veU9N74b(p8pZl{7t$aI=gZhyxvHYAiHWJr`w;yp7AhVhK~!aVuL~k zySf%!*Ki&3uXWLBpHHDI8S+#F561Zu*ruE9_}5?4e?UxjndMU8o~u=4wzwMRT=FhC_%8AHq6qvWdNo7KcZRz*OkM6BAUXo=e zu4ZzvJeDM;e}`sTm*Kta!eoe6vN?*Lk6NNVDM}Q>Yops8 zN<-Y`VNem%*`q+-fA5S6iVkvKS8dtaTQ?Kn7)aN;Xl*Ma$EaO2oKL0WQNgKIidzz# zy3i1zp&0Cj%tm+tXtTk$6gh59^mVPwfApyeEM0<#<*Avc1pWRaV(Xi%3wHtIfO7;; zoe9D0pW?3b0JN&o28F8%#A>u}p27!PVI^818aI@`!EB!m{Gg6cX{?qH@*2 zonZX#*~^A`cYorqyu;=iC$TdbJW~AaIbTq~nZvZ%N4psLAr6>sqUnhM=lu-5`hjE( zuh-99X8^M}Cok1&H$YBrf<6E4qs+#XPxvcnd@ftXYt@=>KW;o|A1px{sCOs170lbycM0iCtHq@2Tg8M(M`gblcf`9FhDEHCO{8s9x^QMx z`b<_`bIbb-Fha{gCC_mM_Rr`h2UK7Y|j?wXdjYYHKcr-x%DTUf%gRs6=PHE)TR_ zhUg}x#W9s(qOY zKiBJw;w(o-03nA2ve`|@8~h^v4SGGYJ3(IJ^@r8f4R$?Syi>1S2c^Q4eEZ;)h^}Mp zvIBakMV1$J?wEAkhCe@}M`u$wt0ddC4fN{)U7RNW*y^IRx1>FO>luj`Q>KJ+ZdAzY z*1nq9C$_d!6HHIDLzGrBJRo4wL4sN$XgOXW*A88Ls+%CkjzOzYZ2v%8N-<M*Sp* zvfH7AQY6jLTAzbqgkxVz^z(CXxT>_nKKtmbHFq|rlr%8|z^uTZ2 z!7B|9*k_=VV4Q-DkE1i|9fBeNT++VLXlys?$h^af3LuT?N5;6 zWk3ik74=jL4A|E6)K>mel#90c5BwbnLbM+>PT4ucZE2I+IO|fBI<)>7WXVWCKh`+k zNrVvHq#lZ6<_71FY)9g4zzdV+Zy#0$}y=M{k!B|2;sB9&Ti7x5=I7k_=D(LQs_O8NQQR2$`q;wdBa7NiL%zM;4xo zozpHM!;yyD!~qR-ZylL^x1xtBX|R$tPp8!d1kgL#xxB+<^+?fiu_0@9m#0o&`N(QL-Hm%~jinClH z_%aGc%i#CZ-Z=*`jaGO0k6K1XJoFnatOG;3q+8h{dauyi27ZPeUlp^=hS{?4^Ta z#2>VPdk9cSPdU5sZ@fkSUuNj7FX-y{CGRreRE{5y-kfOmQ-gVw4c1oo{Pz>_od#By zpE(^=B6~xG>iR_8Jgbrr9JsUKD&2bc1_yF3H0!!xc&L$w>ze`pFXjfr5b0**(5KyS zSe)Edl;R-Er$znGgFDL{yYE`wOp!7*@t8+~MxH=4!YpD;6dV#UI$RomxAjXrWa#6H0S{6~^k$Owjsv zBrd01Z?z-;ow-Iu@#D2HQ0dh23rp(2@;X9Gru|y6ZPo$=GM4%=XQMn58qd~h;&f&- zd>fHtMA&TS&#Bzx6$0w(5lq=zX4Pz}!m&}^s%!|j)cMXKx9T$zFLajHvPrG|r={m- z39a93d_%K??5XzMLM5h_I`Nw%0r0b3(6b}o9mLE`eWhq&ugjNPip4w}tCC*tWnl>m zXU_6`H2!Hz5m1aCHWLGtL+*dw6`n-#%$6q08eR`QoE~!&9~EOHHC{(3dz$E~q6=;r zrR@>oF2SDEc%a00<2sV=munUbz|w@TD7T6wyMX!CeN(&YupX~38u8nt6MJM>1^^K% zyO||Lf(r8`#YmmJ2Qil7D>0F?G5pf^e2B0*M1ZhM^ayis?$J~4n@Hi;i<62={^TXx z8_4qMCk=SZ=JOeHF$R0W^9`O|lkpF6)IgCRvSa?Y71l^6SjZKp>huNgKbqT4*w(a6 zBheSlz86V%>y1TV!91-*(tdce)*uy%9+L7~dQ~;|>un`D!+~^R%ZgeMsJZM=jECgh zKp2yFxqW&Fw1K4Svu$EvF~YwHzcl*3b+<*@6v@Wfb-sGWlK3azDxl}20|%w0+gVy< z7VXOoajTPA+@)R=O6Y6%Qc@C%ACm#RIJiF*B&vo-5Ntv$CtkX5H_)GENa{`CaOtP? zL~oP42qe%cqsy=W{xuJhVX%r{xJwi@jA4ez*ZnwN7V|aBXTc2VczzWM3UQDP1}oR^ z36NnluDWRee^rRdp*)YL9YGo6j!Ut#oK#T8sT*Uc)GNhEt9@taKA!h1_9^$Ytk8CL z0P0Q$F;ylYc6A5`5$*v#&Mv?{>Sa|dnxYg4?mqY_XYIMf7=?666 zrPs!_iB^H+mEp3*^O9$hk!{%=tHg8?p$0E&|NE-e;Gek&#yUtIzI!P>JYXJi-6bc( z&~oD92_r?8{T?I-vYkFOx)H9t`Fizl-vNg0}iSZxS6V`m{LSKafI;$xRR9h+W zev>nUFoGqSo*KgB@4^jpdbMpNi{a&RH&F2U0FTRmbpqJKUtplNzc&P5YDTD0y@jsB zTW4!aZen@%PM4#P#&7FL6^LNZf^8*~aXea}}R;(Y`G5y+sTu z)SWehqutmH7za5@1XQ_@5mp+1@0kfj5EsBm znW#lCabqhsr`Z(pB-I78ojw5vX27IO;))|qAQ;w^6ykXCjI8t?F!&ya>zq)x_B~|} z_@nc1c{ue*a%XtKe=GT`Vp`*O=P*r#mFN!Dm%3ycIB2YV-5o;~;#aABD@NYZ#Rz?1&0>Pjiy{#-Dozd2#r|R?Z{d?4YYw^ zOvcQ2d>!wRvEWyae7-yt=ca($Lp*h$LOT!B?GGy#|IUE5?0U79r1H3)YZ3VyVwt zmU|GbV&Lfit;ZT)AirX;sBWVt^QU3c27LMT9O6yfoE4|r*p46v9WFeOwu=w zm-i)mw-$3i(Ki129IR<^s)~K6hYAWGD{J@#`>DD$VkXk!^H(y^im?X4C0i>KmZ-+q zuCv+%cR=Iv;m8X6nGqN9@T2U;ISu-qj-czl&)JPSsb?<^aSLobvuFX?oPl)m99lu1)Ud3QIn$tM*Owub=>Mt2Q$$-3dn^r zr`kUhOvD2fXU*oi<*YqHB1hHJ_{Ju{05njr@eg#` zLn}y%y73jbCG~HYnB%MLDf%Q*>N&&~gcGOFJxy+`{RRu5+XqS(-pZao;50Nv3#DHH zk2nYi;wFIEieckNp2QhUjE#~)C1wde&dJ*|ViX0f@AjMZTa**a+-Tm0$A8_d;ZAeR z8NpT>DfyCrPbA`{B0F(XcuHWW0?@{TuTTUxaX&VoxAyfrGP`@%aMqsST)&?Q0O9NK zJn$`;Q=mZ#X8FuI)1Nf=6;mK@xVr?MW-#-qBO0Yq11qXTxQpSbe6{+#*nI`yDeefu zWukd-1XK#F8EGjdtO^v#(aTqmEHi1Kwik86BY=O?IjXfqr)z}T`EcmX)l&jv0|PO* zS#aXd%Op7Sv z{p3fG@rX`#sfmH54gLxdgR|8J)9c!C*IaBP5%oE0m2FMHB*o4#LOC2~-!{gSgy_k< zU$&S~L-U#9Lb{ssu-_n=1hR26^^5!k-9D~1mwhOM0W)bhA+h|SXi7tCH(guV_YVQ4ov6LGMRZr zzMM&}aMQ$70KgsUlTn}y0u+zKMEA*oa6=rPwpDS3>w{k{yJm~nT=*?O{j;QhXG0Li z6W9WY`Dw8|g*-n9i`j3*$vf;-jyx|7^oz>ZaEgGtwK2D@x9M9fPGR2Y?&18*Zh^_9 zGKw+$tAOk*wHs#K-aTrhZ^!0Pvm1C)tgkfP+EaQQ43jBlPNOL;z+GDE z_6By|tl8X{)&_4KFZ%KJ9ksQ z%>_Q6Ncr3tC$AUgSiesI_Np^~rw&)}z-{2#o|k^{_SK(=%YgD1u=Xhi8My)r%}Q|l zh3Zp&(QjA%F{k;Nd5Va5R|m=;qyd43bTQr8Bb_rq#s+*-zEaTX^t8h?2k;TTkie9B;TLC8)_+;`|o1P?UW879_ zE`6#uH;bms{<6qb^$$t!v&%63?tK_w0TkYlbZNR(2)-1n$2@}TRU20r7vIQknW!s3 z|2|=8DqHkrOAPSgr(Y|nj6SDIxrp?o<4i_obYFx{f^qEEo#BRGr^L4Z0HTZek)UjU z5ve%7^e57uB1B^ds)`9m0gH2^JrfdztqxrMeFES$peL{9^+vA;R23v>b1H-DzvqOT zkq^VCw?mvt{X9icx=W`h!G)GDUX0m|w#5TL*$9)2-{n!Z<}uVMG=$Gf%e;!nT!*rY z9xETb#^dc&eR`0?>TW@`f<5)0i@#6BKF3Ra!zWh6gQgAaW)MrSZus)h=dX0Wjl%Vc*7gE6zb=x!m$y|o{+9_k=EajOd{-E1qD z7JM7*mCM9!n+}ALw&T4SW8CPkUY#l-$a+bi11r$Nr#X%OWZJhbng=+x)@F)kdT!Mi z<(mhik*M~FOnLkLdv$Gj=vgZsooGF`UK-w>B-GvUP$Am}&&%eNlv4;}H=1q-oPU+x+q2yII>foGodqRog2@E>xZ}R@| z)pWZ`w8?R?B%J}dltqQF<^2=or7OwoI+S{gxqWb0o1G<4@4Hu?!tUo8h$x$amGCyg zuw_XjG0&pnwU$oQ);GR#W&QC(V*i|)yH1H}vBNRns7Np|g(`wVSn=g_OC!0hZ~p{ z9)s(H_>Jz;wAa{`>sePwP`l+#?1#uvZ|V5wbpe66w7O`T@}6^UmLU2PS(0?+L}dL; zFb|h?G{EFPD5&z;TivNUX3vHjwz+e=A{L&5GmET@#{|V!Q}9~RmP$SMkj`_DK2K}B z$j-Rlo(rhi20&-*CLI15uy(>iocRg_@3>OvZ*d;wz5w-Ib%f z8Rk_{>}4$r+-5Ks)eruv2R0v(ey`Pjg6vjq*FXU)iqHGC{ywvf7%4tsm|Ea*wl)}A znv9gbpIDr7Iwtkny@K{E9Ean290M>GStG7{AuV6KZjsGMg^TSJ?SQT|O!Qm}6Ec=; zmW#Sg1J5xzl{a4D7Hiy|jQfjPkX@X>{~ ztBR^5LQ5_@vkJiTK>25;smL7yc5Op5$mXaE;AVZ%zfNf8!l~C|2(Gw(Ukjcq`@#%Y z@9OU~qRWzXQ_09}h?F9PS(c{6EM8%ygl@6N5!Ljr@2@Ks-U0e8p5yYi+@vo0hsl4) zy@nvp+uquBxQoc&q$k+n^^b<~zS?-YqGuG*z5r^N?=yK4rrG?)z);|( z3H%%6(ml;8k#REX@+~jbwB-&Q@C({jEIHzc`R?@}a}g)A2E_Ap!H5TzRk{HQPvb1} zUg7YK-o0}oKUlO>iYSPWP_+jBRIT%DPZaN}QZKNBtL}H4pIJp!l!WeA88PKYxttZh ztx$-#f*~m1AlR^`RQhb6r8jVii;jkAU(SCLQx%?I?D%Gj@wf-I9cB9c)%GoCf#mc( zi{f;p3lDQZX=%0|{?VEM^qxeQNXq1ezz-!=1120$3VI$g&Au+5^P880z+#7erX5do zr`taxp!r>-F{c<`q)%=zq|80BgysxGKuV5$5H;%rq5ox>6H<<+UW#11QZmGB48_~S zBlaWg$A$IdJp1qv`T`Xj_-WX%jV75dNQX7TH$d|on*ZM^+4HX}c^~F%o0jM-NBEtM zd0JiwxB+YD!0^GXWiguZIRO_7Y;agH1k3{XU)JYw_Zm{w$5($qP}e`HkZm?&)3rT2 zhG&CvGDVs*>e%qIi7~7J7<7&XWPxrP9Wcsm{=$nG$=t_{GqCP+Rwmc%EC$P;GpF*}Kod8L7S%(5^4+m8(@+9h)8{|U^l9%x z7y&?2dcJ4sSLoMqZHI-^2W*3_B$d@XxN3fTO~-G)P$zd_!W*S|T=$@L!F_Vo2Gdz5 zPw!uyey(P3x=q*PC;2*%hQ}z_z`o`yQ&asvT&TwO{xY$h>)HpG`3)&$Z>;c^LD2^A zb)`!{MFep4Qv*OzH+TttjwdV~>Ge-1nbg(|nVFInCHt7`JIIwcd`F!MWQ+-3Oq+Hy zAT_b?$Uxu2ASgcvnX6bYiKRqskL_HD2bNN?i~i>`Ij4@|YORh#u6fGv;6}h(S%=Soh1AAJ78;Km|MhN7boy1^1tlJ?@zS>dIbOppM!L^C7I;QQqG;xxcR{n*ZxxW&D1^6Q9-O6Ndt)mXIB<;3s2iZ#Q=tqsw^P z7Jvnp0Z(^R#{95SnwP`_ZcF z=TBV6qiI|cM55ttMy%kJErf{q{)grPkjsfywSO`=$LYjeFT8`h(=;P&lWh68Ze4Ftm{g zY8YJi{@=SR;EaFdD+z-XIj1F>-eX@C%xv6VTP7E30;)mck%q2zlCv5O=;+0A(nOHH z-iL?a`W>{pf$M9iqTPLCFkJoCa}8m@T522|e=GHI8gnZ5DozM@x@AZ_xUH2p2fWgD z4I(3q9Dh=)xcNUC+jDf64lp3|;R1`~Mb|@aR5>ceWjKOjQUC$q_s1aabb&$4dbc)L zd<3ScI>uhkxefi@lw!r6unad(1x@5W_Nsu1B9BbxS0Ig8O^fW`qLYqJcZ#SxOrQ;pa(WvV3`{eKCRVu7byZ= zw}8bOQhtR^uP6BUO5DD;cHI69v?&#A$oQ(9^hc=Te&M--en@eOC^>(cIenpg)KwsG z1f=tzCaS4bi)4L&)bt|C@Utrjl$5q^w@gMy{UuFIk{jlCJ>Ew?F+^xAh_+-ApFIeY6hGpi6zL|DcYImPI~22YtfldKfahdQy1?@Um3IjTm69w zuY*jvIi$?yg4pj?!bLb1X6a0IO!|abykYH1;-es}-FW;{O|s~*%bXSKvn}LMLD;2? zJl~O+>-%@QVa~q4Qt35jkYz-X(jSQ-V_EsIJ}feOtXNKv8SHGjDiilcVpY{9ayJk1 zmmBhN@R%u^QGdUgsp*_ijZL8{YWlxMIL&V78lWMaE3W$HI#3N_c;l}37+9o$yv;-7 zk8EGlk$#Skts7cvIjplj_N!%~D1jbWP@M;rkT{dQ6c2$lvs@!EZSkArvOi?NMUvKv z(k%73&$Qh7-OJ&cKo_z8s&nXclW~<3-`X_oE_1Tv!o300-|Nm}GijB3;55szm9~1e z?7!BzvsAERslYHz8!(OS?I@ zuDb!RovfJ*@B`NRnq8g*=hSOsL=kt~hW1PW@(WCQ+iK$gpq!}5#tgOeEkwGls z0;6tMj#3VFhe|G-XtNxBN$G%YX&CIQV$I`dW+jI84>|sR9w1o z6g|3p2u}yhifZ2O`J-+Y7)*JOaX1qcDQACB|#r%)$toc<;E ziKt?Wm%eCuWXtVjHHVhwY74%9f;@G9>?~tK?>ee1`_<0eaKfc|=Cew}j2pIuMytDTyBgjQyc5d4tig@aa@og7g$g+<-;O zLr9o)P=zYmb4Su9DdcgseM0|DXnjMLsfU!~@wj#Ku7uTMw**eeLCs{8-vkXO8xr`l1$Y`6OBRvSlGOz@C};C@Sd!V)t&CY zB^^Bm66P{7zZ+Ms32w{dE;mwPQ428uD`Kl76~afnf%DcM=-ZCkowQp5>Ekf$#+F9N zKhb(6lE9i9=DjyHy(=7{ow((vb*EU0S`HJyMtt!-yN%}Zd-GYU$u*u}z42w5n&@u`A$p_sNJX{h02tX^Jo+`+#vDV$*xFF zrf$VnA^*EkZkXkGCXT$6Y{s^0-mPFI#cr^|S8o!%{7Of~n~cs+U%oq;1%5aTS>%FX z$)wrAZ6t%i?_&^P=pw;LBDI5`(gB@pE5$7tCBuDjNM8>ZJ#yyFkvzc4hryK;kX#iV zPw>7DIBqh}Vle4(u<4hGAQ|W-y`6E5jpE5jYz?wpiNhD1NKel6-oEZkX<_$2{s64a z$NwwONgM!rXb{W?ke*5lyc)b>H(0(ne)?K4fTQiP?7bQt!9v-V%k zvd}5|81I(alRz^gm@laVnqHs&e?yOCch9~j2tvCbN?t#^BjGrUp@j-9jARrEyC6AD z07gk+(m=Zf$NoT&DU(8`dQDcxWIMq*xc6s8-1;GdW;RlRKY-BUhi>olupqI&>B4(g z9W*DB=mn>8V&*1oMO6ANi%^amf&Gm#T7~hPt56S@Q-2RyP<{y%2Qo9fR!CJSqm=ABcx4aM3p(I#kO(W@Y!)Tl~<-nUvYXS z>~bi5a~+WCn5i=3db5FEqhUE*f{8@QqeK5Zoi+#JLbJ^9@PRT*7{=d~`YR2nRVD5Y zUhkTHO&Z_2jOaYLCabOI#l`M~>1Hl|wv)H>q^Hm@GXFp36fdk_*nI`LuD*hQI@apT z=L~RJON*>C`Erp^L;`hY)OGx(1%Z?i6XEsyrjcpS0GRcf>(g|GLMYlIG}b+jgzQfq~0wc*3=o7d#A8QeCw`ed)ya@OpB}l zS6#&Z>;(WjR%;<|LLlJw-qJ~)%~-nT&m&1C>YVKnK2r(46iD}i7#ny>0b5r*)bvdH zGnvX5wAbzTJt1v>E(sDgHUL*wwF|?yg7#-NuhaldKHXGkY)|;ZTvrkP!z6K2yjtH# zzvhdJmo5xUsam-OT!oOExB9&z4ltVKI?2nD8jWDuL&!cwRMZ`QRL-st?}l4q6?57u zx{u}MU2^V55i3Hm-sV(3H}};NngR1K9;kEzVVOR|CbLq2ev2+tRx<10d8eHP@sB}2(qOj96g|5GC;tMmxwT0WGOZx?; zGH0IM?6}O`-dZKE;`Z|;JUT0N&gRev!GM3Z*^2ZGIFoT#@AE64x}a-np{5L3d63pJ zweHMWDL02`kkMjq!vIv$JcxOjvYHnMKqMpq(yToq6>8860gYZ8j>Fgx&sj`A)#R1* zoXm6-w{e>tau-E!9Tis$Jp!f@{!=%70hhQMCupKi?@sEdW}+>L9K=lLJD6iKrE;n* za|$n+z8;+I*eRs&d0<|?briewnZFLKGDkn<4_FyBx7_vwUhhnFwId}lCx&HT7y%WXL z3C`6>{MlnXvi?x94zekH!8S~J@KP8}$Bp9c_?vaV^z z6{ZubiM!_Pca$FH-A0C-k8MWZt(Z$|2}wsV{*ByCgg^0!`^M7h1OZnGoO;g!Kuv4iCcLrCc;3Z)K2Wa<554dvrT1(H(nL ze;scmK95$j>1KGoCtrgoJ6u#w`*%zl9ETMjM+@;4v;EBoEUeKANRHLWj|*>P z#Ot~u!%__F z_@GfK+=dFCO2DB#ssKQjaMD%#Y=-!=FZTqFgq85{$x*vuqq*O1vppc2=J!|H;sRlg zL8>vXC-Cxm@}@d7&0EO$>Ti^pVOhu3ZaLs<(q{B8am&9D$DPn-^GpS@?k8)3+|SBE zBRLo&S=NaL#sHG#hgnHjzI0b(@``0~MB5C#@x3Qxz2C*sr-88|cq?87)|(8Ow}}nX zTVmq^aQk4=)*inL9+2xLVLW)=#c6Us@yLKd)-{QEOb4sBimDDR9YO4^PdHsw>S~ne zdYM|J@8o5<0t*jofEL(2DyDO=Uu+frvRl>Nn&^^|D+#m9@rUtv}=OqA0`mGwgT- z0Y{1tA4$|#sz`)qG9tdN<|8w>{I+llGp>6%qhC-v5FXTQeWE%bc%II zpIhWH1>8;PPByz&DG6ptwFkxqJzCXpHO*WEvWMjg&Zfi#QgnDt0$9P7IN7UO2&(cm z2T_^MV8>JP4=~h8SG{I=mB;S79UqzAa@x6CxGTE8Q}L?Qle6=(&q?4^O#CsF|4|$^~(TBaS&x3_P6m&9Ph44uq?a^_-HOtiVsfD;%|josJ-MJV-IQ>t%#M}JzH4KbwhB? zKI2{Y$tPY`g8yp6sxKT>kyhB=|E|{|ei~}L6iLD21v-JT!nYDn`~P)=kc@LigW#Wt zx@--SJfiQmX-3gOFKSAdP+cDnGg7}seR9FCsER-B zB2BcSF@1)Yzt+9GW+MK&*E+5~Njv5hijc^97TWRXseNu4(+w#(Ap#-fu7MU?e&;pB z(*!D(*Pgr#*7!xZ(z17?QuJYos*r$ArCd5I-l8Z2Y7CM8%gC8(Z9~CDsjIuh9!-S+Dt?=3stKj|BCig{23Fxy4YamMf|73k0o7EO? z%(h-U@SRN6&vhCb`h!#8Sei{IbL?NyOC(J+Y8fDQg^eXeZCY$s;^@d)X$F5a-8e z)a|Z#B)mY-0F6!u%4jsQx@RzMcL*^aT$fJX8GM(n6Cx{=f3@Ic4(8c)lc^GZ<5bD0 z4YY{}N0?5zXVWG9X$keYj)<3&Uc;l+G1UlHT;7K5LQb`;dK8D)dpmfc(C}7RK8UC1 zzp!yQyWhoVV6oq;vUcyqLoj85Xic1xEc4Lj4RQ$diQKIjs7jRZZdATO2ilox1Nv$+ zEcTYcT<0T2+_V$$7o-Z#U`2H{1dThGF;%m05NK_ZTh8d5&V>H3P5p4j>Q`Aa!lVK+ z)9?gA`7Ekk6gL~q@s{z3h`@G>ng9zUdK zQO^wDP8{w)596#ER$lDAC#;li>t!s(VHHnfTS>3<#Zni&gb5k7UORaZ&x)wMFjjDS#ozQ@0r3XNq>_< znLr^^ED_9CJq&KRw^w-B_)M2?hi^&ht!x$p3j7B?laziwj2{(nl({A0Q&e@QlIUTFR%$rlTFD37AS;uSTco4rW3h=e?XoDu z08WEL!qwl#fPQXo=SgAUt>oM{kde|igc1i4g|HsM9mGO- zxYKGpLJ@~NF8{525_QP+h5_zPjjs&>5T%v?S+L4Ipm!rCCK{-D2+;PN{<5Dj_|Yu! z@z^0aTH37E!ARica|(4OBEEHl>hR)aqcb&zT5vE)!=?Aw$s^(S>go<0R%U}=^j+*0 zHyWL9m-4}`TtHWN0C`xVarA_s;^V(@vMCPiDemo?7#%fP{86`1vvJcp)QTxF@#$rU zL1YDm@zwvUJ>qxhPr;&zy;V}r%Xkf9yBymfd{KQ{w5eC~BSmvPafAzkL`rmI-_>IB zyJ7aZp43)hX>qovHC_(aW~&)sf>YEeb>u#I8>@(n)HW?Y#1qzY8Tr| zo4;hC&x4pXGX&8fTn|gqa6AX>9aI)j1&-%AiVxsZOYG9TvG@_8e}Jh{tkw$wf@v45=o3K*9`Q zk74t+{m<2?mvgDBZ8UF4`gdvCz`M>8`NXtLm2I?vwixT51DYRig4_Z9&~>^+RQqTf zhGUiNK6wOidi9G*@t~a{ah5_`M!8HeThjW97EIJh&JZB>-4716Y;AjYIQf`O*eRKv zS{V{tYP86Vk!SY4CFVBw*aS%?`m#z10(6P!^9MFidIGY(=Ry(4#--d9jHNh|1@>fJ zVV)o7xRknvQvrq3AP3}E7?olu(94sSvf9VJ@&skIv;5QV4HTTu{LL5JKu??fXtm{g zH3^%C@-`+H!7!xr-dIGf1)zlNwp#RM!<}YP)Mw71TJ_T5KM_o*JWd>UFIY{e*)D84 zSa{>Nu>H5(wSbe6irBH9wf>@ByZJu;Hh_@P9fUf7N6)^)3b86*TH^W z*HIzxB<~MJuA3pc5s@kr)4Ht&Z{!KYRf_`;!jXV_S!N1i1s+DV$A|S7GgS95V?$A@ zRDj{4PwA2Q+o_$L3Tt55#12MXl#!hj4qbr^HBK&0?t6E2e15({n-#J7L8u+&`8Jcj zu$rp{tTH~9`|PCFaV-_=W@NOsMZMwIrpX~2rG1omu}9BS;8&Z zM=%#4)#YN~NP)s5GV8vl8Eyz1c<1NqnN-d==ICn)`+{a=XKxIoA{- z)Ro!M_eQv>Rhm+ zsa%6PLx-U%<4Q|>!hO+f^4XSaSx+My_cr9B3tEuRMw}7zy?_+rQ`oVNVaD_JL=K-7 zp%$%t_(AjfehIV~)ovgJ?P#xEweVCloA?zDBv<^`#+oB18FiS7QrxJYXD1(D4%Bq4 z1ag=S&?gWvWQzGChx@?_2~O}@n`20yB$UoyKGfId$#os_fqZGCG-w3c(+GEg9|Rk3!lU*YRJ-&oXrLiegb92lp_$~Cb6fpJ*MCPylA zs)WPiH|!S^%ZbZ@ZOBdclJ+8tTam98fePwG_~Td+F%{3l-}(3_v;RYi!bnrk)7!TMEL zM}VhZGri-3Wpq7wd_#cu|A7@0L zYw|;h3t6!29QNvJr;cLP28I}h;S~N9&EIK%_Y2t8P@5yG&`bt-`9FXp*yTfoJXGwS zT{sXo`Oozlk`tK%G?Vamf{PeRB6#fmt|Wg-FXSN6MfN3~lNpxKl|5anGPCq27=P+c zNPJ*TChpD5vsqlZBCdQn*3Dm`VK62*kje-r$o#jRQKK(joh+BYgS6>DebD8LCpA9f zyzP>RKA2vxZ>Ss|!@5HXSf-wH^<$ne@HX#oFWp|jjs0Cx>PfuU{lGO{7p%_sLx^Bg zCu;BP>wU&{$(@5T6UVrz4cV7g&vWqXK4~0QXt#4NP>_jZS;5V6M+)H?(V8WphA#zt zs(H)PV#v~{vD1!ke5?ma@#_T@8u-W>50)3xFk7zg<5W0nNOeZsOw$5nI_cKdRJ}Jk z;M#c!q%Q0YWNB*DsBUL+%?Q9ZQrVbq;ic*e96w&%Yp#ze+;CWG^f03X#77VGOY5UK zFTfPr%&OO9eAKINOvAny!l*fn3gS&$KvvP$cfXWfd)VJ8d)Cj@o9Mxmivbnws}s&D z{Uzs`XiC~tRT}3+As5#D%i4EbqL<3mziB(Ygn6-%&X~z$%VtC-6#2Y0m_y=rp(+ad zec*?X`#y`O<4hmW0=6X@pT%|tid~A)=yn@iZbcnZO&7{LrINkH8S5T+K`64jmr~VZ z!(i+kt7IdKJeRDT?F zTpH;rNr}ByPW{npyrFV1Io}9VehnQB093jt%cu35L+6tMZCgTaS}N?gA0ByI=cM>o z+mDG+nuSWm9Thty)grwf(`VB%ZO@?^SuVN$9@EkC7%7aeQ$5CZxo@GG(REU85Cbc! zx^(g?M2JIElUf1~uHWroLheocXwoOp6wiG#+2TBuVlhQ_7-rpIlA6|l+8q8=vp4!$ zGYHyGih+xG)nzc37j_L_cU3L#ylD({rt6`aj4MXW6(^2W?R#AdE{x;X>?Ya8ACc8cwVvXD5aoPZktR1up`U%A%LrP0;+QMx{<2L$EU^O(giKUf3R1meIy8jKHP$5W0N3Q1tU2ZltY57C#)V{H_< zbAya2v3g)wQUO^*?=0hIxaB=*paan|P$0w2NHz3DwTZCD0Ys#nW-l5^{{9IlR_Btuc26A{n-8Td|zr@{4NyG{hB zI&uHDTV_b_SX*R2p`Rbfm@%X+5CdnFQ7o)odJ8;|^ll?sgCLk#gz1lvs$&4@Y6tWSlNT=jkxoV(13L zjC(r&^r>qdY{E(s7ZIeu5zPc~3?M4M5^`CbU6LRnpYTZuu z20#4Tr*Ih4q}+W+8|ux|c;qPTG>WYhdU|i8Dv7XyW z2^L7j;xoV7+SOUbQK`4?0m=n%&|Yq8(UBk!-VDq;@Yik@(R(W^Hs#x~5A8q7$w_ih zUH*xo^J#|e7XV+DdHD`*tWHQn8pLTI3tPDKSEPzAJ5JKfp>KadUB;t0LleV^)o<|{ z0PzDjSW|7&KQm{+q><0I5pA9zz=7YAQtzySr(;cy=!<(uA`Wi3I_B=UP3?O7ptb!I z2Ay~|kyimOXk5BA|CRX{wGKd%Qhvi?^??^Y5jSE=P%~(K>qF%^MB;?$8n>U{e1?9z_k;il|wWOD(2h=)W(Xe zoRxiY*M^!-oyJ}m5ayL06ytW8jY+==_-Un(=0%DyiW~l6OS{W?6%e1QupJ_&F zkHuSN)10F*OX_mF8L9%TGERn^vKmQwq?i~yJPQ#2a`bm zregdTNJnCF(BPv4_22Esx)Y}Sx32XqLZ#zLRx>JQ3s5EiB(iW`JGkfNj zgEm+9@Rly~QS??~30HeZx2bb)muht4X_sH)5C9tUtvQ#_<;gQThy(e0nr-?S%p*7Sf>ft4d_Ym8NN)Iz&U-ZpQBGPrfu2 zG>7M;S5|M?GR(h6qU73i{mVtz2781^gYuceei@4U!c8}>NWyO)sdC;mg|7Jt#mqe{ zG-3|LJc_DE5^NB0U=cvm12kKFbSBUcO@KVzE7O+e`}5N_%EM*_{iM&*4t(FV5c6ex zSh^HxPpIJl%*|~}gT#Rcj2q~5nRHU$K@(|No&^FsiFJ_9`ftl#3lcURcK+d*_p{;o2Seef%r|*eSa{>MI0TmRi0b4r?muy@v|n|PYQoP4y&YJxb-AJ zlcoyp%VkJ92^|5Elnk~@bYIauY_>{@k%MfWnun|j0*~%*c=&$_M9*Dm?D&yhiTWs3R34efWZ?)uM7a)4V!S8|U0UVZxSnB~1nC z3r*>DXtkBwM$p&U}ZNO>snu3Hvy%I=lS8gK?wdT@RIR-3_K^h z2!y}~y_4pfhcc^A(0YKKYHIfX&|~9#m_DOKFHAk~x+t5UCL?7r|k zE4~sdG^r_yZN>B)`ZLKO&mKy8g!G*xmAf^0X$2;JHF_Q%*Z20uHa{jAdD-TXa4mp$ zP~yzzw8p~FY&H4M`DY0%X0cp&SAUrww-=m*vNbf^vsECdG$O`@l*RY8rS3};Z8d)p zYx)kU?8;aLvu+V@+>KFoJx-N&?eTK7+M8~~xexhGW!?x=TMU+n>|QS@J~TyG2V{}L zL$O1z)M8NS`(2J#xaI{pvR<~tgsxkL*|{G=1K++7y_1#$JmV`MySX^4Iabfc|Whgw4Vsh(sC zNlq-CTnp{fs~4}dT`OptAqLbPl$LNXlp>RrvWvhRCDQr2)=fr}_or=QeNlgXoE!L5 z$Mut?dEhY9DhwOuzxknwemRV|Z3K&(In0`v3|6WXuWr6p_%YW3ehYXt^XbUu^dzgc ziF}(atVZ_v4Bp_2cJJx^j-g(Ce4PlvqOc#A=bm55(XDB!z@{&}?4|#PBLybrq;R-b zbSf>u+2ykbtBJF9R=gwC5}vM{aZ%hGU43?R5Su? zxFji>sNDc^j~`i7QoZUKa*`ky!46k!1-3iBOv?LoPi7F-$DXt${ciT@rI-3g=Y6I( zscGdqAx`!3>DcC)WI}GpY#W+Ag^QwglNhP8=?UO37S}iTO-N<#YKhz;z0Ex`T$qdT z=e=TuP46(8iY1|e3%BP*%vQUT_F4x6(`RdGpU+CEJ9Y4fa)J+XI+V#!eu2ZUjkg3S zupdm0aaXdc6uXrneV;w5a3`&}P$-!Fkp00v8n`E3X^{A{>>`wCrIqFPI6lHye5IFD z#+jjuOxk7++htljo>^v0`MMH~Bm_(N1q2v+v-jPbu=?M1H68;;H_2Zx5mAm)NGoJp zfS!+$Tjp-7c^S2buxp(Y+9cd6-U>|{s4MS{BN$*p&D^XQql0a;|_!(hQYg~79)fq#*QR$hKYEqQo zgvZ3U?}$bkYKy}VnIl+>F zH1U!#EbnWkX+5p)l)NBaP+Q~cR#_8)$_Jr)jx`QUOEYz>24I!fCA(LB5PW1DEVErY zkZaq!;U*Le!X&ZWxx8S!ILOxav1~T4qz3*|~{m>rJlt|6@s<77jo(4NVo< zi4+%o0san{RN7!h?cqHiDj(v=3h|6{y@Ya$-60NaIXlxad9*a~Q!@7>V~r??1gWJ< zJ8y#G0 z6K>`S#C1^u;BE=`y97lv9%65XmzZeeF({(ol7$&gNI@IZpCm@7vR9KiLy+95fAGCN z_A!&6CdTSCLv#JTuq**YNLmyrcwM{somokmPlEqdHJeF7V@t&rD8hfzMKH_M*y(m> zRaWTcUkQZ%P{)}9U%sL5ELe0Fkn@=~@o!C?XBL>7s+T)|ycHpgI@>OaW zW)4(sLFVch3{vQAt4Up6m9!{ALKP=F|kEEL*CT0ZDdE=s6}Y;%whi?F8AHiP=hsv ztnTq`KL(Yf_R*R5ll1p{0oaBr1Iw9H_S`|)?qy2K2e4@$n zpsNUdG*g(ZhP_~`A!&#gu3~`FTOwldGvjejUzJkmI{&d%H~+aw1vT`Byue1KM?nz& zdwo$F+w;3T7SG7@FZwqM8NKD%dzp`fn8xDPl73C%M~nGAk=tE3hO?D zcd|zC^;4i1iEh^&4 zZ5O||(Bj3KkaN3}yze)sf6Ib7lR*YTs%KsH2}a{a|O8zKYsTD zzt9ms6R<{rS`7J@m#`^q`?T%7!+@mp!-c|>t|89LVZ_155L|2XK1;k0+t&dmlrJLD zSv+RK1!%N2g$EuIWrq`|9+VSYS$+?rEQ$wawPi452Hqc2NAyUt$p-juj*P;Wx-BM>dRiOaqR#Fo1@&9uQ4KKUN zYe9Ou&h)E;PoNnCg$T*7h9AQSn3Stw-7RkDCNPDTR0;j(e71rL9E3GNCB(5R8L#+R%5|zgiho@FZjdi*8X| z?)m>PnkoYh;XD@D59|-j7M+L*zuA$`IVQwXM{$N2T@>Gzp|?`W^V1L8neOLO!IDD# z_#5dae1D?4%Dch%XTm{^p?UvHobis$LiF!2np)awni z`IJYASVoNKexwHcczlV$N1W1o6pmDoJryI;jw#w8zEk6CpAoEK11|UPiohmV5G9G) zb!uX=lg~H3j^)A0If~<&lI9b680B9(M(EpG5wtQC3Z~K^YJxxtSe-0W3r}T+advIB zHw1eTj6KD{nM)f;C1XhZ_E9VGB=V8*$&J`ru?$_k3Ad6#bDr0&U-J@!qB`uPQw^cT zNK*Oz+w_qGX6D7*gx>|(CO+j#DQgQLF=oEJ&+bI5r|^{1TAe9T3?U6qA6pM>;qOT} z$&j}Vx@2g#wKpNYG$U}1CJ!O04oPg1Crq$oq@^7zVB{6@idCW$0q2-H0!5 zUNQpr^i+dk7F|&+vwY{!zv%`sza*u-!8#9P2N*vNnG#&F$hEG2?Q;&)%_KjXX_RI8 zlU%s2xc`lNT7*akK)#~7XJ}ree*l(n4E0GX=dfYInh-bv>oszxE$o1H{h7Am-e`Tm z!cacVp?)ELKRwrrlXrk`{1-GhKD0$PRICkRBEX{4ePoW=vmlk)I2*&S6@QpF=b6@u zrl|=k&yoN*eJ#9I7DF6Ph#-OAN?D&9o`fyx4n1HWaEMSdmH?gQPSl}U1SOfen%9lU z0g=mkevvm|q$n!EqZYL!OXuTT=janpGgHRHwYGR-s@5VoB~ag<1uc7xVrI>@*|HBf z6Q}!FiO|KLPUb{@CBH<(z^rJ-;X!2f%%-9Q4ejC;3=i73`x^jdPcJ(60O{ZR18D5= z{omD$rNr9qpg$DTOk6FcX|lcQiyFPQgyoiJ4i}yPHOh6PZInVNyG-M)j}(th_caI4 z(=FkDmMWKCG`PBB4K$C#=M)Qcc@Ci%H(i<)lJuV2&kDZD5uOu_H>q&j#RI%nHab47 zW-jKMX}-+ZNr_`H!GNUlzMT;&qB*JSHF;_?8*^Hf@Ly5)DFvEeWW@MYfP}%|Ac$r+uSL4a zFLBB>>2nBqSBqJ<)04E-8Ju);>1D9{^t_HEHsFn5grW@4utC?x(lcxA2;?>&)Y2$s zs24SK-?w-A2qjgeijke&(>*Kb4p7y`Ox082v(w?s$*jV%rpBW)EE@|b;Igdh@+ru0 zn+Q}zjosJ6DD-_fx-R`r2uodFeAENo+@b(-!@ndwa*(ScUTqwAUr%9D{3{_B(1nI& zuKT6*05Qh-g=}YD=aWCL!pUkf+Cthr6$r6aG-3(cEvVPX0i}asr=_S6^1A+dVSsxP z?jovw6YXAWSvKOl&uzjR;Skp+4AMn0qRe>B@NoB@+~(&YvwLfi)W@GyLh&sbj9nst zZ22_K^!6Xchv^W(8+5dlUpe{YKDK{jRT6t5L&y}W*W)h^fJnzU|k=s8LWq5AP- zdV+Gf{9&i;rRtQl2HP1VhBttE+Z(MJ7Qeeh09wnO;0|uq&G)}ZD(zScomyG%&a;o>v1AM+>_DK%T94;^tDTiw_u* z<3v2bXjhaffDNWy3mvZTS=ll%FOzD(2*1jeIhoQf*t@{=kwWoT@LcVj>jaw zUOu9@rap!MYEjvtS#+8nr&^(dQynrTTdFX1vc~h#dZ(m7xeZviYv=G4&6g+KZ*S)O zJ^n~o%ASIp5kkSa(cX^v?dj4xB+RVp7hJECP&MhY0u~FBBY?jsXo8Zm=dI+f^&)T-eW4?_R+N9j)h zIJ0CZwIFX({XdC_5J5oj(fLb?&qfJuNY7k}hN3o2{GJ)nyImkzB z$?|v8A>t_@vb1jou=u}}uZ5%{;KPa*m+O_b>!phWfi#l4OeAVAJX8lnlB3g?_BDw0 z<=N%dl5|UB>jSdQ@Vp2-wfo*mZ^0Fpm%1m_L3!%9;LpkaO@`OiWj!i&$B1P%^z!mYUHEqwQ=uEl=)Z_w z7L=IAXVko(1wtTD`qZ|AHL?B$m{*`ds!zwq-%HtHV$>J$lyp_Qw}EVJvD}<5vg*%Z z$Ah!Gk^XAOVo)d`IgPzM1gSp!Wg#`JSTqW)&%XC@d_g=(OaAw-V#OuYX)5oi#eLIq zg;4CT;0I2P;wooO#rN!nd6ImO$G0bmOl=*+4+Xcucg=#@7-bWpbiF=9Ou~4LcOh(RluGhIwaG!Wii(S}Ad%V|qYo_))Ri%d{=m#NkUsn0srvw%NDoDqB(@ z9hhIsEb6-BeQcmPTlJp#+qZ3h;B7L^;#D zd9VFphZ1e}%+o0;uP^aLf2oqO!BpWwVXhpw{g>HQpb20b$Fkt^-OOp4%040h5`+mm zEjOT8^9w3lEoohfS203UQYwfxZ^=q*zG3XZz6Zg2ifGX z+4#oZRCBI0l?tR}o%$nK`!ZW?O4GIB)5v&F0WG@vo=>0tCMCrGd0?+ zCC>s&(h*T?a4l4#3_*e-_t~31`pWlL<3sgS+glS&Rlg`st?k5n3OPp9;Lx120BY62 zqQqLG7s_wyS8KC6s(Dz<&+v*K@y*Q=9P=_Pd?xA6>MePp;hHdXe{i z&BThxYMNEU0c>3!(68BJ%!L9a1Mln~^{Pc{`l429=JjH@*Np!=74t3q}V ze`}w(>uU_1nC#kgP=yL4W`wbY(>mQSL=jxnd{v!>3U z%%9Xu4qc@}sPu+B1HPNLcA8>rxHGLY=Pc2fXz8feEqPA3zuw=%p4MIt$4+WB2{ZFD zBkj%oTdu4JoIM^V=Ng$crSzm<&J_?A<(JK5cEapIodZvM5(P?2A$7q=C ztw;r-T?%b$d%>40>v9DKK9TL!HAbK)`=5GG%oM1pFy)mHl^KHqt~nk{tGx6sgG+K3 zVrJLhIs6;5^$RTL_aKgk8Dl)XNxcGG6Bnk_2TMpg3G;s5ms3R7q9sIx(NHVbnSIDjjgr}Uk)Q%-!?Lq@EL zr`H9!aEbedLAqLw*tcr|tm9TVGdyS|rV2c<8yNO;44AKa$O{Mpk2CedU-f=E*e+yPts5|WuFBHoaxur8Kv@-z44MYd^y>-QRd zNk1LMdlXI}=*trY2qR8RqG;9~t)djqE{N2DY(`GB>R5wSvPhJv^<*d50d-tj^F;gz zbD3JtG$q5v5Se)|NfbGlYnhZDWTbYh9T;bx;Zh5<8lS0svIKhU8_Sj5GAN3jxJd41 z7#-Dp20k(r$b`{?K5J}Sb%d@uYjvxx!RS9=&6AtCTsz^X0YEy~{Ulc92o8*)eqrkG zNAP1Db-`3$>q|*BR2%Mv4GO=^_z(S0W0s@L5>D89zx9tUyG)wMtv8p=0(8LDY7nY9 zh`w+V_;?3DKBf!e!`8Y5Fy)g_{UV&(r6Ab0YNjQ+eM%_vj9O-n8OnAJ*fL=0oih$J zR?DbHb)ib`S%vt*3%_FPWz197-Q{(DRXl!OpLx0}zSC4yF+8+YA0~vkB+G%_x9ur_ zRoSE_$O>f88sAIducB_V6OG2Nuo$%+AJGS!L4OyqcxXvp0d^J z>gUd5r!zyQXPn(i7xVIGou|ePn1t)wC;HBBN_|61fQ{$^f$n=r}z~q&C zsc9hfpB=Qza=UcaYp|;!5|*&|KVHj7#Z2FFZOqzyU8ry&hk`lfZyqvDJbN8M<`%e8-}#B{b2piF8xH_J+?Gl>dZjWKb#O%TG8h8(p&ZLz zR;iZ$wLz&tA&+~61y z2aSDMkTmL*=usQ1h&%7ezBN1H`AD%8wTZO)>?HpigNwuu$$q%PEUc3`w%wS2>H$Lv zHGLj5QW7&i-$8P6E1Rt?latMNZ;Tbv$A@21=G3~A{UE}nRz6TsnpBEtzSxLDkn;Ko zTvnEi4Y}HRP0mA^3c_6AkA&IAmuSJVVYRM4WnsJzRdpE6KQiz>peIpoO)yOUoDCMf zufJj2f!&;r5qIWlI1-eX5XEG`noBrx@_~)l#cXFm{kIBhTEF@Vn;A1(0Z;ppdW3$6Iv>uKm#?V zXW0|0S`D7gu&jGX-Lg)wsMBG%!W;{As^30&R^wV`gS;Nyr_c7H6H$V^x_^&$^#Iat zp?+99exHuI9RP5<@X1e&3zX1X`sDarMQV?}n0gx}VxVTo?&=PK{Tt*z z*!&TmJr`WMvC;mBhPpj7@R9~?%g3yWrH5xqF+*ZF@%T)hLSRF_qn%=((gwQ^&(kA4 zhcaH!eUJHAujW!?*+IzM6_pCvV#%`Ek@LcbKz8Km@yMWl4o+(#@p_8{%=}x^f^o~D zWK96fpR7q&hr`=q^A&h<&*RIA$st7jb*CDgW?-9ZjO)t%6|cD@0ddv+7&#J~fBS~k zn!y*%*L4`bDtP`-Z6&%`7-0eRfT!R;qi@M;8kK2Wv%r3r4}Wgr;P+{uRr{o;8PKis z9($!ka5|xn^7#{k^U3XcC_hkO`mxWLjtp@#SlP3+_;GSHz9FimNYl{xlycS+Y??0UmE`1d0UJdGB@1nM0}g^G|vpBZ0J89TD$2`%h%qqI&lFR}u@(>}=%?SW2&eLVUCB-qPk$0^G zTcxW{92?8Y4F%IPs#&?Q-R$;;ZUhrw6`1;vy~$>R^VDs-ba6NEfo`Vi0u=k>f;n}U zFl7pY_=tq(KKD>FT!~LONDbQUPw`8JO`3E$yFjlibvBbiU^+RihXktQz0D%uaG=oL zQCN$5jOqvI+`BCd6rJP<@&Q*z2oLvjf)Kptq;GP>;ur&(v_wD3Up(ol+7ttvG)!wL zN;Bpm6rW;fQ*2&K?TKQsIwt$?<2V~Fk8XXwz{e@v%|AaLG8-`f!m;?o%nkk{Zg6++ z$lfk7-D;hVbAF)Zhi$Q#cV(pe)`(o8+r6vVyzO=pTPi4b+FMnPX}q3pVSCr^E_el7 z$=VmQ?Gr~OqUR@#vuAndtB$!yNr?_J>1fANuHtxJ`vLvOnsM&AAJ`7xtR~jX>y%fv zU!7rU+JF2<47L}0cX!+cqon4vv$yQD(G?skPIVzcG7PYSkbZf;ln%NHsV@c{kZ{?& zidbCJAL4OS?`gBG1f1vwW0Enr-G!{fe#b~oy>?7aY%%Rs(CeH(J_45h1Z#lxn#n}G}GIt z%s{E4Fe$&qF=#&6X?vd|45oWA`n-8^$XN7?_B}i9b?M~*7SEJqE!1**z!0GXQU4fN zuv-{5WTg?7m0KO$!Xyvfzn5_kW@)*t$}~*I9I&R2%-2hCw%AH;_p;R=UWA7`G)hkrxotAg>kYLLTj6qGO?yqMJna9E+?s28Bza?Yoj###U@+p^f&~acv~N?ZI+KFrUr#$0>T`hh=f?6}lx}mSF#@Jgeq&~rlSqd6F=BQX zOf6alzMWiq2b?oB^kWEDh?eATkKtIHr%qRFAp4+FhG5Y z&L#$L9}n_|UAE!+54aT|govch_-9~v!C!rVcpe3l=&;&U>N%XvLUNog*(u~Q$?!$J z0#n;QOXk$&M~JFdPJql3pM(yvs=4pp>TiGYb5Wj1#k?ft{GO#mRTG!W#!r|Gy|E}% z3C)d8mR_sWIpLCDIIsWCcRzxgE3^^^LuM81-j&C?4j*8WG?%Io@F2}_Gx9@ZJSc{E#;wDrD zVV&U22i%FKz(w|@P=eTN=tx&(=!HZ7(&8z3|U1d1;PLa{pjw-Dg0{jS@t8Gt)p%u-PSvt?+c zyAV{w4$mRxDpuctu@bG}Sv_Z&>=Uv}^&X(}(8G`1OC#q5>Bo5qhhq zM}pa9c4l&l%~fo=yR>b6tB{yC<~b^R3p(D2#fg>dckKjf_xxhnMM&*Sf32AUVn=VV zX-o-D9_g);ff23Yf7$c9LUwUpuUsT0v&FgVclUgp_veY=^M&)~LnroO>S)d%jz+mL zoDqaVy-Ae*wlb+l>l%rtEf6`z(<%fZ{n+?^CuuQ@r{OyDY@R{(L0LIUWjNy7b_T@$ zj3r8Dn*CYF?;A;elEUkGEN_5p9Xo-R-B8o@e{M_}s&wtWOQ-!dh)w@0{&ru8orZX% z4hMM;A5%dPTkv1QXKmG_h5U_{qtz4f{zUeZXMk}q5hu99JnCKpVx&LbB>BdsreO3c zhQ!EVi50UiJd|5hP3BP)P@8FmS>F_{mO&(agm@LT_YuQv4Ej_jjU1$YKdFVjyJ0L+ ze!Mlt*^=B!&I`?P>kL#&eGIOi+-&Pyuo{_6mTrj-T(6+}i9kmM<#S!2ek#XKK2iN0 z?KwtPBZ^UfF{yZtICE165k^iUa0Q!}T*8)XE$yX$H|2Fz!jA%DFxK0MirYO`aSi{i z%mbpoQ?61Dg_?)Mj@yR!=5Z&Y0;%v)-H+NmY0qw+qeGN6_MyXaVK77f7MlKi?H~eC z6Ivh|#WAom;LlvZN`rl|SZJ0|_h?PznpHLy!Rhbp+6|;jD@0kHWO5dAI^`Lx9)zAj zb4g9^@T-z0e1ZSQ{`R!wPNBWtCTd<>eQvm}y!th%M4R>8dzgKenT=_|okbgjUUujv<&LbhsbwD!ST$ z9q6Op&g63#trDHQLx%SP*jrKKd4CgoG787owe){MIv!FRdwsWbJBRHPc?(qOu+`+* zBQOsNz4beYg?0_gOAslQ0$+=!4HuVu!B}D}CoB5i8xGsT){_OG+J4k*0mdBd+((hM zT;^g!6Y590AM$)bym@!%rmh7U7ccTcRxyhogS|3rWmT*l6m1$nxV%lwS~}s*NmU0^ z=5i57R0l=${Efc@Oo$_fzCr3BTEuaZ5BQLUpdT%}*VCC|!10+q-MUtJW2C`Da(Iw~ z&v1@lW?fGaDjph9U1%W83> zWDl)s?QB)UCL(k&VqJ{Cz4&*7*KQ(Pb9GBlnZsMNe?V=KFqAW3hjRa$J)3KofgcPV zuC6PeKR8KFLiDgehQ9BSEw4U7lugJ8rpw19uEl>zq=x^=w?tl8ngi>!BhTJk!P6l( zuI;QQTR>-pF8|kWLGzBd)|=XPHV}ALh_c_f!lSyI)vAsj#%7T|1|bZQ)q-<4Hr_t) zzRf!NYAg~dJi%Ni2{w_H8vD?MkU`4oO2ixjc3U zd9%tvGbvMcMbgj|DY=bV(oa520;84So6nES@cX15i&M3pEVMQlgV09F-pKzXmG+Sg zEO>5;T5SfPI8<@V6|@D=p^05FXR!v%e|QJJ?e$s^lmrEsSk+>uOnIx2Nj=(%z%Y|i z4?2}*a>dwYesQ%v5coLm8GIlbQJ(MA+5cc3)C|0|%=ahn^?6$Z5#yg~=&=pfuJeWx z3;aCwn1c!o(EBz)0M(5ur~x*;I?^aNa%YH~-|b2r2Ia<(+IDPn9#}q_aI>Mfc%#JL z-bqomH+>&z%YZb}@(IXhiHf}7e0txygEP38lxcj-5@gJimVEmNnqi~2^pMo27VUZP zbq>_r{rOVF|;=#!ARCuQGWU$KX?#3H1w!gJYWcB)0isKlDD#T0hFAvs+U#c?lM-WO%M7$l)Kz0fl*EBzKmN22?j>RXh*boivn74UVWShZZT4UT_d@H4 z?Sj;YFHMnA4GSX9&kdUFmbz~b&@+GDGa6pBf43IW0p#15thfH{>F4;O$~0@J&E#%T z>CC!eH~r86XMoG-RqOrjz0#R6B9_OCbKfgxce ztvd<;h3R8#p)KIHk**N-;(DK87LtCE=YRYh%UY_9&qer?qQ!&(Dsxh__@z6{sC_s7 zGq#vsz)_S3zL{URH9omjtbzo^%fP1Ic6<6kL1#)=-4% zW8a; zNy)5>iJ$*R5-VPDK>qAJ?#AXdWAFv3a5C>`dK?}RXE=$+EXB~-&ai2RWej%Swkkm# zrBN-p{H{7~Dy6j8LSr@`#cd1SRgGaa^y-8O$*VfdAXt61N8&&r1x~5@Or?d;Pjadl zQZyu-AMIDqXRpG)B$O#7q3`yD2PY3CYvCZ=g3lShR;JX4DI$I$uwy#xe>QW~sxBO! zLLo8q;1NKzhcAX?T*Lku@Z9`kFrq7Ern6js97%-s)*6s=Rqh_~d$fSb-Y`9l+6shnF= zB53vn5EUy&T3as1*P0y}ayxmfh>x=Qor@(7Pc$^5T3*yE<0lY(xsn!)9gW6Sux1r# zStQq?CAl*Pru|DaXbXd`_J}1DX38ZC`jsp{Ys%$xeu74$wNN?E^L3$bfI1rhKt&cz zg)y5`mcwgRLs%!o1}U|^!ANqvV<#hlWo7#v0#V@TVE*M6oS;zlOH9!-Z5R!xMZc{K z%z#}umH+ShBG@jmRF@K4+2K6pzS~EUTKz*s_ZwvD1_C(qJ=D@sRqDdgE2jP@h+YHs zEJI;5(b*Ec)3+};&xcw|j+8)$+h|HqficWkb&Shb{%v+hShBDlP6qMl_V=O^Sm))u zR;VtJ^We^7>(ez+wAfHms+wqS%O&77yEv$SZj=Kxwz6rIoXR`7D%Xy~X5acu&alVs zXaRFz`+NQ*gwx%t`*&#id%0ga;Y;3{+4vPh+rDIaFL5@>Iq-bouexfhL>MJaVa^gh&~RS zaD|(ytYE3w2+FB5%9UW1khJ8-HkX>|rHdJ+dy97gcWZp?oNkUHSo9=sm504?rNBGu z%bHW=f`~+Qb&yW0OS;hX#^jx?&*?iSWhSYr;Uuop_cUiXUDXlbu;s)Yp&zV`CW~Yq z3p$&FO-){d3rfnYoI>$YE?WOVwHZOdd#o+8qOYJrLzyo0^g^GynbZ?gYiEu+I5TS$ zHJ%X8>25EfDm2vgDE5#a(iD*ET~-@6$bNOpJEuNl&6hDADKzxbsS6k4hP#R+G~(uL zo?J{_y!p{U`B7GisqUnxs%t_Ixl?9@7?(&MsGjLa#2`-OAPRk}>sdE|pX~$!=*sp2 zgcxCPzY~Pm>bXiov>L+imY_J?Q7(4zZ()_?#4kvh7IC#P7PTZB$E4WLYlTyPOnDtM z#_AhOqX(dlwD$!^V)O?VYCI^P(lO2`cZt@qq+K(%hb~A1VAYM!uoF|g_W35cq7w%% zB=?AD^WaQ@wFzj1Hdtca^$7ut;xF>9Q9`uwtY?&uaTV@GUf>(&H(H_vc8w*qul6OJ z9i$Dru(r!^xR!02(lFRreNwc{Mb>I(y#V#z-Z;}E1WA;TMT*Xzm7E%%N8r$a=ZtQ$ z0lYXU$fF^6G^Sua=eZ)InI|6dPz`gkdy&l7RrJq*{gL}m3LOHR2u`ggjVn%&1<7KS z`X_4;@vRuC%X|?;5&#KOBzM`do)Dco4)kNq+1qj9nJZP*aBU{PL9B*uF{b zK7K^{_a3BwCnBXUjf;b3YTO;M+R2HNarz9U!-BaV$#d01sm=F_(-kq*+-V$ILph7;zK+aGlih}e`vGtL3FA!|)T zO~MVoe{s)zX(R!{JWbui$gOm@O;!tFfrQY&*AvOj2Mq4N!@X!>J*6tLrNO$xmy8V9Og}e3 zYFg2V=3XLQl$1kEYC>O_Jz4zw9?J(ct@71ww~L_Ws7t57id*DfRxO^(WNEwhipM9cmzHIn0;04dFZ3t=`4h?>4sb zcr8j4APV)!t3KbnN=D!wwGgM8C;u%r2-_dn48`7mZI`R;5yo$|8X2}E03ojkY%-g+ zL*t5@rzt4r^^9ltJPb7bl@HYg7F6ZkFYIVXHY;9Z<)*9x+?kz5f2{%`E&rEj1@(s8 z_$uY=$`SJE+oH?Usr^&o(S%Tj*!9x+hYG=pQ<_~r(nPnTv_GY!)R6UAxWT3v zeF{h;sQ=4E9r4MS!dY|q;zh6x%6Xx=d$X9Ii`Rg^xlSIsP6UG`X zB6>7G!I}zwVuSqjog0@3f8JU&-em8gDoL%S91Aq6>f=4Qw89}{rXxDtpyY3Wq~B7^ zIZXs=oc0KJCw9c(c-;ErC{4f95HqSbKGbKQg@2t24D41D<+SG>r0I*I=s)*`4{ndd z;~XUr7V0IG4}}^-%P&4))58#Ar-gLyjgb_pQobYB%+!6=HP2`;B%GKZNS&ZOv2Wc8 zGb?|dX6#wF+9#y;4@L3xTn((&@U@QkvuHIg-1e(mK(g^zyJ&Va{zRrW2z1UEI@V#UHp%V3`=(9%yd@2H$_JWXN!mF>(C zeeA=+X^4B=oGb_-^;KQ6?@~eepBFS_3Q;jxEM% zO^jQJXd^0FJyLAM4RybZFV^nZHWG_&k-!x8XhND4AVl1Smc=c56~6%{-P zlELoUmjNr*@_HI-Br<`-w)Am8m21*>!hRKCJ)B|BTjg-O5pRK%~s57UkFer#-HH z+!Sa|C~z?zw%mz=5w;@mLt*_|x0M|Q4dMDpn^7~4`8Z%i)ZoTv;8tId^6~A+XaL>H%C+jAJ?x;D* z`BP|D|Hgrw&?-dl1|Sk7uGQI?0KxrXJ_(%!$@qLMso}@ODli!t!Rquaj&p4q2Ly|B zPQhRl9*FP;f~V$RSYx+eu!WTM&H&50!EA`2?n zFd{5k2x7Wn@4B9^3#rcOTCP|=2M18dN*%5tB|*~A(<>WCI`z-RpqD63LO>bAnLO0Cc=^(dD^m)1#S2|S-`#aw z07S&bu(q{Lp?peUg1)^6)m={5Y69_mpGDhM*BjSa9t-^cKVJl@k|%G-6H7PT#Cxw_ zI1SmL8bVv*OO+5kVc&6N%TC2ZB=YwpTIITa5ZWeuit`)KfmP6%w&CGyd{ZUWJp2Ql zos2^W(v$Ji?5-DVgT@fIxlKtm?^vIW2soK9x?$WztI4M%^iC1vdhHvBdJGT_^Hst% z(=BvpI^>D%*Ys*hW;=e0`n^$Xx%6m>j&tK=!_=$qzpq`8t6h|T;_z>0M(>xJn)I4B zs1te{@3w2r)6k*>9LqRMMe*ifcUudflE#q-D&jsTpynN$F0e121hoJkIvG6k#|)Jx zOQTy)B>@E)R87D4zfN!u#iN)1mq3)X<3^7ts&{UVs%6vj(w}3cJGtr^tki2S!z;Mm zj7d0}zFojjitu;Prw!b#6BEJ&76R3?%WxDUJh&&*#}5sQ zHDx{lT^1cTg^jN>0Q=MU>y(7DK6x(=q+?YIxH_qnZmW)lsvhG+Z2;{361m-SSxz0r zn=O>ajX*_d?8>-2N0xvu>>9CMk!@&CzFdS*K2U7^XmR8P+2EY!@u%(XjgM2rU$Ml^ z5m+>=+?$Iok{%t}0Jsc{$0gTnvvFu?ba8HP`Y-e=@gv2T; z+W!TT5eiQ(Br&`!H<}i{d?%AU)M|SxPLoVZS^DY=kSuB$*auz=!XBQ<>HLyv%WyH= zf@}YPxbe>XpVIj{rK@h6ZEC5Pt{Nj}l8Ys2$nJw@Wo`(9ax-#(BY`}O8*$`jC&Cdf z!XO#evgttvsc>fN(*YXCNZ)U!#R3xF+2T(fs>}}i6(}Y?fbJnUkp4cIEMS;(J)^XH zryo5PCj;y$t*myme-xQpe|G+xRPgd=`8~-ei8v;0(%jA~JZcXvi@UlGlyxsbun6ub zi_6m|j5pxymmp<8*3(V9z{JJk@g;A{?<>81QD67^wvDShq)>=knt8VVn>?I-J5Y9*SLTj<$mxQ*`HwP|GdOWagxrg}(M&NU5E|-B~qG zFN3^i4bvQaM5&G8k?PQkdXDz5w zEJ|Prxgourmnah_j%>dlfJ^K&C)*5w4^zByJ5r+PWkoRGkocfgqf@iJu)MKG%tk^L zX4A(ASSk?c0ZWxnktuD}R)J2~t=^$a<2_~LbmOq_>K+Q0QZK8l=by;%Y+(bQY7#Gt z>(tlyPo*Qs=G(p!`T#iwIwh%ov)BE|oRjY69-C6H`^!tJIVqL($Dl6w78RbBc`>6m zKzQYUC`B$)k@g|Ts#m65sEj3Jh~~rRia84XbPh*x#N?4`CaDSZQDmwP#9`v{7W?B# zZ!V60F9qFPJRcPHtFTo58_mp*ID#Jz2LCCAN(~@urCMwSAr=`b3i#1AQT);fjGNLP1 z^--V>ycqEFM6}e%RMgU7Y5PW#bepFUG=KOkwEW6 zG@GHcAIwOM6c?zyZ2;>^0^_Jdz*kfV11U55R|SeFGQ=c1BeC%6v$`xph)0s3&;_Fb z*;-3QM6TRNiMXQn7d_gC717f||0d$t0W=cTInG=#E2 zrU-LCyi7jq`ayH++%`>ay9s4Eudc-}=Km9Uz6`6b5XAEUogE|?{`JoA43fHB&+W7K z@pZ!$atD0dI8EFKlTu{<3PFt;jmepf78r)UBFX@Xd=R@pWAD{m=d(T2o%|@usY;t! zt34Ec5ziqHz@;>=^e~^g2oee&2UqXg`gqUuSL?{!m7-s*R?Xb32wjKxN1M;aX9)ex z`CEhJUkMR*X?nlUFrQc{A;Z@5u5Z(pF|PL)AQ$O3sMn6f=Lriba#R?N;O>9}5~zy7 zr^m?40eZ{X3Ec!e+hB=NWnM`K*P5@cK#CQS6D!_5n>%BN|A&d328Z1ptOCHtygHH$ zdZ1nPJ=R*NIq@xMgB~6`okOSbA2^*vSGRHN-!HvMM6lTYf1yJp?3Ox6iP?OBD+#+P zVmumlL)=BCl>CEB8PVTy#aP`Thp}U$wme?pDV6E;b|r&u=jP z?p88fMQ_9OofnI6c~8Uv(v{IT_#NgLh%G%ly4IKnlX&wX$Mj$GT6xv+*(IoAlsOS2 zjrJujixx{-B^%(_r^OQ^vpP2*CRk;5KNj$$O%TZbMbte}6qeax)}DRPuJ&eb7=vLN z^}>%^NMPrWhqZGXD+x&Tt6Le+9LgoJiNedEkf9eEs&d(wYzbScPD6M$r330O`SmHq znA%C|p8+)k8_CijTl9!!v$FfZ5HL`N!XB5vh$rmt>yNa-hQ6x zVM2u)ZO1J37gIY<2GzHKZXW`%gkq4K_~b-^gyz)|J22QMQe9yy<=n4@Q|}RQJLIsG z(CtL5Ue}_{Iu;D9yhLLv@T+zoI^LRPzyrq>#3#>h{2XG4*;>O-Njp=L%zyR$J!e5C z1Y6+{7nbDaE=R|*Lm>Jl>0FIu!)uNG5wBeV^&B>BUdvA~DY``5NC1v5s{ZCrso&OA zqdd}HM@6zh3^`M@T9i#NB@2I9D<>0L9o2e{terHvPr*Im+Jn^}$%F)R!l*Z1gq9P~ zZ!huqzhri4R7)fA?!%PBD+DYad_k#*ZB``q$xv5CFVi&p zi1$i+-2?sw8UU6yHDzbEsz6bu41QYTiAW)#DpIMns$u*6eXZ`+kE8=Y>mP_mhrp7* z5w32l7Ci7f+5i`H%CHU@63O;SpwV2-_4a{fo6(Tydg2+^76wy^`G5R~vwT=!`W<~g zABF|e6x%|*)8&F3RpmiUZ>h3Cx4gq57^&0ePQ#ebZ+prFM#$8#2IJ9>@l*nHldIRH zRqfbyGt`2o1@Bv&;rriyI)ctHZzb64;PPtp2IG>>WPu+kJ;{j@qgvRmi4&o@(3-M@ zh`e%61nf|lf2R$w!w|wZ&=D(&?OdJ(B$u;3^i5sqo;c$jt&D<&3OH?qgEw;ZgIEQG zr!nvIM|LLKGIf{h5?z>xvm=yDp{o_{m@UqEmnaGzbx~G{P5@}950k&ejccf8V#ng< zb=|;4#CNcU$$tSgtpPtun=%v7d5XA9zZ8 zUUljxP5@2zB8pQ;>Vl%}H*r%# zlaXLA!Q>E7;BK_FUS(~x@6V8o_R>L7ZqR>~mS?ZpJKxpn2UHTe9&_G$iXmk(soxBA z2&!&|IfGl1-DV~zZAKpGypx)j@WP{LRu8b{OG(rcJ}akPeR1SpQ&FTe zizaurzNft9NI-#TYT|dOni;UVW$bZOwOS;^zyO}bRo`_)~r+*jQ{7M=?&rQY& z3q3{3%|cK4;U(gqwKG|@
s`TBO{zN5Y?kkC}ouT&7dB_jy@B2+Rt*;sZ+QWZ$5 ziMQN$My--b6s8SAlT4?iMYvUrWih7jJ<9qe+T)2@1Sj*41n!pqWm~p-peq|uQp9(%?{L~I+I=(rIG(Z!fT$Es;U+aSTdB9XN_i{UHFifiV^L0}{_?5Qf1}UK&qx2?OCkQ;e zg(<@=J}T_{s@Ef@A?Wx%)E~)K!5_zy&PdreSbIr_e;u;9eXK(mNUpVJytq5ovRac8 z?q#b>S%q}6K|0Dz#z-P@C9_M_pqL@l)>P++rhB9$5aGsXE9YM+sq{cE0_FJO<9!R) zhY6B1aA=1zo#A10nS{qg&1%`%7G$MYS|Py$ub2PQ5>vd<=r|FjicaX!CqACYqjSrOZ;zA3j0}^2PwoXDzIM&-erLF&E}ZhKgVD6)Zs`w{oCHL$7>=ITQ8bpo(EZkJI%@kxlc(y)N}t5U3uF7q3{>@@|0F9CNO z{A{NINh&SOBC$}J{tRsDbiA(>$Z}jn(w!Nhkp~@8?zrCq+^O3HN1d@o0 zVUD?15q5AieTC*GM$tt1$Hg~i^7n-_wk*{F>fdxv=I$z_cG>vyv?vSg=8W3+9$P3x zGoYZ{HXL657vuD&0k~R?4&8Wwi87-Burp%!wtQ}jj6&gbD9&EtWjJc#fSKLq%rK@9 zD=8AWqBeAdbJ%caB9Y(P<{Oi}QF@rXK0Vi~Ge-@A2>s31t|z1a3hAfW_%hF~G}ce_ z0o<6OXh!bd`L1=hit4YKL$MfDve4FM()CMok~zq2UpStiV+`;&@Cc4s`)YZ+(5MT1 z76|5$U+~%7ZGo+5LIb<$_#JGWUKsR_f~VW8@?!zxF$7%BbAMjU|LdGBf6=`%|x*Cfe@bC9k-`pks+wWLr_@abj z%Eh{PbA1G4r@K5g^bn|3U7`Cw)A;8z06FM{16Y%Sgl$MXyfVwT1EgBq)eHS~D%e5S zFv5L!8m~}KDlfY)D55P1jKDe9w4zQzqJcUBo+dVRHMnO}chFCCU+Y7DrkK}%?;j7+ zHtQcv8EvY$*v?C<*1Z=0C$Uc;&me?$u?MO_Tx#D3+%(K_x<&$1D|v~8)gDwYd*z~- z$Mt+Do}pxcxh>&3mY8lWAT^P2mu)iqY9t~vdmXJfsrHH?Ar+W8Ak%VhEt(wcPQ~lP zV7*@C)ba=?g`Q5%PesSuy`7!8Xv^)WLv)Y82a%|k_W)!GB5_dWxLVe=o-uG}J(WfL zipN0S;*On9_2+Vpz7I%R9SS+x0=X^Z@8AR;2J*_Ky&7UwHfCHzkpvgtbx$ZQzGfzd zh5;e4m(Qu^C_n(oHP`joK6MxE%6w=Zg_rBtibI*WGMo&?Jf_=+KeO)JM)EWd28KAP zaSuBWPlAlKRmy3#IHHi8 zamyhLcLiyIbBna~75%qyMoO9xHlb4~s5t`zRPo7S?1?$nGQf>LqruPLGm5?<)vKd@ z;-C{(z!R4{B@{!<@T=+SOn;c1XZD#oP6;3*62(f8ql)BKLDAj3F=t1g>yWlCS=ndn z+O3!R@t9mtprAalsNn}Mt{=oISq$q12tgcx84IT&g~Bs1IY%N+X=Xe!!7ezA$#CQ4-j=5aA~JHMh4@1MEIh)?Ed5gBa!%} zo-a+8=xe>Rcy{tHB_E@5YnL%Y3CU#b;s(7dt*jaI{Ez90&)KLU>C8;$m7i@O*9(ys zL9tGOBdn%qYrkkC44oI6-3q*M;o1(GB<>ZJ4)G_6g3Nrl8}0p8nu~nK@uR-&V(sUP zrn&Gz7S4bYSHRJQ(JoRPcO24e1plKwJC6~SqfeQq%SCp8J|Hgb(L}|w$EieS0^+Do zi&aAvNVuc&Px0cs1Q5e)KLYNbOLeN`pP$!TTvFt~;@ z2A}DplAG4(F#?V#o-oZx3lI-Q^AizIe8dxPaJdb;Zr~EA*Kibki*IzR4c+Y^xvPdG zT<6PMxyPMvQB9G)NP;wt-C$`=8%AcG2!!AvK-kOROEtzf?xl7qYmW@k3fHoRm1QQ; zsV=V7aqlxi6_?RDpdSZG7O{LqD^*`|u^=mb!I6KMfn(TW;@7 zv0$*~mnz>Qp7_bk(^KSB=XeH*8u>HQ8{f5%F>$qO?YO=4JStJV70E8aw1loZmE0BZ zIf*_V<7PPIEQzk*T587YKlh*t^R$=gsaL%C1;b*agn$A%Z<8(>EEB<5O4W3ansrEZ zXkyjpVo8Kf-rP)#%^w-Fwal_aDu4>^AInCD=B!pf#0Ve2x>F02@~b3#%*jl@@$>0m zXe%4fhD;lPbROY3xAh}sC(;AAv77^4aJOTAvqp#rI(vS`B1q;~ zBQUNp_h&d?i0s$oW`@q0lZo%cRXdyAa~JXLB6kh^!dT6@r$U;^urg z>7Y*jjR@SE(U&`FxMrsw!6=TO_0}HBftNHeVQ{B}VXm=?Ur2$-+?F3Wi410HfDPZc zmg*GE=2Iz(Ij`ee>#m`_=s2Scx)YPfaQUYei$;00bG%iEoEqz9wV6Imx^ZAkQqufh0UK*F1* zM!O8JI)Z9?Euyhh>!QPgKh48NOmsYpV}qc-Q9(-rzdq_@z5z8IqIs>pVsT%|&uvC? z14O&S712Hk)yWE?$Y(S$!>3Sp1>)e`HF?C__7d2T@g`bf9Hc<75;?We{5iMF|&dwFu z@yl0c&rBq4Ah2^6?7XK`oz>+3K-SH~|JM*yi%kA=;b5t)cK$Z!U#DQ^K!`!HtcFeh z;ON!uhLUY8U_B|D10yoUke8oyh`X~9=*b}Un+qC%H+_^VO`@!F4X28x*jm%&#kfS5F76bDea$KrAay;pw7APEvm|O=3C8rDZ&L%HDTq=O@Qb(K)cOqcP#%yVaar{ z`8`&anRk%qQOXAl;Z(T46WlRlEYa=@sn70ssfBd??xv(p`F5^dFposA{Pk2t(y$rQ za$FHCTSuKFC%zBa_7qNa(;u@ri{s>OX6Rmo{_q!FHQnR6PRi3;s7DQ|FA8>}OxErr z=_ktPLliOT&})==Fy4VztHyiyz&5ia-|2ngYc1Yb>4Q&+JbqUzERLLBSp zgmAc~pR3E>XhkF6{E1Bhurxfwav#ucb#d#kyBE*uOLn!Zal7k7wOO&(hCcS_^~^CT zjuKKY_Oev|YMVlU*wHKc>!ATWj!r9H6(EDM%u1(6``pGd0wtH8>z=rz(%RUw9)Q-F ztXw^6UdjnDqIAkSxVz<8KHFaM$h9}0(!l1q*2X)8Q_mZ7dqqeP~CI9h2}<*+)s?+d2eD8M9A=mVPn^4v9c-TzKn(Tkwy?bw9hD{H{a`L*T};5X)y z8WuaI?7);I7X{`TRjilr-{hKXA@&*|sJ9wFqs~>UO^UH*9n;)ImEVn3uc@|9c7KsUiPm#W@4jQRp!Ytj%7a*NnAw3{oUo=VDD}Khfh7 zQfkVbew-5Cn3y2%)IOgDgq#%gRbNU1fHF|7%aw5Fsf&m^quZ?wn|=#7VRM%&VTu$c zdM5^SIzv%zaY(rQSFPBrblZkq7%yq%H~~T zKxLJ+rJW3g3a4s@Ahabsg*#9>|2$l5Kt#bhw?ZgbqXI^R202I&LVPt+i3l(&Xy_-qS-!KJqD|fmKoUh^0gnmrYNBx`m3!K=wO;-m)~ZM zrLHQ=$lO)zNH4NCzFk#A#j3)FsN8f|E&!lCy219Ka&c z{H089iPmc@&I@)(lR;m-v_SIUIc9{_A)j)H$&z$||uZIH`+EQw>P>@Lc)GbG75SS4uV+s*L zvMfA)FmYkj60EDZOA{qL3!6A#JlPdi50N{IKe<@V$2ZN%+%5M!#N}Aql?h%faaNFe?mlK;Fp$?;-b=8cN#h!W+ zd$z2dtv0s9oRSPWZl#rPeS?JC-seCVP#m!Cd2fRGaf76I%N}GKGL85}t#zFUq7%1j zaRgUNS>}m1E`aye>n&b7G8i~b?Z@i(F690z`LJkF+4QWY6jQP8M{wvmp6TZ9j-!+91L8-zeu*S3( zcqe3@k#%V5KF^`YSxP0UR;Q)(>Nbh6F|x+Z_#@V*LZSQGzHFaEtMQ{SyCXPr>;IPA zb=ykQaEuMOl`J$$x^_tI#{sT^Gvbh`ish=leUs%l`w#;u9s+!E(On(a_h>$jmUSd={OgR94)bV$V?Mzh4`cuG=%j-<+Jtw}L~cFSwhBafoU-Z6!FV7M z=YkF%OqqK#+WrxjGath2=iw{w``3m4Pnf|X;@F5OD4+5ZqyWhk9T>0^C(>N#>82C# z`wH#@uMGrY37^{F_M_+tM!uMci(y(=r5Pz;q0a%8JZku$aq~Pd^5$gy0p$n7P@p)- ztF;mzeQ5&rz2zjOoxVQLZP-PHaOl~1a2|L(|H`=%C&HdHQTE2 znH*`cOZ7PloI^=?NJk8wA zZE#urPLi;yu-PIdCDf`$q&CrOlB}(r#+QBUc&YseM34z*lyNY&^-`yg%ty!@FK92n z&YzS#bXl!nR~(4u`^AX9?b>TVmRO|O3bKy;A;=Lwv(sJ)h!DG+y!!dZ`jocQt!-tG zxu)tkoQR)KG>7sh-z)_6dHIt`j{&>hDs=HZ?N!dVgte3&DIz2-0G0A%RaieK z#;zAUwwCB44P>?hOWY$d;+Xt9L%VdRci>hqI*@;wmg?NV@kn=|Jmxl7_Kf3bvl-zQ z<<}1GvLc-t-S=<^2EbH`K=5_}GYK{Uu4M$ad+hV)pm2$Y7l`z{;2yR`+Sx`|aC;bv z-LLy{(dHmJXY#0#?P_#btAu2dJ0YmXqjU0s`<0^TDesiVqrMEdvo4HDpw1u?$G0qm z1R(WKyH1z$F>5AAo6oMKl0yAMq62&u$xj>dmG6%po)^t?nym1q8H2U)99SAHZG(&l zUD79@A-+wmy$;MTzx;tJ=I41!V(L_pG&q{gntQ#TS=G{tkI--?Xy(^k(0#Op4>8K< zIJCuU2CQ5$0}%ktARPytUZ&6Dp|x(KJ$l)BKvX4~^5f{xfPlCGAU}xPT9feJXW2Nk z-ZR;c^6|`aD@Pp7_3%NvE12+zEO&uI0A7T+*lI5{L)Q)C!zw3qUi&l`B1@BdNw8{) z6&DLg<%RSk&YjIF-1-A)XVR_P&3(bFxHJB4{i#PB@KVc*I!dB=6A@Mc(l(8cmJ5iu zFY@8MYGI3>u$Sw3IzC*p93-Gl&=NOl$$jK)6NhStsoT1ZV=_+xZN1RMgdz1C zZRG`TwP_Q6BVkNAd8h#O$iqaZJmU*pNcw57x^Y+PG2O7TksJ0$sK2pE#PP1OShCLn zIYcBY_SNr6(yLU-LY902>dj;nE{U+mh#Dd^Tgdm*ZZS@C64>bm}0tyyZMisc%s78fCL zKDY!0PW#;P5wY)16QR0tuh`}Qs)lL~E@<{29^W;{yog0Jlz7>))yN9ksY$?I^fnwN zy~aTthHCO#@}t^$JwLv~^yR8fHx21Al_YoQ7_a4PmEjsU2V{x3!j5 zJWebE*+TBzRyA;Ss+QFg#zUCb9SA8hC$(q8I3u({l!0-kVaLOfo$S?8VP26S)zJ+_ zZUIJGbA$nUGogs)m zEAhQiFF{^k3#qB$M{kd9~wHA!lj-LvRj{M1L*5pvvSc zW#>7Kz?ORJB7Maxuj)hEBn--xarVJ~p-T-pp_Fi38GZN+SjV14KbU z=#v-?o>6?JDf^x)>G0j?Xxkf4*bt5t0uMxbSqv5p{VFE;g6BP#0#gvhN>Bv8q)@#o zHh0#t6LN>b*F6@G!5&>!C;h`2+Tyyf1{mWG*J~fPBziN;?#0sgI#D^c`qPw)fkSYE zCOC3nt|9Rth_kcmBEwJ!?912@@>4wMXDH@Zk^pFN4i!4^R|I-F#>skJ<~D{YPiN_lLXxFAR*4)jeaHuKh0Vo$XJCn_b2b1H9(sU>%ykc)<0 z61CLS+<9{Z$`7x?NmodFtRI_@Ei=W>cGeQ}IinO$zZz%qCj6nV;t$e-Q3Q+~_uNFeq)NBuXOwuN#nvV*j*BV>^r6+uD z6L3UalA-rPyLwqTs3hsaXfHVVZSrW*l@W(k3wh^S_KR9Zu73p&%^Qbq#+}S{{ z!EP>2Zu8oT?in}C`?hioY6kR&*u7P?VQG+3uNoZ5UK^oNp&@mnhlHoSe3yFnCi_xv z;|uu(!F%~Q$(}MopOdj|Hv(p2cQtkm6u3{5Tdl7`kTFs~kfKwVhVmh9X1^8Dh5O+C zC2&vXatDv?3xoWwlA99DOJAU! z7Q?g@62yi;>K_2%839373#hd)w0bMlIZ4KV4C<^rS+c`AF;inI!IGtJ;( z&$#_7dO>m@h($M3K|7~=PSLBnO9#N=CKhfw7m!Mx{(ix%(E#-W2Cu?GB*;%Es+B#< zFEyrTjXhdHwN(eGl{LD@Y4Ja`$J*8~lRW_cKLEfG@=;#XNlo;89ZW+nU*Q=EzdKW$ zwWJ$wpq+Pn2Ny??<3dF|jLx&jkkB992unrW%r&3pkPfdMn#QnugxvR&q^&yhN zgd;aAkv}2FK4#Ec?YBY}xI3%^1{pO+&_4}XY?OxnqD|C#Iuj`{;mkZC*ik+>6xps^ zu5yLs7|p}S>1&Z&d8p&q?Lg^?=-y=m8J|pkF_pn@o?}P}wx_vLMtrH7(5B8rtX6BP zocxYX4)Hj9lD;;sxMRh5CluS(gjCPbOl-dJoI|NMhI(<^SL@Jbuo4B4bv=fxEh`>P zJ>gI5?#lGYX^+`PBJZ<$G#-ROUr|>9LLa#hDg;^Y)ermSZpwu$#rC^=S^q2vj2v*h z5iIUsiZny@-^>Po%$is49SoJGjw|;&C5U$%NVhEWu)#astpF;?FiNfUxoX2s^OKNL zlKx%g+}ftK=G%k7P_Ww&s9^Ah+Tj}Rvs+k_m#ndo|p;dHf3&~8D* zS(SU>=NvSBK}V7(eS{VjM!o;M&Vou@V?ZxL&X2oYJb_(m6#xogf_nQ4KIso#H0PHa#l1`bT(kU@{AL<^6IQF;AIth zE+-isK-1Ui1R>5Ct!3DS>PJ*&nmC4vxxb(*NKYW{vkU|{u)a!k^L?mv+3su3wS(}n zO#N;SHcq)uVU)wBftZ2A_+M;<=jCR1EIaGPv?#K> zD_<6Gafn1WSdDlF0w$^j9D+lHN2-&terW7>oj;_<=gO7artw!tEIKp{ zt-FtNDdrBMJ+43=4kGH;gk*{(NJ=ZrmQ0x&d+=jAnbb)LR(`EGbT7+L(VY>j?XtZd zRNfi1_3T@a&r11GT69ZEas*s!2_`&$Um$eG&AsiQQECUV&+HWHl+oAN%J*mXbH_fB zkNmwdmU27UZj?!RP+BT#xq;S; z3!yt_+`tVNi|k#Jle&K8P?5<{XyJVR^r$#Cl`aE=tqGsNLWa|taF3>cSy8UV;T3;I zF5sqRj#d|e`O&kDVyc<+K7E*oz0DvCpTkwkiAP(&vQCEH*Hs;7PB&YO$>#iM{%QR) zSlf+oC(`c@6lA3P@t(!-2eXc3u_DR&rtl zDOPn_)Hg_$DUfZH??K6+*V&DP6u;$xajiEfXS`)!ieHYTyxwo{>eLNAhKNC0s7 z`5Zf(mT-MTWj&7IMJlpU%A-IhPS)EHqs^m|-Km2}lJJ392as zPdEbqStRt|Bc#n)UFE=fLTBL@`n$J2If|qFx=~Uo4?i4Xkg9$sXN5FZOivKLe)Hrj z+TqCX;f>~?ovYCotd7^Yd33qZa|G0OZ`Q+ZTzw6!?5m);;$--{+Z|`og6+9cQ2Rml zCSb1R^r!P0bkZAF0)d7sm61woi)g~bIYqY<{l=VQaYxAZS~ldpquwz6>AUntr_>5! zW(>v9j<#(Hfdx80{;{A4M79v#Ced^eP-ttOG zSsO}o#a^mjEVolN8+ko;LZ1k5nKxIx)zX`9PRyPiAYW>NyM_JKJ{?pGrox-B9y5r^ zkU@lkkoYd79&UAiulf_vzw0U{8$fpEH@GW4M}~A$lpFJE;%Ut@G6PkI)}yb?2jQNP zli5hRkZl)Q^2}3Vp>kU@-ZA$pn3OMeDceziWf{JWg3yE^=+mw^CY0YTR5XO*`go36 z`I7R@gcTQc_;1F)u(Yd*tS-wU(U63sBVv#dVwc=gk2GA}B8 z)Vz{og`cZWf_Kjxf~Q_cna2HMP6m>mdWl}sw{ays<28vT^4X+6+xbGE+rIOMX+2EG zR7=Ne`I1(8vouPv_y3^-&|paVgcqD`&O=_WUT8iVuu&v%+^Yn9pnIo~wb-Zrpka`I zxw01W)O;jG;Fy1sIe|tUL%Be=fl}SFwues_Cx=j)=t)S%q7ZInI~_B#_2$pw*%&AZ z4FcDEv1W_fU9?GRDjGOCwKz(wbB{OG%yUXjZT6g{W19QVOlxeat2sunKH$+UJ)Gzn zPwszt4=TuDJB^w5Vow==u!WvRY^nDNkZ-;m23mc3dT$oQYohaSK^HnIXWaaR!<%!W z`NAx&KQF1AynR+c8x0xyDz*^!_(S(ff55^qD;lWGm&cbW4B9r>I?Lum;%=Dp{8WJ6uq_kiXTVP){%Y zx2bscrGqAKQEWC$n^wLT;|H(wVNV|HE-H2L5)C(8LP$B(Z;W1^KVp0&N_QeNa510n zZermpM!6x%4Z>FRjvEIVu6=}0Yg!7}2482PlKKvP2Dg-saaWIwio{O7Asma~yh_4j z_^=SMH^vr1?!tnP7`io&j~r|S;3{0L$Fd(LLEipi4H~|Z{tOo27O<;0vuoO2$uS-g z%F+yGrl^S=Rv~BU-G}^CB#YYNLRch@U>B)_pM8$vp~fwtLy|Qfmz*RuhCv$td~AkP z*I#z75PR4Z2*x7YHt=U0d7W$rQmJL%b5=YNMyJjh0G2rD7D-rVZIfD|OcNg;^5 zE6!3_mcjWeoCYzdf7f>d_j7;;gG4^4>XlMT2+Nz;k~_W9FS4{vFX_1%%jv*E&O8flW~G8Q0_Oi+<2!Sm4Kxg#|82 zML#hxM$YHo*=;4NHbjeVul@Np@$PefC~DCw!M3WZ`C1;3ZMIfSyDV~fk*UhJk8qjdN2^GgK2ei;n-Cu0jZ;YyB4qnN z9yw`l;}-LQfE<|1*w)*!>&C!8qejJO6~@_Yu1+<-e5zl_lb$he|3-L%M){g$n+9sd z-;z$0!`W}&psTlJ{+X8-`K;aV%D;4u+3)RDax|0x@0P&Qvz;<01sM^tVmTI zFM2kc2!i!_Z$jsqAArA1Lpyz-h6aL{Z5`{IQBpgRIafX!xmVfdUfO@w-KIVZ@Z4vfN19yDC?l>j6?ciG zP!_~W0w6(Mdgn^5=lfOiJA5TKA{^koJ}nAJ(>2{HHLD$t! zcSknYa=$^cvrorjXN1}CbMmuE@=xjc5s}KhR9$-x8N@xcjGRplau7w0p(hcQYVr8q z+m8Y2miexau*j&Do_ta^`HD&Lj~i~+L3Kg!`kxtuCV?O>{Wp-I9gn-5A0aKwq`N+p z=FQEZ*_4jYwdN&1t^;LL;gWUVQOgtlv~ncb*&KIgv!-_@G*1|xD3f1>DqU|u8>8PX zd}u=@#9Q($a+}0w0G1kVL3l`FE>l_qjbwUe$vj*3qrWJt+T0`@igo)JVaY}!J=NrR z4g{*^>1bqk^M+TPKHCdLj7s9g=UcM{7>TK0GA58ep`PzxS*x?&0(fnt-n0|T3*}O$ zi#S8UJ1y#L3R2P+*VQw9C;~yW{gUafUQpA8fT#%FBka>QHowj6!j_%H5K zdm6D1{z+l_oD}{gG}MKBPF5U=n*>dA7ot7mT1{CqI|uwca$0Vl+_2X3S+)BYu$kw$ zn@#MbC%zKC>h?;lAH#C&8>r||WC!y%_*4}6!PwN$x$2;i@;_%=1 z-DsKIq52s+wfFT=|6fbuXD|LSm{k>X`zl>^*MUFiR#9MWrsbq2k`Ig&+gp=aw+`RT z%&TNg3L^6|AXl-W-M7a*%=2vBXcUV%)de4x0%Tv)&qaJKHe8IAif4gvkoG*@Y4qk*?oIJbmHn@uoZ{hWmIE>qyu=k2Xc(VPR?>~e>rOpv!twISDWHHC4K3%}CU%$C@M$7B`GdL9 zF_?eyfM7|lFnVte4NLkmL;@F#y1=eKX8i>Rg%`?k zyQbutq~nRT^3BN;eI^)iOytdV`EIuLzKK2S4i1OfE;G`Dxajq0wJRO=U?Dv&^~x#6F3}&A&ipF{A%NW8mPXOf57waIVNpvcV^7^la`wl5eZH&N~0{$ z3ku@)&-|_N{1Tggn@)h7tySil5B$8^RJElPhO3GSYcp(#9bCk(271Yvke)8=5ahHg^^{@wX^qA}FPHZBcitT6F0Lgf&ZU1PK%&&@OX zoaZicW1qz+Y?rDUSwf@liP0-JdTe#GIPyVI?6T=i5?kC%KUAxjbBVUNxC**%;|l0r z_*C>L=m9UPz}vjQ-2^UZL|(I5B)0WheE_mN!q&XG=K$Z6Lmm0N8(oALsJ5b zGZOfve|Z$HZ;RV3gDPMGo^f4-N?75hVX3gc;QCrJDG4G^MoKWMg(mzd2y|J-r>A4n z196f>aHGtU$M;Xh=|nI^m{7FxtccMQIoc%d-_sVFngrX@omQ$)MD}@^!kms>b~_>A zbQ71Yz&P_VQuZyuJ9MoqdOI3T!!qq}rWh1khurLRDLn!HJ9oyJox#z^NOlc>^$8h_ z&EpK35rz|^+ohhttJ}~KkrDf-jkG$xo%9-V%zg{sX-lo$?BMKFR+HOIb_!P~_|?%4 z4nFLz=fwfi=P?)K)>#jz$w?O6&ddV#;oTIGuZ`F689Lpeu}t*sg1gGz&rIM#=yaSF z5NgG=-u9A20DLr{Yqi3(C1PZ2NoDUVUdoJn3c7{-oC(YaEUYYY^_!zDhH>w=U~hks zZ^C1S17MI=39#akVDwC|R790!mpT_DR+l~!W96Y6D2q4`DR443`@dtuEE@aZ_GeArvE?J2}X-TCKht4oqsi)5Clc!u^7-RyGz>k{o|$zR3l7e$U0mb zQh-3WBog~Ef{tdt9BrxVbL5g$ra~Z`@Fxh+`kBbAOMB!cS7<3baPmVmN5mPuc4OR3L!Sv6wr16et0oM5ioHkj4}U zDEkBSvvfHHL0j%JFL5yArb%^mPj!YhJ%jDcc~V|Ga)ozk@+E~eX5umEjAF1AYwGRu z2(t$!wa%+XkcuXk;thLssYr`oTH6dpQjr4I9PIvju#2z?->!*?V@vb}i{Mp8(14WT z&iPAmuQemQzHIsEOB0w>OS*zKd=X<5=-n&`x>3$qLAHKQp3^%BkDUU-;s>H+b@=hO zJ2R;fBXShW;dUCJ!**JdMZtV8Qnq9}KgM+BONqyomG))ZZs|4C5|8%ZVB#6^`%kwZ z)y(0gx3_vK(=bXS%f@Q}z8>xAJj*q;H$25H!1o9%k{H1SG{3RGFc3owC5qdWR$9B} zwGoBPqukT8hC(GOp!>EtNPrs7Gi$1CTuQp3V$5qHvt@AJp-U%0qSV z{ulg2WY=wG6IDW9=Sa9fKgZU&8PY($FrqqfK^sekxVrV9e!iT#ABCBq+&pNi*WY4N z3RH3#&bOHn zhgknWLYdd_8}&+fD7?i~tfK5Zy{4Pum$pq19qI6s zws@-B6*=3Qoxp?{kv_p6y|DHNz2b4wOnQmdyYL^;_5MnZvj)pj(6Y4F*PVSD>~zji zhRY60-;JyntXh0b>e`hS{7L@~i{G)Qs|7DQ7Z589!gE4$a$Qcu6H#Z!ab@bTj#>&B zRZYhT3dIMe(`T_GaPujK1qYn-J?dwn64hwBwth_*NIbxNGL|kT3kjNcxcjpeKRQLl zf3G(>6(XNQ&;iSzB)MCha!upCkmIM37S|r>&%L=#rL!N@&uKOd*BF8m@%jDGL%X@- zX$j~J^%i^OvL&m6?D?)nYg-mEVhGE3N z6IVY6#Mk;<5IsMfe>3lhm^d~oKKLHBy7`CSPD#e^MB=>KUJAp-nOj2Yk2%637{HtU z1I-W}oPvjFdKGAvsEXfAERz8o-f6Kdx4tXkb5U&$AMl|nCh}Sy6J#-a@m=SAjYG-Z zqx@|G0RP}0#*veR%!hNgo;9qisGeu)bk6+rUXn!D=Pbls(7db(=#33kif`tchH64n zwb(bCr7;a?;zqSsFoX2Lja-+OpKi=ng?V4(PI+~^@2Q*mZtR@flK=6@WT6w~TH z3TGBk0oX5UBhN~jo7yeQYXRzp!MtIw7mDMUzXIu!bp}vnFte@%{gM_CY03z8aV?BW zva8(z8nPW?_()^RN4YIhh3<3y3O{$vKhSthhMPl3S=irNxmoLpkpbZ&5}BYwvPCd1 zq^(>NsLDDb)QbjgBLY;{97sh_uE<@Eu^g9&5TTW? zfp&kG&s9E~@T=)lNs}*_Y60w)i?ya=ys)4$7m)I(2SU|TsPzDwr{<1^Mvlc0A7}ZU zj?oU4`UcZc$1{5o>nh;XKxC61ss7?Cde(D8uSPSEe$a1N+XA)3s;$7wDUoLHC}@BJ zoCV$7#~6^?)C3qGAmXI8#WQT;uhSW@`50Fwxjc{YcsF=yTgo#MMr0@3JJv+vfyz~? zjonEM_oa#rss)+%eAA@?*!$qaHW^SOw7C_i_ZRZmyJ)dZyx79z@#XgvU}$MDBrXUG z-tiQGW>CYP58deW5n;O9%J`o}3TD)z4ELmA&xn!uw{I25Gd zd*3(sA@Gc`=Q{HeKsRxU{q_WAI#tEL)C$9-syV&8y99dC;;9>jM4OS{^N|fw@1koI zt`;cOyU;Rw=)CYL-e`l2>_etG1n#);54(`L;A~#RmTComoTfgGu5;!&izF4F443l|K6kd2A%gg8%%fDA+oEe1IK;-@cz4mGzVoq!G2kjJUrBLROh-JmzBR8MPqssB|vt4pw7FT+Z&r ztOQuwfgNLw+E_2cJgK{ZE2!+~x1dRT&k#|mWX-!yd|u^7(n(LCk&-B8DTeH`%T{n= z{DfAQb%kGxemi=S5ihVVV2&Eqknco&~KI8<<$`vvJZ0Z0#a40X+fm(HZocNtb6I$5VgIc7hbmblPN5_|% zER3s)Q)`$7H@j$JWf_uu`UT?Uhyu11Y4#N&6Zb3z1jBPIq%OV*BLz?5nK>|T1JKPv58F_108OuTIUiN zOshuNVF`97C8Rys$^p3?9ABBk@u+3|OQao?*ha*h5GJ25O5x`HC57&xnv}rp*V5E2f{VK+UPgrAw zRF5V${=rl>x}aH8&il#CLZzeG8LBJ|U^s95T-<2MJKuEONJzq$XpN!n>;cGhtErN-0)bGaow~a)Fp9cg~thpMTYX zXKZ0VzmbCPIN#LzT@9KIAm(D-7}lkn(kK?GXdWI*f->HfNM!So+pEqLl_d-)0)QZ? z#fS@8dQiL|+){)wGwNu|?vDMv?sdt$2@98r5Qo1RUA8tbttI-52i)5#e%Yqvmr7)- z8=d0OeVHxUL$gV8X99XF5qu$;D7_7Z6XH6n(#4Wk1Er&C126;SO!j*f7 z*F?%LrKupYg;!T%9Y1;ifH@e^Z6&s-h6q{3dKk`MCssMfSC=3*BcW!S(YP(*o92U? zoOjlRa!duv?hn~KB89CEd0euBmd3K3$vb?3Dc(O*4wM^DC#1OU;kZY0zVPpW;Go_z1$lRR%_??+$1oDE6C!-(dB zhy!E;t~ACQJ{^{n0Y<0Jo`BJGb|u1~CBRAv50_%Hs$6lB{gu2AjL}wM*4$ENH$pO_`uB{|Y_;d|)(6j6ny8&BZae)K9k&7yX z?I0}$K=(1@>lf)b!^18h*w(CVMg+ro3m1E<{|??!2JCI-XUK43Ox3eXp#;!Oo2EQX zT%~69R>|iXd;4G-Y3{n#M6#t7WR~I{t2qyOzbz00D{WJ{o)Lft5RME{ApfIU-MDex z@U5mlV#(PG8KF;G7U$A~AED+>WvuvNW?69^gP#A=$$4qRo8=yHzD?6UE~^HovaBFh z14~wOn&^u3wi4tMPvuvZio4xp=qiB36s5JKN8A|~dTkjRqe*^>#z#?!E7K_0@{V|i z8u944%uiAiu7bqj$CAP*{#M`{1I8x7nvByu+Q~##;cp6wuix*rh8pRwXn>rV#>{aF z#Z}Hne!YY};Hbll8VIJQo3AM)76Aw0><&y>a!o@7?h1TZ`o(x|7`(tS;$XdH;H)+$ z#=iFLjWKa{4tnL%7Q3XWlc7mR=};-XiAcpAoA_Jjkx_u|mYcwwvxI!UeT>OhY0zBq zLzW`Ls?ar#7La&0ZTXczU^;hmF{f^48g`dM87L_7U4RNCLQ~N0LPLx+d6R8uU<+=V ztaOc4Ab#+VRFBq07WNDE{=fkgL{#|EMM^I>8gL*Pm4j~=I703gMr=Ao|8b;cX{_AY z?iwyc9lsXXXZ%GpL(a>n`PW@jkC@a`?iR@*&BiJA6-wIH*)jTj+0J|ix+Mp)N7=jS z%1)AaY0$3b9WG~}-HfRO%ps!|Di^_>?5K!N#wJIgr<(vSz`AXJzg4=&0YrN)MCeA_qz95w~V_+|5yRU|8BN>4v#aVT@ z=5li@BXx;Kw^@Lio%RpsR>uXuxV2)T>ws|(Qu)H-EaA(K@`v_C1D3O8tF8k^oz7%! zB_kk?_SsIrC0>`rP?9)P*35OVN_c7x7^uTBH(I-h3TEkQf<&Kp?n3#Hov9Wukoa_l+wA2*lS0(8%xlgGHy8z0@6gbc1w7>L?+pf3F!n6!^ zWM=WCLDxxt;0@L+>5zqvxb(=NBRqt2hB7PD;>CQF2y@ zc#;97nzr02yp3FZkewROHvxr2Pttt~`pqU~UABYSDH-BKFUC{RoXia1n-ObypR>qK zpONPy7~XyK?v;ircaziEU6_efjGpBb_)z>sxZN#;k7)l*Hld`nz$fY#R}yF-67^a~ zr5yN#l6wu%A`i@Cy7?(l?zxngp747gxWN+)mifE!XV($%_#5e}&)W*Wvw7TPVjVG` z=n0p|9ssSHyYj+%^w#BMM!t|+5Y3*6h&HQ()H8p*e4%~T++$$?L+vBJ)JgOZ3SIFl9Z5L&;k>WQ5C6{=kw)72 zj^Gp_dAf7SV)%;Jet+@RRRGB-bohDR zqDt*Yjpxu|DXFf79ISVnT?`F=0>F$@qa%1_7V3Yc;&Z)d0jAHo0}eJqG7GL%W`OCl z+}O|IES<&m%ciCwjdqRw)z?C0{l^a(WW%4aba!17g1Il0U*zlVk%78g_2+GmLlfPB zmKe@c_&qtn>Z3l@6@MvDYg`nc01}jd<<-~xs=sWQ6+j>gLXnzu58)F8`^gOWL0|Zm z!YxDaH@!yDs%b+voHXW@knU^xa%aDi+-~Imha_O%7DE5*p*rps;&x6HL zYow$QN`Ojl4*OxiTO}6AtK|p;U{6GQiz@wEgtrqj#MOjilk|*J@pDK`!P52;rf(#CPsv6EhZa zOIDWVwAn7I;<(v83d3ZRM#Cr0d&}jaV51{^J_PG#WIc}0V*Z6t;GOqj**j1>NjnqJ zql^r3pWEz21*W*Ole(W|J`PI7_N=d}2eaFrQo8%U{Wm z3j@GwVHQ)V_J|f`+{3t4v4~HW~L&py=4f`2raqrkkShDP)X}%g#UzX`qB8H7 zoMO``ax=HHK>|5BzR;-=-bccU%ue7vEia0D95-D{Q4(1r&>0(OZwD)UiPPSXz*t{k z8t*E)Oc5e`cF60&YC-VelXG4C8-8d?X&nijhE*j^V>37Gp^BUdJ@TsRH>`3QFmV{M ztx_AotIaHq$wLTMJC1tm8XO-Vg;L;onatFdQ{wo8aZ%JxXV zu2nAN9ll)eH+>2qt|EGFSA<-)BD!ik$k__q%Qr-wHlju{IyZ!%COrj!)$iz5XEzL@ z>7@DK6#MJc>)Mi{oiSPGg-p#H(676+}<%nxAHcJYHc;ggnHt=r=8I zO^H^MRAFiQQ~u!E{~Pd(d!y0y4+G>k$=mK|S1JpZC5;`bZCd5UTd$SuIw@ObkjA?# zIU2ho9be0rsqKva#Mv~P_=FCMo`Z%ckQfSN>>owa6Vjtq3fyA2oeqnnAO|ij@kvg$ zR+2X1>{t8y^1k&8OgsarM>x1yxVOrPwZO)>*#)T^V1bBHZqWM7 z2k5-L7%~3fjm{H3Mp!DBlt1Yab9<4$!0t5sB8VAh&Ex1y$4W_EPKft8+6OTu}5R6+@oT|Xup1U;@ z78=xgAamPg%(IsJNneT!psB)tp@6WQbd(>5L75#n<;A~NDOC&BjjA_hMT=^I6ZF5! zz~j?T{j*we1Vl}sD|@<4pC-{c3lz8Fo5y@#v7zM~_X$Elr6Uwp=9p(XGYj9@3c{6! z3iuc(9Ogc0n1MmKj;89Tp1e&w%JO)2^ zyw+B6!8|y-i;O%9>k?4qZjCd9Y?@30z{KxR$J3EKcUL{Ca9#cwFXPXwX98Y@+T$4r z|K1gMo{3CFPYyQZoVti54$?OkRG-{UAjLf30r3kv5}_`fna^&mW~m;s?vCmK*NBjM z52I~~OrHFUvMxL@MKx+@;|A|I1|`Wi_$ApB)E6=DE_(eJ?-5y#`2cje8l|j>I~9;) z{b8ZeQH10_qL?XLJ>N1Zlg+47q3l?ln|pl{+i{#m*w0}XGma6qqQ^EcN=-EHNUuOF z)fwV`2ei6~@^T34XsdR-!&f+WW)SM5GgGrAQE^xqvt{q^!C8IAKE>m17w(g9B%2KF z?kggiChk{!3GTRXTCQ^+{hl{<|EG`a^$<}?QhO51;U0Us&zX)TaS*E_GuBPR%UQK`px+szpDC4 zz3t9t6~fIfC~H7$d5e&Xz!PAwXP_V`>@>RsYFT}@UwS9+VYV>1LgJHux?gN)7?4XEF#>RT6_Lv<_M^QzQQ|F5Mh%=7bRZ}QiKo%)+nwX6t8Tf(vnEa+H*D}Gl$XTZVCMX5Dfe2M^YKw3a?oam1+Tmrhjw%|tq7sUtrj<--js&(t*OMb=Nioae(^h{t zer%Lz=JKZCZQvZ-@{+R0H-sjkwo!UJ>1+a!*sJ%SWJi}`x-p=YdyqIUoYlG`I$Iv4 zh`0+NW5?xhuwL`eLLK#Gyv=tktt3m(Bkhbb+JNf zn1bS@mFGIP3WGHAufCO$sY%%Gjp=w%dt7CR4{qjGrDCC`9lN12E~v>yJUwQ3n6f6F zrLAxl=O0ec&Osvi@5SI~Gik(g9yO>Hc^|sI(qDIypeXKptP`N%I(7o@L`I)I#|ayS zZl5}-fmR(C+UP46+>#im|L`9@4Ri2B-Y!AOXZt_!se~aupWp#WC{(-|Z^ACu`lFW-NK-xNw0K0<(C$0)9MOe&_8Ga|M|a%Tl^j(;kjCJ zLze30;ucg4fy_oYM%mAMjL||&8NFq&A@HhbErbMZ%Do3EPUtS>mvCa@*8)6O0OMH9{+uuP@{#9+h7)acZP7*@lUv&9Gk#d8|E@nkX0T-2(fAXKz=PLb zh9?Y?BZbEW&roE0VVB}(mm4gy$25d|l{$5Bka5BGaU_`b^^bP~WgT(bqYP-$kU)bP zwLRX^YqmeJxEijby@{xMi(x-PQPWBQ6H0O@-m{A`5LW2x9SiVQvKav)ARlDni=(?W z9~YtPm^Q7DWj1)QG>!6`Tohhi<5zyD&ygVw(vfZ3R+Q5n|Zj9i%3cxiA=vGUzbe zTiLQgg=eMb`2}@6(Eof}z8074q8QZIlW^3-GNoNyw`ZRSDpG0o{~D;I5vl?WWeXRH z`Gt`2)|t@Yr2S;|j0$%WlM@TmaKnM~O!~LwN^cDRY61b9-e~j2>e|LCN8eV*Ix4oz zHk4uu^+aM_%AjVZZZVw!!O0>Gy~WqxRUK)H`$vh1z_tcaEkQe)huds=&$>Cz z7eNb7GvbFrxXjtRVKs&SSacolbckb#igaT*MXsEUUG>fp+{Hk>_Pui~%tx6f7C=}z zP&)y}2k712-N8}5o=&#eV0@uuD`u(j2O0R?li^L1k)6DPfHm9H^7Z&W<=>`>f-xi+bC&zI91qBKah_djEQ#k!vWSzA1E7z#Ann7o5LM z*AzK8bJ%=ee%)EqTK#rjAv}f1g`-{MDw30%2)v_zuIn`Vko2-bcXzn8J2+DL_U<|P zXzZxD+uHZ5j5c6%D;@9v^oIC^O>;T!IR} zkcvwJJn%iva$uBO5|^M~tpX@&!7O$sI0Apx)0SQA&ni8Z z-VhJaa1ST4OdxtC^^vgCZ%zOv=e+OQ0<#&+uB*HCl0|=H=noLhz?WnKo1n1oB@SoT z`E!je{N~bq?+n|b+Z?# zgjb9*^XuCc^USGu9YSb4y^O}7upz`3BtaMAUz;>YY_b3Hi9R$N6<^ryQqpN|F+>}y z;2wzPh`g_%KM8s2N0dAk0HFgh$XFTpj1HmZ`VE6jCS%gW{l=-y2?Pf40lms`YF@aT z5I3&atLP@AF-12HDvY`Etls$y4X$A1mYwv|dMdIuDcc99|$`ic%*S!ta!6FqVtbdc9 zw7+5iM03lQX;ZFMRAyg9dVb5L=)z-YpcN<)tBqVHGDp)U)l=MfA$jJ(1LuKYY?b}D zUfb!{t_k5s$qlQrC|~t^e6#fRzu+yTsJ-VREqLI^p_!Mb3*S7g=su-!2(PU>Oof%7 z@emtz_V}S1sej$csR_mCWxy^;J#Jx6Z>HOGP6zO#-lP`;Q|+M?9VI7)AD~1~xPS%L zyYu|+K)_~?8)uLh)NeYLbLHp_M!PvI-Ae-U-;J4&PjN^x--M`of`r;?t0+$6!s!uk zMFUL#Z0BtdpU(Dt++a@wvX)*vWAB$!q~IyFWr}X(V^PEnxE%WCi7m-{+qz0+ZAwV| z+0}t;7;0YR+Ao4`DQbg}wb%n}#+*+V8#{7n1V#uFd@PLrNZw=V?eDc?;c z*cQ%dyP2>qqVIUb^h!ECNZ$O+R?iCHE5CErs?hB!1UL@DY#zWJVoB0jh@+RoIPi|0 zEX7%iHB2v+WF0Cw)(E~!i;lS2+9bKaM2`o1*F(TwDh%lout5#g0aqA2;bLmNOB z`HYnt%@LSSqx;o(LTD@jQ4e7UZQ!8b^W$8f>fc);+t0y;_ZP=>&1XaT6?zD^SVvbI z3|a=OdVN3TC&!iTs@?4)l@Jy(snj7BvF9x ztF@-#2qiGo9zBZDR}`l%8yPb&b;{0cmKt3{aLL605od>3is@Np-&v6XpK$8cKij*+ z`&e1T-Xs2FfiF`=c53*@z|LySr1x%e0<9RmxFLSlx14b`b(^G*nhrqrogYF(dZ^ga z-#(gYPELZd7f2ZWJg1KwXwKnx;y2-ZM-B-w0s6Ww%Hd`FVUM7&tUbHH9E=v#{N;Ee zcIeqmB>iE(YhaF}Mp8p>cXl83^$k1+ZA|0p$n!_-6)qny8EzAg;&I^kx9YuIzYt?@ zXGkBxDV>G~nWC14`8tuQZPvnrCBzPC)n=Wmi!V~-#s2{RKLEgQBS*u`(h zB02xm9WooEkXU|qiJ4UtW?9%am_i0cLB9^T^h)9V7iSeuvd$$N)L0}gxWWz#2eoT_ z4gmI`Nm+1{SA_Q&gX3T2;7_a8&10a`?A(_883TczE$Ja$3u7Cc5jAK!5$Yr?{kM~8 z$<8c$U=@$Rj2~xIH1VjIQW4rh;k}=It5PP%IRIcYC;NW4u4xHnD7<4CSDR&|nIUFd zv62#vh3Qt(G5PY4JYdng9W!z`ah>Ka z@}>~yz$lqpX|Y@Cf$ey|hVnN|BC=2ClQ|CR$^DD3nH5c@ACHcq@buA~v7%4$G}mZ8 zyKT~9<()NmpblK0l^^LqM{Y)vvSQo*s&Z^M@_C2*CgLpZPL9lmlusO=sVoyr>Hl0t zA| z>>daUO}Mr*7dq#&Bpj38bD{yPMWI*KP==L>*7c{VU5uH)f1Rx8xU~z&?ecDn;T1Up)Wu$PQ!b1lTX*;&ERQtXOh&mDae|m>+k4*(H63eNXJX8S#d2N=pEGb70zNEMA2(i zc3!nbBAEn)3BwX$Blg1a?V7RbV42yWW4By3rwIV>;(l5o+e!T1Tfgsa9mM-T7=o2I zj8H**D<1@vLg*diN z&4VLv4&-~-4gqD*uS~;dqWo~)l98k&;^(0#qLXjT2*s)Iw9?u(_)yqJknv2b8;=Zhgq zXcef+mA)~y9p3-|CI>uII_?2gks(a#cwR4ZdvuNCOv_hH@q&3-;8ctG(2nR(W;%#9 z72j~yo0FZ0b2-yZ^Vzs#J^-;qLy0x*5aLeZyTBUf`RHMj`Fp?FXhzOQo;Haj#HfNo zLB>|D;FB%YNLY1ekS|ppLqon}7q30FkrM1G;M_1MPn5xK9Vxd9)F_$`X?#qug&n4> ze|^YOvW|lIy{L)RiLLFa0%1PS)E=~!EyjR9YYhtn-{x^Xz&k&JW&e~+|85b|IeNo} zY!7n2T(suY&0f0?ypvnFb(4WWz+DXU+jb1lZAJnZYht70K@bNpgit~f-0Yearnvao z$gI5|G8T;Ty~Ih*l=&YV)+f&S*w0cG+pbvPGvTwBU+N$70{Lo$vQN@gjhyI8 z4bKFS^<-CPTVD?akWC*t3NVGX-CQBz!0`7JJQYR?>#XAV*iWJXTy%dde z(UYj-q(TrTX$G?YB>)mHfO3BnX7FX^tMngyY#cP<7V$a#2PZ(rd~1W&GXicpC1<1+ z6LZRbS^dio`Q9C0mg7Y?&Pe`e82M>`31ntKYTuYf{-b=bV4ZVbr+1j zn>hbf0hPozj*ZbgzCc<#u?mR3Db+Lm@{+epnCaa*kVGSZKG3hUFziu~I`ke!G&{aX z*}t8{J{F*v+^FRXmmz<@@+{H$s<0Ang_ul~Q|cSd&o6(nk+KyGH9bjY&QbP*#3@|C z?8~fCPJfS|t{0wGr^td^^JI#nL$rI8k!#|V4qGu5!(NfF&^Iwi9iX>E3G+83XDF1G zHr$nCrVWS^v=|O38=5ug1hN%+c2$W9OOmm2_I+)K>*8MygPw9nzg?9-<8V_?(PXS& zg!ebQ)fRn~w}OszaR5<(NYtvF+ys!_at3Mn41`@JoMdk1dgVyJ&E^kqvAXRYUjwlQ z4P}+%Jk!-=V%;eIGZS=$2ToJVVST@y|K@iIoknnVS@u!3(sGzG>vpY^DtOD<_&mJGC0A#AyijWuCuGK+BURrq_?Mi2PJb z<&4J4H2}mZn5(ReG$K?X);;FU0&_S1wm&9#Ak+RN zOfJ7~lqu>*S=e#?Hb8O{9j!lu)`; zX6K>x>nIUv*h2X?Lnyq}PPZiBopa?tFTcjy=PJIS+Znn*b0U1^s7_3 zz5hFj?fy(0m$I`i9t|7hXE+JcEL)`x-_#kZt*J5jgxeUB(JG*Dp9y3PTMMpxQAE+~ zq*Uos#t2-L zL*tXK2>)_Qps396QM)+bommT?Jffq6(1zmluh|#!IyONQCU7{0pOe;&Tp|-gnMYUU z{90TKMpkOz&GpcFKb_#Y-TVa6uL{sjqg_H@CX##NL~T1!ZM|El`PG!LstdmHp9Gf| z{uk(bL;?7+K_kyYie~~OKGM121td_a6?S!t6X7MA)VbV$iFd0ouSBX@aO>d;& zbSqum<7M*Rox9jJ8)`^n-PMc81tqmFvb$!0nfI|{17n5H8*@%6=~|T^5;OBianzU5 zegbAO^#q50Fm<|5LB#W`JRk%{^PtnH8;Z|iOldNZkS=CO1|`b*5=HOLO)8vPHZPu4 z7h`sr4DrGTcoJ_@Yn1LIjx1k2y0n~SN`|A8&>5%zw?siH{Fl20_f}?sYkr&e4*cRC zF|WN>5)l|r;x{DlGYBw?7g1k`du+1F?W~xOupCh+Y=I;xjbdc%v63x;cz>#qWBXAd zz-3ftPb2dU1{|=cu#a*)dW%$YGDD`w;9OYpq^TA%uI`u25-F5>cH_Ebc|09mZknV` z2tZ!-9LtgosOsGRCNgW&lk`Z!>&5jA3M-1KoLW7UR|Lvt8Z5ewhV04Rs+~46W#(K*U`s^ala#|9QO*OEUnyQJGJTrQqz{0*H4F&v`2&+0q?cL zk@vsUMV_1T??2&My7fNF#fkKg}%_zmXnhbA=ywxM&$-klE zwcX>CtOv{@|UH6h|+N!X| z-;p@bNZ^t4u5j0xiy26|0Xp2?S|@w_r7Pmvk%$R`atwjCr&)jnlem@3Q1;L+%{r(L)xM@c<~egKq5(T2^#zC?9+ z+vk|tZGC)Yq)+NKIOx9-Li!lQ@^5416gP+8yoHg)Ott&T8ny0emDT7g(#(|f->K|n z!{vORkD$zL#r@my{sVjwnmjqOFTV$7odP;EXaY7`T+B(Qj3Y-QtR&j!wYH z;UK^IAKFS$aERt@VXpCqR*^6cj}46Gm+$`l{uzzudl3FDUyOC75|;RFah1&|!paQ{ zeI!e-*=sU7rEC0NXw}GROrNPRQ;#n348XE+#Dxcc?wz4QX;}8&Gw&PL3vh3Wf#l1w zV|*Jx*#Qrh?4_H!sU!9taAjM)#tHL_&AlM?iza(UBmy3Bq-;Sf0>9@R*TBA{>V1yM z({SENBcP?F)Rj!UNJl~jurABLKqqlMv?-ao)Xlm_sXa)duUMd|w~FZTTouzB)kY4pkzQu3rWoEo zqDvxPT9&f7V-RJ%Vt39P&!iF!Xh3G|cw--&M`Vum`ltIUy^A`0umajR=q59+hj-hk zz;3pGOMgDYgnYFPAH&Ef9(n_M(WXtC6)|CYi$xrQbD5WH=T!5ri8=}EIAV&b?25e41PJa-6!{tWxC@Pz=8HUY^)f2aUNyvkHhB(kGN*jy z8PQuhCQAN3uMrin`Jr*|WH#!;lc3(E;}4A-7bPC;%STr^F2Yd4;FJY&0;M-wvkPRk?@Qy z2$P5rYp_rp8xPejY2?HxB2CK-MuHpT8-<1LavUFbQ5DpWVoWC4BV~#E1WO;lfe-5j zTRm^x6U^`&uev&Y-#EwHP0O})Ar0#cY26wekV{7hQ&lFwn$?yL*|Lp0ltRWN29o}od-!jju3Jtas!A0ew?ZM}z^*A%nW8gR5>l&$d^0_jp+ z_*PN{DN74-$JHb~Vhe4Q>JRYTl3ueJdY|wB&dZg~+bx5?e1JcHVQ_&P_cOKE1^rbhY+=VdfN^-Bm1Bs2 z7vJvdMw(y@#pR$ZZIJQzFy+OUarbXgFU0l&NM1O;_I497GNL`DuqMXmwh_USqf)OF z;MO;_5i;#z$C~hi{3tmKI65<^JI5Y(7lml+v4zWQE3nJrU<9Q?T{Acwl@)+;iCSct zS_ePQP4v+M3GfB_VM5r5&|iE}YjbTIiS}jxW{tw?H?_h}2vRA42d>Q?SL&IdPb@xv z8pcHVd04{NF|;rsPD1(i&(X8?*yD-5NL2~PnR^{qtFlS6x839hx*63h1~x&)*4W~@ zd0eV1r#RR5247k8Y88+CnO)%S$Wm-Xo__I~g2d|I!uxi8D8(Tf5KHw59a(gC3W9j zFmb+(ODR=bT=;#Z2P>R;wL!64b(`P8z3F4=VbsOIFQ!2LobC?~5M~akm--p<0^C3u;inN!=H@zPVR=_8=tlAi~~ncbBqDqe!Xl zH>6OfJPyhcJkRPTayyHG99Rvx?g`Q-NgZj!2y}`i5a}6i3SOP*Wx!FhR^kUAbGpAj5d%@cxkug4#q#T{rUM_(3OL~-I%ld!QxmMJv=wU)Jy*Mhi9qoS&>Df5*a zD&I?*{}z~$4J-))N?vu*`AfVsj?K5mfWNR-1}QbZsrTde07&R+2pWhYCNo^Ck2_7N zD3lZh9N_9aN~ATS)|8wxpxCjNf}|DvOagnK1!eB*xSNlO7W-B>*b-4)H5Jt}1ZrfOxRB7)BQRy+g zw}7z;s?-hSn~0kcZNcj#<+kET{n)B#f6dFFtQ>=JZ!?`!5FR*G^WS>J9JKg;5NX9B zc+zdt^VH#&Tb7$Z)nW2&>D1_w1oyoOrz4g}RAZmkS_#QuK~**SUQv$-3DM>vn;`o4 z6ov$*qqM-$9@8bH4tN0$PM8VQb|z$n|1lHB2Rp6=tGjw2`oq-N*#nr#)z~@=8KpK1 z)t}ogkh>G%@+B&IuokJe;Z(wd7<8=@JUAQ-d zy7|*aympeo>6hs&cZ8 zGLdbiS~~r<&tSf^B2MA~2VTyme9&j@8tT~qYkUXo$z%=$Mng>N%eL7}l$>Vq z%XDfy8-AE-{H&?h*Mo)VH&pRfjBLglE%%VtD7C_Qs5=ij8f{jXyWA0ad?k(-l(TE+ z%FK|2BnrHwDr80TkoEHHDJn`v-B`o=lDYhZtww09#i<80N9yeKyP8o8AFt)y*6uW& ze5DO5#|Q#G@~McRrTX;N2`pQn2qt87WxcOdsOU>E9P?E6nF`(qGl`fC@AarpD~y$v zp4F>>=xeHIdTcMi&M@mwg9->Y)IUoYapXhtQ+*AQ5^ypLE!;aH`Bn>V-}wgMDbEbm z;2W@mEj-(blb+dV6Rv?jgR=>pXI zizvB!eYnRRx7FLOMxG89gHUW2A~@&tB7JH~qc%K?FsvDbK((!XKh%f(AcwR|!px{|(uq=kU4LneO_$1F-Ov7n5J(OJ6Cm!?Z+Z?(GGnRu%Mo_FC#MG2{cU>%)L0X!4E*UHR zWhW47%jr=HYZ)mxG2u2hjq8FcsW+N#=W|GG4JjHFsJ{=irLDG4t%a`iI#gr|i_KH| zClUpydVO{%E`*G3Lo>t@l0;L4;8_3C2jQ^7oK3?)e=i9aL%Sy>CEZ<+Yn{hP@jtfY z7a!rYHwXH1)DRRUX>TJI=TSFfKX1d!Ooj^b-sp9IoU}vkm+J*dX&L|E+AIMME{iBf z;!i&He~RcT8T(b(@FQtcV{D&+WylNs;>1WKqrt7#RN`8rLu1LaUcAupLvu0azJly@r5`GM=ygJAntPhIcB*2 zgW@`###jWB2B5I&36KdSU@hBL7Zb-GsSAM^5lwB zQb2{tROYwk+J9t7*5SV}Rho2`VF;Xgi{Isr876Q-Ws(biPicr<$1 zlub{Zw_(ZF@cM*mSJf=-T9uQUgte@E<>jVC6i@+gtSY2DU6`WTk+4a z$CIa=z>ZAY+)6d+;Pnu+EXD~lYS3mTn|a4~yb)wao31hrdZ_fq`j;@!2koTBe{3h! z{XolapQs7-NUDXA`LU)X(`(O+!x4M4%-&;}Wn*l4^t`fheEZ>!SH%1tbId)`UR^<8 z&omggU%n{mj7Dv5aVH`&<@7gsywKSTZ@+QltKrlZvP&eTfB{3m#|FB|@h$2f**B{Y zWR4ryi>VN+#l}@b{C;VDQAyP{^kkO9ki5k$)vc5>3V@tMI`2ZNTlH><11_gfa!@ob zx=>XNX0k8~hq<2)BbTuXXM0uD3@{lV6dF@RYs6JTi|oBeSOkM*k*@v%0-P_s)MTFC zmi^h~J#q}F!AUkzWm`)UIo)`_*!?GGSjz_}N6|Z};Topt39gt>HzU z?KDy(?+)3S{eMw-$ux|m@HEpt+UVzEFvDVc-R|SkpbjKo1Ag`DR%%ELNrZP=&AkDNrDkx2{}~e8`mDqiJ^4CRBO7s zM&Tx#Ohbrea}jXHTfU=2NBnV!&^0XTI2|64{dJqxTGWx`nT{~2UTN-g=JR60Njgu7 zpuNjC>vTI`*9#sZoz}WzSr4^aboTWC-*>_3MKxg#0`b?SltJPP#E)xPs&Y|NQtD>I z0L77c@98TX9h(_n3NuSuF%mHM?Jc1ZBfDXO6wBIUQAtK@!eI<1YmRx2dl|)AHDqZW zyx-UQffwr3$87pq{$5qJSdxE~CRks;i0_K7JDHj%p09(?CJ3f6@EdaGM!2YZiX6OF zq|#TNT7y7BAL;zJpQ8+S9yuD)z)UH;kdGYb6E{WX?ARx{Xpsw}_I6nM;5u%*@X>D4 z3gG^7hQd&?wh=7 za1GVXHkq*;Z&|c%PbNOJaSF_O40JUpFregcAjY}vxM12iy@0?r(t@{L&y%#>9X~2k{F1p-zA?y=rFFwwhM zKIArbSk`R=)G<;O;vqKh3Nf8GSZ>)0^p$V_#fE`Rv}cxvd8*u=mIfS%nn(MUNoP)Y z6Vf8a+nj3CfVDCN+|J3?YA;VYdDp2REm%qkiN7d>MY|0uiQs_M>W5wSUlcp)$aNC& zNJZFsm)??d&rROat`0l#S-IHd(K{b~q^nFodxNVYiWTUFi=_{mbhrpO0gkZeh{gN$ zUZL8$RD+tg1}PVqwKlg0A&+0Lb01pMmAeMRNneaVq z6J3EsTl~oCdOWQT(Qz-1U=!@inB`}e6)OPlN4VRdLw{Wc-8(3TvY$DX#|rCimfYgS zGJ|(#f^xgs+H?C!)>mRY1;T@7(%4B=JV|Ms(Wd@?3NaGxa%Ofv&!88n>mLnMV=8;o zJAR%~9L3H?*gI^R#{J)_XXe_)4>M!(8rQ5q#`#UpX*fP&Nm!@1$x zOmTRS80TXFz#=$H0jJL|=4xXe%%fE=R;mrNq?SjpBQjEro16TwU@m4`Ko(pLB$!0o zwOmvQrj3GWQY0?3k1~Q{db`V-EyTr}USWcDS3ZS}Hw|T_&GUz5K)H?*QCzM)>f%cs zu7t_r%G5e>q(!?9oEH{o-2@-rZf$F6LGMw{66r#=9)o|B^>yDr-&r34KBT1Z1d#c) z@FrE2rv*?K?c--{gr2xe0Do{KEq1e<`TDsWmUY}Xhbpb9O;tcgnc9z@_q(KiIG5&? ziV6qvJ2%JS?FcBdWdOAymIL*%%TD(x|j!>CrmxNE6;OTV`q4h^izQG&1KsS9O5)p ze2J3;{pvAumd$FMptmDGC!pHwm%IURs7|b`Fei2$T|V|=O7I3mTb50yB$YT4L=;6_ z*4e#bTUXCQhZ1u>`_mb+>NR#Kp{+lKl~&!% zyew@0jN>DR8y7{z5;gpC&ZKD{*v9>8_cWK#`e=f#Sb$nWV|iS z2|k~qkZJ_|t+R)6RafaPIn%hcV*X~~SfMR>yoec6 zDyACNUo-;x(eIfG(W^EYW8F5~j}z*ZZ_;tux5Yi@d-fTXO5}PFRVztaL<1`7dP`DL zC}GzxzYxIGUEPj}ASr{I(oaT^5-(d&EUu$CbDuSw9WMQt)FUGYjzGGBT`j6Hu@k1p zX6D2NF%^9PvJ13hcl?#~@S-Aq>z^vduCLR-sfG7c9pgtOD=R_V@?;PqbdvCy95YY8 z{?^E&Ic2VyQ_zE{fJ9m+`sVV#?lIB^|2aa^ySC;;X#%Y`8tB1!HIV2Z(@W8hiQmbn zGDiZ4hYk`$&)&|TFQFhgR#o&WTt-8t7VvAydFm^&(XN+BPXk{C4f$IaZH5tXaeJvL zN+}%ra%tzA6?j3|{PyVn($4YTcR#Wb(VLq%dZY*JsgcVCCu^b~*;4;MarjL8a4-*{ z*=&QWf|M6&^A?w`}Li1;`{OtaTt66|=^IkqudY$)2CExpP#dVj{rNH$`KbQ*0e|CLPslT7G?{w1#sy0dQ4J@A!>;8yR`L_ z7}f4E&rr@T+piAymuh73r*mp$_ZL>Isd-ZB%uJ1ALFtJ~vk0Nat1T6qA zs73K_@O1-=hM&Na3RnFTxV!)aqFV=Jj&P~#2<>vZ8V$7Sb1q5Cz{^l>x{h(IDk)AB zL%}@{;mlaVoxc1n@+mpfN@Av{e1!?nxi?tmCZF&6tvRc02cTnw8hU9i&;j zFxc8RxqKYA*1Z$2CahM;_y3NJ?jWEhz;C_>`C6z0I%}c<-FI_Gyn&78mIb(-XuD^y zvd4o{*&8{X@`Vhp(RJ|JLSbX34vLRf5UOB?AByvI?I?z_Iw;B#znl7ou~Z>Lj%Z9` zMkfs}8o_nbMPjx2qkY7U{RWkn!OjoK8-pUvlxYydIA|AbRn}^NeQgeSL;AJ1rOEHh z=G;{7q)!msI44!sYAzetBeG<-6c5>Q9p^Nz-blcYVQtX*sU+NpiFd`?_!9@JV%$_v zt+AOkRUm4-3s3ng!57F`%=nddR%DQ3lA;T8CJOJiAtlz9GB4a>gg-Ai1&Tw~2$~71 z<8pkXf{@aDcuGw{uy^A?TBz1c2cSqPfpAozAG6_UK#_cd{%3=g=Tyi?H{ub-?*zk9 zxc<)@OsyHgGS23ggsi35%(5e6ORoMY)doPlfJlE#n9jc5)enqAnGMlkBKx=f{5rU8 zeHZh&G2S^|X~#vO#+oHA@6MHMZCAePC`~~;s38Lzfv~9(afOs|x+9+8Ro3>z`dS4)!+W~MXQ3A%&MByAn8xH#(moLP*X7%(|z=*K|*W zCJHvDqYDUTC)ksI&Ra)tj+rSo@`bbh{838-?p4UDG#wWr;GZ3q9K%qdN_}nbApJEX zHosGK07QFZJvuvEzIlK!*x_~(cfo3X5G*kHU8+N-_;ReWKv zJFP&j0aVGqgd-qETTcbQ>Plg{*-1)7!*;QdW$`>v|ATP@D{`wG?11Tz*GR_QDgj#g zfJ#HnKVT1E0!WYujD(;=Bj!6Ty7kPJkQT>ng7RQf9qHF|v&V&Ie!p$9tL$`!c?T#7 z$^|gr87xNt!!?3KCC$6!L_NCTqv$z!G;C?x2iS}QZR(*3OE3iVL)3$k)R&KFH=+`} zKToTP8|&h*S2B-OD~&{Z?xTYPC)*%o98-7anU{~W=&g{HaEGqkC~$wM@3{WJUxP%b zyD~F(j!K0>$?AE0#-H4wB&lC+y*(e0&6AfRrj6G-7c(vVE)V~n_LfGjEc}M0Ou>pdvRHtWy=`wDKLfjWG%DONW>nMw zsaeSOc_XZQE@H$&_Y~_|)lM_4wj5)aFhLv8spY@LMnQ433YIjW-w6deF&J=cWYTF@o&cR+-Dd>m zhIl6sea9Ja7tvYJM$^b3N%&Prv%zEu<|8A{;(2#)x{el=1g!yHK>4jaXud}*{S%qK zV|Rwt&MCvUeYhQ2byfi@%W;hL|ittlM9|_`2M%6b$#5hrp5IG zTP&bPUd%=VXg5ThL#mxDGcbxywIBI@1!tr$dQ&B!OB*@JjvJ271HnC$f(PpnvfEg1 zEw}TOwzk|Z#WbS-tZVU(Be8D=>&DT?^h)wJl5||M9uMkA3R~|mc2L8Cdu?J3M!C~2 z9GWBiGc`@^JP69`(X>1M2* zT9=l#Q3&jwvP`@BNmcPmmDc|O;|6?cb=uVb`O=Lwd2Q1!W62vH0~J;b`pasIO#B7I z>yQY{=Z!cSN)k+J-RiijEPs6N6xHsVZ(=D|otWFoP$#wA>1qg}$r|fb2l!0?`CEey zIPQ4wgNV}3(-M(LHM*#03%s8LQmc99Yc*0agk@6h<7ciZ^yJ|PMbB2;5kdT4+)%AU z6K<^u_I&!aF5w5e4{*~xkVCb2(q_r$R|gLUb|unbdKaV}S-?Z1c>Z}i9OK)C9-jU1 zGKM_U?$wfImunuXmZ`Fs7HhAc+=*OvOYSXzSAz<#Z#+`qi+EP|=hmH87YxhX{zxT| zbaiar;YA?H__BKE7L6NYW^2Uxx0Qjj{?1P>wV0f_Gn)eHSKM!pyWMY&MRnFUgt7&H z4T>Df6b@x(pOQ6M>Ld5EsspsnW$PP2hnTcLtQh`WZW`#wSIa5zQd$~p*3Dhqx+wf5 z)E~J7-J$Lh;#S8eW~RRCi8*zq%){k>tEbIp9ee@iOQa4+jE|u5@Ob$H1&KvCF2<`))hT-I!Aj33b1S`$;oe?#z8T7&ZUb5YYR4}C< z=FQ<&N}IUumpNi12cZX-H{thbrZZFC(i@~jColRuT6}%ZCEiE$h7FyE#VXM`kW-dJ zN#P+%@)i?OQFiWSBoPzG=QX>18=`^p&A1IG#}2V)ET12`^?C!ZW|NYh16#E03j)$Q zn7mcpmvN1c?f~yL%LXd3#Q-SuKnVaUcDv0Sb}4a2xOju>mFnyQG?OvWgHN zfAfATgtU&o&6w(zEV%HRW?sjinyNL-$Fw_#Xwdd1JKu_=V20z%6XyZ%|6rdMWX{z# z%YL(d0LIY}xr)pi<<2OM6n~+f#24eNxQB_RC&zRrB2v3}Mp)KuMAu@#3`v2(N84|s zE`Td95-3MXa_g{+ec{FvPGj{pCTf@=NY@(iE+1BS@h>pCrFsuHZ|cxno4Kp2fFejq zr-Ig-IEqDq+2%j$`cB-_Gw?5;mU77ata?lesfM?&E(tQFCT(6B|()qO1h zVc1t_ci4^5j7ASwDu~q>vV7$H>p^Bp#G$&$%C?rH=(ZSwzEaQdpCp)DV3{Zyp%UKf z8uoQNJf7H)w&{rjm4S8>+mU^P>EB3Gq~5Mc#H3^aQIQHJ9rDy z*`uyv`Mke#!!;AviJ3n3Fg0Je8aT7=mgdM@nYXKnqIw?1Og&&KzsXPzz8& zsVeKdHk1hj>YD43(FB0XF_$M5UrZQHWk^$Kmr|PY92p(+Rb%01_N+3ZTh1KYB%0R` z$iRVT2C;#d;QBs=8oC(X?~QoHh{(R&r7h#?Tmwnl*jBcgchr~0`#5v^Q1bZy0_3VZ z2k_$o>t2PKyxV~PnN#~9}>9Ut&nVKr>0XDQ? zLyrbnXhW{5NGVInO7pDsJ8;y6FU`93c*dAySqV$>g7u}jV%)bb4;c~aFa=s}V+c~s znhPQ2455gi28*&1cDJ!J#+OZ9x4vk(dDZn;Sndv#3!(tsd>Dz3lrJ~$ii4%a+3xEW zC>hE=HsNJRhQo67CYbF{n9Jzbwx=hE?OT&S^{V>Yw1KoirQ;2x0$AG7c~i$uc}sM#cm#+mDj-fO{}fh@~&$MiOjXsF~2pC|7T+jl%FEw6x|j7*qz z`|BfsS}C8HQiS0l3^E)O8tyl!Qhp5VB(++7!&WII?!q+5rQn*4;jzIKuvGJ)5P0xp zN>4^V?OVZ)wD&Rw5V_Ji;pvB{d)e;ANF|p-?+NQ^&zZ{uj&TZiV?BN}O&u45N5-JG zHC-jg8C7VZ(M4!Bq;Msc7V5jCc#qHi8AjiyyYuN`Jhmxl2DoVg zVO-h`_DD0Ctgk>^sK8}V?#szkTl;&DkVl&cyQvrQL9gDTsiGnw01Gx?v(h2?kim?( zGDyPx-WWhvl!g#dZ~rR@``1hV_9uelJ!Sjq!Z;yX=ONLYbOKZ^sn@7y+=uNXe(OEA z24!o)9D7EJRT2dd$MeoOl^C2BWcSVoiLM(kQI%R7eU89gonW}z`io^xyc~swoOeL5 zW0qNj(eX50CH!m29bEYsB`?wQ^c?}qlp*WF87V2o@GHnk{Skv1(65!@MkEt#@1V>= z5ae{Rg91;zn+OuRSj!cLMz5Qbilw$TImCOihtz=esifxjmJ*4_7{o$MGcg-x-ohTn zbg%wX5qRod+LiYhhG~)(9)4jcxkF==N;JP6mZT4T^62lWnLF)O;Z}x#yzFT~=it4F z9)xc8KN1Z*gSaPaZ7JP`yebYXvuNJc+0l^5R)M=am*D)}rV2y_+C}^3Kg*H5=9pzu z#?t-I1wB@Ur~NYS3Dc?xBju3v3g~$&hLsUUS2u9PAo|(}gr_Z)dr0U4UOdFF!*-61 za35BR7yqKu4Z3nVXSiEnl${?5a2Z4n)+{GyQkvYGbd%TISsnu0W}U(iR$={bi#i!O z2FBm$$&g}wsNu9bA&VB9p+;p+{M=;6xn^N~`b zs_a-4cy*0*#K-3`IqKi}%=Hr)__IddU}a4#P@J;rX$XI{467IA$V3WA<{oGkc?etn-T#%$t-BMfYKZHeBG6{T3MFe5?Vg zobT|BT?~~ef1-YV5xuGU>>kOz^UPuvgm}+^Kuu1U=JR#<3n->O)4whp*2#-@=(9Gb zV&X7>>HQ3xn|a=L2~%*tZod>6WQfVU4BCi5@C{|V!yeJ4t4@p6!lGHMJDgic`$>RW z4yR_ETh;Pxh9^&%V>F*rLLNV?=FRZ&;9Sui{?g0drW2l->VH-Gp*-%7N?P?+g&ZXw z-9b~~>%2HmvZd>!TnWB>)L6$24TvB4IflUGx{c&y{(ZM*dzQQ_^R83&W$*fb)enfY zUD)b&eoe0EuKj-=*hKVttv&*z=N);>J1Elhj=FhMx~@0FOSa9V%mux^vIvMn9tO^m zMLEj3u%fjM3k$p2n?cI6R?^$9wB5M@vLCEN4}I#A0q)IE#m;~I;!z6f3^k^Ey*(fr zJB3HDR(vM_-R)QB9SvN*%va2=-}Bs7=>2}GV)Odf(TE_x#%)2k`pbIcLRG8fKdSUOJ854I2$rQ<0TO5B0 z*|g8dd{=|yQ4mS0)_(aX0Hmp)xv~Os0o6GA`M0rmV?(AJk}R6%1}p&oKLEfi`;Ue7#_fr}JjyM{bePhl}^4)fT?ESrqXAAxODf19BU+GOVEkzjgeTX{m%7}t;d zBvNrgEciW4-!3P;<%iz^ZO@(ZOUnQm+$fXIj1#+L{P(b?2Jni_a6vnb|?O#C6RM8N@ufa)=|5HOZV$l$LZjBPl*IS;ziyiV5N8V ziLe%Z{fJs<3~K3L`b0B6DS~N;M8X!upU0(G<(%$gu8)5L{7R_|R{D{9Xt|Po2WWu@ zTg~2{i%h_|ar9LXdB`bGK$lew&s|e7hy=LPSvwBf7jpZ}3VYjpM?iR2u-6$!cawU@ zBd}fOCJhYxwAniDmQPUB7s-Oi=x+d^m)JO;xB}CZxPX9K+AUfkF6@H*UF47{94=o( zj7e{?EYl$S{0SxI$#EcDJG7Cy9uEuZ)AVDc7HJ_zO;=nb1CGtLfLei436iWzT+Z!; z_w7jhZ=a#xttGbOTp*3hS`EdFID&L&NRi{s-?%mL8CcZ#PP}X`cnPzLh#|L`0_pwW zLkoy{7mA<8CKLC7H)C-KU5aT%J$4j?{5h*xxbPE!36Zh2#f(yN?g;AJRI9_AJ7nl) znhrhU;{dsv*(6$h5k!jfs%pcc@@CY5o34#0j-KGV zPI$Q5%wW_XsP9jRgRZ51e178jm*-i8UGl@w6kd+7lF36pIS&hgN#XyRRMYJ_yX(n< zpLA>PrIoZbr;CILKa)e#5rF zs&%UyJ^>&a?#tC>hcSWjgyznlx^k^`f^(gGgJWYw#-@~>01_d(1rp6 zF+ZaMJ=+!6Y;izZoetO-Fx1(ulJ#jTv3{eRk~eLIW7^+f#AdMLsadOY`E1hZiNS-l}MPU7r|DT}sP6mpxa~2XZqJeN?jY zXO!{m>|Hn+i^TA$Om{#OQ_@UAur%lT&N^PjDQ6!5^v!{oBD#g89%7iu z9L921;CKm9jRenct`7kg0pbrNtzrzQ(rGjdKCWG5#N->-bG#=X)1aI)e#I4Ttmx0i zgT~d`C0gha6#)Rd%e{f|h9@-ViJ+0a-_8gyIDuE5Q^dLQYo(GTpo=$C=4Eb=6JJ5` zar)`D^^&=W(Bbs9=RCT~5_#!3bOmQB*EM7-)dAb7Re!jpm!!eMzn!nCZ#LfqkZH;_ z-}fYVLwor<@)ZneZlfQX>&LZIt@lt;xZ*1AoNhNVCvZzok5@oFb_9FdVJSt7vWZ-o z5+9S2(2*(5kEF_YR5$Uq&*phXQs8Z;Mfz?pR77zAaNDO9rlpP~f5mnkUuupaf$YW_RQL?R^vB}+0-Dft6X4LYJ{2(0Lo?BJ5`P?mQD|+ufcY9zF z0BfoG7|{|I%&Y8+(R=U+me_I%m~0T&aSSU--s{SiOit$4+Xq`OxJnrM(6j+wUEvxn zQ@hGKnuYy=2>R8jF8YzyM!<7Gp}v|-Br7R7qXGuV11?LX zZ3tM&%Wu0a$x3a2Vm#-(hOaoEi8wXmi;Y2?2d_Z(O`y~M9Jrmp#3=;G> zHCl)=ghbQi_T~4zIG!+TMSDD;{4lEVBjo4JkQtAn7_N<=sr?m9{ru%i9|;4l^C%f; zJwtuaLOXB|AzQ3Q3y}9rQp;YVFPP(o!FxsYQ~M8~ILPV5bCO>WfNT3>9QkjwvDi!F^d6L1 zCVF~NYQHRXzsu_tm|n@*THj!i5j`!lTQSHuHBMwJ-L%v$;f`5W9D{zL2YJ1jY+36* znoH{UX2Le8(Y|`?oKhH%Pxl{*0ISlY8~x4FzQ`Oz96}57SZ(}}FZ84bf0jP-MNR*w zpG8I5<4D||&{+4rl;F`&3c_eu*xi_Qy6EvAe3U)<+WAN+x{s`Id?JsnVFnJ{0AQ_c z#%%Fq)dT7%_gOYB6K8EjnwI8=2`gF&v$96aG#&V72Z4HJ9OE5TECtXoxvTmdH)oIU zp!rbqvTTKG{gmCAn6nYkGjAIx|E!Nyh^)|OVR$#~Vh0w(XfOA;r_)rT7jT3fwT&n_ zjWp=2q3xo-V^wK1pm+tFj)VD?*sgLX5bs!`8ZOG}6{p;v#zNr0-uI($<|fbsq-9di zicxjUG81C+qQwkGR8}#&2n1C(0Rv^vbTAz z^fHQ-dFdnJtxeu8DLsm)9r)*a{j{kjr#s-;#bZGQUw2 zzkUPWRKNgikc=$eIaq~}L-8kq!cR+47ocZ+`_93(``*6z+}Q0<<6F31W4hV-+Rgm8 zOnk?f*0Nw^sqGiDdopdl~iYKUm+8( z@<)HM7V4Xts=3gj`=*aCkfew$%Q43taTjfUFgPMuo7ZJrOJ|QUY50AOExOSlXP`XL zsvhUM%qRWpwZCFZhCS)Iy0>)KbpD5OGlfD$|1Y>02P`OiEDJCO>#<$es(A`d8u*e- zCuMD*d~N*3feTnB{N%Knnlw9oK~;X9N90`*Fp9jKsk(98>n+T>D0K-ASH+F4QhYD#ADg zND#9XnqBjtC+Kp{Pw%ls4+;?r8oiW{6DIboZt)WVoHmbt7iM9NIjGLJmN09z=nOE) ztpFQfAs~UsCrS(M73)JW?>$37idd#lmJZZd1q}szZ^a-{QYkA4c_w<2=mP+mHXSOA zNe=}N8J{Uq@dw=TBVYa~B(D1K>+zdfnWY1nE<##p7c7Cvq9Fn5r+Agsp}Axb^$S!| zj}N71b5_JNX!7Tc*(ZQ!C<>khG6~=(NAt!c=lT-sY2r&jWa0&@gKEG~Nb=CR_@zeF zro}V|A*7+dI|u!kpcwjfdOpo!RT2MK%@ZTu81>=>t=6@ANO5-iPXLRr2E?M%Bc{hj zdgQ-*`$P?GMCwV*;YJ{_-hZLSJo1E=Y`)Kl%7MG7BGXeE9YG$wNbhAic^;6uG~uC< zf6NsRL~n4c?C$#6z&?wO<034QOi;ETtjo=DTxx2BDT8bf9HOGwac#mBTT5K?Ub2@a zy5?a!hB=yMt3=7VowE@~jQqP}JzM(F#M2E*H)5Twj=d;c-Pg|3jqy8r1|VVoDG|F* zdF2cL!0IVnsE?67?uO100=tS@lI}$={UvFj&r~ES&!f%aTwZtN?prla)dn9@LZ&(l zq5mn3?VpZnpIB3fnQu`z{!OnlOf0F3PchA2%&ITdRoic(c7N-v4)?5vkeHQ9`Qi!9 z%nF^v8hwn@q2-p)5v6k^&Tf|ZC){V(AoPG}Ly%C(*$k*MvK{B4#X`8=)>&N~ zs-wnM(@t`Ijmu8m+vLn)-K<+GivvuISJvmnaA(&gRwga2m{E`am-qgg0sTZ=rCB6f zLgM6t$L%RQy3lCED{2;o3Wm|b5Wc zG<$o7RCv#XzS*d6cVVMNOE14 z&x-Or;=lYaD%L9Fp%J@qC+*5YMH}>3)+n!;5f)DheFys$l&tY zO~<&az~;Ly;%Olh=xy(ogsRB zPy2s-6B9?mOJwjcoR}*t|E`VGRozGJz&w&4wf9Rz}UI*S>1idC7MNUpU_MdO%5W08%Nl{33FNDdqolKr+m*H#L}2g%Zd|6HTes zg#^EJN$-U#o;9-kd~5g2C5Oc!ig&lG54#KE(<0V-r?y)Pr=yW_AVD`JhJ+rD&p0Ih zrwBB}qZMU{ke9E)Uy6OayGPRA2xoR!KvdY3=bQ*8SPKmf4woS*&fjceCeQ~YjxQro z%sbLQQ9dHb7ULN?g}@CAFhja3?|mN}ku{Zwx_ZPIdL;s+F-nTBEIuH(d3-CU){9Z3 z@7^I;R114r==F>ByOefCeK_iyvr3MhsRi-qe-=sQN+4*Z_DQ^xkC&u_reK?KAgatR z@tYv1CvS^42*i8TcN=7|BAd{RkVqa6cCE$?EiU*f8x52`bM5m#u5Sh79c5^1OSacd zK$}zH94FsVUU~WTTdx%asv-an2N;FLXz(L)dpsm-AkI5d@Fj|{n!S)9zPZYO?gbi}y@C_Gs#lYa}xk zsQ)NHWGgox`B?r)txU5-3$Az0+>cK$40=c0(7?uQ=bp9lxfdKOp_jy3{(qcvW;Tsf zqLy*=oGtn`AxzSf0OI7yQIEy)7UmH!C|U|Sq$QoY_8kpbtp;@W{M-WC~%PE#7eWV4I#-&2FT0GpA9dv~sTKl^f&_^d)s=ge;xT+?dQc zn2acfJ;^Nv+kvOw&DxYxIWc2k*hy5V&4o+HBj=Z@*=98MKrU#yOjM;R2*Gw(IoA67q294 z$#@e>IP0?2Tqw4h zG*6o>8x9%RWno|ipsi9-GUN`ki4wXY&!za;fDufP{ql4MNMj(X-yUx9DsbaN)h`|P z^~1ib+_uXEFUPu3!MA>bz71f@+BpV*xR!z!T!CsZpBxP&kV6~EZqSI0!o_WA#ejZ2->gU!=8M2HIi5C^p7{?`Q5|&c zAre>j%4h<>rq9+IQ_I9)G}p)ubB+FjGTrV|nDeYig5PNw)O4beeV6-mm0ckNOT4!}Hg2gU87>_b%Q`km@7X^A znjo1`*$)Te@)nal5JCPiDzRg#Ci*k7)90%R{H~jws?cs%>XjsF^GN@tsO$EAm4wU$ z0N!XkKn_;Pm=L0{X#%dabw0`K2(UWkX62;4`rZz21$cUstypkP<27Ov^bA@>J2uC^ zAg=UJEoAAxVeX80aNluA3U%D!<>u;mtnT{&e8u;*Fp0whl`*udeez$ibvz0{=i!f3 zNW9cge9*Y3hu^O3MS{WX%}f+~k~W2hRKr6m&)BcZOdq#JB*2NHM3x2vU8*OqQ;j zq=J?iStfpz2FgrN8pa#0{4y+lAp=&zk`2QbiTL!aIh~41qs!f->EA&E5P6}oL5K@6 zE?HV=CsNFl9|;-;acq!t?X&t0%g*PQ^5H8vBZWmcxm@lIK~&5R7)i95JoE0~*0%P= zN=wV@UeF30F=`j>=TA4`8~9k4Xh@Xf|4Rqd2m-9LDh>Wuk`eoJGPc8^k>tmC9d3QGymIj})Lfm`aH|1@2pa+jJ{nk_|LHem@H z3%hX~6i0RtlINY|f84989=@qCNHEZi2j4sW6djB>DttBQuJTpMEMMF=nGbQ0m0tQB zhx^DGfTM*5xTq`5=%xK00a3g!IZ6TCa0g4mujge|&6Ry28*k23gC6r?vwbB0sZuAM1e%|p}W?K916(iD)lG*GTXV(B)ZZuXh z3DD&i9jRN&p(0KC{_QZ9%Klhvg|F^!tVXN&nq9o_?rOqw@1H#c%kWX|Y{>$6w?9jm zES3UgC)L%~v|GVmD;*+ro3vGFhJI_M`8F#0+B#{U?`w%DJd8Yx#Hsftr_YJsJa4&+ zi-um#6!ZgP9(9PR>ihx{RqGw(m_?E|Ib&Euqfu!KlY(i5R~?z9s03om>&JSF>+>6? zBc;2CI%4)1x@;BY-Q??SADnWU?W8|oo zr9}t(G})R@jnpot-yG0hHaTneOVWXuXlhB2qU6U5h+WSf6NMDHKD$;(>ayFdherUQ zyL+AFnoMgWo|bdMr&7NZt<&nOxaQ!@oVrxDBn3?o;Sb*GZJGR1^f{nmvW^>D{Ws;L@ZlHXbI5x7`(1K&~QHG)Q(p%M{pcaKtH<)Re zf{P7%%s8m+HO-ddeCnM)%-D@g(gKMm-f_lhqNtLZ9Xmuw4@JE#c_L=^1{zt2FgX3msfmtMY6*svlU?gD7pBc=+$+ia;!g?=h ztsKWsLj(RS>`#8V>$0RsJCA-ni!YRt8)r_MJ;Cg*zuK>{&>+~vaxuJ1*qjVS>_7Xe z{@pK&3!ex7N(y6j)O&-kQ(wsqtqh(7LOLX@-rA4wpC%MNgE47+T5fR0i4g~u8&Cj_a3uJ7}+m4i2pO?LA*c*G7OKJF*p zquP8|K)XAA+G)|6^0UR}jvbKFlcbKLYuQbx-V$9?c!=4#QH@X|@Yz_Nqa5G zz0238J+l?JF2B3(;uC&asIRNZc1^~?Iab_Ztoqi3u}3*KI&8k|!w}~B1A z4T5Y7x(ZEr(JZUx zj287-p@LQE_ki*Si7%@j))PVvP>6hUcix_Zpxr7qe-u)Nw|zzNrX;4giA)N)gX*0i z8qz}v)b(V+Be7MSQ0vtbkcYasC=bGiPGb0ook-bKtquI+N-$-RCgbE5@T7Knk^=kc zRL^X2f04C7jiQ2yak{?9!<=Kp$!2;XE7{q7j_*cqP@1q}~n7~Ftzgrw4w0PCZliL-t7c7$}ODcHC&h~evB8e0 zx;>jLxVsagpC+eCV3cVmoM=P+8FCv(om{sT5-McG)-Uz7Mo?xh0<*6CxNnT3jdONz z3j*AhV16{-OoHL)0QQ-^6|YjYgm~lCKJ%SFG#q#ODs_;!DW@>MF`68m$y8JM~IqdIO*~06Y@i zCtxl?lD1}~6JxFFkbiJkIHvOvlOjnY)yOYe%?+kgm71l-he%h&(ED$U?%%#=Shrvd z^_#t)RHGf^2nC-!fKlVl#r$;vo=)o~r2ZSZ4bh8y9juucw}^z9&(o~GyVE+&AS(;{ z{t^n&m%uCw@R*yqp`xC#Tl2KCrV#=6mvXsuTWT*gq2PzhUOWyy34po>b;H9TyeXq0G!8LVhT99Bw#5J*}4!rJ}sb!Awogy4o66K!3O@` zfuER8$9idSr<<-%d=DD$NpsHRMxN1u3p_D(^n{G6)BFr*4+hv^tvIDy!~hq*m!j3N zEk)~l7ry{sAv%jeBCCN}P97tYz~eEBKf5R1C$>p+LFph!#WKl{N>nOHlzyI&>|yJr zET9S=BnpY3l8*GsHGg=rXt+f?NnjsO%z2+K1Q?-_)Urm15f2t; zA75`h;!*=Ep{G(_Nb?sKKCVxAjQTT`QW%k)foo|-G^f>?qSEzfM=*YcKzI2u^?G;w z$Thg~cl)d>kZK*WPYIHO{^4$B5_(M{YB0sK?=yqa7!By8?OW=!Jcpm;FLodo&e3pN z&t%|Git`lgmZ&K+nC6#S)wBrHIzjhd$4npR9Gk+kz6#s7!w5xgXke#jMHfc7Ov?&c zGANgX5fMs+13_tQ9-RSxVgaqHCc{k(>!=c3F~oX>P9t8RJ9C6$3jpD|m{a%gP38|+ zar7+rNRTSn{GfatGRR>8AGd+7XgONW0FB?k)W%M=5x+0LI5_bjC|Cl9HJ_bK*CyEB zjVhqBkWHn0!8}UQ`yQna%HMzj8suWJ#JW6HEwj<*6Nm-3ylRB2wHdOaD|L@czZv*G zlXd_l%yRvUKIHe`q5LSj$R7sa`{3H9onuk+TsV2B)vjKsSPxRn7tnYO!X|0N-GyjVI?&&wD=bL1evEgpD|s-^DJhY816o z^_-6=u?T<2oltOY^n;yesiGq= z)idWHg5*vTQMM2CSnz1#luS4Cw4Tt>rt|J2-q zg96W^iQpH zf^?Q+$D@Y-`>NEku`Q*XqEHlnNAE+m&lHEu*o(vb9HCWtZOfBB!M=x;ZOu_TM5n2% z91oqNpVtnc&zm13st{IbM4dFi~GAH+QZIGcz0(CavR)ly<4TyTS)vS|P1% z#Rt@rWz+Q0PA-0dwJr3^!x(ovVfpt%H~i4G_oA%U7=}`not(i7m+R z;)S(i4^cV%CdKUCeIwqF{Zs1;%d$K&?@4ci zlFf8aKF(8&=}zM_<}dc+xdJHFADOGkZ%poVSfMidx?WJ1X7L$Wm^-S(lWwO>FOJqc8C+WvS1RE}#Zgk%sfN%|DvV z&y3$@lQ#WKJG4mabxFocn&Q#dLVuco04DX+FN4^TO&Xe~vJz_2rRt_YIqac#kCf$& z@qMku7o9fIQR#`qHub9$$23i|xmK$KZS+qFH}t1XT+Ozn$YRb%Sz)@W2S@fP*hw%o z!=q(omd0I;hts7=F?d7@WiH7_WP?Ob##!Y_s4eyCJ>H-j8{?g*q`u{np%je_-!79& zta7~@uNu$eLOcZj0Z*t7jz*3#ufL1BzyJ3&2jhTG9ho#sIoZ_$1Pw~Qhf>;up99b1_vxV=Xf`Q@GpX{%w4&!P}Fgs4D zL|~GnWb&CNLk)VN7kb!Uq;jQz`;2(U<9aH<-<0G18^o*~yRCv;``h5ASF*UH`$*mW zjk?1+s@{A->39+(ICLP6c!(SuoUV+!CjPI+fg*DK%w^3gKsGb1H7b0BSxg=UPjraR zvL^=kc|7aoe5WI(3mddD+b&t~s3C}_q52(tW($h{T? zNKS&KnX)f&{AqEo@OR;qYByoc%E8wAL0N4y$t8K9*|4rRCCi|ywsbd7GViSb`h|UE z8-M-Q&o)%B@bMOXK5}`)Own@oLgh|lDs|lYf@gJf(C7gE0>N;>9C9 zI;s85J`7Ho1YZqDbr7X9*`XzAP13vYYy#83YA}3#dCDRk=?y(ryeTSA|4KbKa#G$5 z$k;62!xjmd7&;T^@L3>gY&r(LtcAGBfq?N8Cj?@VJ;;s$!uE{vF0szc9f{~DD_Co? z_F;rr1;>{c=t^!`iO=PhBiBY?uqrq|m6Dgfi?=WAxe@Qphj76Z`b(v)#J$$$zEdA! zPBRM+7n&ClLlPI7MnLo6MLao;qdtN=K)Mpwhy@BQxLap& z{Ci-$S=J4@-1vke5v8*HCo3L^q=It69a2}k-16<4;_YP}ll(b%u9D!u^Z6&xob>X0 z@x1YkH?DuLBPGqZncFZc6EX<3_)UbY63P}LAO?Kan%rn@uedNHKQ4~pmA!F4 z)T)M5l6&J_hc`Q*s7WSxD}+DP{Ny$d--N+Q$|r4-c2j_w(KW5F5#73Rac^JC=jYtt zeCVAaIlpj*+E~MkyI~^3ZO|O}VpZ`R1l5SE#>`0rPV&S)A1{R^Q5}|m>wPmB5ZZ`c zlYk~zV5(ZnN1l#|{vSO=qbP>fs+WAynekO0VFK7*h#nkddK7Kw&pk2KL@yb1XQNv> zYS|L*n%?B`s30F*bL8?0U>cm%^w~vzNMrEvMc+LR{{poerGyH;Ma=)Qmw_Q}s)Bpa zwLvhr|1q!#<4?(Qc03@@NB;)QgeQ8Nr;Dw~k_#Z{LF~0-(>3kF&ZbR^q=F^_i0Ly# z>bkvIgTk8Twl1dZW z!2PZiVCXAtoy46Diplm9X{37Itp9^g>Ve-Go2!2GSKmdN1BE8$?E5T0TPR70zh3cB z+*uz8D4K(4cHaaTV&ino^2f&Zb->QdHExJNY?qZXwiY7GNX0Oh(50Iyg~HdQ&w%S5 zQ5cVmEl}dK>@c%x*2k}7hRv1TXdt;lPEjTvfZmvkyTU1IXjo)__^kR?Bjfz)#li-oz0+BJ3o`qS9Hk`1K zUUHc}JeRC3Kjh~Kdc}oxLau86+Z#P{h-ZD?BNlfeU%^WTipdutiocIysULMRZ7so3 zsS>KJhJh%DYW%5OXlzfu(TC4dxB(5$TR4pv&}+vU$POF@z!J+`6-=B$w9x;|pOt^o zK&J2=O(TetIIYSH4D3yv(NBrxtj+^1WUDk9j)SV z=sqL*9RzAni0Z*3dK})A+$J;Ye5-RrPo?7U1D%LZ1KPz-0yxcvqci+y0a4r@nLn#W z5MJU+vj;g!bSgwuW?UcY?)VDx@F3p@Nmn;{F{zDWF8@zJI<|Wm1EE2RNU}GKSu}k3 zv-C$WVBq1o)9ojiGpD~Y1jv>fu1D>^ryoL2=wMGDNnhBnx9dg%n>H89?P74{ zR}xY)`Q_7s-zEKtKI0MBC!ewhZXf4Hi|KpF%_S~qo(8@2l#@|7c1jBnVo$@{sxV6X=-dRmu9jX~|VT@6fu23%dMhzip2bP1tdX!ofUwP?H`bJ6Ae*hA$a zND@S9fegP@ZRjm8`-OWU-1o*cR_IH*Y5o-LRoa^(bZE~4Fl=Gv<@6&U%dSj|w)N*j z+OfO>E%bPyAUgb_j^xgOf5tu|^BS^c8acDmteDfn%}_nUx(u?Yp9cQRm7%d)N!iKn z&#^%v5yXE9fK#5QOvuFd#DU}+u=1N}bsB^VOWKd_h$buOR3XWH{@Wz!@M?Pst zYi#jS%@dU{d9^`R0_I7D;B$Pl6(jRz-~WW*$!@LnJj^G@NS7*3fKAuqF+%&Ov)dsI z+?b@a@o(J)@VtM?t8j{dnT+b{;q(K|VvxdX3l9^8t)%=?FN69VEZ{q!2m=_t;06-q z=tc8sw0&5I^4y)MY|nRxhw>xiOc6-pEtu|r836;*+glb?ldG{_CR^@#gcECdgu!;U(br@#(bLHc;5eGx@-5!PkZ{ofD%|1j9uy_@Q(pdVSiyeasHL% z)8x&zvHQz;a(Z$N&Ek{dq}8*xLwo>9`WN&mJc8E5*mwSt@1J9QWjRT=SCXNv9X)6xS*3Jfz4Fl&X@_HPy}+(TauhA`<4&vMJZ z2N8)-eD*Y!uqnpBlZeVVpN(I+z}dgjGssR0H83 z^BDK2VmZ8|*VpB-DF?UVl}Iex*CkS-kr`r{hEsNa&q|fiY2lOzz{SxlI!ikAg#W+l zRk;K*_h*1~pLMPO0 zF1MJWJL%-6iqmVnfr;<^bWjsZSlK3#WxvT#u)_oc@<6Uq_!rxhvt?PO6-*580At}uiSU6 zHWW20q~cztF{8VeW4*oLH}lT~?>|~Prxk$ga7sO_PTz=L6x?Y6NB#BQ>zH1bnAS~k`c+8)BfnmBifg1q)(&uS6C**G zBZl@S4F)dn6Kx1#@^US6Le05afqS1L`8G_V@3zZRwtmT0aNxAR?`zWffJS$YZ|MEg z;PllvP@v}P{t)C==38(%c}Wy)E1P-O8Kf41CRFi5lcg`pYxCR` z(AA_HA(CX?o814ut@T$tC^u9E+o@X<{hW7S*M1A9p9MLws?^coiBK8A4_q|2qq-`k zyT;9-XE(W*Q*q|jyY`Fzx`YWZHMca}6!C>)_a+y6&NnQOB*!VSZ?ddj1sx$h3Op32 zSzHziPyurZ(R*p_>Ck{?2QEi)4W;k$`HB=ds!)HdNZPkvEQqh4gM;4tJ+Qymd2Y6E zQoa34vMG=c3roQs;pTpJQz0BXfSt^S8idU+%hSfKs`N3&f<$T<**JcXXm{ zZ=p=bF$6r@H}6)V!YaV^I;@#B4s96Gg-43!A;5=w){j(FjhP* z@#ceUGqpX}t^1S8Th!I#y*aXjXS_RN*1fjB`~(`7?ko|~v+KB>aZ?hT8UJ54rS!PE z6VFB1GhZxyp^_H!7Y88CS(GH*bfoU$T5bM*X%k!*3ZuSgqW*$f*uH7qk3vJFd(g() zhLe%(3lb%74_o2%L@>*Fjq0+r#k!6Iu>YLtwC9>mE2T*aGZ7NXqg=9vP@^Lj!R@y8 z%GM`5MQ ztb4c(_wg1MYe9+SU;B1b%mgz310o}lwlLz@r`c~$%6I+atm_N8{RYRSFzzh0bf&|nd`a*LFE-;saZLG8sa!~U$`CVCvo_b759xW>G-Y8tSo>>AgtJLm_X(b{tTf0(rQ zU7L?d{s*hG>8$=BaLu+-ioy86%JGh3-^d+Q3X{EIYTfleDag3jwWR^^H9tt0w)*W8 zTp7(NsAr>f-GDa_%-bX6cATZ5P|^Nrp;Ln^l-<${6PEx;^w3-C0}|iOKj7w7>{)@< zPF)nPL3%?RHcwt--H&G)i|6N_0hV_5=sf*XiyMAI$VC9tEu;MK=`(H0?KJJ8zX#gE z{$JGL?UP4J2NrFI(@hgpZCmr?iWx3Fb}$r^{oxd@m?j3DEf)1LEb1TVBBk=z^uGbE z>kzTw_JB6zQr5%g?oE^=>AL7x zT^hOz3GYFyT<#Fj8lFth)t%+(&S&o&c7`;U+E%z+!uM?>L6v_K_AV?at8o276ce<6KNgz#V(T3U$G<7=XxMczQq5 zHj^_xdN3}w>4S>tvHiSp4--S_y*K-1^QQOfJV!(ahQysLCvudvTrtcM$<*R6;eOPsm*O3s*Deb$@kHrPq3VUw7n@i`5R^B`_hMuVmo6{ms}~IJAm$ zhWZ$(mFSUYZ4x|@VbtQ@*`&Ls%e@i(*A8xlclCoGcRd4%;L*>W?dSrKKOyxqge5h# z?Fq69zs}M2n(47lKm~>bL`c$&{&jAVvi;OUA+bcg>5!8f5AzWdO{7IhiHTy{1!>_! zl5m|}djbM_>ToKE%si{m^{LcGLYl|65*J+Ys7GVzcJl1vu_NB6Db`EtGYlud+nhY& za{USp#awcf`aDU;62Qj?0NykYGS3C}*!f>vzWefC$o`Ti-*NSt6w+Gt3BndaeV!0P=}iH0}_#XG55G{e%?6_>jyqJ3k6b72DO;@8;?QV@|Cn z)L!tPGnPPoTrDhp0?jddk3mn%mqpnWgAObO5zQ5xSvX(DbclNtDbvHYnESFGg6z6W zG(<=GM3&UacF3UF=15(E@q^9;Js#Y2`9VnJq|t?;b9DTH+JAsl4*fA%CV2#rt%RMR zo$W=f3o`or`2U!R-GwtYhl_Vt5ZaCv#(cu{MQ0TpV2WFMyxq?{tz(4!oe>%`hls16 z*5H^;i#S$Kz+}q?Rn#d%aU1fps&^(d3{ZlD>7ltZOv`6dke6PzFLlrSeEbauZ~+j` z00v-Q)RL%6rj)N+d*#X%P(aP>Ll=vYvWNe_j$7#x@;rBVv4yq;9hjOi{AP|XshN=0 z@OQOF-HbkFZj^gU+dnRb+eYX+?|UDAil=~($(ak|VL`0gJY)jqkt%mkX+?|=_mBFw zw(Z;E)!CMi@+WzN-M0r~vfipH;D_H{Q=;D^lT?ReYKQMi!oj=#f%DhotIn zZ&qN)nZUmYrk%DJ2uiy--@YX!BC0Xc`X7LpKVSHn{c*Kc^ce1c;*C05wJ~Fj=nxas z_Mgtc%MoS%`r5Sf|7VEbCG|jT^ngijaa0^uK;2RTMh(Q6%d~uk31_)v~)_tv3}CiDnbxLBTGC9v)2hsJ>=$*Okvf6Ejlpxw-~o9?Un4 ztd|vX@c*=1L5myBG!LcZ6CU&wDNI)t-%^W-&psU#+zj^w&KYB6GGIhZv9sU{7|J-7 z9{`3IrnIsrXVIKtVoVZ@A*u0y^U|KYxQNp{_b@^cn2JFrj`Xn8?;m`J+rZe0sNrY2 z*lDbKZyiH)R(Tazj@+yjq;i#qg!Vek)zj3IvVtk+_At=V(DEF>8wzSDI!vJ;%;jU0 z?rIvT7tPQbc-AOTtt}wZPP4$}!rr&ca+!NHE?dRawKOq|^?G@P!klfeQ#vsZbsxch z>kfsPfo6Q;`JR;|7b5{^H+mr-Ywg}tB0N+rJRgho68O2_g zD1iF+4$m|}1mjYbq^^Oj43_J1|0T?Q5^njM$^Gu%+iv`qPhdHUipk7Ta zHDY+LEELl_`+@pZ_XIwCOEX=p8O-TJT=hEfv&bw#%xKHE&z1#t)B`WBXL7dymX@Bu zS`}l=P;}W}uKWiiRsqgigf>L*wuUmLIZWrWJxWOFPA6MmHzyKxy9(Su5eIU>OM^5< zF!%Ox22*J*ptKLFx{+3DFm>KP&=KE%>awV*}>`0Bf${ z2EJQu5f@JiJ#6a+7^8DF)}7&#vJ8H*JDWxTIc=X6 z1ZEAk9}x6jMSkQF=K|Q6UPF zIbJEeWLI~>K)X@O4r1dYo-5Jl5%%~t2+swAf%#|9$*g#lB=CW^9i%-6!<@>8ZnYOm zbtf~s9$MKiv&=#8MWbet&(uODmnB5aAd>L{#k(DzwMN0-+R;Am`33xF9+mrW2r?W_ zazjHzarbhTtdrgvw4#*Zcz%p2;1c766yH1;&Wk86{Db^2+9KVw$ol;BR?SV@>m&FQ z5v1tOX7j?zK7DdEesda!3SI4EC>~Zjm601#atAMaA6_2CVAZT_<;C}t1U)9#LrUvk zvh63`a}hqk+g{GS^;rN{P4<|tA$cbW*9n6_{VOr@|FcgY20K2`sxuFoCI{cx@F)Un z5sIe)on5*Lt?I-H4P>1NX4ixE2ixSCHqSVc%1Ijgcx6LdM*LvDAYu=ar~`W)ighDM znwkPWxhr8sko2N%(Pb1JO`n2P5L8TKcK?OKd61qUXA{~Tn$j!)Q^a!J!DAQvFH zEoQiE;?(SLDkaZ4GTj43&16S;Zwjs=qTIO8J^hDs09k4<+lh_;2YHp^%3v79RqZ_7 zyxeGn|KH*qHQWFP$2OV5^!63?`n<=VQhlnn)k=&NEE1+#r`+EBpaM`+Thbt`=SnX~ zP5~g7LkW4GVwH+xJ;qwi*WoB}E#;PT^p`L%%i}xX{Bp!R2W`k03=%VXh!lzf|jfv-s`_l#veO{|DHg2ibiWt z+je;|wowKft^l|KeS)-YYe|!|jLH9ZFVNOtB^Fml6@Y2X4amHC)8A;u*4y7>24tcywrExG0J-$HRQL2svy zLVD`M6I#m6<`OzH-5-CWN!yOT;n?!%F5v-$*$L8{I(dgH(!>2{aj~BWpl7E8Iyur> zzyFov-sa&@sVkT`GYxm+T~3yl_y7z-sYIPI?XYa2RBc@ie-1us%mnfRY_Fv=hGNUK zFO;yZ09E)^IOA()!J|AnVDu{0-*1*+LHLE|4~4CE0lloT6j8L|JeF-PGfuSSJxx=p zV)$RvdfUy%95NAQlZh8j-%x@Lsj+roI*e!G)TCFrt%5<1`(`AWGPMs>pJpiQVKSJ) z3~J6GlWU57AIiU-i1AF@Mf=Fs<*-PL-{Riz`r^aDoXP6RgHd^k+9r0oFm^ZU5 zq_b?qsI_^eam3Iw1_vzF)G&JcpsOIgKc++i+WW$F=m1;F& z2IY-_Nn@M5pN1X$ex3A+I~kp21qTCJ!dpkRN%+PNeKCrX9AH5#nrTOrjyTj`AI>lr z0o7P09RG|zSjlY=@NRnCDATBS&QMjU`?o(hZ~5FK z>fj6%x?N%cFbfF5uity)Q?t?;d5wQ5Ef@M8obl-@{g5;6=gWVE8I*%!*tm!aQKv$n z!6mGdI$Ez{8Ww-}FRjY+Ug7pku)A8Hr)(q(u*~G>Ob;DTh4Q1Rn9xwvX4M$u8j0CS zD?xv8u^&FGKh)qsS=j$w{&iT~v7hnCC1*u!_+;*%TauU%9jO>f>B59T?#VIp`m=xhHV_=UWnT>J$#pjO`6tWHr7uSNvf^x33_Jk~P(@QK#Mvr^Jb z16js<8bF40pPXD?^$)MrfC}TusqeD9?ZQzb3qH)AuXA1puLLCBe2up%<{2GM8mpq) z3OoT;$ny1~9_E#;AefT=SL_V=+T1A*Tm9p*chL_p*)|Fv9th)GL~qDF3E8P_@b#oiMQFJnJPR?5)y>M=AYc0M zj@p26B@`RO$SuoJLzsu$NDUgxE{s4eMcl|O$o2!VFa@j)1btOB$N8s>NBroVlL_oe z9pr#N@BCGQBO*9$i)leV9 zV;Dt$KP0bI;tFRT&ilLnUSKOw%NZP0EIeEf(>HU@UC49s#hex3g_>LLZQYK{RwJt6 zVu?0YQH8_s`W*tCo!BPnxxv|mM+t_Ihgd`*Lz$%LJ$~8<14grj;fc}7bZ4e9+N?G& zppr`q7S+EdQe@!{#AWz10vRTLR#nWwTs7k_&a!Nho8Lx&7`48#wO6W+*ol(=I_zcM z@|OZGeZ|+06c9vXBdEJ1B{SPd+_R*1Cm>C=KEh>)-TFBIj8IZF(#zeRcob&=(G7&q zNH-BOj;xB{W77_La}VnSEv)+TtrvO;0iSE_R4UXrGqC~VTx%ri?K;)@DtNNTOqQuV zD}c&uT`bm_bq$6-u^IGIkjKS(&v%XQ1vi@S(?)WSAaua{tdY9`&Pt%@6CP*s9*KxF z!quxYRxfEi+)Pb+U1HA+rNxTeZmme$T$P3B0O`)|Elk?@w4lX;p>6SfLeN(B-2E!Aw&@7mHO$a$z;gIMYB~zoc ze9fSogTky*E}OVZ+4IM&NKOD?`wW-v%tF2;G!0jA$D#MDAwc5_hXg8j!53HIkzzDb z{O{@y!NrsHGS#0}T)q=Mj3TAx%a(WBJZ3|LB-&cXUL!Wn! z&Pz7ZNnAQ1MA!C(`=jnGQpZkBmmu*j(@ox*ww7i5Ps3m zgPiO|cQf@%QQ!#cc4( z7T}I(18~6NQ$bGU=d&5U)H{~lguLOX)-)~X9gcKT&^Q%qDwKVH5<6Sm@gCY&;_$Z; z*f9Dwza#+a=-c+k9w2TPV2>ioD5~7-`j=lKc9TqQ*_?u_+n6_Z5?BIVUBZMYEZ-U) zXwKeekpru=N zuL;wT&0nQ0*zp#98K$){C@l02c|&XQ1j4*a3iWGke-h8YMEo4MH?jZ(Se|Rl)>y8P zNJtV-GK%~PWW_Q1v$!Kn{h={831SU@MH=mag+C2Xcxhvj$H2w}crxGZzSJ%9uej$< zG4+|IY!-wu*v+_Oo}eEirPMk)-BLcG0K2n3Py_@{8FKw6pjn*=eGLziMCp|=o z29o#S0od_Cn{uL9z(EN-0_aV<_q8yPMty0DKf3HV7zCR16OTHB%@3()cbeg{x!+ow z3^~3Q{Pm8h?#!dmM>X7RCx(ND4c)%j@-E{9vNV6&C;8ptQGvLC6eFd6w|CqGpf!GQ ze|stV*}{)=n8Bz_dj9(P^h|_#hDfg1AJ(8Y&-_X$_I+ajScIVd+`E|4v=mgsgmBr(m8E#emtW zrN(~Rm6=_B(c!%6uEfrbWaHogK44iMta6F+$xx)87nZ%1#XNaIW$|$gi*i;s$wquw z`JGdy62jY1HFO1gIl5hGDQ-OBCD%eYE}#*8SwJqL8FkhmYe0V>)gFCDuQ{AlGA+^*tns2_#sshDYWJkY1Tb!R*Cdz^?hS05Xfe zv+f(!o~R5rS4}pjf}%v@_E45DIi?+EG(UK(_P3W1qlv%Lp<9$Xk?_l3T6;eFGP1MC z4<#GsYPo#oBVaFsn;bU*;#WrqaYKqw#0`a~ur4~ffg*<*z~DwnirP}k)5hTTP(xi# z1T+b;(H8d5{=1&}$iaTr`ZpxAe{3s1`if>ESWlJw1UYoWl2=Wm0@(Y!{Jw!_El4&(R&~e5)Y)>~xz0B5G?&_N`|iRB zuuwjF5GloDoTHI&Ks@3I)w+!;F?%=#1R|@&du)GtR6QKFQ=Fp9Q<`0ymnZ6`XqjTW z4SE^m@qL>vKTK4rX_xIKtKl1?rjTv*7AHD{nfg|ULHs@kcCZAoij^fZX(thRXS^D* zd%jhV;C%F&S{~RHXndmdx~0c1QgeiMx0M=oQ~mjBbMbjJo!L{>Wyd@awd}tt%2q#PW$f6zr%w<+z#f+Dah9z2lglMHq?eLb3cYL-WfOjU2F)RRjN)M)eL(#(!{pbqj>)z%CslgN zSr~I^I>a;zAtOt0LeIt@#0MN}Cit^>%wSrhNk= zQ2~9UVwLj5brc?7Kc)^tz#<7K?F>El^AiPl0*wip%=O#0fO#w}z9tX98b@0{o{M@C zGU$?hU0=;YDOGRo3t3bssA{vr7}isUw(M?K1wTdwPi@WHz`PYTQbZo4F|8;ws}J}# z5$T)fg8RkpMdKno*tOA9H>htYPS(~GO1%0k!mG<>B2#RqkiRm&+MTj**k3ShW;NG* zrw1C)I|>hI(vL06aKYw^dIC^F59dO!I^38u8*b`)4#=?xO~b;u4z&X$u>uqVn@g)- z(S!>74sREChk91ewtWlp^4Wu20;BECh2{L}Euc5pKG+F)Az3*}jkO{=tyfn8eWw?G9ULS|p9!+C^S@0JR{ z%{u%df#E11^&%=Bz+{|O0t=X^ADXLU*Mi>@1TYeDKmReI#f`ZAeGnW8pwj$BID5l9 zUs8=jRHsXgZY9CDO5@FDk_tU#iT_-P+fTf2Cb@Nv0B@7o21awLV915)^28yR?hitm zy-vVPB)Di3{m3KH@D0@PLFC$8Vg`fvE?J#lB~<|>*6^c(7UV+TMgop+5Z<;xYLNrc z!Jlo)@m+NH)t&bvYF>w*E`FMs@?%>|;G8q&IAI*?b^~#Pn^sha5ajw6%YJ{cFt-rr z%MeQR>(7;H)Hm2Re^Gcq(m|ZKF--21Y*7Pi=M5eRtjOL#s6NX$+cLWeb1KW+Dggv4 z8YL$pX8~XNb>AENA7UQ7L_N0hehUVedEef-&W2P}Bbnv6 z%j&Zza3>|xXk%4eIU|~>ywURWZ6yiL=L-0EbDFo*PFS=oK8c+F$Fm!-NDzw>#Ij}b z>v>RP1V94%)%&-FP4WR{>n57yZ(I4NteUbT%Gdz&DjlJzwXM-SoxB$ zY3A6ZVR1u5O1iV@bCkv~FXtn*)3y&>QM+1=J{a~{H6=8B<9IpOUw)?{z0G6~J-g(G zq`U?f%THaBq4}*6fU#qBWjCgDB00skSWA3iF101qv~U}u^vFC;0-V9wpMhmf*nDCv z2;{-9YvH373lSXUNQPi7t%Au5+<>+Fe)JO|gGbP=r(=bUBoADK4VAcF>{Uxg{?7x0@B(=QRL~3;x+TVh@vLkK7uJVM^HLFrmc~c!qZ4%d_ z5;r>865es8tEk%dduMrkT9?K=GheV^uWyAi1@xa15?a%9%>Fk`QAtc+pG+En6{cSzF?n-iec3!q5Npy@T5t^8TqOw1m zHz^#qsB%uIv#~ZaGD18VSk@l@YBrzq##d&#q)lEpC-XtM`&jDcA3|HSke*0jXgU*= ze5x*(1`r`ym}>U?q^4V&V8$2@oqFON?$CTV;@K~=<1NhD4$aGMlE)&-a(Rk5NUgTe zR=1PEWyWT-=MCph?0S%DF@kmn`1c>`wm)@7dkqFHzaO!jl$TG8GeQK-E1_)Wp4LD7DG+}vy}<%@InGG zXCJ#za+*fkNXnSQi~?&zYaM4BA{Y<4qCw)yFp2gMl^d^oNjb8)>jBp~c2Ux9#l0k# z15OIEgRqh9!EuA*g^@_%O#C9Y)}+t|T85Y;B@S{vo2F&!HB1N~dWWUzq+#-Z+?}Td zXVo-0Da`@MDfD0$H@{&_LrVDydt)D}%*}}ei}gN8zY(jiZ{F$ma!#n~x~I@DKi4?& zh64mwA;y23d|RThS0_y31wJDW>`w(9i}L{vK3{JEp@^OQiX~jS@MqIznfAV`64qY0 zVL%Opvl!^YCly__`TQR7cWU{-w_9^J21~8hK!Z~oU_+ zp2o(T1{R-8Mw(Psx|9Z?WK}O#-2MNtfbZ6i^Vb0|I35k)v~D$D*&}y zU!RkV7^uD*OANppCJV8qEQ%0obP&Gr1=8g~NaaIBpPjc=2+)7%yb>C1T*G5nUA9Ln zQUROK`4mDei;g}(=^AVa^>?YaWVCd(1xOE#K*8$DRcFI2EcunKv{Eeu{I;W*GA}0f zHj#{z!Lz{Yu8Y(g(0o$~*5g?`ywwxU8X*N;dqM*CabF~QLrO3*@S>af4`G|B!7fSf z3e}5=48^X~mNFxn!H1t=9=4=ghauVPKexz5(wEIa)XVTqr)NrH6-U}xlpq8dCJlJG z9pdV6-@o-j6#jy9hF);S;v+RVu_3x}UgM!P`)@yEQskH{1DNIcF7VB()EIBS+k$$^K#L9TfXmr%J|4LOLTP&?UrB7Vu7!PqIrsl3-5}k z`Rfv9>RA0Lmw|^do2Ars(WnUSQNe5KP0Mp}nJYjYnb+7dytD984)gw_g;&fK&T;md zwQS6#CEvFkQ1B8OcGNZA;h?#aG|E=F8+)rx}g#3$c1=Yp`j%7deXKKWOYB^O7zJC9bTRQl)FLCvMlKz zC+Np{6-w#cG1h!4oFMo?6{p^zW&nd3jWh69SBg4#ejEOeQ~#O*>NgT+P9|8d86U^w z!~WlJvv1m>+R^MEk{dvO>1#4zYwg(B8P9c5+NuF+BrTO1<@2+iC15nU zLzbe}r~Xt4^7lA2e5{_XmK&)f3(NXIjQ3s(2QeV>kb+3~yGtCstj?PX@b}2lE%&V& za=mN2B+&T?bxy!S_~0*{^ROyTqn6gtL&_`MlG1=e;K9}Dw=B;O>hj=tHE|8awJE2# zJoNW0y*u)JS%Vt?0kyA+Zn@ckCwpK1s)(pvhHu(ig1#{T z`5%WnpLeS%p;glttbtU+&D`fEo1yXQ2I;~=?1(>~uc9k$^oErQO7D&k%MnLZc$4QWkLkbeC6;O91WP~ z?oE^WVVrie{T6tOaw`|cCkV-ga#Oj&ZKr0_u zftf0&uAqqxjUr-L_1v1-=kg-rQvxn(zsVL!p|lsTB!ve^Ssv3@H*OrV)=SPf1!r~u*(9@pk7S}td?})AC5LCwg zRAvWE=uWzU3)+TZ9Yf!5lK@)F&zz5Flip#tT&q&*Wz?TbEYp_#NOo?Q>9lzcO5!Ni zU%KGClipWx;qV&Qyv}&UPlB37kR?7#S*H`SHX#e7BnBV-!B+1RxOa_9mvCqYdRI{M zBl1;KrYW%VQLq?JxUG^Bo>p;c8EsDK;0(|xsm^kI9R$ebK-)8fMx#eOiD++2W?IeJ zKDdvQAcsS|$n1tf2N7pTMNgG$k5S?X4HmFFpPc171IraR=AwqLaxu1FcZvv%@yOwa zOY7qLD$GM)>*#LMVbkqpvoQqY z=a3M{IqK7jCsRQRg1-Tt@f^rbq^m656uhCUW4Il9N$R`f+hg?iAW<79B&8{83T4=bNfg55@H_2rdE*S zfh+bqZ>vB@-&@LG{|+5h{THV3p%9GY7GJjJ;&zf;(K~gf-o)1jfPF*<+Rc*JugPGw z^~*@xdN1}kkskbHnB~)0X1vuSE0RIT%2+`1vX<kA)ABlt?Vg1&&0V>g%zadIW#m?rx2+lr%U6yq{>tNajoxIr zmI*L3TA%7Koo4r4CRmJ1v+8B?g2a97?PQA^zN2W?l-aQ@@k%$>oAT|F_!8qmG3?X= z18~Dc^8`81GZw|ckNTqKJSCxZCWS2c!=@QM4VV%!*pQ_tSoQ2{)a)|LRWIa^x8pK# z&Cs|gg{&ZUmZWH~Tw(%bcmt((Hz1?7$mbmSvE8r>kry(1M-?YUAbl+~Xlu}zAA>RZ zlvyqIGl@ZGJ>XEBlD9IZ?7ygj2mXpU{%6jxqrlpH5$B7^kymi{-3%XOjP0# zU0TIvSNR0nl41AknMnkr!!2)AjTEsp3p35sVL4h3Nk|VQ++ELwuu#+XoR*0$(H!IW z<5|G-nDQhj|94kG)oVO|FjCIwsz^Dx%Tgb#@6acci@J-aU~bD*Qyr5erAbv4aYt zDH9NQgqlA);biqjY7xrCS)q?*=dW<`ho&D_`9{+LEde=Ae`mfu6ht9igb~6&@55pDykYRsQ7c z@>Ml*c6$)AYunFvzic|>Q`z$?%?KANr#LQ+A#TG3-nQxRNHB7G166>XyZQ48fjqrT zm)3>YP)*&@QMed2%62LM(}T1-&NU?r|6$Bd6oUvaq6WIZRgP#C`M||RJPi~r@vzT@-y0sL^-4o6%y`D z#S8qiW++2{0U4b4tZaR7w4N1O(NJ=+=jt6-rIRA`uRuLjH&vfPEfL7crfpE9*8ik# z1Q;}SXP!LrH%W#Uh&Ul{mQy?bB<;55uaRQA!b^gtVjBoxlP|;3aNorpn~gC_RF7R9 z(Fa=UB7~%!kAG%e_ga>q*{c&hR${{XWT1gHBCWE=b8SB~CN*9U%yyK-wGxRE^*o82 z_>VlFa>jhGIxKvyTSpujSJP;-S83vi)L7+mj|Zp!^E{nGQW1Tf)gXjmW#|KXe`CK1 z3yDaEWw7Hoe@xAV3ZborTPo@DlzuK8ylSu6?rXS6+uW`+)upa7PrnC>!UqfbdBTPO zBO=x6afmLb9;KaM*pU3jxuIkRVo!zq%V(y`Dp|!|?kBj_`SI|wAc6H9c7u^e!R!q> zZsTbUDfbWcH*(eKbTdSbvf48(M+JO$v8(Q|jbdeQTxgm71Z)6!*`=+ve3p4x1v0zm zWC(tWwpQEiOHlXY@Ftj%2I8VK7WZc7>-nD)PhuVP`zf18ojVL|kz9~CgHn6>%=SD=5QJSGr$14#e<6gi$_|73~*G*Fp5SVAP ze&e0X+^fWX6QF7GM?Q_7&<&KpU#uQIh7HgtZlR2xbqs8LS#Ei5OOBDksoyj~% zkBI2EGM9j_1V-scRdT8CE%D*K{ir=dZZ)Qu=|CnW2Ax*x-v7IY3@aYiGiD}6;&S4S z((0oc!i61i7%)?|4iq%ID_5`TA7B8Rc17ISnYvyNXe!CZ*-|kAMg#?8g3qf{%WaJ> zM`vN2!UeV+h_OHK7*K;>h!40g7wf7a5~qM}k`$R)0!U$r8RN)klZpiu*lNa$jrKbR zG7sXb-q>^Yd~LCiFl6en-uSDo*%WnXHEH6Sm6~#cfb00MW`QxKs>UUaDg6gefiw=v zg809DCml_J05Mxnmy1O%R(=_VL3*}2biFooa{<95wnK%H47TKYKypENsxpj|KMxK# zy>ICY@V^Bg=A<>T%`O=P%~YN&2d2_2&rbL7S>Jr;$LNP&=p0)&Lp6~}11&bqtU+Z0 z9!GG;qQ92^ zVnRI1eADFMC%yO}aKhB@D;n#xtTe*_`5*Y8?4T7quxzKIwll1BH}Da+0B!%>i!P(T zIl^+&pkgkyT}Xrev;}1~qpeGE)IEE^uOuwj;LpW~bT+<4cGYI)=fYf^%O=kYWZi}2 z*@(-uHaCB~n1nWzs%1OIiaAlD!l+R3S4VawkyoselEcvnx%AX*RqHREo4$|OwI3Q) zOgqGdp^cI&;`Yk7N#w#@T@}<{$|E`1bB;WM%a>=9UzhUXdF>V?+A^|4kMn}ZvP1;L z?rwcIjdc3(%q9dYy(njmen!4<+-ACcvCyAO(Q}stU-lbDQb4TlhQo$NHmZ|_d4B>! z466w@dySq&8p$S^G(@ORrF@8xLfgtwEymh%ShsN+)3B7Fe?P3fEb=RgZb)@-B%?%Z zc9dvq-G0hGnjCk1*)FaMGt^YmgR4t5^;BtJ`2mdc6rF^~IwcCk@*;4e3YPwcxF%RP7=OXcHJ5rzw6ek)lS*^{p zamxzzYsCH=+=<5Vit1Zmu?g2!kqfCU&>@_;GX*67IcgP}sBKMT_oYt!nyVATr)Ztb zUs5$j@JU}s3?vf~OAY+%5J4o3vQ!vk>zeTKi?CLDh?wR9@oSO2!pxG{8Nt`quuzH6 zwH^O*Xd(Jqa;Ugr9^$ipOkd4GL$18H(VT=xj;5t9&xZZbGmkdxnv}No4+S2N;a{9RbVo?j=Q0IXF;#-2Wc$kAO@)_IH@Ju^^ z8?rtZ&8?bIi~>Yk{XNP+SRivvLq8s^bcq>^=p9QS_~{~Svqm(6+LS*uh-3N|{~7c@ zs0(S`b+@xJtqoN)eHQ#Ix3QM6)d5wap+RfgxlQ?7@egEwGja6ct0WC!vnT>x(1=6A zYRZF1_FFkVLk2f31DL?`Os9-XcnuE@XTX}9DTU2fSSPXJCk8sZW#PfjJBE0q44<5p zslu{wsv*#}sw`LX;Y~6m&VH3K=%p$;pB!D4ndq6xGEG5+1yu`(>m7!ojK=3#7uqTf z7vpbA`A z017hG*AS`mwiQU&%OnN1Ogl$!)VJn^@0_ws|I&5604Xl3UDoi~wozOl5B8Yy>Tmhx zYp2z_Bftx?TpQ~$t_Yw*U{%yO%%eg|K`!OO4JKq@g<`-2RkTT=uC^)Sk`QLd4Koc{ z3lWASnEij0!CokGb=(|NGNT;m2Dx#~#`_dj>29zFqC}ckS@9tqJOuogTw;QrRITRY zRYC0$0tj7>GcX^Gf4jWm*yJDQ;v_rS77TbYjX_(KcPni@_8kFr)qD|FrKR-o@ZnBC zrUTyDGGdGcq;;=Obo`)ULvL|WP~QeuzB1kIZsIBpvCAy5pubQK`G=^1U{(si+-ObZ zd=Ya_DdQ%iu!r^9x*-$~r#G3mZq~(E^wUHQn%^b!9mt9738=?u>)GyCisi`ItTqw& ziX(3M_KeebQICgjrCjRbtpoB2LH+1oj&kSpY}woQL1R#qHEZ{wt-fh6bK!X_@Szt^ zIDp}$Od3k~16k$L|EF`~ca%owTr>CtCQ`cu)-W>LMF9}VSh^C+W%63m`aT}8kz~OK zn!^65@n%skOHG(gkWZ2OpMB>vO8w9Y7Ct9Pj1f4z>6o}>N3lB?4lR_i3<1JGS`2M@ z)#_wuB|z6RUVuojX!)ea-tu^OL3S7^#0%2cxvQLw)Ns1}EDuL@H@f1}_%BJTEqL2R znW+t%8*H48jjRgLSOX26e(WmS+Sc&1yT7aH$@aCEwqs9{Ak49-%ia8jme7Pg!n*;K zrW5N%32Qe1l_g~ zGT?b>btw*yxymsDK?~~Tyv`BRHRhxO48v*Z>sxLspTCQ@LMB@ z#Uq^%(4fbu;Lgd%CS&dWNo3=sRTfh)BBA^KA7r3oT$)oP_O5V9j^>;-;7BkhWY!cb z<_W1hV~CeeLtKqxIB+}Y5fu3Kaq=FiO05N@lE7LlbgP8k|-tq&5`^2!HUer0rb zN7FDaGa>2H()*9G(^F5<#@v#k)mq`rLlZ&IWac2S7^`L`D-A@fQc*s1Q7M}B5A76H zhC=IT0kt#+UpkUKo^!k`r73}TX<3UYGpNI7*J4U{zEmog6YH+r%7dlmzP&yFUZ=dQ zs+|&F9xZpK!t3EbwFg=TbgA z;8=hrACV$;exGzx>OE)QlCb=7cxP&iBY3<$;zsmRUi(xq+?2#$naqHd>7knhPD7gO zeBTiJZZRn*^evT<9xWuS7M!5d&A5`XwoS6{L^C$6`gI?nzMzT6LqvUnMy&zT=cQam zSTUscwRTn7E-^kLy@`CtfAhj&iXfom!Inh~vD1z7Bu=^2&XswXo|8_FB%LffFZrHE|YDY&4_nF-M3JQeel0+ZT4fBl_joe8&~96HAlciQr!)#m zWqD3XT_%dpkl6VQq)w-wpqhF|vVru%%5~%`?dCzS=LQ$ZYY|A)gx`Cw?_QrhbTytb zirKMPUDK|F)PWn*ewW;;lx?C->@TQGm4HJ7=U%e1>g5kIOsd>0l$WBuYmU}~F$R7S zrhSJak@_py%hdS(lMg0+M!+Tr%X97MiU`k2yeO|L4+UngjjQ5Stx{T=<)L9p(xIKJ zC=~J(>tFN@egD?t2D~HIO>TG+x{*OpF?_DUf@=IB1i4LZhMtcLBHcQ>=+P*$1$qbg zvZDKBysbaLR0uAeiZJmQ< z`AdA+Ti{m^pD=ioQ*eC^Gw8ML$X?L9d&-Rhb?TW=EXNiaOq~uN<>I9eRJ(jXo7I87}@USqk(Fn8LwKQ{X!!8kc_%hDgG| z2uU^?#QZ7Co0Ci67jOGGudVl!XQ}l_!?|4QsZ|>sckr_4azT6yi#*E{9>{8)4qKAi z!6uj%z$kj7yIjiWNEWnuZw)VRA`Wv;*_0;t_VJOS93(9lgEW>4LjG=9FbD9;&DyqU z(ch@bX_$6GQnQrn`?m^UAU7!MJWlGjqmw?>oSx0@oogB)>pZrlGr zD8Yv{FyDe=l;XgS4heXC_O%qPr?J>ko0DzkGZ`atxzBwEw~e7^mMoA8_kkCA-5A83zXOpV+kPmVttUo zS2JA(W@(%D$JL2f!I0yck$%4#1G@-Ds>S-dn?4EPxi#=JBDYf;T`}dmBSavbT3^y* zYHyt8axs6|jv&32{stk0Q+Xf78oagn<){Agl55ndbi_Awu{q2I_<=68%(mJKt>h%77h-a@Zdl1pKQu?nYW-NndP zRgRh%pVx%juY`6d^Elk=9EH`;b}|8;tZUH2YW$>;AC>DQ9UhHthNd)%Q62~A`b~M& z@SL16xx-d}%k{*v=ArfG1Ou*Ztrv1=*tQ90RF!T*QqGG|RXXl+z^QLJN8w`HC_f|{ z^0%T1u2ynT5*-MyzT3lLCK03(gjB}of_2>iJT9$a!3SZ^6%^{3b7=V?JL0S968JF6z*&s56NJGp zT!KzVjAz)H4Vs;njX}Fn$a)oGWFsLXcjycxIKBWtRf=>0STgW-ZmONqH{|<#_H>y# zA*w<0cygSsfq1szj35g}Og70GtCP9llB zCj~0NKi#eRI9K!6T59HyE$mh@a|S`^2?{xQtbYq;W#Hycc+hWJpD8*IZ*TgeR-mb9bupM%Y}q`UOvAGbEVkSUk`*|by$_4tSpIjq@U~NYY{&7Vc)BSM7wqbt??!3mAIUW1!AhO@F;MPVuyO1 z86WkAoita?Lj%iI3kgfwu=~3%^jT>TLtimJ8ny92#L`LXLB_9^234RkVF^z5U#%d?}>guQv-M-O`O zgH05tiGnc47C4i(s%xQp&m(7dmhn(p6GmRW1}R_OCV@^afHDGIKeSF=tC1-l->jPr z`oQqz@4z*83#<+nn&PSyVl^~sn%R4T6&aW+Et1lhJ^bDpESm{gRuC~dGA?LY!TH+) zJh8NzB&mVR3r&xZb@!OmuP}A8_`In^&o{uI9C20vSB!*N)Vw71<4FZ$P#?7tu#XxvBV2=eG-blL_&D0qmeSODr0Dp z;Iz>Rt<=1P7EY76Yk@zdW`W=_lIe1AxH_jv!|TN-g*=-iY&Pz$?m=vkS6n_1ZID!>&Z@B*mETC7ACd$V)9$_8ZITIMG49l?knY!5i7)%LpmjVmBtKa4D;JaM2v)X zNaS}dqjk_m@M~PJ;ZPo#8|7>aqdhNofL*IbklL?5dPkm*1edknk~#>W!urq@%8zqwCWwokl*RIo|V{xFq-=7MC3wg-b2N5)+AOUM0 znftlZbY=BRohF5`7}PvA15(f-i6-Qjl34-pve^p^Z=XPlUIPqG;|cZ>;sp@Ll`#gK zuH>ovDVfo{*+*&{nnL>MMEV{+hcuk=Mn;f6<)_-$W0Nt>{GjkXdS#SxI>(Zc2+(WAkfW&$Jb&0ml*1Gw zKV(WfKn9R;xTfb7n0%ecFN?RNnG1Gu$P{vtHlP<0>b0JA@&K1;eSnf%SYAocU>nn9 zHl$Nq$qhMZ+^h|g2H$NLp-mmrO$QUzY$UKsOj)zKP=H{?8VAguo*u~5fTvJsy?V`l z<7~;u`A4{kn-q#F{|?4&3&$b|$@2E>j~{UMtG>pOQ2ap1WCdqctZmE*AGA;& zn%CjK;}?gJ$x(p1y_=41P9@Y4MF1xSQd$gv1hvsC75%9<;Oiek#g-f=fkes1+gAds zQ2k*Mx~vxTZ*UBlROwS5^68Hf%PxTciUG+=P<-&b5Y8@#`p+K-?SR)08{>-RgUHgA z*s_w?b2^c$Vbf}yOWs`!NOwG)g2aW`#*tFi2x?Jebzp=&M=g~pZX2Sdr4?N5y*Bg_ z`H|yV-mCZ5w~qFKN{F)z&1gW>(Xx|Azk%6yDo6{LUazf{taTM4ju|ivvghoYBCdDzZg*0gnu&D-LVMrYMa-7HtF%l0Ppq-s8gncyZS!dcjrJX0%wWNX=61Gzw?_A*|O(HZh>t~ z7@1<2AMcu#FldAPhrmBa+NA_q`^2g2`K+S(f`uCqO_Jxm!wC!FBcL@iLv66ro$j97 z7K2ITkJzC<0C~U|lmpxaE+j?0>FK(GmuIwsd`&PL#+HGyFY~5>&RiaFBSgh>m$D%m zH_Lyo8fx;-*^=HxJ)A)v`6WCW#nzajpQe!EDWFBva9wYt=R~WFdv^4|3%p7_>SSm) z1_Tr@JKI+ayf6->0t~u8zPe4-82JHNte-_RRfm7SFS}nVr9PK`@bQ&bt*AJ(fyY_i zA5{k?W6|5}KT^{~CQkZxBy+fKl9%V4nR=t&Eee039x7sqS-(m99WJ6x+atQFXAc~U zK7BgIkfXt*u+V$|cQS9i*)NWyb0e8{4&%_50GWR|gLjP4)tw~y6Mc#b+i+*ybQEH$ z9t(f(R%o5~0sEFfnHRmS8fi83m)JiM#`+P$WDQ!X=-MtU8AV}IINf{{=7dOH*IQeY zY2{!y0{pG5^~=4NAdnDuPhigllV z&q@iArLSyB$b0g7d%7#0N=nQZdlnc++Q!AU(wuJU0BoCc1BoPLIq_gx{{h1IZfxbH zxd7;hsa@>s^^6EBqci9x`<>v>qy%)Fk3-2vWfMP>H!H?|UV}%ezW@1qCh3mVNewHM z!tR(9AO>*AG6}YvOomem`+$bSDHu?!EyEoLZ%?s3dFi7?LDykB7)Y$4;(6+R4uQVA z=%&b}hI3U95HaO~%P}Fh#Qp_3v#h~PDo!wO{fX2E;pFjvcZ6v`zz92CwG&p>qyfM4 zK()iZ_Q>BB`gY!EUn}g^t~q8&lP|XP@}vEKQm>(kLFB;9g1Ibr zY7%DAC5%)uAk@K21{sWcD2}Vvrs4e(cxcl{aesayVA+doC-&XbQa0pb10VR}lAh&t zUq14PX2OEsD9J7kPe|z&2C|7CNFmpk?2v{W_Yoi3)tQ*-O3PfAk>z@;`UsQG%S|jY z>Nt#IxEjWOZJ`p2;cCQ=D=!>05HU-=o7MkLJtkc)G$Y%ZTjqygMxfyf0U&0W(ioU8 zsu)tdLr2WRyF}mnkia4LD-087( z*{8v&`|ce`tD7j)|ALL$Oq8dwgJK|i0Y#{NvmdT(0PpyFIGJGVkxRx8RMuZEDp8mCC2;Xb4)+1L{N}W`%gHuQZ$SgFZd}#Meov1;n=@VUfF-kQB#O z7PGn@dKpl0W>~0_=!V|Hnt(DC!c2ur0rV1{r+r`wYdoP=&|Y)z8`R8yVG-^t75@sZ zQ5)@M8{M$)25}qs&#>cIYSQTGp_mZr9C8nZ6|El`#OS*bkvjvt4OvRD-i-A*Vu&-a zkV)M0W(O7kVi|jM@G01O6518@L@Y;S6WRv_pis2}zekseX?0J;K_i!5N+Lc;NRuV3 z3u>kZ(Ur~Q#}sfPZ7vx+L$uA&^3*|HxNvBWqmQ8fpdPmy)oeB(B(@X%TZ{a^Cgqne zG}jtGV>qFDM9L6^;DpOJm@c>q7LXFb2ihq;)+_ncWI*|{N!i-IPVAOm+V;qTk|0{x z*x{!^#<%n(p!dkAE;ms@G$`YLkA7{k<@l)3XT)8^o`HhHA*S4K;oznNMqlqN4BVl{ zjNxU(y9UDlQJ8hBuj)f7tQw|H36{0@Q>9}1*d=_)9TJhdeLYxE9HfS>6*kMGJ;iYt zKoed7mwk(q|CfgPXL3Z;F2j}i6($Mc#~{ju$|fs|ZX9e{0N4Ko=yzr`V;3au1Yu6x|PJnlisZqIn&_ z@ue*9Ff=LOUFm>GoXg{qfEH4yba*;}SrI3sf-TK>jE{61_>cgvoDz+~X81BEAqDw) zvqaMA+Rxcq{<5XOU{R)W>4?{zk-irPE<1i8Rz3*LzT|l%o+}|5eQ?&eu#C9{Z>CB;Gu^iZOs?!XXh5kqX+Qmu7hMmrARA*ab~dXYp_il%^RUa$&q)1=T;Q_%zoXv;epJDf3`1BG5GJeDF=lMwNFw!8*RU zRHjoHfW;VRvv)k$L&JwHA=L3})iM)>oQ~T0i;0QA<>=f}5O7(m2vdTd zO+ZeW>?I@DkEvK*=3Nntxab8we9*++Hy^?i=8}bV>TybHckU%c>`ake6XHM}n9i)e zm$>5s&~`w@9M@Qux`4#2L1z(oh1ghJLWOteVY9jeyekbW&ET3Gxb=3XZVOrlM40p) z2jXTr504V22yQfET=Kt&PY?tN`2>FdCfqz`PJEEU;bB$bi{O1_Jqa+bHgg>Nogd^K zEs~-@_%zQgIUfKg3!&d3P!rZCTCsdh00jYQY?HbE{*fUwIf{QTMo3g?d_fl2Hbz+BNg-k%l2N~r z5TyG1|K&BpH;dH|#%fNeLc6K~R!fMSKT^w;)%Xxk$ha3#>5sPpvgz7()&e`z5J*H1 zUR}pwp46yrZ44aBiD2eU1I5wkG-S=BPZ zYh#P36w;@02}nlYm|YnF+otyAG-0V@MBohEcQ}=b7Z!os45)uUNQR9wqB!83K5(kL^It|!+ zB?COI3~CzYQVwDlx?&a$1=|K_msB$?DStzs5=N+E0j-E&Jc{yDmi!w4XWAflS+scs zlkLU`PRO`010{!m5eD9rP)VUQQVk}B#HV{wweObL}COGEH__@dpcH8zTq28bv-e`>z8j%3A)eK(DkvDEGx!M$HZk)PexLW%C3YWxX0ARpG(S*yJGVLig^#09b>9hIy1v zUwp(wDk-Up-yOqpK}vImuWGEfK6$B!*eT8Bgmlq^83gcj6Y&BSF7#D+@_o=$JY_=U`?igm)boHNs zKUg;4Jgz*mEyW7zt5?CiBz$3I-Z-|huGl6*VS%!9L5<1BPacMrjwooi3zP>O8Ccs1 zdHV!H_gk1@;3V9H{sKKAkbUxVrnlsjfGQsc;_{pGCwM?B*L-??$>@f@8K97!$%a~Egp&}X%QlKJbRgYD|k{fS_i+}dvb z!FAj_*ljoU;0-9n+QjQ`i8#g`mN3Od6X($Z7Igy|J~oiYD=R*?)hL2(hSya1*t7-{ z={uk3!Anr7)3$Ysi&Mj!JBaMGv_I#7z$O8A7HDM+T$6@A^t@U|hjUx^Cv%@$QRxs~tf1*OU3&L6bP zA%9bcdsMik$b1m0Y3kY)oAmwRoI5rgk|7PRwt2+`QI^ZPEYQ1Ac+hY~?qBWPoWkMW z{x)Mm*U}C1<0Yzl8oN(X?M7?Wn@V2b2k&^)b>o21agEH3#_5a>k5H1S+LUjr8mwJR zA4{`^xC6xJ%$C@S!_-(wejf54#AvV)wBKn+UqD7Y49CD)bobr$h~Ea0?ud^Qe~{_f z(eq9ImzLifBY24R9Aocuw%9sq?kcR2(*PMBxE5x|r-Gk6C2p~HE|)sY8b_+Q&Cu1% zNLp1NGzf!HezOxb=*!&?5=Vs;OI%N=)p<(A$Py*^GMFiEkDq@0?|Tn6(92=_mx-Q6 z5Nv#h5&c+I2q4?d9sW-wN3yCL1Xs@QsWpGjySkJa?lVQeSLTHP?otF(Gp$yv+w-4L zRi(aQV{2B{w@)TJ_x+=E@t^oJA&}0nJd2__h#>LejwFiw^%XrAvLkua88wF;W1a2u z%2tObn(A({GIJ(q;Ck{620P9SJAPdk7Zj1v)8h+S^u`4dJ0P9d$Hiz*-)MAL_V3{w z;BrrZnB##<@*|)00TeIY`piMkA>VjFgMe`Rj>a&He$E_|HdkStq&GhE<|f~_E4y>* z;L!{J%V`nxqf5qW9HU`L87y1@DBJ3!inMI*)8a}%iYDNDUNuS1PKao&e9@J57K2Dj z9;}RqzhqKYoAum1J8ljcDtk?G6k?uXk|z|Iw^o z*s~^!wk_`Yf{4%JfZ(Hlia-+A97@c!3vo98-SAmTGHUM8$Vxo~6Mfnm@s3Kp+wB7~ zw?sz;TUtC0^|wAfJeKhI^!^G)WWdhC1zTTX*O6@(tCDlJ=BL%qC{JojH0k-eCeR!wEcrk8qp zNm|_07uTU4ixTPQpQU_XBLdglT>&@Do2(UhBpxyEHb2LZDBQ3pX}O7;N$v~W^mIB{ zAX)LqRNW5D$G{R!65y6pH17t#)FZXKA8iq{*x4u&@HCTvGSYQsj>wVK3yrC+t9J!t zaYj`HQ3NK%zzf!uNDyY#th8)Xl3l8?8Z-`v*Zb1XgHMw{qUTi?CN7mjE^+Jr?M$&Z z;K8R?&CBY-a}v4ZUYY4~JU*y1u(OCX3-yg^6UAE|?;(xhGqAv1vP^;8sy5L?s+sCB z?hB~hf~31BFqsPXCGlp*!XEsUo9eGbIF%!xoM&0WOxgDTg7&u=U#BM@xYm#Rb+BR4 zUqQuX40a(&jktsWI)Vc0K(OzC@JlWs7Scop`mm%DnwKC$OB&>$Mcjd;bqTZS`Qh{x z*26>D5#PS??x4FQ>1%0i zT>KdlIhSobjATC3q6gCaPW+Vb1vcBm<3^{1@Mg?ja z5mFmYaEYGN1fpB3P^ejoKF|nNA zGgU=FcPZEEhpg3rsm8V9_QVyQYVC#*Z{SojK=QiPv4{;oGFEPi;q;XkTKzmALI{kG z&Nwl2VPto?6MCE2(i&$@kZ4>ek9m?n8lc#r*{6ky4xIF#4o9GV4YYD# zcAWEFu=aV{i;^{vN4CI?{++l2HY*N(@}CNl&yszs=K%lDU*qd!f1SOQ50cfEzQbZr zOOlo?6Jd+yMZu{*7r)xls}j(DJlbn|{}^M_!Y~9{t!#5-l`Ied^i6cSZUeHvA+6nO zG-K+Nwx%#rvO<|9SE4pt1)#qKE%)c?>JYZKSdVv;^3cYfzr?e@4ZdNV`)z3&@Mzf{ zIS4DVh0m;u;m?&`9l;70ItoOrz3%EYHlf7JC03>sO7`NPr*d@Xy93^?*eGz>|IX*o z)cz@d{504k+H)Coa(L&x1MpZ@h)3&?4m4R$cytP$GB6)SY3T~rAhqp2Z*8dSn$W2t zyyMj_Hha_}CvQL*NdR%pn$g$Z<4({2PZd}OPBUOYw)_b!gO_chtCm}XoEEJbGe?20 zs(~~F)4KIiYOzttbTgL7`bk+VXO3NbsHZOgTbZX_IsG6k#DicPl&=L zc}{-<(A%K(%VAYF8%_MA%N8YNNG?`UL(sj~2HBp0UE!F(abbeUf%FaJtNfRkpED!b z;UBZ&ZPqd)d+!%oLC0e)osXSO@s@*lePEBQ91jTpYMc1n{8D?ZWm_<`yuqq^XB03# zbIVdq%(u6_RK3Up%eHgDosm%Hk^hL@-jLTLP~(`!J=JBO822Js)1;ulB_o7vLqY@) z`8t7&vDvX#mYuIeCrxy6Apd{`A_$cX=~V!_%O*fo@CK_23dsjE!X$Yjj&pK;_PHc- zbA6`%O0CuoMeOoWNH9$14C^s%ta|^+982UPo)Ojp{AbH|^SW_5l;w4FA+>5xW$J7ZULX`HDQUZ#@hxS`wDC^9ovt>VMLtV8sWB z5EXH&ZY2&5hThcaSR>k5-{Ld1h`Pp!WoWc3_UK0|kS&qenn|k)*J;&5lNgU0 zePFIl>o|$PH+aV}O+=&h$lDJ=yoMHtSm&yf8bcz|F@vyonFx069THvIZo_1_=-EvBy~z@Z3QGgl3LP$ZY! zU`Ejz$~vj-vv%&Wi*C<{tAjh zqk`T;P#>2{{PM%AtFpP`TzG5k_jk-0y-?&~YEdp+-a=yV^%FxZ3lo(e6!LP3niCFL zrE}&~(FZ=5@|P|gCTF0G+GZDUIBq-C2rX}#TtKfv8KiD^4zq=DfAJ{6*fFSdRcY zG62Hw3bDdDiP0MfYyuXEtJkz}|FIFs$gO+S{D;jGRwl&@;jLC!dEtmg-u#e-5*#3M z=U7(@s#0 z;1$%6zH>hcqK^o-65+tXuF>Jdiw69%^VBoOuiV&qnA`ttxTP2%b|!ftQgb7#{i4%v zg~H@ZZdF99Yj^rtW#*d-_mnQm6Q{#ifBzcLL5p|#&GcNw^$X@ss=O0J&}{xp_W<5C zTtNV)?>!Vc3yzZTGdh(EhB3dlgDDdRi1m7#7W4<_a%#^SA7gGiCP38$f(|b1)QouX zMp}I-279e7Zg^ptm%dXwimDFgJjCa{N|ULa<~MrXPKu=qW|dn%6zuC^O1o)vhD#=q ztw!oQngD#*0+nX3nvjBe0MwY%NTPH~*fuNP0W)wg`G4;bpJd(cjCGTYMvO3bTo(I{ za=UdKMNrWRe|I7JF`Of(7j^Yw(+*jX$;q%d!GW}xiB31#pGfo~)}E{PLyBcw{60}i zjc)wJV|4KaetQ9-spr4KLQJ@?p<%I*)7DuqOowOW2O1XK9khMbe3HS)_>VdEf+NhP zkF08nH_#xs>rP3fG}TR#9VjHdNua9!cqU@-L2U>=&vVev&pvMGH*RL#y>ybf`K#Au zE)w1ASfU}`sXmjCy~Ekp@3F$pAg@r}HKUZ4p-k2eDJ*-{y&99DYH^eif*wO%Wjm>CB@Z9A55udpGcUV)V21iJg9F#l@LTJ3klLA?N3DN>>iWUoVXHAoi48)3Re zhVl|49n*ismZTmUgWbH4SPQ*->lS!S-U_&(^u1Zw%u5_3>RZ&|nJH+PyPU6}5!hlo zS`8!fnTfEy{f_0Cb*m>fF*-nV|3b$_Bf|!=Z=J5wc5}YiLI#c4*kVVTx&GrDoGUL# z!d4~sa=0O|XEkE{$kH1O*gZVNv>K>ty`?=V1ho_q)wm-rJ^MW9+4q5(Avc;q*h`tA zDDE|1vH>T`BScVbjAnPwh+Aatkep)nsSALWfV-U_Qa-~Mq)6k6!pcwr)zw2I*_Ukh z=3iG}!DBaq?EYcA0D62AG3>bO6R|RcEUm)nfzJCV{1QktKZud1$5?qy+}Se;4hP$I&^4`15_dw&;Y0 zDGli8a5CklquN22QGOKhtQDyO3LKs@V^c+37d)$e#e@xe%ICd03(cyWW0?hmGipIs z69?TGylreNMZ3vrN%5$Rz3T4+XuNqD`)IX(=eDB18wyfiV0IzwJ)8rPdFIz6c9WA} zQbTqL#||s{XjXhV%ib3mRY?xYie;S{oU93F-~V~BD%G;o`*Ot>*@>B93udnuo$ni1utz5DcAM#(>6b-rgM8ZnQubANgU=ahxs&sRLpo}DLzMC#O ziW)~{9aaLMeyOGv>`#5a?NKXrU#8S57D6cA&iSg~c&*|_Su%6EvDzIh4I=ELf+1E$ zV}la^RIyy{&C;Vc$BIv+zqWQ{gX-HX!FKpvp_XZhTJReVZDzDYB#_5bZm(URZ4poH^7)eM<)6^8G z2|f>CyxQsEO)!xfw@=5v<&;&O_b)!2Bt)~kV}ZW|7}i1(6lrG=S#vLLy$pxw4ZZq5 zp$GJBb4b!&)|i0!=>L}(hRXYY89zQnidLkoU5!2V#ayc(uf;0v0iP0C0#e#jzO@%& zfX@)~S)-}J@e=i`((Vg1KUK^%-s}p*9dK&`U!ex2xTn-i#fmxn9=94j05u5Zl<^Wz z5{9<8#x6dm(xhxTa~m1(jZ6-%V&xB_0Yo3E9QGq1<~krSMMA1?|shfjo~2&>q?Q3FiWyh?xx`q5b%Avz`|^ zB57cRNKD2JfDn65KT!ykk9p{>bxPmecKy8vnr1IU$!EWEBvn_DJBcgy3Jx`?yy-6a z-P%{F8$5I*h*g-0Z0yx?jlY zsLE$dIy6pkR24h?_jGx4^VJCa1_DQ`ahioJXz~|I*~B1H-_PkYG=x>@(ZaxY5|>3h z%EW$)iVPKoxe^Xz3u|z5#>XQ0Bwr9UdrORQc@Q=>6wKO7nTnnpKRcoq+ zrzdtV3GRiD2#l?^-r^~rwNpT;;H}zG58>|ng$_GrxxL)CgspY)lUC%MhZEJs2#_XP z)7A(T;hcMm>+^y~e;7Voj2mRZ2=7hS+3lFtw{Egogo#)R#71wGfpl_EP7OeeD~y_j3B zp~>67z&MmZnam8LP;bCY&d%&H+30>^EE*bPe8Fo|4=$@)O5QkhW`=bVx-JLbNrxYh zbBc?`tB=)6CoqqILG`2{WZ3$6jRV;n=fYhBt~vQTex?F#lotypGP{qLb6U3hjD)IB zf5PFw){)ts3A=kS_|69794UZ$RLN$G=H;^JuckBC9NSb&D75d28gWPLo5PE zukXA8Axo_}$1uu!A;Le*6d5E_SyrTM;dtN-InT+@20=weHG=#~)jR3Z)hYWqwk(4x zK>3K+pRAjA|DQlNXEoVOiYltDouh~2W2(J;&^e!gLPX8sI?SNh3``>6?xX}ef6%fU zE((e2tvlBIR8m=TZbZlk&Ec9Ry3^{T&IXC7(697(OB43Lj=Cj8`ekkWJQ7{Jj_NlJ z`9$xlPO#Tj^|=q`K4AG0k&O&|Vula?`dq}AG;OK>BSO*QPePz3xmvvgQ!T!FS+XZ$ zX;{uf?6KpB7)SH7m(=2c6W-5T;gS>{4fS?NII-gTIU+a*s-hDnoVUhD?s8~)T zhU?P>`$64>(q?1OZM$Ck*q^gMEr2cf0{Kb)=oLBQgitbe)-q%36v>@8*-7Wt$He7; z2aR*$jW*`CbQsE*Z?Qf25`@}1g=yWW9*Vab^E_ax4m;{lDw*|T;xV04C8dgU4DNjlZb z^S-YeQ6_nA&LX*s2+^T=&D*P%0!f3~fJ7Qd ztaoP;P(evms0Sg<@|d4PCBi3bIE@m33WN3U)M!fi5Q?Qnxt@u`>sV6n_IHC15XUOd z8>jtBu7)G{ALi6e_CvBk5l+oN9uWLQ`hF)ek#~|6L_EnwgUAF8i+UPQ@l6lW&_uu@ ztt>v@cP;MRa(9jZc*O-ME{LgjGxNx;)KnO>XUL>gtmc=m~TnlW&PUFHQKG{1Dw{~J7!5zJG z>7NoLXf)p96%yMQzy$!n(oa8*klpqS3o%DEHW_G8dTh=hi-->eCidnm38|F}o;}J@ z-e}V?C%nJHdzWC#VJ(P)8MYMW@Olz*Q^0D*_^Pf(;H4GonK&yzwr573&rQP{u7z39 zRWgzpQ$~$dWfvP!+twQ<0{yo^B1Z;l!ik2E+YV=)dIr7#`SZ`RX*k(9M&A-W4pXD} zIwGlMy7lKNweF+47@Nq??MHg1!ZRA_fQ&wxNtGDEqkseNx$4jzd`GRwN6_f!A+=*# z!^+wQ8x<^LG~`zFw7~?XA={9>F_&7|eRr?f#F&MfJ*qmtsN*@{H`D84;Sy>GyS51s zk>fFyK0(*ovd@j2BHL7h5~%Z6sNw={={5ytUjXsYvZ}T;GC0kC?$~eyqV?nFF)ChZ zzNvJ|l2|vslHUb~U4eGF2Z)wa+#);+4k7A3;cVn#FETuciT?z4O}tOlD)Ou&w5nuaTw(npQg;cQIDD2mxy(D$_;pIe zaV1USo;Ac&NR4b9qn65$T;)}TkeJ`LzpPW?%B$(_ReVEDMR`+RFO( z9QNJRrSD2TpkQEJ8vZj#^25#h^+_#p#5Cs|=wYS_5APHa7~3U#@Y@Rn)_c=ypKS(Xr<1CC zP3IHOIRUeSX*jEj<=zgqLe4dj5h9&pY<_Nse_XmvPWdqqQl7Jxu}jKj${pJ*gBtw~ zBj=1ezw+unOwQO0(P~CxnWtE;DY`($(u0$@-)26-1?ECa#e7aCn^*{m=OrWvIhnw8 zh{x$iR|?n?mO-r?`gbWG(ODBFSq0zwFN5Slw%%Rpesyrp&*99euGFu^E1*qbi(HkX zn_|fhl&*S|Inlr62{)WNmrkHIbl}Av5)yYMEESWsjIo7azJ_b@r`Oi zpDyuRa&Z6yY5cmBWH|gXOSl?A(Ey&RcX4B!7xYClHG@E7S>s*j<7XP{CWy=NU=ixi3D9T(M6Rn#{yh$1$yw3(34w5|xg&9J`XT&!{H2?J$jkdX(}Bw@if*;U$)B z!B_C_p|ED8GI69zP%hM_3zw@&waQn;$HTMo^qfWVF%|q@%Co%FWS}#HW=TP@ zO)wV>qmE}#Y2=}VGy^8;R-Iaqx;*X0E~JAjUt3vRJiw$g)NDh34KwNRCQ#Rn0{5Q_U3UZw_w_u zm#64LLui2~$YlR{FYh=tm1*4XQV0^+sc^rXWbH{=2c>yW>xTS9cSch-QQtjhx^tcq ztFx0`el|?7SAq_nATu_=wfM^sdac$#@D9Iv)Pkciz|;i}+`6v4Fh+sg@P(F|Z5WEU z$GLW`H)YEpxF7C$ZDY@O=0eYa+YBlA>q|~(_7dSR!Y~6ZE#!*qKKTeWStdNYf#uCz zOp*f3hnuayzA#3>8|w~aCeHEQD~>N{^X(5IR`H~X8-Z~oz2dJ=S9@BCTav+tf*Fp2RJQXRdlqsZ^T&KE z)8rtS&$&WrbIN@q0x}52hv=ug=fJOzAuSE6K(s@vn{bSNpD!rKLS)urQ~!t0-KVJ~ zs9oh)`}YnwsW<~@h+Si~)>&9Wn$EC=Zgi~x%C%7U^8|~y!@n%YZVvKH$PQNQU!cvY zt{{zAiw#FrLA)R1BkO85(VD~(xLYMaUkaa6fG(9MjBywmz6cSF7N`(*{CxALyFMPj z#8UdHiN=*$V_gMNmH{Fjs#lA!`ZZMGuyjMXqj4XoS?g_#tF(_4Bex3`!Ku!3N$O{? z>_4RA2j8biXwg`Fn`&n7BKK=MgaO3+q8ySXUftq51_YCEbUS9Xi}z9E$GNX+aoQ{m zi%8INB$LhFFZnkj#{OTM;YDaTRz;J42KB!@2=vyb>yduy54ip9=h z&baep8%mBBzjhkcQ+Z@~ARih#Z}_gnWODh?#UBr2^G3ZA&tAdDdVM^Zz*PDzsB#o28+&cF}<*oi&G!ZFjfxGC57>(lb1)cFMj~B zP=o@t_5Q)y6Lk>LS!bW@+U19D7nT$HK=a1T^rlZrec%@CL9s@Q>vw~!Igu#6d)FYK zdB+Q0OaJCMM3&wk76j@#pF(2??9nM^+TZlLTQk$bZy(+?x}A^)c63;8kf};mKTYeB zJ@;oJC2$FGyTuBMbWS$1kYF$zSN7$n;Uvh5%CEF0O0nb#q9iUbPrYh2TWmg@ejaoL za2eR8JYir!SN7?vG5T<9UM*ilCxYD1TJJv(Lg0}T@XS2L#a z<}A8ZPN#2a#>hHEC|6FpjA{*U4n(sS>MHli9ige&#E~aYW`e7uxay#?J0Luq(pDjF z5^hfXVTg789a$#ba5ihwsH{;gFrT6M3{P=b8-kP3K83Xpj)-=YxKTw|_6pix^}S6_ zbX?_L!x)PNgpXXi?2d$w4@|vED?%CZp50Vo0;~Ja8H?fDY$H@J$pHp`RJ1*kW7TPC1!6op6uJ%m-D*<6ic7$6ES>H zA*z0xC{#nD@qdRS*HLFZsTXgFhVra&LXGdEUy7pgEf~`ie0DX(R5DffU9r+{=VE^cSd7reZ{^RUm^Fdq{wqb@ifuk3K zYj8M0orp>!@)tq*zh{C<2nn4;8cF|Fj*f+q&;Bs<T*80JOcgF>@C>SaKfHh{S~;0^k-GNcU@{(P#d9Q za&R1vRda7Hb=qPih+#;q6SU_#JFbVp+NI!=OSZ};LYlCO44~$J35YWL8(l=~FM11; zx#RbT3NXVkpEai+YCxQ^1WuVPRPQ@BerUN&Iei|B#}NWPdkAL@q&IKU6K8LI(_p<@ zOQA2!Q%ISSA|!iKQ}wjm9#$cR5&@;!`9w5H_FAZ@%i!_xT$v%+nvq63C$m||Iwl2M zbj1tLPl0sNsBK_F7lkHqNOva+O-!yi0jMpwQbFoJ5YX{~WaT3r6PhP$>whAG*k6yj znVl4-zxff%0HxttLOdJ;NmS`R5 z^@VngmoqF2gHMGOmI8niu)h?o=7;IWv?W4MM-I@o!E^BZF=jVn;9bq0>A6yY|AOiR5O29 zh&EEymfbk59AHNw#g!4!tg%gFn51^w24&G(_&LZ$#&HJQ|Az1xRFg$pEq&HSQ`e?h z`773Pv|s5I#$l;vX)w-Kq7NHBb1$vy$059mrECdDH9?O?V2u|RqT{F;_%A4B3D8ACues7y0fcSO7xTcnOyDnmJk8y~Q%xJW9UL{U`BO7a zmMyn~b|7RLYXUTGD1FdjD*K*NYR5}v{@bkyaK_u5+So}H&=BW&k>9Kyf5g=KcMBoc zm+^AW0rw?O=H&#q8gBsqKLEgW^@19s7y!6r>cExwnAn93WaQg8E95oCD;!`t{dlGL zl`9R|nYx%b2BcnkSfCr$_AEvFy9tB4lJ4nD@AOQM^-rKR71Ps6<%x<>+_a z3mr2|0=2qFH+ltUcqVOjvSQx9X+T)No(EcY_R&dWQ(}T>C16t3P{PgZoXoyTz;m>j zcYs+j8kRQ5wQeuD1k_m=atMgX5)(tsmx*NWCZWA>K+_GGF$|=7ik1&KMz=Dp!$;3p z#sd?LdbfVCnWrOG3-favZoKqZEx%^`e_Vr~-vU;|2JFP|^Omr+D2XKfF+VhyMKonz z_|9v25$@*4jkeXsSxNhFk%mJmnPch72UZL9j>WtjgdFZRcguDA%cyJA z*t@E-m%@fD?)I5l%^RCJrNp4af5XBumx(;w?H+W9{Jo7i2aqa2#+G4f&=kpwjz+d& z66gY3wE13x2bP@Qs)e@m8kZ-;#Hr=YvjTHS+XI^D-Z|q$;{hE&9jPV&JH{ z{v4i&?6lFp31esOQJHA7I?mS2C{5!)ycx_g9lR=`cZbLjo|ZX&rPNI9f-6tSmAv_n z`CbLrZqwnX{{{B@_|1j*{`5p>}iJ)?>7-=u$REGfzF!p{8PB50G zxGs3rnskxiH+d%+*Ny*ZnRsofw-oY6*PmMXI-E$FJLGWvtel*quc=xv^_UD@QF{P0 zm_0EJkp~S?FBgmsYBLh&L<+V?s>C~I+7Fha94r}&%pMoFjm@-}6TmH6Kmk(!OZe6L zVZ?DZ3z(F2{G&{p0=5XKk3zc#9coPC{(sX@cwK&@>1=z}+PLw_Au;$054`URuWY6H z2;KOH!D=F38)ya;%tZ1UkSUW9#ya`woVVwWlwgg=M!k8AQ_!{L>GX1miO5tWaaCkB#)o+vtU0muiLi2lq8F^|<gDMPC>EVOP&SZpo zq;7qPK=eN6O(PvdGd^y2&3nwuOG?YmC#&@Sq~SIM_(Wn;hbr)!NpiD*s_;D+^M79$ z&_A_0C)W6HCR%;BBhOYy)Iqz6C3g!oSaJomAwTToP#4F#O7Q#&-PN(+&&*5H8!@B# zsAx$fjPnF8Z&J}2DGv_V0$>^M$0u9>?8&o=g7$KgqSv0=q?BN})+DQwddDvH$S)4> zUq4q3wL z4GuDBzv!w{JZN&Vzd4ImGPxvI*eyDZ2^HOPcROpXFh6F6oJkMijYQcGxF)26H9G@2 zd*Q#fyeV&s6&bee4yE(!HwckjVd|j7feJm)k2~ZMtVF{zsFT^t&;A3Z~xfv%Gn_nFz z^995QP+>svI$p$#N6A=K{V2XTBL!G%0EB=1E;WFZs%UUPuuuG|t}vxSf+DY-AR738 zJdCCjFHBBBG5#q;Bh$nkz+F}=%1&^n40;`p`M8NE%K?A4Myff$6C+R4nE%aQQj4vq)P)h-G=(8>;OpT!RDb zGm=)pXz3ml)!ZNz?fQLYM|Rfo!9HmxaNJE*WTP?-ibbkH`5!#)*&Q&XxeN2%45DX0b@IIfZ^IBI6K|L; z5rlK3&c(6f_x*wSARbGS~k??B=jfxBlCYBy>g;+u3N%KW_=;;$Uk4| zcaFj{NOBJgGSeObR@7wqd9`TXxQ2nD-2*S0tWiqe#Pm;i9DAa~;X6L8E=geO781lAi$D=k7GO3mD#!ZZ0Pntb0_E5mufLNIL9206>+@ zzZkwWGtI%k5qmQ}v>)utJ;X!dY+KvIMR@<2T1xqX?x~djrXqy+tn@!cyXP+8?$7nk z5e|DU-*7dFcQR5lX%38y*)@v)0yr&;oyR`&IJy;__4?2#q*^FF#6GV8D=t!_eN|Mh zE<)nyq>;eA0k}$yPM|e~BZa{0#qTwbeA9Z)r3MR;{Gbs-6og`(XN_onZy#L>NMb7I zF6)u&GR8IsCxh{Augx?56QZfp$9Y3T90dFk4_k>-o>#NVcZZP%UOyZ*7XS%igkyT2 zGKgU5V58nIqCFv5u^+TbF74=~VyTDXV0BAd^xE zQ!@~y-PHtur35w%n0^K;tIq(IwS;)4DgZxDL>I7CS75)f^nS}rIZN}U)!b{spxPYl z1XFf3W65;m^w7nv1E&R!E791rnlD?-9VQ_~K`wtSVk^(}djJiiYNvtnGtW!(Y~;+L z{1)K%3BS5GT&rFmE5yR~zU+%sE-n2p`vePOuExY@%N?Z8oc6(}I_mvQR8KV;Ogo#5fjHo9 zRxA+VGgIeZHm#_x)5$6>&g+HZgZt1WGSqR6H6ByfE! zz;?y7Oy^Op8~Lt8ltE-b1L+&v$A7=@{(^B7=*^d6!W9OWT8-Uc5z2=e67 z)mdIb3~52Tt+iD(m7Coi6#;&eCzb5G0r^YStxUL?ivUjZ92eE!9aEDQR9nuUM2 z_WR|@&GZg&pDHo4On@wh0IWY1U5N()LtoAxI82fCV z#Evs`HC}pIA%g?KWWz ze-UEysfx3iX*l#kr#Co9LcFwJ&;sF>uP2DG0gE6X`4(VEbOdC`_v%S6`D3asXhKUW zcR9GMLjK46F&|g-CEaBYxa^yKY5M8&-efK&%-BPV(KFASq7ji@yiBY{dq*prKt=cj z02FewTqB!Qk*hkOkTEi^bAHv)mmst^NS1j-c#?q$GSRzU=AZ2!8%I&j&y-G8%5K2)W@Ctx_L+5`Ngrz>hp^S0+ey!ksZ%jhoJPQV= z-QcXboRwPADiWLD#50j=tr@!)=H(>Zy%Vw@RA|Af8)*<~#fJBh z82-_+KQq%4IZ8gub6{d(2h*p8tu;&1$XpeK82KfpbDCH!D?U}G-2s7DH<(IWqV6O* z7m2o=4lZsG(c`s9g$Suh{KR>KE~&ICE5?C~SU$UwcT?n(;l$7;7ZT?kZd<~v?#aTH z;(RX7L`QdZ+qO_nrtccl&YWnGkI6(kW*Z%6F=iWaJ^f(K)~|#QLUiT?xwne)ylO4< zjzC$?+3^z@c%gy2V90e=gt_nzSSjkA>ixOmY18VP(7`98+z%!yTLS- zpf*Vx(ukg^8I5p5XzPnt=6f&OG7r-#PFqn?{T3#UcAQ6Ebf(3XjzWTtvT48Z}-jw90A&q=JzO zht?-MnLjwb)2v(l+1qkoXnv92>S*v^197rm^++g}Pt`D%`FraplF6~tL-QP(XaJg6 zosaqhqPOTa#jJrDrH!%Q7lpNE~Cm`!U-cJ)*57uOU4Fq*= zl>{i{ZSP>KH6n*As^wPj7GVXk`Zmywjk_urPjpm_+_}aYIO5E_PNTYONVl;-S#$mey%T=PY;BeJ&ksu=9MB zyPRrNn@dHaM-$MWcrLeg_PPQN=0;t-#|r8)QH1(HW2Vcr-49EeCP^>D*du z^Y{pNkmcm|QP+kX9~j~sXOQ!G16b*l`#pY82M-;FjiGMb>#Hwh@A{OG5m6~1>ebj) zE7^ap%eaURG67{MIUH#*9D~#}B=rDawbsyiB_#CBI63n&Ty~7J=0qe8&)b;-R@fzb z^q0x7>BXrK^=rY1E8f`mt;Y05tDD=WuA_3!osMI^EhTD>?DCM+=-c2qgLpElY-CG0 z7x!s@t_ldHpcC9s^-q`=!OvLe@5g0qP;VX6-A!M)mY!Fz?w4x5I)?5WxJ8sOZ-GUB zp;D1ar9FQe)a3|y;82Vfw`|Ff19gohxZ%- zyS8pX;S4%-lkF#a z#O5NZFlxU>!}yK)`(tteCVXEW38B)by{CmD3jyT*fVTZyrDHxsSwg+%5E##&h`+Pd zhR3nVIu8=6%!vYsR%C-{*?O$AuauW&PRbYN2BE6vZyuB+rJjNr>>;AO^&kmavHlU2 z^D7Zd0;>_;j7TF<<>-}s=+VSL#V20J!%=n(5rGTVAN_AUtazcC$T|z$#>CdjjKpq zr1EEPgrLZZ)-zvh5-Gz01I*|DauIkIrEPH>{G;v@zop}l{+o`D5jbfrKSqmZ&h;m_ zD8ZqB#?2cod|hkb;L;gaAhQf6MnB4w@OR)`@;@{HGSD+ypygfD>aY9U0pMkm!5$ZUSsQ@vDRwI+M#&Gg@on05$YgQlcu3$=_KAepaBfi z>Ho4blUjx9H-ie-OMU=`AzM@!jf3zRmPz`VZRAxWKGNW~X%@N2qLm>=+!x$IcyZgo zNi(`7Osm9{PALr@1YTiZ48_%=9t92Kcu%@cu6^x6ha(=GsO5A_5$sy?Gc7+0{qb%l z`&4T>P0bpYr*dB?I6$XX5|8ltUgD%}oh?NkSGhP1xieT9`+%cU@%K-CXBVgA zMM?*&<_XJSsi-Q);Gifa+VB_kUy?_WwGOQxHqkMQ|7%O)>6Ols_cpct3WNQnVN-`M zJ&ViYV7R`#T)th1`;mITnxT}E$n%oU@RhwxHovzi2rsZT+IbXQVQMykK2450qk#9r zfz+%$J=Ux!dk}nLae}=A9l$;E8OCf%lEuRD9%y?H=8A|J&zGcy{$X&I5RT)e5>&Sr+j>+PYK=`(jyq-L z;m#M1Z7A=Q_nAhWKyT_}-{B8AGf_Lq(Ph3zbKDQL$sv7^RZORE8G>rV)3kFOrwiS< zcgQQ;QE|^_`G|oSVDIh0rLQB~_{KU6&UDMq{_HXQNTb$Gu`&^rIRfPX)&n-FO?=FK z+0HjY!(8F4vVl`c5>4G?BoOHxCn|6OGN?xTu@uLRA0`x$5f6)XGHL+)D3rV?3XSdE zicE|W6FD<0(L#=8`3;_PGv%=$?>VXIP5Iqly(2i#a1jQZaHFS_S8^N9Qr8{Ws~+++23k^eSQWrIaFj}x_uUrKvBhS z9kkaUJ#=JPbTj;?6jkb;f~oi$lpv`aYl?bhH=$HMbo*%#;L_it(uT5iF8 zp>vX#rB}W9mAj8hxxsn(_~b$Alkf1)8VKC5R{oH}>AG88SNN%5kNJhF!!&|xFD2lx zFx(KCuan`}LRNS003^aMAcX-}SzRkWceEauZcQ;e7fN%dxS2DcjWDxc4+g$-Fv5!` zkdwb1@nPlkR^Bb(tK`Nj62SrT@n~O1{}3+;t||Cn*Uoc+@1)-I67dFt>te)CW%|W4 ze8+*kh&l0tyhbQ@ah4;TT#b`aURFnY^Z`P;7S#Y@&V8OK7!!FjsQ0>F;K@uk#$r?))BFO2_Id&Pl8iQPChO}Z^`X_()`&EmSitl zF_s|CS5DQhc|ZhYphLaGnt85N&g1kfZ;?Igh$r00Z{^cNBZA2Dv zjWRXQ68cza)O?4WZ?@$_zWZ3E!VCZUY9AjW=od)O-xCREvoM*^ygJX_fN}P6IJJ%l zTe+?D%`q?j!a2i%O48ntp1hv6nW&Z;7m~M31uXe6W-$_GB(=;WlGMc^)@Mw_YY*EL zb{Nic+7A4xIvH{%T9z{?{c5>5$1tp4B`qz+3aeF3rFr_q(Cv4qF5S zSk2lz;kNi=Uefep-wv8&o?>lMtBiJ11@^*}ZPfU-6>BZkQZf$)Ru@%;6J^ajS&tn9 zCx0!L_G#0R`-X}M45b+7zV*}L*IZ5!A4w8uL?!;!0)j0N@@7*8q_;t)lWp~th!TI` zc#rzNTY@hi@t@SY`f*LB^l$k`Ud2VS1va?q!gs!;X2S&xnoX)d*$LnMPS??;Avd>$ zrX&=Ks~BvH0aUSBU6t@lY~cDnDQ0|XzMeDN>(m1-K=1O7lKdXk2eGDv!JY05J5eid z96tNzDc`Qr>_0kwUWFgAsJ=!rp3oK+ES;ZiErgoRY*kzWqNvOdOFc)3i2Z^`NXe|YEww^q9&&01Kar%QRd8165yhaGZ@VA z)HMCY=y8AE%X{6b#pB;|kM~H`^6$8%k2A`TDaGO0s&07x6B%6gF{?qU(eMPy17o`> z{_*}M7}FN9P7;qr6*9KNYIzPSpFXTJ>$FzH4Deu*{if?niDpbl?-Rd7$#(*-pDVm& zwCgG_-j$kZUXi*X+Jgh1_hGtLdiM9$Q_o8ZP7sVL6P;lqUMbA~ZFJcJ-twK(!-Js#n0s#8Vl`492AVGxC^o+8`wqLhw^ z&D2w-i|u~uQq?v}*T~37?reN>Wxz)hz1x!N6|;Z>A<#Pm#e>R&q8C(^n}Y+{^=ik} zFI)wGYV%5? z+g=NOPXmcM;ns`qT+~zzFbkHdl5x+(!9R2DZzz8TJMnmtg9}njB|@rG<}Isbw6fjR zX#{Osq38z@Mz)#|Tb*hrWL0ZGA|++hrGTL&a@&_*#31eSU><`f9)h4aIv45T);4X4 z5R%Q)gm70U*B6(6LLT_}s|e5h#5UQ(2;>QYEEmN217WM$;+7oxbh!c`ksu^ zi}aP!ldhtRj%2Y2ZE`u*b=(&70fC;IMog0jLy>?U&?k@1!$Ea!~Yi_)kj0A62v@VAqKBl9>gbMB*ai2#~4F&qtq3?+M!M^}J9QClA9zybP$ z&BG~lG4=Y|*>Y$#Vu}1EysxQ~IHNqMU?!{AT}dWnB-Ke9zBr?vx~Vsd*tWR zufl|#fGtmi6tP+KRHSi`b|pPF;QjD_^zti$^)0PqPVJNB)zG7^m3Vq!+Z*D3UInP~k#?hs6Zr zfzZ%uTOeK!+KF6cOFZjUu>c@0y=1s;xAIcEjoi$}9A}Tq5A0aRUC4)OQ-^yzJEGABXyTUbLCscIe3TSH}lV?*{qfR#{E^3t6<`4vz66@iT#}it8vuN zsgPD4+%+LXgP;OvZX4>^b}4_YX#;*K50Ghk%`|z(T~!7yEM0)UqRKV35IO3WVXC2X zVRF6;(#`AnSAc{m9nDPL#lB<2;=KgeO%nPZ^VJ-|_3!T^grBW|`;EiWY_3^=rLY2FqTUIn0NN5x1C0Pec=0Q9H3 zWpqiXA|)(hl3Fd*?M;Oe3Ru;(29+gYlMfrD+|vso)(19%Z3^crrBtdBrN;p^RQrk{AFT1- zAVtX-Es@4GbL4ZbuNfeS4`OJ)g6m26-;HM=E zh0j%e7{!(GIg!0iybbcqR_W(`zBhO*j_m^ zfj0#v&goVlz#LiuRDVC%v#vo!KmytI*St7F{(e6Y7~i?fA!zjNQ-->10!05u^}V+k z;{!u$?F{*oQ~~hIno{1gwD`?_yQC-aiYVlKUh}5@RJp`3I)+ZU+G~LJ$D-f*vft69E?LkYPOJYTnjkw>{tBamE zmj8Hz7J`924$?DGG9QaByWniLjW5{1@$QhPc`kzdrn0<44QXUm;Ur z))Nrxr`)C8XCsV4uS?)nJK$>@LDw5yYtoil3pfr@qOT`O0!%!unxKn3B9w%ZlJizhq0lD6yPBBa}CY8&bL z>KSM5bsPQ;8xKjlF3WNRh1CNb5#eqoWT<^Tz>yy`iEG-9OsZu{KEvqIQ4&fl-K)on_~{j9yFRS0 zSPGGCuXF{Pe8f3`4g*pC(h)l&ho4Im1Zyl#)?F)Hb{hY=KIi3SO(lMos&*Nap!O?6 zUU)(lkyxtUTys*!u;cG4rU^7sFUQ{)$i^iUD&7w>R9>JXv52LN=^A9&&=kA4Lf`6* z_IGbta;4)Qf{g$jM){|VmQY^fLH}+mu@Ba{`?Ax5w^=0qfo%b`x2;XJtyxN3)0pM* z3d_4sh^o4dgcer{LS|A+t452U(f#Y%^9XWwKA5-nU0tQWnC%p=i#i57%oH9mr3Y5;zW-h)1f-nuLGrKQNT_Qq4) zzo7T?d|f|2eV&M=9$fb*(CV#mNQB1z2}4x%Ai%1vPn^D{S7L-;8BiZu2Pkuba--`Z z#g|sl*@xO^tou5>G20TDU{w<;_QI7*T9L#M_e|kgBsqft0ZLX*z=)S9W9n@O*%@?aD z<+d_Tb5=1%T014oxZqcbg=Y`PRGgMmp@lo-u=t=onQ-hRllJ`Ehqm`+^K0$|**gMr zFKuXtlfU`w+xT63%@g01nz2)?XCM9Q`N6U4u@N=Sq*v&C|h@caAWKu|!| zJw87A9ZdTdaYxo5ed!34KeHWdL&=Pu1bU=QyEeJvH6jf!gyqM-uv+67Aj$Z^BKxlTp%G#?M1od909Q_w!|WwpWY%A@q3N>#WSHIiyr*uh@v;kQJu1X}Dz zV)s9AB0yPQ>r2Y2Q z3cSy(AKLh3W~9{^r#I}^e9xQs^g^zRw7~KMx~amP-AXJlJGiahjBR+%8hDjuD-e(U-?%Uh24qQJWqq+JeB{vP z^-=oF4+1`pb}fuoL5=aXUGZlw&tA#Ok;X+Bgohc>$bdNt$XVGKh>kMdA?U1Na8BaZ zE-V~nXi)Zh^T-DjZO3~g(N)f0Vod0;wfg4pcio0RV*E9)dcD}%VE3?il3LNu(S?;I z^wTXtsfwbIZB)h;Czml=k}nLw#k0;oaWjYgtx!sDc8m6-ty(_5TuqEElY|`zB6Kz8 zGPy_qwZ{lPElSX%W%OF$ovjdlJW67-W_6p0byFSQEQT75w_u4w6)=BIfeI;8BEiN1!Ex1y#0@%FjG|~`9e>51(ucV?+bh64 zH)>;4s`4iRV4v2(<4p74Bl&i(?wot9J6Vy&VQtD7R!@`sD3D9GfBEcq(OAQO(tOHl z|9E3H$4@2>pBqcj0bnnRK?`7!0``0ASWBu>m=oNonImzh1+mZJ8tN6JRSfrZ3sR$; zGa~5ql@1yP0-YZ+=G=J80>;YW?As0~2AVH3$$VsWKBg;a+ph~To~j0tct*?8K|=Ag z^lHM@G!#IUt8xDpoh1%*O1$B)tO@oW3j21(z}b*hpFk5?LEP6B-6!by^sshytE5$w z6t47~R8C9e4>F@|4ZjYB>&+w+(w+NuQFNd#0s?_(TI$L;&3lZgZIZC%oivbiMFxin7UXM10ga6fr* zvy3{tNfVWjbj;juk5KcXa_R)p=v5S&w;XTa8R!0W0{@=D!L$vWEM;F7E&y9T33 z!Ei8H^?jic1Xvi9jXP3dQulu^WAB8BIY+ZEYs2g>;sFx??)VMj7lC;F%1`A!56d8h zvZx<_mXkj5`l9I#oxy*kZ8mQ*SdWgR9pXDEKT2D!xRuc;_b{#fS+L$R;_2&muPHZj zB`MvmUtkoO=|-ArA@gYtSK1SEWjKrH8oueENL(JAIW<*Wd@vRO3V)r~aJQkSn(w1d z1zfwr8w8`&q9x%Xj+tOb$`GVl?wd?zzA$N!j8x)%--cgnl`V4-nWS)ilzeqD5gSCw z$#Ld-h$y1E$VAZ_A5ITKHc{Ehn#j1I*J)yeNH$2@&zX<&I6%G#^-vx0B(^_hF?2^3 z_)WRi-@vuT+`;QQ?L7G3B6szz)JS7IlP=oWReZwgCU`Eb0Oe-4o(zhgm@V)HXZ{BGPUWn|I%O#2WBU5|n)tRR^mT3MX41wUw+?lB-U z!hqsm(Mhg2We$h_D|US_BtI54qkv#n_ek^Mj(t`-ZP~kUO9tYv##kp(EmvntAL)BD zXt*W}Liq!Q*;`(DkupKZ)V&Im0FIaKJ&-7T0>paWK98N!#qAgg*dOzfq)DvC+eM%< z5&>-!%9uY*Ga>AFV={LW3|LG4qrd4d5uwJ2YC&F13kfG{EMJlcXUv;~V&#FCdB|4u zs)6>5d?3?8b9~50LB#ryzGjy0!!Ar>9(tswGDK9+>&mns^!th0@;>U>1xIW zIx_1kGWBkOeB5XNX!I)qWY}4YYeu)PnkqS0gvmUou&7@sM;gsX^*GkWt zpfc`w*7VnR5nhsESy%+ONo7HVaekh3e(g;WGN?_6sq@SVE)C)yaD|hmW!S<;X4m{d z3-72HCv+Jyy-XEu;FW^XvwISCy+Gn<4^vCWBLr&KJ%YD-X(rriwtm{QAGANb!FP`A>e zSM(v(S#>t9hYg;TH7Ciwqqmq(&O_VGyNnxQK$9&Pym}sgqNJc%GjOtDnk8 zKHMy=?OSWk1hx&_5?Bwc!P?)6M%b$!Junzn!$`XCzM~~Zkr`?Ku-islx5Ghsx*ltu zo|OU^w-Q|nqM(uGu;c;zA3!ta=8;%x6j=sK+kW0C(2L%*FjpWrKIHLJ7ue7D_uLhM z8_5eaCus3rDGbAXOHXuM#dYWPA9YFm1Ez@_iMO^)Z=<)3vJ z<+)Dju;9tkaC(cZ#XnHJ7i}K+JqX=20(G>m99Y{ta`m0?e&46WgFu08SElVOm`PsM z_whwyDqr+lO$flG6!J5S#DFLAi z%G^rrTu)F$zu36^V9pOi#jn!4t{n*f%NVWSC|EXX<#?%=nrr_*l_kJV4lkcFmmy=ysoFWOSN*eL@Lox2n$ll5I6Kt)9ecb>K((%HbNj-fh5m51>*Sj6@f@C_P z-01rif?)`5uSP|SzW40 zaevJgb6lU3i5L1`{zeDhBX|<@%1HQ5D7r@Jb7C|way_?eqGNKRc#t%AO*>`%c!{Nz zpFwcm)hw*hy({`l5&tUIN#X&gAe;`f0D%-j3qZT86`;jcd(Eb73od?Gxi+{i(_W@YkT5eD%X7$Gt3kE6|4 z6YeiA(peD7(Ao`I7p5MJ>9|}Pv6E?kO^J>-kT)v*G|04euMZ6bEF>178A?YE+eqM$ z%5Vu)*t?k!)c7Na-*-fvcT!4Yu1hKgNKRyN^|M*SG97V^HhVsJpsJaiPD^R^t=XD> z&8@swxlA-wF=Z0aTrOf)+FyXao$%%zQ}=>mxD^>UA3AaYB3*jl~E!mh~$wOOUj*ezV3asOQR~%mx$s0LeH?`raflQ{PV38{> zzuNQep;uY4nB}P++R^beJG?znL!w}JWcVk|LL6`bj#!96o6zPpeKI+pJ#p@&a$6n=-pdn+XV9u zDz;cj*!+apmNY*UJs)2_E#lr@*4z5<^<9c-La!=Zt@1WqTxpYuGF%}G$-gavC8j@t zr1sdwTOmZtdf(%Fq2Zjn^5x%i=4%$g8!7x_jX@K&A6qzY2vygG`KpFVmME0+O&HCc z<1Y8IaqX&vOcUFmgL8AULpG)zqxLLSV@JQ5lpCsWkr%x7%a(vTdu{@_RBo$kf^{s! ztECYC3!a5ZO17>udssfd3qk?Q5r{cvy2a7ibO1N2Rz_Hs#dk(JS|n{I^5puiCRas@ zAdF{z@snwG*ZOi{+%1)x;OJJxf_NIi2cFhrh#Y3T@QQ0PrPVVnjoqDS1eH>`h+M*oF!gY0&SeJ?k6>d| zt&sI^j+gF84nV##Gw-sW-+b=k-)gd3pPeYg8x~uI4&6YnD)o=?gcMVF(fokllo17) z6Fe91vRHg~CV=9pgR^Za@?ao|v9o+!;n#YX%AC3%#}pLh8V`?1L|@4@BxZ~9!~y&R z3mmpJfg=58^F)0+cgL_mIl}Q8iXUjP@2hZE2fT*}*OhxLi)=QwLEwOU5wj}qzCU`i zy*ECb6LNPbLGqT6Kkm!{oAuQ|p!(oxSvX)RRmKm!|4+&b>eY)4Y$o4ET(zp`DRQfP z4^5@TQ%LUN7fDu(#1Nl+vQ@3it^ugzShbSbK%4VlP@;isf&}I-Km_OkWwgi8lhVS2~$Ld*F(jhs#=nq6Ub zCi(L|;tconM8dvRxXp7(FoOeR8ugeffwsM03KqdXlPLUF7;ox{Qo#xuSR6qR0vy5fl06`q z>;wRoMMMdmrrYVe)q*i-@jXbr-(s{4t6xQmW;+Ikto?E(^~mJ^_QC)9ZJ&)`VdIQjRvg;L`PkW1#v>4NNP)mMK z%coWs`L9rNGj<t#5auiR`x1)7qwB#8H^*KAo9#RZ@kJYeYqtJBC+AJonv3^5NonOf)fj=a+BjzqtpLo+_ah1vh_k+R4nN@ z*&4%4eP0M)DDOu2|r*4rtqnyRr zn0L59AQ*o59uEfSn&UF%`pc3CI2V?-g?xIl84=u%s>|EOujM!q@@JvS1#X9?D(2IJ zQ?-G)WGEvnLhsuQA0gurA_7>jTVO?zYPWbVfVihp(M%;V(_4w)1|^Fo$R0l9y~l=4 z0}XJ>l!|S%LD1JULmR!Ti2v}N%KE~N)(wJRaHux#DXzzIy)h;`Q}pFyH+4NcfO2&Px6;FNQE=MV_8G+XLbqw2;BF0F~F9Q@cFSY zjm?S+XT-XjuvngDpSIegkE}OFqUH41&)NXohv%!*(%Ftamb_!qAY`%=~XE+GDE zB2t$jyxT+7#q^HsGesb*C;FQm?MON?TYT9>5+mMmXX8<~JL`4Okr8fS0v?%yo3_Gkzd;;GQ^U zK757`?M>+(ylolIYK}WY;W=7|R!ji@KLEg%)ev($vvLfze=Z@7KGX$@%V#(r*=q`W zAyDbg6_JeP`wd}PB^w&mW@#oq+`7bRw_3mjLW##WkYA*_bC%Meb!RNu$~C6KXv5yz zyM^MQ{Fc))hKfV(5}g${>0lcNXmzr%CT>7(e$#j}dVyoG+c)Dok8!6?eEtfFKMlQx*uEEQdZvwg8N zaJG)pixT}-kUpZ&zEOqGgyZ=y%3o+BMwTJ}!#}M|%rE#s!`Zfsfgp+EqMW6ItYEeh zPxr>rKJq;o;Ku(U*ZYQgb$QHp{F8zj0Js}2&oEOb!tJ4 z9AD<%yHFEZ7WugDhJqQTL+)krl6|XR%{{M z0Sn2u^e|AiRavwc(nij4p0&gbSX#|2{T}H1>woMs}`S|6>Fus+TYA##&jJYrQBur0<#GG5k@wtOnKAK{C@a` zDh=4P`Fr=0_Z(iE2Lx!SWgXsszC6ZY&t{MoT>pvBPAM0AIR=*MD5Dwp=axJ`kT+P8 z>*f{o4mLvIzW#l93P?Y)l^GmLVHM{{XuKv}pXh0~_!(g`2_U)W=8%fDUQXbGwbbi; z>g&cA!$y@RSVgOjgSYMO? zSP-=UwVhi%qpv%YU>9ZjKziwHI}F*j7!~u%K2_;CXNxSC+o!$4CZVi6Dy;74!@y$y ziRiJQunT-2928qib$#_lQkeRYt}2lR?AatQO@-*US`*R+ywQIE)i=2)4|9*LDMd`l zNk-$qgmWYJsN?*rL4~ltLM8b;N4-P-N~A%nKD)-5uZWFCP zOz+3fUsV66V5QrBQE!-@?5Y(Q!%J_gGrrN1iax|J4|bxHmTi__H8G|eMi%W2TUgFK zrNqe}LhU(yU>i@OG3*)vdVDKg?ok#C{)rlK;s=spKKz2MXz7LBM{>rq-pI|{U7dkL zi9tB>cvvR4~H zL&1c}VbEHFKg&0Yz4{1%E-Ro|uTh5uSpO?m=$B+&Qv@KTq2!!+r?jLfe;jclPPjwL z_4r-q9%n*D>9K$;-7uKmFCkZIRIxpI1Kq_D2-gtU$teb3qziJGMdg!-(Y6yJlTLC1wW3 zQ~2QQzWz7AeRxx$SPzFpM^z^niUy~|0@~LJeFCv|o+uVJ?9KLJa0XM5VY@5<{o5BF zD8o1<XR0z*pc#0;*>LISu#LhEMEi{OAX*a5pw&-zZC^5&8g^>0v@ zkJ%GjAd^mFz2ak49!-fKMl5z?-miv&uYxpdG2|(h|9}f?;}T%X$(HZ8YagKk)izNU z7#Ou+djJtIH2E)tlsvZE6G387)z8$+VdjD%>Oh^_EJVxpwa?HW^}9$DO2VWvTT3a@J)GZ9HvbbVG|b<$#2lb70E=v?Y*vv=9XuL#4J;JzH06c_*7o-ap~ zt_Zkq2uImgLj%TK1evo{25R_TZdOXi;d1c3b#_fi0Ev$V6l#GU_+`Ias0t|X1;T)U ziNOG%k?2fG^`2kPrd5`<-q!zz4Y*anTa@JjtlJfMI36|MA1g!%IraxecbSGe;A>bQ zBt%0oq)RZ65(E(evs%r!q+nK1^7vK#wUa=@A;_vJprJsGcfoe zkqz4uZcQ~>GPrh-gC<9_{@8lwi1%z?^e>Jvfh8O;gsf|#k0^F5wmYSo&**NVrOoi(Q~-Sf8WiH!gp?$3+L zV1(b}d90sZ2Is_^uSXtJFks#9;}J2|w>XF*k1NlOwB<%Yd!-t)^Ep|h!q-YX^Pzno zqxnwd3%~=N=K0@i)>-cVZG#!6x|S&&(`kH^Qgq|=qOVI~Gx+LV=)9Ot%HXQA)bRuW z4+HXXv*hmoatl~9?1r9|x&88goB74#a*ZcSo)4H^pP%MUX32<_kc7i(=SmXR5F>8g za!XcAx)|u#mQ=^O(L0Gj781gU6WSeb7YeEgDoZBcehVGv?N=QQyEhaICJ1RJj1n*% z|7H~JFbk8=-iDp`ru<}x_h6y(#cV`l?U*8*+GAau(jXfDIXLr+GFT>>1?Y9vAdX5< zzQyF71ijYuZ+NWYNJ|tUosL@kldac=KxTX3u0f%u>#C_Q#u%;To_+g5x^U*c<9ZHu zm?#6`l3~L&xcb>~Q;Er_ng6P!kX|JdZjN2JNb?G9?A@ZRk=BSogpSS^5Xd5u^fgBDEyI&F1CeB8TnPQW+)O zrPP%zQ{e6JqgLlVwe^&j;Mci!^Mysu3){JinW-p(C)F85l1Gp>+NMY;G_I>#ZwXD1 zum^(Hx#oB=SbZl_2ONx^OZP=C0g6=Ax%f$nRpfQIh3~|94mw`3!!&w;@ zz$o9kQsI8Y-Hr?tO)Qm`_m{jLmg9Xn$-}rfA1Kd)7Xy=%J)<`itY~XLfIz>`M-*aG zYD4!HB?7HbjmCGKTint-=9T_)%v(M@Hq>nB%^kM4;3Y^}%VX>lp+eGlIh9JP6#VJX z3fl^LfpRKPR*<<{Lth1)vn}k1`)HqO<2@v*Bn&b+Vf=J{M5#2mMK{NJ8EZ4k8L5RU zCzYe^9z0~inOwS3j4|Ca4_$+ZV<^0bELY z@#dXvrDH!nVw6H65sY<}i6*%6bujF#)4McJ?$toVeQ?Q{5GjGE#e)k`v-hgPhWzo;eg0$r=_(C3tvuI;dZ6Y0#z<&o`2(?Du@vD(y*$voHTKGMB z{?d^ON%`!7k{1v&9!BZqkmQwpvU}eu&}91657$uu;c1(FYg6e%%+a*tBJeX3sbT|3~xk7vvJdcDA)wAwoKdJ{$8t|i*TIohpdpTPaC(D9f z<8%e72KYJBB|Zu!P?0vmucBFGY9cL69w5CzX#^S!LQO^9jl~r(a70D5we@t8blvF9 z?iM41Y?#Ypb@v|)Xhp_t(|cM_ctz&&%_SI-a>p5&I(-@Rq9|GnSOYw5F|^>R$JT_Z zew3Z$V_J7VTFi@ztl(X05e8XGjAtCD=0p=-Ck`Iz>zQB$`9)_xIy)nUt#|wH_lqFT z`ovTuj?N)o77<_#Y*R26wYUMS|D^uF&UEuHP0&(j;(*|Eh=kz9$m|;b>1cPZq z&zeQLABy^soR(9*@k>2b^-)Wd519aL7K4HJ4O1!JpQepq|1_9NYB}x*xYZ(Lxr$a4 zpd+hGSkO3%F>x*&N3kNF?qOH763qNbQb=#|Eol=%7j;>;-S(y*E@r-gtu59SXBYx` zcp*rC!s=1<$w09H>jIzjDt9+Nw#LccQ-t`Mp@K8v6zZ^-D$}CV!L`Bu z(V_7NqLR9`r;(fXAdio7J`?R7Djjm(eD`ZhftEw%74xa#9`lIZV{^u`fYSC1lA-SD z%$LA{G)ObSBUDny`})d)F}wWVh0b@xrxs6)M$tTFtM-vOI_{dLC2aOAN$Z)5(_C;@ z*rHN;s~u*gHUL|m%V{J9s@a^-_NA6FV@>n^_ePKu@Ymjh-N0L|${O5jKxtO+jr{|N zc=~CgE;*j#ZkNPcGajQK^cwrsuwCC*tQ^0~kTikhVvFJ8LX2#D!B{*S?pQba=8m$y1l;4zp8|@Wg{#?CmL3k=on{)OuZr^(2nj*tcCK z^n+?amC^q3z-uZlRDgDU_y=KBfM~AE*tr>dWJ}N$Aq-}h9-%n>dm3TdGxPY%dv6d| z>=<`^CoYHVJB??UBh0N zd%O8!l#`t*HfHtWnIDsQ>m*^UwozGGz%XQw@y!G+7L}{60aeX9w8+9Gv`DWRbAkBeq*f_>Nlz z;koKD%4k63dfjSflGPO?8F-j``pXGF5nwSgb|Dlbq3$RQ&$6a7(SKN0`@_UL{FLss ziHzW8u!~NdEUe18{FC;73!p0^(%#KuuEZaO*BZ2oyE$(xr62@wPBlNEWs}g~B@h)o z2%MT9pffk%Ao=tdN|~obhM_{U$)sJ3G=~hRvn%MF5n%{R+<=Hqa+FQsJByd>qKP5ewS*K)16^*q^{WDWY0(A zOQiB(9IsFDvePW#Codn5Muq-MqW?2P>FfevABE7rS4S_f4;fbAhB`?BmJz58ApD`? zH1yH(Fw*zyGY(~b%Xl5?!G)Kn2+j z5}^w@26RSdVUi(^K#C{D89EflG`KNb-G%(IyyJ5|bq|E4fOzPK=N~A*!e)iF+>O)- zWVYroz&bYtC1+a9we%OlC>v$R4G0B#iA`6Um-42Q4xQl>F(ec3KaZo9&t3z1J--9z_AyxP{Gle0fSjBUIyRK_ixba#yi7 zirCRmD8lQe*4ZUHEGY*bIZH+7@H z0Q$cWzS}VnEaz!!*%kPLUg)Q>Jw*7_6E6jtji)Aw1w*udcCgaWK%HB=eomo5>ddL^ zx7hWCT>{0OR1l5n{fiGw8vHpF8cM|~Oo&m0y_v29-hr_=yf2gBz;GXqwJ{qz-&27M z=YIJpyDKu`yti~zgv>Qx_n8fztSc4jT0T7H9wm-c7s zLFbF{M@cWK5PM^TpCa`++T08!H1d+e zNZV~Jd4sKzid^`P06T#>LJjb^ZEGD4(1;TWsi2k2qHUKBk5!or?+-JRm{$0V`fydN zl!MWr3#)Q`SVxUU8VsPu$rE^4lq{KjXbQ8l(*q{1jLbIsh|8$9Z4cstf-E?*N905I z`j?AdciCJR>SVc?QXYuP24DTz7{CWI zhtks)8XFekH}UBJ{P1*GZlTJcC8;A zoc?7dnY@_511D47Pd8{*5vU8!teETTm3mdQB<-kj1CE@qZ&B-zw2aU5tgBJL9)&f( zC{xA|;B;+qzL;_?!212wr&^=!M0POuN+tmO=@2yfIWQq_wb|*7x6XbLf2*kigd$kzX>xRBj`i=09CxHPVL`-+Qos{yV#v#7OxNl`yvmNA=>4WmJ^e*egu%!u z7?ITE&S*qzhzuWv>;I5Rya?*6;P-+~on3ESY~MysY(GmNJ^T{LXMFglS>U%(2~=c> zUx`ylXKV@Qp@dBb6WegVQ8{)gV`EI^j4)7wWSU)Buqb86KSsYoP8u~rj>LXNO0F1_ zeC_RkUn%Lx%ecJrOD{ECk0f>*xQ^BvdcMtlktsB7hM+I07~rnpUayg0A1}H`h1~UF zHhVTiEeCmnWEq2XK$N;n;^8te&S+gDB=wI3l8>;xc~~j?_q3XmK;~q=MwldZM89yXwga zW^_>gketdecw??ybhs0PfxF{|-VZ2BwCz!T!b3Wx8?ichBD*hS&#fq0{|LH=ERxV+ zcLEIDU)&KW9N=2wX|$t;SK5c=nE_n1rWIEOr-hYCs9#V(3;7!HH3=F&cLfl@5lmXi zBnqSIREGwD64hua&W1eiqP${23#n;9DC{q|EFLKLscPo6{B~e#GBe|7xe65B8oTa0 zCLsPBFaZNFz8MfBJ0h)0?$rF`9#nt5(bh*GCBadfa?)h7K%nFIAiBX#QqM1#itv7;hmN~~c>WMQ|`DkW&k5CU@dfwF$ zihdX`7@ck6rgx=eVqmz%|3J z+lq=-{)aTyj`0pIV!N`dnP>jWKOfE))PW~QZQTdFhH4Txie~shfE95rEImMMZl=e*=6)5PLrm zxYhi6iqrk}tMIc@gF-#==mID%F`qNyu&N^v4-%v+63$nX>}xHYwENci*mRg>#gZNF zElYC!0l@>UP^hikCOf;GZvCkh&Vob*hU?2$8UML5u{WRWr9h)~zKtKB&id#7NA%`N zz}C9mt`m{F>v?(02tSP)j@QXFfDSq;1j0iPTCR-)f?RH>^BUc86F$(TRz>D=e_Qos z>a~Lko-#noePg%|%h8idb&rTmw1IAhbIC#&Vm93H8}EQ($kuC`J1E7wm-@2V;K-!V z!K+xY5j>ouQJ5oX_V@PJW-EMR?O&l;75JHL4CMacoF-J=^+17)!v}vIMi^5X`uB## zor`7&WH|SHEJjAncXKLkPy(fpY@RxlwHKT59=2vdELn@np=HWg0DY#NE~leM|mpX{r&;nV!+vOLDqHY>6M-R zaqizn0xr&WTS|^d*HLxH98|@uCl#&Qt)s#wrl#oYf=|1PAfQ^n1bhot|AtdcTJ`FV z+nvdDD#-ka5Sg4=n8pW#FNg48JP_z@V2?pUoi)G+zI_+fVM$G-fB)rleWEk;n_ic3 zKwq1c3ihLbaAd2?weIHj6b`w0QxSG%DST?WudUMwcsztD*FpP%7#E-V`IFsxc7H*RI0j6iH>Q>aTr<<7y0iF2kAs`}h;f)#NnG31J=>&RK z+!nyrv`n#HlNlP_kz>ea`x!G!xIGF6cP`OQxENK1ZO&R%M|>GH#E=8c?h5+&&s#8dH(zHe&n&ob32 z?n*E7%sJ}VPQNh67Q{1-$1!Vlr+8b{kT1jR*Jx32mdUHMV~(L89dL*;=J#(_0raws z4D7It{}i2nv>7fH?vx$eu5^Mz30fPa*nJ&R0Bp>*WhB;h3!LJMNkf$UHxo0QJ!A3Y zFS+5J39*hH;$N1-rTftV4c<`^5Mu9k%~_Zv9p{#6?uV1i{)rT?<|1w8GpR`!&G@kg7%ngtBiWVQgJRI2cW>eJF=;^OnZ+rfzkyQTr)ai*e)~ z_c6e2O|T%vJ1g&Nk^X~j#{WphmL!h z)H`5ywq!Y3;uG6_3aM$QMw(p;;HgJ8-{~FKlXg z)6B5}G;WFG6@JW|-Eazk+Kc^?-KioOlkXGS^}LBC1;zO>^`zeC)&5fMIHJG<=Q0l? znLM$`*Z{`%ON$<=zXjD^AS={aDBCv^6Cnt5TZxh2d`*c@G}_gmC;vDaoTqaHxwilH1lT zXZd_T|KO5Bnr4GZrk_yLbpPM5ws7!KG-FXoPkn}ZAV;?DB;Sn}2+G$s zXq>5#v-$;*^H6$y^KzG|9$~;CG<_uOb56gBVr1PuPx9@1zfZOVBopm zah`{vkKtLiUsHs{fmy`dpqejgpl&nmWlXwzIOMjMiqtryj?7lg5M^CoeOI1tT?*V1 z*-7_$8Z(-!yQPOcSKaF_2_%)pRqiPMQKyMw^r6PbM8mxKAO$x~I@>$%JNP{BN=W)L zgZ`jfu$sxv*PTF4VZ9q)4g8Rv@rvJDl_7v_&arJy(y#l}0sV5Ck5Z!I;J1IB((}jG z6jwrmgCG^*#B&iNkh+$dc+>N1PW}O?ZrMzuGX{(=y{H+AMt5G1h2IAdnDj&a5Z$}4 zEUP^X?AQeGaD)r-x2*_}n!~m>2U`f#tHiOUT5pUjZ`30(935BA-1z2;gnK_x#QgmC zvCiuZz^7d*EH#~>yP^V=_$|p^(gC2droxijZ!?YBy~Bt1yupA&4kJXKYM#?+fz+pp z$#r3)Mcl(jI`f@)o10oXD!s5{ROZq3`V^|qBVU4HN$XtKqN5LJ+PhFN$RxEv=@|e)jEhlPUzwY03cZ%GV#aP9(D+J7LB3pWr$;FE%G7NeY7 znM-`v|H-4dpHzE%(`AzXIC}IGF-IkXmY(qgdbd@&V-&lac{5Pg>bhg;-Bl3zvR=K= zwuQ&byp~(zA{Tw|Yq|bpM%+94(?O&^T(eN%6c9J5@i(=5Nk{5Du&0E$&g{Z9uBUr)SnhO{ z3(6T(ru4YafMB<(^}z;g$3ZzB^k=kC*I{XB^Z!$%&|JjshWHtY5ejDra==7_PxCsk zD?3<-sAe{|v2Gx7K}B44{R)r!AiesSS-`;;J?8?vFYV5Q)p;r<(YO;w2#wAT6SrvF zi%@V}@rc~qH^;2yIcF5lZ;5&Q*gw3B!X(N#SmHkPmrSEy{ukGKg6Ao`H zmp0iItI~b%z)P$7sSz~QgS1;BulM}QrN~`S+!88Rt5ugICH=>r>7#%Y%t%fpKx3yZ zsAWe|%<8lZhJXTydP0UDWSmw-(<2d^o+%q9EJ;qXLY$~2RQ%#&OFp1;3GlW8uAIj- zA40H^Yg3ES$U-~QIU&D@n2NCEU{cwFeCR9VIStpKk>RK>Z`Oi`>Dy>+tL z`!J2%J*|9i{5uk-Y8pKM@d{d)lv$o`G&;`T8`P%QJhN_yU+n$`MV&wpFk#a)OnIHJ z`f4$@^i+B~H);E|&A4t_Qe=0Sfz@AnpKIt?CJ7!42Mz(jrp6^6xi2b6S=Q}>?CmA} zsUv{slsNI_TNp&xHnviW#*tTU&rZTjW!=hFwnT>2fD6W*^Hw^N=cUo?TTHWRqj!F?OyTCs{~M;4oTav zQ1^7NcO>;zG$=!+F*RB9dBtN?yqWLfqso*akaaxb{Y8FM`^1IGnrV&T>Hri%_)12e zA9#2!RH{85dOkd7d`sLr4>%iQInqe|(Yl(J`~usN%O%Fy;w=PFaaYBzp3mmM z>t1%K?yZnrC6lldAQ5(w3|d2RhY8$~Adr!I#7vBIE$<^zP!hUKZpEi45?XE&iBUXv zDdPy6n)iyi{Bj7Glqy-Yf)KScq0o3b6QC`@aQI>LP0$vBLelWe02wWOlsqvMpOgPS z>7+;x^45F~?urXQsna4fXT>tlzA+1>R z^x^q%lHZRsX%S;Y3va!h^|$+}Ft0M8D(DVcDEKG3%-%hBwO}Av6cRMcXU{!(A1X{i z^UM(sLdm)Lq6PM86Gh)7Xo?UcLsBvJNeQ^2ct-;=TgHH*7&Zf(KA>NU`54#l4+Qb* zBWbA8tKKE~T-GH<8~dI7nb&xqh6=Eqk{YOzNPoX@VJxJY=jvz+YpD}i$@Qko=+(Lt z5k*xAHq)gFYL6a~FdrQa-+FZ%?`QYX1ORiCNalfOsuo>nPO4a+Fb;xe(qM^d9`v7Cs(23U1e zXgDf=^bm}I`u|hLh|qBV9P8glaaE2+FdhA}8(5NJ(Gr7i-h^9MecJn!^g5t~$bqVs z<(6fD&<2p3MB!%MqqP$8K#^dQ%&o>v@--xQmLqZJ`D}()pSBEfldl?_U!{A5&7U_- z0LmJB*fNgK-);e25~+bK65VTsbFPB(NtdM4+ni+S!(SgGyI0?Cwn~0a_5YgyRg^zU z0To?kg$&?+%aKth@O6h#C=?#k%x25=#3Pg6C}88Ef=62NXtGWSyB&}CeEX~Ncd4X0 z+P)K5*9O}i8y*9Oa*q_Q3zQWC0ld#@r$aWc$dhO=G!d_j2caQy?b~=qHo@Kfw=E4| zY{u(X8{uzRT(@(UZ1{jsxst}SPP_57zrxAF0RkB)?oc97sBe&WQ!sai`6QmQcVv7S za#(Q1;4kh(*mszwv7|`o9?fS`EVRoluw zQK@0HEIkwyFHeLoE~N38=H?^iG|J3~)zHqNMu7kLo7N$p|fR zf=+YLD!%7QFN$oFc(k^#m>uVlrMHY!H(}{q5CV-jXsM!}YSciC$aJtWvwnL@yYfv- ze1X7{eiS|1nr!yriMgXv%+ngih1!2jpO#KL5oA87meE(={biKk+>n;G0F;s&+oszDeoLsyloo1nRkoNwH3lEuT zZK!V(Cb&qY0&EQ~fTT0AkwwryyQL-nqr@mw@p;8|S(4~gWY#c#K%W#MMsq3k`%6l0~s+y@6T`UZy6>3#qG0 zNFQx(ron@xRAUM6%$AHc=F_lrp91~V$}Gp9a2n&k^{M)>)&8sqvmtl#%o8T_(td3Y zsRtavk7HMG^fsoTEd7;%k5LIU>aKY$F%+=Iq!)nXd&q3X)EVj%#zWRnEe^nviYZ)_Yu_jKbdT-@pss~ zVv_D_xs-_E@FBNd+zEE^20B`g$lN=S8FNCN(CPO_<_-I~Z^HV{II1N-7l6_WfAMNI2jpc;mc~Df_3q#&{7yA?_ zNI&FvkB7_hts>Iayb)^1ty9`eMxP;9{F4OSh?DSDI$^OP1UaVsY;o7(p=v35%UoLO z^BEf0%>br`gG2#z9(Wv06~MF&A6@HrW=rF~EjfdMb#zd@y!|>7 zLGj5YO9QKg(Wv5uW|6=F-hhd`(B{?(<>_syPC{d{7E**~!C+fE#Hi&}iuNM<#4(01 zhen7VO*6+^X4Pbr*$Xtki5gHIl!=mnaY5f+03f^cXlKJWM9vNJN?jMv4K*PUjT846 z;2|vrU+E+Tuotn9?3y1!qTyufBIP1NgUQdAmI5dP^IW;BcgZKB$lhsHV)@$&yX@du zD}H`v27EjUc5bSEqze{YPvd^QD#c@c-znD*Vd#XIsNCnzoOpw`%W7}$r!3@=TM zH+eRIH+Cs4_pcX&<5RfHGup%JvogiCl>x(vH(^B&T-O_Q7#`Iq2#+5yd* zuS{{u{O55KeuVV67h63@01Dcn?>+rf{xJHW9eu=+ERkNoFMOvTl z1gDd!TiYFEz}4`c3f(OIyliFUb*O=|B9SGykmQ0dWzWJZYXJ};y5ZziP&3%)WxRT8@Q>Dnc*udZ^2|DnYced8yBH}w8)e+@*hbh)OZCcz?Sa|YcU06cnktI*#}&%LxcDs zHp&cXzZq0z^=1$5Fb4cmbqzz$0y-vYPEs#AqCG>?erEj|-;J@C2^eUfReVFsGWP>r9Z;r5QJrrv%WsPa&R! zLJ?+dLG*b?Lg>n;c7_Nn6k)lh% zE8#Grn7e#b)lBi;N8JZma&|lw5(zzy)ybRRn5HTki?g|)+1sfRL6eQ#MgJ%uo6qZ1 zu<6a+8gPe2p>J_5^y?D=MkQ7%4d#{h=FY(V$7qysgM{ZXj|pG?xGHvi|CwK(1EH|m zYf$c(ca}wV(Fc;}AFmc!npHyLC;Zz=Cz-+}M|$F+#FNL0q3mK)T>eZn7Bq420xgV( zvBv)qPk^P+g?B@zs17vj>FS7v%U4n@+YUs$JGM875?qVbj6C-3_mQ&KBNTDDwSLbg zU%ak8TRQs76m_~)BO?-QVdUQARV(YR=fo!;@X42#G5p7mML=!3UubzwKGuu>gZIRL z1mzaNLMh~-usL4BbTSqo zdVWxT#TCkj@uwrVxIpR+bnYH&tO`C&1kRIZg)*&9ji@zKJ8i2i+HuIzt8tz`r;1x; zsF~_=#Zbix^wqo;7cI*j1t+&*+;v76BzE@1iTF2CC2T&qt9ZAfPvh;H_Qg(hAsdW~7nu(xwW2Lypq_tR+ z9L#s=`O#AY)cR}igzeN~_Di#E4$^Ytm2T1LW_wF2Jj6PDD%chPtJZ=bSoSelo>r51i6^M5fraUk4~)&)>f2xo>sfnMzn7y)dv<|T(Tk%zS+wI? zLEx9aUZFj49H8D@KxO~PysC>Li z-{1!>II8cVHWy`vtUKJoj`vwSVq6>MCe30%wyEZXtQE}B#+zCf=nfZ|dWlK%VBuE_v^^{p|4D+nHvl=QoYca!Cw3`Y($Cv^5Mj6JQ$9ZNv!Kn^ z2CL7$LbtNHPq6R5u}j5F=MlV}@>J7ijOZ+VBt@``6TT&}+f`XQA-s1qPG3S{{?Tx5 z2iIZwOAcWj?$&|opRpKyTD9mMJwItt`))J;sZuT%6O1pF%b4&L8&U?zEW3|M{USLm z7G108z&{vas|m5VO5}KSL_D`|cV-)Us}!>r&${h>jd}C-J;(-uW^zC*5}J^#yynYM zJ18N$8K@1*1hTt00A9H!&|6LnDsAJ{EH#ggs;gtb{jc*xa#Y}$13`*pgHQzxU` z2SM42R{F$eFv{X8#5BIGk^9Bg4|ftOhf%+8GEjf!W0y7cKH1QqG^mbM=q6?TEkb0sVsQ@Fv;7#VQWGq1>mni!a5dJKvv3oi=5(?oxq`I_ zP`xGBF7(J?Yvzv!EXc>h?Up0Ul(9;{^qU+@TDLl|(loL>`ZG-G3mCgsd*XoJE?VEm zO-<1ETRo~q>k_-;Vb1x(c%z)20wl`GUdK9119&vP>TvA zQ#GQuNxlicbm&$(4Wi^I$xi)UNPA`b(3pz2fn&iIY2%>JISxUH&);0uNK`d7mC4zy z9$>5W4jA?!&yb~P7?xq3Hmcg#ZsKAgJ%Z)no~(2i+nKnFdct8Yd`Bb*mQgRBon}Z< zyM(MkK@sbO@K<~oh7MJb-t~GJZQ54VKOo?=iUo-Dr?WHYB32}!DYi}}us7PgIgpuJ z&p^jB{P+)RHuG7R^}DcmKTcpJF0yTNL-ia-k)BN=)AclzA##t=;;>xHuv8cKoY3E+ zF5;bFD4B`8R9Mqx5&R4!Oi5^wGxtnL+N7O=C%qI)X-=gLOh;G68TtsW8ALlWxhr5y zP(6cj#Kr_A1Z9odv*R$)G8)*Q75;d~J7#|?L)S+Vp{b|;Wj7v0iuxD`(V}Slm9#%w z%0&5hSGLw_(_iu{Gs`>NLYn;3RCmYA72h=`Uw52Fn*-;A#!~ldP?yv{USUcu?ZuKd za*F%68%vK+%-en04xzSD(^|vW60AD)(Qx<`;e%CN1?yF00>`|CBF_ReHmLi9n+6HW zmDw7<(al6%=fip7IJ%LoY6Y0)&tBj!(56kBQrrb!>NG!9nX(Gbc%Fr?5aNoKIS&k) zuVqans|p8QR>0e%AQV5eqc$ZyQ8TtmE5{^8vh_U&^J_Kcy5WhCY}`+kfVb!2a8aY5 zJ1V5ylbw4f(6uFD78T)U^l5*R^MKLBjX*5VIG;xxQc!Du^q%`@8;R7$8?p}L?dRIS z5$q`@>+eDm8S@v3+w8v-HmiL&Y*zv;Nek7x*G@XyJ2JCnCD?$t_3B95m94$!8IGRh zZLb=w)oCwqwi`ku7xVc^$F=LHvtybPt$p7Zyi9Bk#XsTFbSlZ-HqG$YrRBCd;zj*P zZZly6Q5mEC(15iCceZ=Ntc#V=)=6u)-ST+IGqv~4aYctm;;~cdg+0VocVCWjjAHsy z>n{6*!fCAmNVuCsLLc&Dl58FEl$qz_|8dRS5o|7|TZ=Qg;n_DZ8`x-NOD4)=J@hWn z;g*tMbaoh$icMPd2SSULe|#mmCn{8a3%;fexT2sv2g(Y1XK=6QVHrP$D5}~vKztpM zhH}i@Xma4b{Ii)4jeE+Ff#Jf?G;2|e22D!J*Ko*vLS~=XBh4xTvGG{9xJX$`-&DH5 zLG5$E&JLy^ZQDH?`U2`+)zJ+q34j|QMr^L=Tb=Wo^LwDYcYF=xA3Al6VP7x)KE!?L zM6*XwcG#v0!t~Nhb-6RI`W~0>ZHgDvptPz%ogN+%nm?}$0 zZeD>!0r>bj3Xqzv6jJ4GdtE^nGaJye%7fG${^IKtK=H4X`6y6vDylMn%9$IO9-Cg^~5!{QaR#<-jq3}@?`dhak&GNkhn_C-=zi!sEC{Kj?w29V^Pd5%r z;3emTs|S#bY~~upv6vcnB)UWqE4k!3*rl#LK$Ne5ab7-vet73mSSDlLCEPicGkTVI zsOw>f^=&`-V?*K?u;?bDPtP8I1%gsCRzOY%rj4ebTnLJ=i|N`L>8N9y*FQd(IY9Ak zhB=);CAHHYpWiRqmKBp=4KKUllueh^;46W1+UM4c>2R*Pv3Wt_eC^P=&+!VMa*{ z=XH1Fi=P$Pl?)1LxGs#v7cQlZnuu&4r`zr=V3FuQ{-qAw=?gp$zjGejQ2?@=_F?B= zVq1B`D6LgKcu)^sN`JS@<>5s6jLp8cW?UCG-nA01Sl8B~tzo0#TpnqcfbnP{ff%Kt3++2)!D2;eM*Jn7)UF*g%p3lP+bmN zM7ABcU9cJ0?Hn(Mn2&4Xkz23@fBv9*;2_q;kNfW83MEl&w7zj`+Jc4E4N+7S;GYdn zDA4vmOV>-99aahJQ`0L zm(L&hkmo7ohdNxm_A5S8VlCosRl6y=RrgLDsRhTM!wJN=; z?g>hc0-@K9n9=8x7*A`0&nqW0;T>wYxvyo5tjSMl3NZ@-uExaj-(pjnhABpf=5mmN z?@`z|tqbe)y(}ZWyAj!hJ{-Qinu|MF@8%i4&vO~Tq{YEoI_t9&;=>^YN{ujKFdSKn zp>xQR2%K3ccej-0s&P#=H?QW2WI*6ULGKEXaz_*RVj`o|c%QfV&3f2>o;@Jex;eT9 zVd9>Pw?-Lxgt3e|U%&>@eJ&tEzY5q;T(}LAZ;&T$lNAoHdAk%y!(I!v6g1RSJw4rk zJbYUHIU`QGbK6ZO(XvA8({De;PrqjyU&JRDl_o6aZ`&`)k=M~LuT*2 zZ^^=Znk!i0m+S|({V1&A8ek-532&BIEq2!jASVCT`d@P1t{$!385P}GN1vQ!<;*O^*bd&eW1=lzDi+vi46uWWtv`*xtX&E4P_ zC`~t4fOwFRfW%Z-d>mKy%{YQ6lYtuR+a!i}>rkQny@@yP4VY0+TyeIw?y?AcLOK`- z@>q(&e?OcRGyf|yz&#A^)3~NNO=dqA$M2qU8hfw^K()i?%(o#Rk|5`mdJ$FMl{?u z{R8@0GYO5|3yZH_%E6bnJp?910))o2fh}wot3rO(s$p`HGyL*qp~Aohz5e;f)KcMg zJRsK_iw{Gr!k)kA%KL~KjzP<7jonZMG=VpL7cD#fjcVz9V>e8&IiUIpgce)8#JR^K zJE%^Z8E_fS2rvM1?OAm z&1aDqhdaq2hY-*%ou=t=xs9D+Xrzhb?&@x9+BNny{T&6$#(D4g%a$S^<5<7@Go?57 zsz^s2y;11yyXyDK$#F*=^upsfe$u?p6>~nk$>Es=SNiTd`p0u(=GRAAyLoyKAk4IqDu@YY!mo8EgR?gPBkFk z;mGYL^yRobp`q8jZ&%QwI#gUPKC{>G+e3j@eO8|C=6*9~+727MT73H7VIvNZW7_UK z3}2~nj})1eR6A_I--_r&W0Z6+cz+qnU^^u`sPdv%VfPvWMd}?!b;;;k=6H^lSkCWf zcf1h9u+wQ`Q~bDf$l156fj(H`vi4#NkbJk5@Yl8^g_2G$Uaqy3Ia#ir{;(ttewb>5 z+}srE=-Nc1r3e0Z1%BhWqq{cv_b|ng@y&*K5)D2uU5~5 zOfe|-VikL*B`T_&^|d;%7^eoXxUPzBm+bH*gvF`By&~;N2R;5bX5_Hk0S39xJm$hr z{B3uI0v(9|SkA-Uz^2z2o9m5o;V7tg!#WxC?hpM!u59fV3VN-Pg)v|*%C~UaLf+_S zbL+UlRTOoDJx$GfkR$KAf~pK0b0T|G7H3wI;+$JD_-8Jpi8BPkoh=U8?t}&mt~a2g z5`8>D*u?;3pJt_Grcj$j8|`(ma>C}OXi9K2`HYckfEPSj3Q4YRB#CMQ-QBV)S!k^= z{=j|VYg;4S`I!EjmO;1Wgs?bPM#hOdV)owXSA}G>;O<{UZDlsp>Kj+p&&-KZ`;&es zhajWM4z;8;74%0NodY-M&a{CbmD@S)W3{ttFEGZ3RaRX7OnE{Sk|Xi2TGFViNONeQ z@*3~eHvpeS?dKae>`eE zbLG!Y*%k*TiOvd($q(2%F|p(SBNRTG=v*<{Lh^<=(lJ#~10Ae#8m&elO%)F5=4vV#V!ykfmx|nWQ7&nr zPUKvkLqf+2sDIaneo>Ay>j8k15cUS(olQ8WLu)O-?sRy;2S^Xg4x60X$RGR<4D%D& zen-rD7y$S@VWv^L1az~7o!A24Fg)jPkt`wJKW6)~VKsAMP(T_?s=V7#flq39pTm}h z<+9^mm3?h1a5wHF8XOB^$HA5N1XKFi{qb~rO8WZV^+@?ph)qVBwwBuq?IHM_(n`wH zuBzuqAB+bcHPJMrwKj>C_sO0QC<2=PgqnvV?eAHt3v~KbOSW_-sPx%20?F%T`!_fr zm`(#OkYjH5;@@>pCk*YCy17{jtc}6EPV!^&t31$Rf^|6;44Vk1<^#y2fGVc*_Ixe! zfkWd6Q6XrEt!mDGZw+hq5s5$pcJg@i;yyf0F-`C{D7o%gnf_GnjS)d|1jSKpw(We< zGgKO=cH641Y}_*c*7j~j!RY5Bk11xpkUq%;uy zf9K&0Q$vn^E{svXm&sexn1yt}0lfAvBNws09sM!Ld_!9{e{QFdP%j8$7GQn(E77|M z5F_ zzMMoJ3<+`OI3ErRWuP++94ieDJ4`YdlE<6;2JYm{WTp4BBnXZinShM-o3*>oY~+3xp)k$-H_c!_S4@Ps zV>2l^>!PNk<_sq!-J_&TIs->Bx5iR8yQ{KAYt?t3kty!$K$*>%81L$CDaayf&CLm; zQcKT<_A0}Aq3)tY#+d)?y$~3dzvH(8+U-R2VmRe$3RpxUoB2|_PsG1IWB3M%#bf+e z+IwR*$z7#ja>p-)0a-V-?sPOJY^K?WId`3B{c>KBuS{6-6uuU} z@_m!TcBb_RbvU1LsdUsgnh(dj$K<gfJ7_`gVq3L^)o*4GCxS85ckALNZ-^CT@qx0j^sRmF$pxs4P}Y zbpb*6p^Kpej>u0#a5G<7Kk0%>@ zzWdZ!%!M#b!QI2N6OZd`lsPnhW2Eh?^u0%wmi314Ua}OMn;d!zJVMDE-c@!ES7DS6Ol_r>zw{6e+ zq6(rv!4q-}Wmt-s++ZAd?G)))@6}NUrSX-uALXbVP{5n)nj_u5870{gEWArkLcmFg zS|M|d&`G$5rmz~d)Mv2$)!h}7N1`14K^s;}z`HC5a1`@WxgoGR9;McSYFxYp%zlt^_*?Dre<0r;r}4WXe3iM$jF=3$87vvHZwQ5OCsV|Ac)W-751c?PS=&%M&OTc`DL~B?mSx2*$ zCJ(Qg`|$hFrQr;Pb2QcKC>O;`C|<%tv)TKzWJqT@n4IZ9P^E@w{P5AJWV|Eu{$@Px z+SBWL|E^ah0GP}-L-9yaJ9ifZvnd2bXC5;}R-V{nr_u3G747C-lY3ZkZHg%_XH1$8 zsv8hxjf`weu?`Spn2W-gyUS|fYfJvXNOJ#{GSbR#XWk&VjeDCHyOuC(-yDTQHk4b4 zK>vz}mMoZ9+Jmd(KM4m{1ebZV7QS+D^J1j`Meas?BkY5 zGs9EeN!PY{rJcz5$l7Y5oi^OqFgH6(y~g^WSP-^>WBPKn?yw>qJYnW;<@PvZDmD;> z39PFrOHzal7j?&hp&EH0bA**l%`iab4Yrp*NOU`0BV}=tB!-mEV-}pcfcV_s|6|(d zV@|y#*Nl)0DvSD2$4QquZ~uPkC-l65B|}cUXfV{6xJ=)PCikyiQaEABG#*5G)^^5w z56hp%wqSZXnnNOtbt?PU;tn&ETRv?(>FpjVG28qQiT9s#Zjb2ZG)SC6oj6uB#`Ptd zydYQi=v4`XqJ@Ix?Y*YAf!w->A{URBRImo-@~$qAG=(Wb>bmYpE}Mnu%j0UJOFU3~ zP}!^ansv|!zMB!CO%M=%XZMt97)p?CBe`LEs@>Nu-NMqjsxK8fPH2=1tSRxIr3iW1 za;v4YgJ9T^sdu!M5-7Q+@&V$P=a6W^kg9zA3ReEzWmRmN&|L&;xx#Dtr2pJAp^pv) zdcYe12Ag_pD##tz|M)yzjAL|Q#xMwlBWL6l84$gXZCGM<9gC_yhF?Ow-<@(-Ngyol zfZ*XHU&(Z%!A6IYY&c~Dm}_w1nwrxH2qPiXDX)8q>U&mmbrsgU``8<$q*OB}9bR*D zVn1$#bI=z$)HCFXMH2T?aCTy~q4aeDD5t6@BBDHK`)-8zGSHxRURn$d{RRQ+BMw9d9nzX$*czcJ5+oD_$w}4 zS8E+YIJ}vpH-`_`axwy75=`dAI_m?6(N4C^)9@78K;SbFyB!`|Y-d$-OK*cc%;_2tW$vT=$mxN1gY~=&EreSJuY} zo4&l4jKcyy<6R|G$lW?6?C@V)d_JL$luSfm=xmk^S10H&F|~Oqoxx>$ev^O~40qR> zV?~3Qwo0p?5sYQ2Pd_5$v){5yZEa{ENvV%1inS@Mc z#B$P(BW?MmPUw(POo4ka!|8Hif=Oz1MJ|)FRA}z04Bg)-u*l9(*Gs%CydHx|OA1D~ z#aStR%1dkL)0#0FSg;C7l|E~{u&B2IvG6sH=2K_hlb~_yFmt`r`rNa^Fd=~cU}12F zPH-j@y0K)BS;cpzx1x~cy;?hZw!j{{8>^}%YJCy*l}`1wsZ#$E?kdaydorgxfXS8- zNqZG!nZM|*8q~t_S0Ek;F087uyoF0m8lRJyAV%j?00g&TAru^SA9h|{XqV^ zir60Tl~dUr`Uh2qhZ1x5JqD3U%Q@Q9OudEuD}LZo;OByrGj^=fjHOvU2R|qHX>zAC z(nS_=tKw4JXzTv=HD&dPVA1}9+D6=kx|xsjUrCg^nsL`*kI+s!K9@vENGW6HQ`;>6 zM*xbOB}4643Es^oo5V_9%G_%DdKCDEX4llJ&Z!8Q9XAyiJa8RsM(~hm+8U4ja7bG~Ct6Y}d1|{@^S}XOjO_2f zMDlVG$3D}@_DFHyMp{h1`DA_eT>A4DLvB_t(-m9XWMtaU$s93WQ$=;y+T*V~Y^36Y zq%+F65uVO%SVo>>k<;FEX((^*3M zm?BrX>U-!{N!ut=do91pUu%;!ijkECYN;j1te+jum6;Y2VC*etiWeE&dyF-|b-)%M z`#IIoihn?q^Nsnw>-HwBgt}ipREMj+<0h?`+(w|JQmLDA_URcti>qr4aK^WhZ-5!+TX>;ofy3Sn4`eLWt=cvSJO$T!dF; zJ4yW`6ExufgYBcRS&jpKcw_-gRLu;L?s^j?h^TJDB>78L>v{%B|{K-@?DEMr?qrjBSBE>mz(s>#q$Y9YdwWH@;bmgO- zPfg{d_$O4_lO7?G2fN7~o1^9MhdY=f^xx1zGE18m(1~THRw5~s)TT2~;*m^(bkzi~ zo?*$AT`lbKtHH$ssZwlL{>9`y$ZXfH zTEJ=^ZV_1&PqPNd2mJc4ghoVeV07*OBD)2+lKuF$@=rVki$IoR{{2QR94GGxed>1w zVSMP~?b#=G8wU!~g(*d+5KcQzw+3Jswq5dkB*8vIPuaTPoe{PP6{o# zzq2!Yb+bxzGEMdC?B#CK8hnIFeOlJoS9}MZ{{+qcLmz(-y%{$exj$P890$gzSAs44L+17sYn|0vbyPuT0oA8S zqv9J25Y<;>pDmrpvvsCGQz(6*g$NGucMscPzV$g=XbyDdDdDLMAeP6i*ik;im3Ujm zVS_^ZLU5Lv=j;7^4pt~%Z8|!-5h-C^X&I6Z=U|BVE58VoOTdnr|BVMF>FvLdeTAB} zbmY_|1?b~V&Tvh1>9BJ=Q^Bdwh?f6JL=~bu=^+k9h9{wLV)8F|?-f_#`6AYRt!tP4 zcC8#xW!W|L`b!b|_VNN-^!F#cGKo~501e9Q9$Q?b=4~+bA-*;pVWLtJ=h9R#%uk3U zLIreUkNCmSN}k0=`a?iqqZ&=h^cC_b#9QDuiQ6K~l2BrRi-fuy`@UCxm~xmJUT0K$ zPJE#ro(ykxp(y#!UgK13^blvyPiCkT?Gf?5ByUqXhM9ll$+wbsBl;p80;Bb6{xuE` z$RMWrYzzwF*#{61T9^FsxmzFfxKO|Vc-}bH)Rm^ASZw(GGHZI*cgI$R_e%Udpre=; z<$yxhuttPhZ-Gsrn(0LA;e8LZqjV%*+Uy9HS^a@#8ovI7!g}j%-al7gw3q;;P9O@( zN){Sc#ZXC-LhygYuhyOS%p(JW9|D@q@MJ_Tf#VV=@YWaoo3GSG0K<`v#mG}2+UUTy z6Yh!BG*s$^$c~x(LPs|nQP25ts%13YIZuRyWT7=I_sN5umOcXH9}KFuS5XZN;OK$V z+q}jTX(GJkroA_i)9+v$;Zg200WE!q9VM`Lh9a$!6i65m$Hs;HcY^0|e~!j^8|P`; z3h;}{7=<}sT!rq_9dK$)NlAt1BY&!X2$+(T#~Z?k13C3tc!s^cyMw{NayIh(A!2Mf15HZmD9l_A}r8T_c#2lU@A1WeF zXWmI&+QoSp=*%d|Xv8W12Bv{{Tv!&@_H@mk#dUdAT^@=@{eSY*$YZ!z#w9LdHUc_*qOm=d}~+}qU|tzZa zXZV%v-5Na-yY*vb4pI3C_o;o$@P7HsOd5fge7bCXzhfQH%Sn+=S&F>tDY@T|nYU(H z)Jq=TAfr{LNR4OQtrIBfCChkeS3W~icR0m4eD|Zx8^mey-Pw!pcwrI7=gsSC#-&6m zozxYwjPwV{Lx)7{E|G&)#2*y?iTmT~QzzTtZ;!szx~Xqe4W2(-3$i1WM$IJrBerq- zzCt**WmtvvhZjY3=MHOHP?UiaIV!CP#8ee9MtsR1uRQ50Yuf}W zMmHx^*`y^;7MmAw$5s4t5ivl(b^V$aXah+G(+s)%%>P2uZKgj9t1S$2oF%DOXl};k zJ21gLPNp$(6XY4G`c}`9QgOVcqxHQ{*0g#Oz-fY~1JQVH^rD6b-K-A|LI8z6xAQ2u zH{75)V}O|*o{O`a)|_=N;yK=LlMnJeG}g_cNxSJBYxnsGo^F!?_(_sO5eD^)^y`t? zI>4NUa~ZrYjuyiU%}9R(qONUMpiQ~ zZ5gKp@Sqcca+~%AKV2t4%cfKvlq$2MszKDq4Bb11CF8Cu$C*Xq-I7EU#iK1v$;3kS zs03SP=-S&;endW?T=N-N$$I+?4oeE`aG8LG9l{JHmB+NnW;$#wU!6Q=S8(Sf2CN!)P+y}lGwa7u&wRS z4Dilk;a}pLDIwzI0|oBW9RUkZepepFyc5+TyQShj*@$A%OVgw_>?a8{)xw`i(3~o? zY=2WuHT2AM@bE2=TUl^l&?P1Xl&l5(Ls<(QjMG>6*;?NO=Z3E5)h_)?`eVH0Xm^ZX zdW;k~EU2;ryT{2i_4NF7y;37UXBvRluDEdbAR5Nd0FiUM+@wJ$@=xMR&g&L6$FxPl zK~8om;NP$s=MCN6bMM^VV9hL&Me98>tTOHpF&mbLs`Z>VQrboEgQAWGBn!FSwNf3Z z_X|r(w8)WJe_){maSHGO9*rFayWaVSo(Pbw+mGLBk9`Xjq3!S{H|wHdb6u$~nVD}0 z)C?KvFp^;1bq^dm=DfZesR%vXXK|WgxYl$zCr$V>{0*J6&e}IzFQv{c(=sNQ#js!W zU8trAg&cjvkv|O&FfCH1GX+YGb`0gSfO~zYN=Q{bdM5>0bn`~2wl@+E%Prg`hrzB8wRC4!e0Ry&KCLa>wGB=4i7j>Osw4gLWX@fV~A$Z0Jo z4D{hYKBX563SjxYvw}PYXHdZTRx-b#PNPLd3~_YkMx$r^gnV}y>x3Bg2u8|ZM{?V8 z*TwwUtN>gazYV;{A5vN*G*a;CvZJf`l*l!cCsxm{I~Sk}*$bQPZ%pJPJ=5WutW=1S z!&H^uLt9o!xj3$#WoXzHPzVY2PCW@LnFt%`-JE-~@bk2iv3*)CPfI zlknQbuZK}*o*Tr$Zh<*-*PQ*{7PnF*&l|FLFp5h8FX80d1ORfuxl_a1{r40F+IaA; z3-k^VWa;{bFKkS>TPo_>z~doKR}=_ z6vLU1fPzH7NUSak$KRDcf+=pZ*D1G@sC1{w*Ag;V*N`OPjijFz{livmAkA!e*I%0x z04utT{Q2%H0@*e}2K=vO(lrtHD8k*S#ApkgVW*06%SPn++!OlMcUcLqDUbh<)hN=* z@KMty8VG`Ql8X$F$SUymlFQ^YOMa5IdC5AZIL-tEndC{29)~85cm!lMwCo2I-sYY3Kj8@i{(QDDy`n2CmrcqtGVg^$Y(pQ7buEz}Qf>&pE;-zGj7KqVK? zEWCV?todFoo`K0j5~Jb%5#30tYt>|;Y4aQm;8$M>Q!eh3m}86VeT;eo1D8Y$r^fXo zNHZW^PrVPU<93^+7fO52YfjAXbcRx)XtD_8lyV7m*9KOZjWE40xi zpAnHD5L4%WG9{e%LamABu+-Yh5Zwgu{RaAm9_-gf;lY3`ZjR_;=J0EON!kZ}Yx_ry zZqD^4PRQ9E28^5+b_5Z7rM3c`mRnuoKorkDQwGhIHB!tx5|UFWnM<1laTofy|R;G3lTVU3MGk(?gGZ)P43FR95i5mW&rdVxYxR!_C7t$xiIy`&= z*$hf$C5%eM(O=}?z-Vi-Xw}U^K)cVdn1`TSwJOGpVCOUv(Z;++D{5Ywe+;}jqg)gK6X4}~)8 z+^HzyV)4DOB){$RJrg?EZzL0BGoF*`22Aw{=p+SWoN5?}T11B!Y@bt|F7YRbDwL`f zeKVRP>lji={V2$Mls=RvHGvQ-Zd0ONgq= z-LE+O{i=b*Nd`O1E#q{YA2m=pq-SbqkO9A#!-CHab_~38$f!qmDogZjmWm?P8sAWo ze1n~-T7@7`Qn#fK#PVvuS&1`Rahr*aEMJm)8ll6)jdnmXm$fL-B+$82iZc&Xmv3m9 zXGXuBkVVFH+xwUC-?oCQ-UcAXk>oi+EfrwCT;?!AARDLtHPmlkR$!ku$qk0iL>qHG z4qjFJV6634Ss^5o?vba0aF%=-Yxffy9p)2_vyWlh$twY*O$4@e7B)ifnkx0 zqX`JBfCc69X{-^mFg`l!Y(5n?)gb^IR%7Iv;s(~L1y0KCGzGyY;!?P!<*!%3d2&#| zCM$rd<+kJ^co4*cinHfB^XAQk&SY_-A;Nm49Tq6Il zjM_!A!i(D2bjU@OQu_OL?M$lWxz1$^zG~db2fceOfv^d(qU5#67!q(5sF;ZvhE5yq z5qh*pCei@Zun(Du5_S+&KSqkW%SF#D{fF|vUrR#Q;LJO%pxVBx=z(Dq`i+9jh;}^R z)=IWj`ks^v?tIcCbc21fh-7LrCpM@U^G6pU2OJ@doa-Hg0IW8}!=85-A$_P>G=L{d0in3m{CSZP%9n>T%6 zfqs2=;|j)WNH1B7$O~9bZA(gOoB&&(Q`zk~vEVTb!hGI_;8XxYhw_R*o@@p+&RDL$nI( ztaX{s&;>*$EZz)V+U`3x1Jay~q_0qJnZ@KmiB!axlHVcgyUJEr$b=3g$W( zHz>yVsbBoc(I3f_Yr--8Wv-2HN^^mZj2;Dxju4?LWdv?Ev86Vtm0ZE2p>bu?w#{ z(FLM{T8-W9!80)FnQ5^vr58JwcMO;cm)qeR@>nsq0UJ?K`0Q>b;nFYI#)WuT?vGb$ z=B$OEk#I$!2IA=J3G-tn?HFyv)$+mG?!@{!v8qt>1_w1RPB>ukaigcRt6Jjblf44n!+5tEfh4pHaMlU~% zdr3SrKo;IKnR{(nMDa=>gT$NtgkR*aReF~dq*pWh~v{Z)*-}y@1@Fne=vgo5V#FEj<_<5(cmH5QnR} zq!Ht1RtP=2QEUnOFG=|`x>W2yqn>2TJ7Mi*RJyR%WKh`T3DtbRiq#xDeDK%=ceFra zv7eEgndzp(S5m(j1>aw;IK>GADay1zpEt0fN?nEdh+FnKV@ z6`NG(BnsUq>2Bb0o(S<;0ft2D?VNX?^Abnuh43N*AXY%T7*YS3#WbvH_k?{6RCtHRqSg_FiIhg9I4)l}_K`i#z}Nz$D22MVq0f#Z zylftK55wz^6+EULmVfb?ntqnG%)K6dih{BDiZSo#?Trrytf>!jwM2G%rMS{)^>6WM z+y0DDNR*YoEXrutU*)MBIBE>JN6|X1%!ZixUG>egMb#A6%#hbZ#A39m-#q$LAmqfk z`QElx3tr=r;NRG56Kn-arJ)}DtVY&)1Ar~B7jt({w{1TmJE#Od3KbDZJpNcPFZ{vl z<51hp35Yw3^^AEjR21W@Z};#_KfwrcIOiJ;xsd#O8}pv5{d zCi4RE4Auq^dm+toNuA=|>`pjQ>DJLW4v|mc#%x>-EILwtb*Q7lst=5vh1O?4{@ZkR zh5`~swOi-D#*8Cm=w$P@ePk0-?xu9~DH8flq(VFKg~6f)F9T`3@xu@S0=nEsohJqG zww#&yAL{Zx&yVLxi3rC3k`yH!&{=A)HccsU%|9-4tF!oIdtJT7Gdu4FH`tm+270fT zMf7bUa$5$?o)S>jYja^H6DAjR`8O_>noY)>p`m@C#L}MFfM<=2=*^$=Y|B7t&GoNZ zdMtlvGarb44rUt6UnY5`d)y|JUEu0gA?0r1Y{~`QA-UoKk80?M4)2Pd35;&{J>LL? zGC<(I7kfX(CJgE=t(+kMhPRPc@KgDR@GrcvrG`ETG>RZZue>i$2PV5LXkG|5D>y1l3@A2&b^p3FL^dh+a0b2f7saA83Om$e0scT`3gP zoY6PB>-Lt-f~QEKq7B!st(1n)I6a5cUX59n$8b_ zX`Jfrg4=VMi~~3@y&<@8;>kSdZ1s2P1|O*@@}Pu3p?|H=dv$4ts8K*kShotge;Rc5 z88s7bgX1tN4FB)Tcbr&96fR)>3C3+Lw@3x2Qd%|WqLRTTvnC9#)aRp_3Pc^dsrgz9 zAN_tOesVA@xSM0nbHmB)a&hJc#R2~?UJuist33pskVb3-04YAq_$ua&{Vq-fuLg|*yjk_uF#%8@kW0%JuU43O*}vB&p})G7HiTayK)`$0 z3~oq5>9aX(UYpMxSN2Oc0;KLX0w7oZ+kl3QT4C`-v&XEb{YAs*yMMbQ>mYrnDoI~5 ziJrhHM*)}Fx12ux)rh8>HlepYcf<-R4%LdB$SFp8h|?^X8?U0`ux2hf(eE&ve8A(7 zOR<$=jsLCv-CI*2Ku*+ddEnQk79d%pf_U=n^B&@bv)Z^!I-(Q(0Di{-PaHn*9n;fs z#0{a4{y?Pk{Va*j;Ecq2L-gqcSkC{eDFIvwO61hiGkJ!Y7v64<)@Dyw(oZ*s#)#(vuqMtUG{avVT&(Qo;=H)N$`=Af{e<_q6dxkc(^cxY(+!=xuSf_JN zF&F=cXm}4uJGt2KpYm=UMkq*Egki@uIGZ80CUfZV5C@8bOF3E~1Uf11t3;xL?7cX1 zowJm+Deq%E<<35msN2?w`BGRSxUP?_i{>K;FikbXzgJ_2)&t9g5CCy1A%$-v1`fP( zmP8?~iO3Y<$Ow_QfqP0z0#%v7@+a(*XATCk8JVb>SPVrjRdeQ)HR^hVWA${MI zdfx5z9O&8FiSFk`9vp|^rTsXCdRtuj$`!tPM=2>Mw zdnJMaVW`Wc21cQ`+-n(}mBKOTfa9n?hZ^(iHvT>Q33%YT>D_o^;HZYbh<3iRlzw#H z#pm9dSvZi=bpdWro_n{=eg$UxfLs^zgxi=9YweqQUFNU64|L`VH!l66pIzLvuOVL9 zxJvO*Qk6DS^q%zz6Ba(B2Dny?4EOZbl=K56M}9H7$8B+F$njy9Az&;#GL8wTdlh#p zd7=@KXk=*R`q!4w`i2RhJ?RTAys=L@_k>iT)!nKOJ-a| z_YKKIl@T2{sotP>{H2X4n_(gKwu$t`D~J2K{eImV%%jI78+rf>=387HkM-B#aNqxF z2HeNfl;rW3v1FiK)8)UB#bRqEP4|9A?lcQjV&J*(>5Ipm!PI?de?{H`emUr;N>vsX zD4)+XR1Uy-Td6DMIhxOCs0KUCiUQ5yt|3%XWTW-P;vY!_fBw2SNl3#gOE}x_EVCbx zeStNjWz>Kq%{d|TnYi+4Xj$yp@Hy3S#2((Nr@?z`N%a<|^+Aw)uM^ z;4eX|?7-3_U5`yyz5Xn6a612h6!Yv7{y8@ZPZeCN+K7#6Z)FU>Yd9GdcuhGa4<%o?^2njn*xFfI#5HYAxbjcJtH<@K9FEM0YJQdQXdybS};*Wyb^1#6zlQ6 ze=|8VCi1v@g{%FC?-hBB1=^u%{k>z?pR9jg6)fF3TLX*ZF14zB$_6h9l6Jz_3wHIo z5-T7u@OWW^dEpu_YAr(LyJfy374G-M^;x#*E(gpth*xS z|KD2gg$c&8j!q}bM>h0lh&+=b?lQ7zv;Y-~qq(~c9|?cvQz&Olr%7Di3b-gj zO$xw;lOUmEe%>J)gsA;V925v4SjMOqVs&Tnwwj+#4Psql>*TNW(QL>S**OqqY|);ue-TUZa-7=Lav8hU2v6${}Q>o8ebu3Z-THE@pNeUcQicv(D@5QOkl_J+Hpf(#ov! z?Z!rn?_%7D0PW{NSX8O=C>3JyGKh?7-dTQ0?r!Yb0zhiv?LWYK<#(hBXpgxbTWOw1 z*HIPLC4J1$u3aR2ZBIc^M%f4aWw+9OQR@Q5&9!#wiKH@HQ5bdkH;NFo<^jW~CBmtnYWD=iX?zxjy#i_4k=Ob&X*WSOQ^ z$-34AC}OoDS&s$*w}mwO>1g7mGKI7>WqILjJ;Y6>U3b7>|L*pFeAM=Xy?JGsEUVwC zHw!QC5$CM{OKlwHFvLkcR3+nu5=u$bp}wp`jUThfnLtt?QEnPcP^d_mvnXwc2Tl#8 z*K*G&tD1%31;?w*IA6XQa$Ir>k z*{>z<`=Z$Oi$Hzsx;EdfOR2H!D}~+>cDe)D!NQqO5g%VNt5H4H)Ce9#fIknK6TnA( zM_tt+Zv~xvfOz3%P@^v@Yj!QZl8kZxH^waTwU`O};T2(=Qg9hPQ+V@-jm*ovExM%F zE71vkjknLLQD|F*xEX=D*h676E4EI)(d#k3WOv%9@V{ZyGAT)(T#jq%03d{=+T8GA!7z+wy5n~RKFJy0t9LB?dVd z+M#2{-i$G>RbxeVnzdIA7F0K{Ju$LTxp+GriCKd_AK>;=HJ9cjFMK_rJiD^$(` zrJA3>VngOCp-7-b&0fC_7Yw1{pzA+VB&w>+Jv2AyvSbVS&Zth;!Bhl_I_K3Le9)Vf z|5kP5g9X_}CR6_Nrt1VPDGU5e<6MpfWB>bx6uHIHT@_H6P%7iM_JQ>J(k{pNdL&YZC4;@&mujDNf# zIe7w3n1X6%A@vh=RQBWfYrmKdKc&HAvIz=@SeJ(`j|g%DjGkN?+7FRek>e-&rF!1& z(T4z0hA&T!kQPMph(T^WqrWRaG|DX%=6@=^B0{FW*3$2>wan$zt>AV$`P_aS#V1K& zhVHAg(QWgBroW?22#Vu-RS<6Xd^LCxdPqu|4k`SIP;`aWpeHqa2DkssNRE?G64nYo z?DA~}-4k*dT{4Nw!a&NaAE`7yZFGAXBGYE!LGm@(Y`OsKf;0=)*}o$r9DYGsoTNWU zMbpQr+NYly^I}J<%+m-kQTF1s#Ng2CMsF$(t42{m6H(xzhKAJap12i2$d?N!LY0&T z+|;qdMC%N8t_c{O6>R0Q<;v`l2^+yfwU5XranyPXnq&AvY;9!YLTY454XjgeoxboBu&dR@G0w1>{Mo|?J&-(Bj z1K6L;exT+re>y(>vzFw9fHJL|NBeTV9!S#*i3zw8#j#IYcFpAvd=V+w@-TLNgOzh1 zFyYx~NV5ttmnOI6s}#8~Qq>O7iA3QksCEBfWgJVgBkWKZh`_1c`#eNWqvRaUTp@lI zs};7CFI~!S8N_`>bQ#4oGog=NOCPjGA!)Tu#IJIygzW`@ZR_(w?wuoJfCYxlGT%DQ^!1Sobe0YN(=e z=rgX+g}5I;D&^3X%#w8CCY%lzqhaJ(SFIF_cb%@g@-H66L~W>$*CF#&_V?Z#jT zq6z7)trWA|WeOjW>=ziFNyJ-Z$x1`-PZmbVuz29Y!leC?JP48=ihYI^x!lA5oZV6* zig>l8y|rs{&9M}jPd?H*X?o7b{`DTR7{_4DmZ?$8@6N%D@~GJ2eF-)lhZq|6vL*{_ z)0$ZVujZ|EoeZ9?GQJZHKkpI%6pS~01ZLso#LX2hiGgnE@sBQ$^2HX_BoAhr8zl9f zx?Xn4ups0fzraPd6zEnPKXsOcnOb#(d4_)r{c6FQHC;gFBhYfCsN*XYZ;=e+%_aRJ zNaMMsY5t{c2SetxX~R%cRBLdwpI&;`F30Z?>8FkggNrI4O;Jj0_hp?$sB3c>S3o~H zq3UfvRQ}{0eaGkF1dl8xpybnDNCFH1#Y1!VXO*|R3EGBg+Ki#WC|G--N%h14(`FnJ z+cU1=Gd+b>X8GYT`@z^#H$mRh5KLEf%a4r(vil&yQ z|3{0>Rv0@{ZUld0Oi>k6#i18{WkV;@kRkfYENe^Zmc%!uSoKil=roKilPUW2 zZQ$?9Qp)K1Jkczfi1>XU+GL&bz&r(4`m5gqOg8gqP;q zZpxSRX;4ExR|Bav&916zuChlOB<0Kh?d$U^4-?^j1*4~oGl*Bt19RyF zF=P%dr@?gZl!rR$MZ&SPkUoVz%K$*X`xa)f`d(|D`XZyCa^3%$zmWP6jaj6E{ zt%PE)cC$cmrAj_1y-OG*7b|Tlhi@b+9g*cbGd~_+2I8LXc9%Aj_AjyCdVB`?AA9Zm%eN6$>nab>nC`)JK z;3Zy%r;5(SUxiJ3DJ zU5oax0vJ>^&f4!F--WQKVjqJLwGuYk&TGp}cOZ-J}At;FZ8&3FMI^*#KCecZPqFo9pZ2|IF zLkv-S;+?@Bzqv>fdDkvku1jG$9jUVh*Hbw6$FQwbL^6JFSUTR#vIb=`2XJ;y(vF#x zT6m|Tu*r*tB)CJwtdxZt@MLO;t8k8={?asa;Z0?QmK&dp+R(3~;`$%Ocvcimj3M|k z-s%z{NBs5%fXT(iE*cZ5YDWz0+>L>J@s5LKt*FafGJ=QSifR1X-2*#O+(d-eMo#nt z^q=SzKKeYJDVw>SedHA&M8Q#yeM_G^ssifd;Ad;7DMZxCL%vN5m!uLaLk6sA@o*3* zpJrt7U=W$o+7dR#F7OFp|O;aC>ENznp1yq$OvyAO{I#l6F&WOj&Q zyXrddy+@@*?rz5LUi9uRp1@MGM3!FZEpWgbTA&ovS~f`tf!Ga6ApTFWlgr`VNBi!= zyeo-k*KlS8eRZ=e?s9F>#e$jf4CYLzFSs4BQzc9w9#n}lY6wc^%Rf^Ztt(XbG36fS z8l`dCbz?@6V9L21blK+Gx>pQ!O*$W3FB_xZ;n~Y;*B|?J<>f}gR=eY|VU{WSC#HY7 zYU}xf@BQ54sqv=m#-{qwu_?vge0{(J6)>f%RL2h-T9@#b+onZgXgxfogJsMXq&MhP zL#0@c0!9}oZ*>u*fySe2SZ`;V0qL3{d=zOwoTj^d zui1RNEz-XsJLqJh5|fHf2k{ZPoC=yu$@x|a=)T9K6z^*DWDo}Njo0l2U(2wY4YO}= zl%grI@_h%Csr&?U_cMWM0vAC+i|Jnv5{s6REc4P4jRTtF9$k6sW=0HSoq4+f#-{{u~;V^2CQ)7=X_j;Dz z?aLHZHnZ@{W3?lX;`dsJse!Lb6+t3;Acn;&?*9np6dza-Biq_Z=%87B3CbMx?$Ruw zb*oGBEg!nTKJ*3d>;4g}1#ca439|Qryl@*M5@}u+d(GMjJi_(zBiPQED4(EbaD*@y z^YQ=QVeU1qpmr~heScVwL;O6QjJKe&{@P|ILA< zpO?-5idszb+85W)L3!l1rL5HllT1(UlDCJ+-|ne6ycuS zSv&&CB5Y{RXL1mfkPpfnNOUauEB2aoFHI%+J94j29aq2QVpHk_paUKng1Q4I^XdKz zMj$SL=foM3MyMS1+i8zg_6og*#~p3#UhLv1Jo7+9kvFHU=Vy%sA4oF+{Bajaq_CB`MWZuAigVWirkD8c z$FmnPDcB0*NejKxqlCxJ$vLp)&Eo;gUI5q~S+L2m0fnkM(RN*0HArV6f+RFb_do5_ z)y{&*wlH?&3j3jJJpC?km0<2#XV)&&F?|(v6QYIWOQtHr4L`-Hg(Eu(-)_6q6E2AU z0Aj3Ow}jmPeEk|qPeum_J9(1woPTQF`y8`K4T}C5fGoTkhd3R3CQ;F*cPt670QQWX z*{k)}b3PbTcYC{Wr4EE(HIEWfB*yM8WSJ-+OUDwzG3EYXjr2z1$`z;XiBN4Sc03H3 zWg?J&upKImhUd{dYt=j`EQAg{sgcoPS#1&HQlt@aV5cocQAVJ}q~6 zWD|w!zjyhTd~HFeB(`whR0E_>{E@Fha1ig{sjQ#-(^l1PF?TZc5n?ZnJSA)KF5Um+gJiAMO*?RMX27=DO)rlrT&?m=Phf@wzYq zNI5cH**O$dSf#-)+)9FGu2NRzLi1P&;LgmlWL;=+86xcgLS1RN`-;u+4i`$I{pw%k zX4I8{V!#xn%Q>MeToe)4q|kMpxUBrrH5gR@q2z2f?K5xpP6`h8wJ_$MU{VlWxLX}& z`MJF>Bv!Fki*d7^n>N}*kB&uArtX~%<7a-rxhqv&-z&C~j}?lp9QAejlU2aWX0bnH zY9RAsr7g`DX~hT%c=GfZfiFDx>FOJK=s;>FOe$ndKX)T5J+@=Q;to&mSzC*Cu&|&H z5gBF+<5gn z1d_{1cRkpLi*A?4DHHSDJY0&|<5KKb;q6`hyPSd;Hm6XozB0o#)P3R^%`7BtPJKKW zCHp_+nwye4bW!7G2EcveoJ*3o13vkRv_L4ThEy%vdc6YJyVqxgupzc%vcIf}dmDPo$6a~r zzp|a`Q#vkCGuTEjs9Fn#8~w>MaQyip_S2&xN9q);45d?{ivj>iUzr=>;0tpoBrOr zr*@xaD9(2-7`PcdVsiV|N6_Xm6&U^=n!~Q~&ScP{j$5DbW6hf7pm#p^n#BIpGZaLS zwh$~XQd;@mWRgm|7hpMEL%Ol-gl0(qf0?1b-rPIZpcmw;<8;ZZ2Wy;GNTs!6eAQwFQ6&je@|<3D!V# zGJs4{o-WDSP~jIG83!q%K8?eNyzZWi|A$2wNLt;RCXdYv@|XLBKPkH%#sUO73uGvP zy@Z2IjNeK-!JzM|0MOPM6OAi;KE5;dw}VK>JS<I}s#mHw=Cm>n)h8h~kwoDE1n}w1 zy$J0>;>U>rM^~8I6!$+j4qPKL&Ojr+o_kANE!!F%pCl0N>Dt-^8o?2Ci)OVQcEJB5 zUfpj6vIhanzUT0hiz0O3G!nd(ww5IXN!O^z37CUDTnxz!V)pll*|GsqZ3gtGwnpZW zSy!?9ewfZ=Jl#k&B-kg`>qo|atC^5>eXz2m9}G*AP#LkBW7DglPy}X;XW_&7vD!_q|TOUyfqjEyBY;%Yeg*qAxeP22~8yM;2>zCnhaG z-j16?)2eVcX>gu-5;vhU{21vtb#lv5UZeV1eCURH!c3D8#rI*Bf>k3yy>#6$OO?9& z(2Fw=^10zXkL6ohpL`Oen!m6p(GCEvX*kJI+0!-W7JxiC0AAW!fgIN^U8oWH*^n-f zXWbHZ@&qWnkVH;jKhyWt7Q9lU-$)2?I}t&|t;E+Kq`%lvhVOdq=Qi_Tx~}{W=#O}s z8}l8n*Cor`NFD0KuL!d>yg&9xU{0!?KJh92`Hg zw<=b_ZeUjVJz)k-(eW&W?~=9T`{M|bw9^1Kuq2W9R)lb6XW{$sBB!56O^nI?>m=9m zPh*4dOYD@XZ2n!1oq*=Hu7=Bp2amDHQ}O4GVm2V^+hEat)a}p%69sYq__TouvuVh3 zMvK4PUF{gn8@pA1c0p_FVe%t7IH_NpVQ#it)la5N(9n^@xP_3Mhv+A+GTeb%XF|JP zyb=Qz3PxYEITFLHhC`8-U3)?1J{?-MMAn@PV;MY9hzXJJGIuc*^MbJ`d6?H>5sm-X zr)1pP{h@Jc{hFb+w~?>x^;?#4Zme+yVWDN+BDM~SdR?W1Nzs;97q>`>zS2Y+e5AOs zL$+hoeKn|(>23?!$`N2riIhPU%_Cj)*2B_o7VFNsj-j-9|r!qllu%{{{ZC zO}4QPhX@!LWT7!#JejmDogjHE5(Pr*mE)LA#SL~~RMuzgYT`*W-kyKk2bC4wH?cWw z*~R(EziJkvl3m#+&N3Q2`#`Fncj@X5<(X~wxR~mAaWh812OKoLpbQK~e>VcAo$5M}q-h1~C|DYPfRibMQUt#`gV zl)=iFWL{!?UcZ9q>kjM)F@>QfcQJ(+8B(oWQF0YD^IK>dnI~UEuM?#HU@{Bmtmv)| z%kR%5-J-bMl=6wMd*K(h+BfJa4XUu5995VIe75&T^#iTk{0O!A@Nc(6dEhx-LzPM? zCkn34b|}=wSkK@LWtb#N?FD_EW53ghsk&Io@iK2Xg@~HO$!LESGu`Il0+v=DSl<|i zq}p4$|VfF4o!4ig=Yg z=o;yL=6-oXXb?nD{$93$*Sm-r^O3P#F0#ei&W=RA9TOPPTUQNW=4wb3@V9CP1|@L+ z|4Fw~>rfTu^^%aWeVSj(JEiop>G)0s7%0C%IJ_0^D0Ij#Iwb2lXtH6;1mFF(ft7u& z_H2$tkwzL;_pdzhke&kmuR^K8JbHx3>1a6EVBJdbKz3squb}&-86canirNRXM3Z?0!Xige+U zhFD&f&3#eG>*7fC#-992o2A$dlysA97!^_2%CGG_DlCq&2r1(m@?_WfDp;06FWN>7 z$8V3^%ytQxpsQSaIemu8IZ^_*Fh}(k=9pfIr}06DVr#v*-7j+Oni$R?E}00Oc?2(Y z%jm?Z(cn^s@Z+H4^_n3Q$~^mOY^_b@sd&>c?FIV!lsHG@{cIiyz9M213E7ekqA^h! z`lifH!OJR6Yfm@|uKDtK8}j}nq_!z}nB;>9Ujifm#@8=aP7FfMQ(I1t8sq~H;I++U z&pw?_o44zOo0v;_;#pwB#!J(Z?A>Jq)~=jRhuktGTorIy&uMYg{;zTce;fQ`NZsJm zNfn{fqjFPU!AjXSdILp*9k18NsCI#0>5e}@P6s{`<4&8u%53u^j)~sbU7}tk-Wlb4 z$vO%gYY}~9Ahhp-*bxf$AxFsj=niyNyUnPHKcH=ySrRgc^m-tUxtKCg;Dmu~^=z3) zWcA^kBM+a3Yy-eBQd6@$qnLMj$U&0)*mRl@)FQw}YalBFOHN`#i(GQiSC z6)$YW`$zGMnf94Vu^q%Wlt3p|I1B78?_xaCz1?M$SWSi4%oi)_7IQKGmrE6Ws41u_ z)xjdz`VAhG%H7-~r!6Q=(GBL+V|G8QRzvVlLDCp(Dt*ux#4qHXtE2!|oA#H8N*)f)NG=8+on!e67-;FtL zY1*_6B#`|+eSNVLZ6`A=;EE5+z%Pu=fHqg<^ECiXw%4Kv)o`U6h+Vqw9ZUcRmxifo z&%>9p{cy7R_W#w-Q8y|FpaNo++qIOWa;s?QEe2Qt&mJy3i|##4B#W?*aq*~S=dckQ zc^NgN3uJ+aM4g=CMz;1jiv!X~ape{NieAz(owE1U_^BhJ>yoPBLy+Awm+-r6Ta!o~j;C$xG6x zoYiBwzFEWER^we4L~J_Pnm5KAW54u@elO|my|<}>h#`FV58Eej6p!0&skzZjNZZ_b zhL36qDUM1_g-PujFD9p`mmaWtv<_2*oK|N2P)y2SOMZcHV8wDXZ$yVYafaRw`8TJkm(hsln7=Zr?qLD&1Z5C#MJOW-uq0suQJMM@-Xu4i zzt*``1A|g^94N)iNd(Bd&>GQHv*Jr|;q`=oo*NX-W_6Wa%pEB86z1diXBazELk3T)^WcZuhb%7JEXR{uX39>RHe-N%8b>nAaDIl3&n(D z{PKFyBB<3p&^6H7mHxJlTB2`t)7PF)l!mUT|IjSZB z7)RFbUa}w&TIi{rZbw~wU3!p%{5J>(-RnIzyGoRK!jCi6DVQBWvxUg!LVGp+{tqkN zX*gj=falfo8`)O>rwh!#@(j8JuCw1L*X6gLH}%=tLtkC`P3-Xg-w3{^bLQ{c%qe!i zgG(vbEV6YZ%%X(v^Ec@mx1*?V*~h|aV@3uVpRJ&DaVz87Zr8#DQT(!+#b*b_{zX&6 zP&5$9%J}#*EUv7v=F(sdjG{DFd-#0OCy-ktOHW17-0^w!!*9su9Hohk=D@O`cD@t-g3#3KCuq`AHY!uG4e%uZuZz_XtDmRFuTn20X~Cu?gUY=} z={@5InFR6l`PCM{d4cREo zV>_gilpkW&yGxO*+QuPmU0*2K>F9^zcrehFli^}$kjpgd5rcBFqEM{=KwRgzV$CV9 zD!+wLXCE5iWB*G`@>Ck{#-g^L^LB_cwUgnRZBoV4u2OJ{_tZUUj9a-t-%)_~5|Hq; zX^8&Vw~=f4Y3A*k$Z!3DfFW;gku#K0n&vMjK6#!Q2WS!s=-us^Ls^&7P%AgLqj+tN zP+_9dgv6Org{gcpC~b%-8xNN!A9hg!`wSmFGnP*2{bQU62T(+A0eAoMPQX1E93-F3 zQVSEK7x`#OZRxJ>gBNQX@)YualfdT(OZiSyuhURbO0RmR*h3d$T_ui?{#MOT=lokf z#&0DSZn(;C%;j`J&q^3TWCw{)7~0+2oggoU_2D1IS;Vs_um#u|5ChV&9j4g0gr}RT zcFr>ZG3@w*^A27#g6ibji}uYI<8C^h`=AqjFLRVaCn?0aE|P<>f+B6p{c52+(E0SY zpD^vYztEVgrU2$q?*dRo%#Di0{TYcODO;h9GkTmi(pY=3fX!#;B3340Rgr09+}(D( z7lCT-Y8)NQ;ZwjtnNCv!iH2h8Ohd40#~N?*c7v0KsO2Q`4a7i!3()e*f}*bMz{KG~ z4LQgQ*;~F=w<9nc#^NPl6-L}M!5k?lp)g#yqoO$8R*e;x)M8CSIt6u0jXje#$f zy!+xyNt_QiGCPE^_avTqKyINqLw#Edm6%WTl-{4oA@5}{GBq4j{VI!sucAl#%k@pW z29Cy4ZwmK(15QKg`Atl|jxb|aSD@NWJo^hVSrE0isLoDicf#Ylyhaf4W~)=(fU~&B z+ML_-^Afe3@j$@D1X?I?u%2=r_TA%k2vW=-VxW>Y(=G(N$uEqYVWm3Mn00!YUeb^0 z1?QG{*ws9gXx(3PibR*9B?G4Hv>1iH zs73q4gSF!i?9(A%f7#aw)7nA<2TwNH*DJk*V<9p zM~J||r)+~~X+TTjz`Nxnu?2<@6o<^s!0GLZ$J_oy3_N>6pByqM>~5O*{u1J-1L=s5 z*qWdtW`Ry+FnHM;nj#xt1}}!Z`9_l`22P093&%61Bp>Fy5K4R-L&;s(xjtU31^>-iI_@(@RR4OC9HKCQc9cO=z!g_fdSKeER4vzMvI#bPG%rd46LuN&(ZLODQJ30SIfv*f&f>J;HYL z!lSjoXlMTQxI1ixshnf^UT=nBiSf-Z`C3jN?7N6;iUu=t9G8 zE%$**T9Et9ByiAG;M7rQVwQ4taH3&fo5<=O_01R1ny^8$MhXZ>;g4haB zXL%&#`0A#IuT6E=?Cx5`@Ges4-*LyY%Iy1PA09xsP>wtHLIQ5Ybp(7D#~Teiw3IYpzSY;9ylFwx+2pE%<3`Vl8g|jR1J0&#Gu{rQLEnd z(?oct32%hs7;z&C|Ar(SwD-T^m^@luXH)ssb5}(Jzg^q${?{LQ4jpVd0$}gVHt8mB z_t4fR!@FNEt3Fl!hxxDFYhr4Nb#F5`$mPD)x&8mv_eU+0ZFa0k<`JW46|f;Qz4WhT zh7d&>64t8?dsFy&$*gouDb0~jh1iG>^ScACi$>xx<0Pib9dw^+ypbBO?;)GX{5e|1 zW3kV|F{(sg98DpOvN1!JP6FHiG(wT+*y#ZZ&W9BdMPa30{F?BDxkt5(mv!0ah{nDD zm)0dZvkCQy;$wKjek{gQe`g!j$4m%cWxoYxZWGWe`7tKZ0Rjgcsl|*M*q(UMHI!U8VrXg6^&Za%$P@9QB%G;tG-t6vH;Bc&hX59_OEg-*kB|{phYkjHshj7 ztIgwnc}Eoh&~hy4R(^$^Du5rAg(d5PjIbF!ou}adIxw>UArW#piSr)_U@ky`g4CT4 zBJ@6~>&_Q{v%snBGr->&5WcHITGF!l3G!Fw_D7N;icjK|!sz5J(^hZjamG;ykqe8r zR|m5n8Cv>1+JlA;rMvykJK`t2uV&7;KoJiTJ_Jjyn|c8P4>OV=em72 z;HwlxDOQ)+=(_14JM~vr#g`*ft#%A8&_U(*zNYN*KC1$by4Y3(5Lh#4S=N>vyllQ!EW2Z6!O|vlyEhfrxB3CiB z;K(ht5j4tTGex@U5$SV?vQNk_BRX1$aVcI8DBFjco5EBqZxoE1t0ixHtEw_Rtliq8 zREXSrU2v+8SzzGUADxI4PjTFyGdBq>lF8x%!EU%6dGA{CL6a$^a-_=Pk~&RtF_b5?!na2$1Mhbe)Inqi^)yz#HQoMIr#F-EPX@C)Nqmr^g zr=FhRnMz=6cB!A_jrjr`mIGLL;JU9`Eie+D`PjSHP)M+qa?)|;@?2dIoMb_O6_5MQ zzu*|za@y#;7x7CTHf+v_PR;#6;yM@6LSKESXzwN|lon-`7Oed1lX4fOGyA;7d3;c` zy{PdfO=WUvJ5OZ^<%=seq8`$_b2`1c@u_M&Far>#UnJHXYPK{Nj(%Y!R2SsyD&K~y zfTYw0vVBr{#ZH;bcp!zN1}S9U(jRz@f|5IPUgY(Bt}IZl#!zKrStas^jpu1=RWqRG2cZ zSR+MB5O^IV`e;hUMMEBO*@GXo8Z~3rnuFFh-?na!C2F!pV}waX&ji#=B(2|b@S{2T zZqE@Ulh)7cpTXQlBSRTYpJ>W6f>*eY7SPz8jKkR4*ZdA(2GkSxjMcOnySzSd#q+B zKzUZGc*1>P^UVPOT=OwFEM(leRiOrHb%N9D#aW>nYpsHtPx5f$ahKQo{hF7D=$Dl; zl`R;I)0E~NzS5p?3l)Onlm2rIQZE^%$F3kET8K~0$D%s&P&VubAcD5^d~P6bn3M(MR3FyQE!!b<~LLH+&U7K1Ry; zZFqYK(*A+au(AVDBrdW&L^8bt4T^TahpG&BQwo0TNX6P7`GFLu zdUo1BYy4gZ6BKf+lY@Rnuvckpio5D`&P~S@;61N3k-W~#kcg*%DlCzCAcwC?fgmvS zf49w9vZ6-p>qn2t-E(|FJBx+7+?W=~QJpurKy2D0*f-SsyoFkuG3$}$CDEr2EX^pb zz8%nc_#B4RX9tDVIf7s{Q=uKb*U^X^gC7num7S+_(d05FuS74jX>-OInDkw-y&Sh{ zr;P#I{upj>mK?!DQuU!fuJBGP{7i3_DY`5@7$zapl2L}ek(*!h{%rNcx|R`-D1bxV zgYe3vPW($2*S-#u#adjRV|*jU^U6{|xde5`FS+NL3YrP$UfE!_USatO1pdk%5V(8% z`3LY_Tla3Z4C@G)67!ucwSnVp_wui^r_tM~x|gd?u{jOhK3U6lNx3DZ36{({)oIUAT}4 zae(qVsrFr1^t4&Lj~BI%l@aF25ag)r9{QLaCQjJni$8jFl=g2bpB!*N9uwa>ot#`FD%@u9icjlXgP(8(Db(;Mb1Z&6BcT zGWt-*#W^IY-(;(kDj+i~gvWpY|G|rB5Vw>s!@jX(`_MBT88-ptg#*gX(NWb>C=?{0 z=Db$WdY*1^(1^!L_Jj;=Q3Mr|@oqc5-TftNO!4|1Xeo-E&FC8wjmn&EOd0cyY>qpW zo3K!#oYZ1x?z%_5Xf^_|?_L^;vUUsYS*q>*w?^mCUQ1D044Dan!1S}{8&M|Kq9pwn z9F=uM~E=t@2D7Gf+h{QkNEr*iGT7cE>l!-X6KNUnOONcYb-( zu9sH>msiYoU@SbXHg{`S`PsEp2ZKto;5l^*hM2KoJ%Q?uXGJiE1e$*AxB6JiSmeGB zR%@_dxDHIcEzJ|=!zzC2*D$r(^L~QVA6}vEsn;nKa`6c{IlT*bG)f}wuV{_tK7X1< z94jXv<3fH9jMIE)a)?v{$?z3UfBgX}} zelLUrS5yOl04)ST1B~ckS&%(7A6eFlZhTG8K8&kpofq#4;iK^V4_*n54L2`zD*pS570sCnfCt0Cx9qOY&A^!WL0w#e zgTPqrj08=4F0`E1?D))@UPf|aB_pdp>_3nn|MK8&gaanGxY zMI|n+ncYq#@r?YeY~R`v@{Q-JlL|LH#TV6v-tIux;Qn&!!))Mn!i<)lA2++6j$Cck zo`*>yuWoeJ#?o>7l97r^gaGBwo@RjZ?Q3V#?3^dflo6N0KF3ADnQ%?f*v3nPRaX4G z)uGHgLO7pnalbtTm41y1+~;fMfa$3DT9{0ooH%NChXaq3SRYYkM_iMjrhIv`Hymde z*nK*-l3KgY&4N|Y3rk~8G#5VTy|L3@AyKBsWJJGT1%4S#HlkxyExXlIvv%vLS@YO2 zC-gYs863tqXjGnS5)+@BPNf|^>THkfK%iMAC8#X;qy)b56pvVKX!!Zan>d#B597|I z{(lalRin|@NAQI`cE5$b{iWPG2!t}BdIjDn@PmC`{I|`i=EszcMShkOijrD<1!rS{ zQlN5)${B)oB#5L{r8(O*<3yn+pI?%F6gJ}p)<^!?b~5A4#53zi>$5mvt!&euuAu_t zSu@x6{2z_eX-vIG+;}IG3itqxyfAe{T0jacmrNOClaqKD2Fk(wolF7|N^D_%yZD9P zYADe}n${|Xd8Xy`1q0!y`&iWU8!`pdPfpch8W$HVMB{OoDqXfr_{PfO;HE;syQ=-v z_pmLqfsGuHSQTM?71K|Sx-eD~g#58`#rY+*p+0&(b8Vsr%b)BY?%xTr{?!H5K(BAY zP_H1ejh*IO>^|@{gc+yrbg`#qoeA;&C5Lt1>CoGZZ7yP3gR%6iY1E4-P-eMxnhz2{*zj^FggOzGq+Q=FJ+xdQPA8G<2;R! zSr4AgSTHpkGByALZ8%+Z{o0->bgpBiEA>3xjrWT9AWy3>tHoci~}vkLRT-mTFm(n=c74Xfd4@cGX= zcI9hT3iX>aBHF6<(X_t-#q>$ z29b=;ZOU$y)d;sfe@~V2tlNPS@6EKGF8GmR762$a4J+v04dboSAcnSY_(fmu|8ntJ z@&_WT=pqm2dJwg-wD3eygY(0De>4RMc%z2Dd_G5?uzy5f7NM{KDAf(hl<~3%=XnF+ zExcvq^qenaB#(ECr3dsyOOa@zkrI#QmYfvDHUKYH;ZHQ`cfn)O;X`k;#v}ty3SIJ= zL18Re4hVu`GhbnIdNSDH@LT?=J+ttzO5$u*;Net6MKl9-&to)5uni|ZYs`oY0@!>2 z1fTb!U*hqZOY-~NT2p`igxu)F4`wJ?F88aA_sVB0?Qz9OT~xNHQNL=}s$4Sm8-zBv zT1M}QvovV}43ZQ?GZgj3%v6gme)^(8zdwJikvjLdFEYEGvZ8`)AERRr|6ea4(&`bu zFh=Dava;!1p8*kj=KenKOFsBC?c^qMr%JU#kfJJBvg<55JoG+50ZPe%AR6iO9woey zz9l<81%i=Phq7t%H27zmM)5ySSPTZThRTBj<>Skhp#$&8@V%xIGLPJWEZ?+gU#w9` zRnzJCvFs{-9g%0^QUWfEemN)TWRS999`0)`o>fzu%hG8)QelkucNd!lebPNn_`kJ8r6XEfID#EBmN=Hr83lyu2jz zDl+FPk^Oml3R>FfHq1rY_Ejy=ZyH76XK1>_;ApC;-dU$E$r_i(mL7-tY`fOoKG>Bwrw;fTT#F0pE8R?;&oK}>Fns`=-G&kYIV=8U z(CiK}H!BmuBh!CW`9yD9oCdivq&PBz*|loTID&(Amby0i1JFQ|u`J?1S+|_S9IfDn zk%}Njq0!3<-1zBoy^I`W+Q*m3p^SH7_$cl9ROxD$bQ2*>dZ^9lLq+16t#nqo%CBf#6@>f#P6 zinIL)>|%(}=zbCD3`~4l4up-voV_^&h4(KFZn}pdCdQed?B;2{OKAO8#4bhm(1KIh zWwYZAx(o=4jo0B(w4haR6_q4iyAz?ss%F!Wl&;w4{fWIA@wNb}PmuF4mwwzW-n?xd z`my0-TPD>{v(4*W3-GZ;g>qX?SF3 zng8+GSg3wtt?+ZL=f0=>7xNqo{CykB)y&yO)BP*_Z^m6L1`4gphw*fNOi z?;5thrO?RS4mK?;Dmaej2lYRQcFF39+ znbVDy^1hnx>$CA{I_HUwR7ok?pQftCjH>xBRPHmWPkS4a1--?&5ZgC!TEUuBHgE?{ zHG5*kcUIFy2o}(2Mr%^ngR@*q3S3$5kXB#{`3+(-`Og{7=tAtHdLl= zYu!`BaO4xB4$!JossZEPtS;PJ>{OuTWV3UXqxF|$uN0puu$`8t+WPB>`XtV3ewP;| zPnU4o&xNSi!qLs+Q3O%72@)ic8P%%)#05U0&anyfvwyrewghocY`>&W{M&^-7o139 z1(cc*kUd|N#)dmh+A5plvevTl%?nD_Eyk+|@$>*|F^>U5YK_P9>>+0XupQ;;bcv!G z6uiZo9eD!$YuV#CSxBBYe4Hi&hhMruHxUrUMq0`>~4mNA|o(R=$ z8|)Cf1N1yS}8kMq`aY(jUm4F z2TaYlbRA?a&W8M9>ZS%1scixlmS#7up!Of7aUwUtRYo&5kQQA8+}JHXA^WXDrtS_= zx7`Fx5podom+^O3DKB-i`cAnpb z{2=Ntw0QVy=LC^_AZg~HvuFSHnWNXONmG5vXJ9_RF;olcg>`{07i+A+I7_OrcIWLvj2S37;+#Nm0>N zVe5JIQ~~1?t9c8rV>Y#aVlf$kxP|PfN<{Pp=PGU6Oup+mWnx}nGH;l7g6xWxw>*uJ zp8Z|`A9x7YUy4u3qm5C&kF)4I3x`N^p2;gOYC~=k=nv-OpS);qtZ1g|o3ZgB7ZJE-fkw*5d60NaRfz2N+ z7oNCSNi0rUvVtC&%nlEz>sjW|Nf=b088+DZ*i2#rw?)4tlGFW%kbT@BT-g;MxicBD z|FXGBiZ@BR{k@6C;bPv7xvbS;JFDJ)j;8VMyN;260u#}hMYV_$^XsY#m*#Cd6yD23 zLCn<@(JF3ZtJ{A1gGaZzmb1GaEP#4CmzgK_7ziwgy+?TNAj75P*{A? zlTRkdW+rYJ^0rj50aPszlWySE6j0C_v((Ye}=o+IFw1AL~R41tM7%(ZnaZ`hnS>)(DAy@IFE`<>fqriT1WriL=>u zta**>6V43E7Qay4cc*j-qaNkS#!u^#@rT%>6Nhl^&D=!%6AxQAGeal{EJ(jJv$1Ef zZH_UIHz$fw^S3Gq@u`aaaS=-=M>9wPCg>A)q(DDR|Bu&*sJtZVP6~nwqZ9It+a|qn z5rA68X?y#tKW_!@y0Q)4Upym=Kw}?MUJbE7Ssv5uL)FFe2kkNOytbCA?Ebh$HpE03 zK&=Bu!8`lcwd%}aS^6QW4pmglk%>JhHc~fyM(+?$bVvwZ!jm!j(RuzkpQc~ZqTTs` z^u=`$$z>D7<~;y=)qhb#cbBcO(gQ)yq3A;p$ha1%*J)uy1OfX@F7#V-Gv?yWmX$A5 z;gdoW_OwMKnH-`xowD!&{rOD(nOZ_@|46s`_XZf^0(!JAlxsQB6#nIdXJ|jGOGXjU zqT;bbQ?5`=xc2M-WhvV7i{5zOFe+w?WP$7I0m_(Ase6+MNObZ3NtLFyJ&0#o7z^x` zWkWJI*WC(6TN?w+FXKPSRWC@en+qQ)oFx+dwa4*WiG{ra1>>QtYbtMKO&I|HKLEgf z{z;My(A?wR{_1biU-=FrQ@1M190T-xe0mFC>g{1!jno5`o(*!MVl_X{Z&U(|<-0qE zYKW26VUs$v{mu;qjo_nKOs@*pDN7|JZ?XfyBD~VGEg^C-tmkL7BTfj84spl*oU_;i zyT}Bk)KFryo?yYMYtbrilCrl{7EeAu6c+v6vjHtS!GfstCpd6JhLpo*`g_Qb=qo~8 zB}YN06Mf9nzS$d|cdi`GF$zWs?wKMJS64}&K=#oXO^fsYv0GkU?Mc79L?`1uKR@rn zMO1Cq(ArSI8i~hd+o#X!*odWK_1ReWMKm!Q{o zjA3yIH#nIQIvkaFs{CJ_E^)@vm$1F0?qBWUaq&#Jz6~O!gOv+s$hel9hF7Va-Tu&( zO^J{PSPq0g%qbz?60^nd61VqOno@lOv;64m^r468MX61mprM5wvkWr;)Q<_#AbV8) zZv_AHF4HI=#69C|<%*eqlin|>b!zx|B9Eo>OnPs>B1{S72RRq3qkY;3bse6++WAYn-IohGG;TP(~2z2&?NSyrpKyfg-;OQ>}YH1%eT zxE{^*ge=R>`9R=}zxr`N=BBuUG(r@->5(wIoEaxh)`p!s&~ZPdovg}X9S6^g|JzWu zLpiF^wLJSwcEL{#*VQW62ulVd(DOf690Y^;C41Ff(OQ0uAHjPv+!MbaXEogzcgdf) zGcu(^sqKhHT8fu$S&C@Ut-R3RBt^gMPlxoC0B<1E%ZfKTttJce>4`&ipK-m=NI58qxdRHKp>iknsPS~AhYuQrnwb}g)VckR}uD0FB+eAEW@g^ znTJDqCO!-(y+%TIFKTc9sB{F9CVwJ{^5yXzQq_KUvxJZ0l~ zjA0Q2fu>zc-Wq3~FPreNgbmqf7E?Z&kXM4o(E-&uU2a=J)L?T>zxN1S=Y*+hqDg_@H-m z(BHv|ctlFPdemeTxPZVyvc+Hrj&#Rj?5=r?Ip`}8H55o#WeZF+w*^fE>IsEnlC}uv3b)(=f?x9D7MUkR@aUm7J(RuHN zj6i#C8kF0=jx!phV;aKu%D`McptBRg*#$N*h6VaIx9~7nut-Gqo%DMMim@Hy15wT? zv-00 z{<8a=yTQZkB3o3*b!qG)c@dAv(c6hfW;8;xWalK{jd31r(T0F0t0qnKsDT}|QoP-r z-hqIILW)G)*1e%!lILCe05vykO=1QPNqgGRB(WQXeTe5j?QO8!i{jj|gjJmOX9~u& z)QI5AE$$_Al#F>%p+!k*L#Gzg8GMQG_U@D4Q*vl_G*+5Pi@ozA4J*+lEKSLH?KTVk zJ`r)QCye8W&2U>rAZ%~|9-|#5wEmwlPrFHz&`YosabJpAN#UrjYNA({f&+R!>GtUD z1P(9elI7^9Ql4QY66Ff_Z_Al!*4y{@uH&aKPqRZ-^9y<#`{Sci{jp7Myhg0wIo6sA znzT zve8|gnT47@w`8dI73y0)V0~La3L^0^mlPvz&fljs5+p1($yCy1${<-J6n2)V)l9EV zv8w19yYow!S&HhpmTN}t+)Kj8`fS*YAUd9&u>yg!dG7?f=NM5HXu403^ovuoF}LP} zU$RacwHN7~fMt@6Hxp*$lOOcJGbf)k^>{7ZMqe*xIi>4lwO*R^5&$jN35gvz1zi33R&Euruesxe2QFq%% zAA)l$_@+I8dDWUVd_c|jBb;kNv}j3=nwh+*4cN(x!q3}bh0Yj9;^py z3URa2ZY^?Rb*OArL{lagU?2`r>2v`>4*z6!L2c`LvA$sv=>yDZ7ek8D1m9>VWH8eu z*_h)3qd-)V1qJ0)hR}4jN-h)Ps~A}t{|FP-^OH~WM`{6l79n4` zm2z|;DkdI{5@pmJ+n_w*hX4(C36M(GkwQ;*>$}a`;6_;gNXX0s{kN_w z?(^`ex&5*MzoI})2~4}kNAJ*BsG+jr-X(!X@NCXD8)fvlKVKf_V z)V(UOVY+14VhA~AlSL9Y73+O_nT7Sm@$|bG%|#%xg;BLfOt#zz9_Sm z))UssMTiLzFN20V$d36*d<0vXd2VVe&$N8!p-p_$dR{&__Ah)dqyMT^IBF*+g?r z81Z}HYH@fB9x5wPcLNbuGZ$!J5Uo+1S}n&>2MVZDi?>#E63uN;^py3k`s}W}HyIR2 zNM!w6@Gd*RI6|altLpN?uZ3WdW{#>4O^JTZ6FDf4xqy39i654-)$j!@Dd+=quJHHT zXF2QVKK{_#!|h@Hor<46eT3eZ-;^Zm_RTNlQI!rnR>$%E&KBUq&mTT_ioP&R+IfJfLBd%oOi(;{HN^H1*T!NLOHwn{?tzED!_w|y zPZNLgWYLpJj7C5VUIhZ!2BXhx)2DDh2 zW>wq%gVj&KWnlo?|^Pdsm!U?(>(sSN4%K8xcxLU~H zc4_19w{(6VlqatO?x+3Pi}$6Z2b8J?A+MXiSzf?wFQ`uXUh=wj^EFR6T#ztn-aZ`Qj#>&3<)JkUjL}kGsw66X3FrC14;qObRH8(R{c}3h1r|`2||H zp;^Y5(j)7p$Alow zub`<`Cx)4~wfA|;Qd=O1B=-!CSnWWT6*zYnY>@`8Lbe+et&d=;l}t`2hYh*g%5U~w zz$bTs(8m4FOS1Z~`)tloWzHSN{DNxrJYAVat!fdZ-=^jCquL`(vz)Q)j=h@s9K!HD42YZ zndIwM!axOwN`I=JGw|)(1gs_Wc~Hrib{mjJZp2MKuouYjf0_OPCH&SwycbH%u7vPx?8Ai6*O^~Mc~|3tFb-m`lsI?pwBr-^ zIxw{JV0f`~9+L5KPp>SL83RKpfMsQ~i;@`K4$GZZR1Byc$^-r`@9|Qi>8lNeqaZxx zQm3-?8I|$59g$%7%G=+}C&_G;!u3C!yl`Ts2HeGW(L499S{JgY=H!wQZ>(2@m!KpY zmM}Yf3)OFsl5g;YK{O%JUyk?s1D#$4fX*&t1;$tuJh|~K2dA(H9vrZ2Eat^0Y)tk? zkIG`LXG}yxpzZQOQ{mtHTn>`KXn=05ha1J(l9O?PK zj4@Xqt6hJ4I76iCu6@jwy>`Q0ra2D|*1xaSL5NaToB8~$I)8;%KfB)t?z*jTcHT_r znQBcd=XK5w`Vd!Ho>Hq~t;?KXh--LeO?q|#ZV+_*kk;In()m4aInJ(hUl*;Wer_@w zL6d$w!s1#_@-fi3c!Al9VXWs!wPAYvaUJ1M3WPa{x3aFEgYPB%GeniYisVJdtvgL; zjZ&btM92mF05g_2x1T&$dl)Hq?TlNvRFz5=sIg|i4%4EB)#BZqZu7jUp1>IYpKiQp|DeCufRylLu z^8}MSIb=MH*){*TbYxVPgkm34fn139+Dw-aEf3&0m~Zyfg7Dhnz_Qh)XwR;M{qSYB z|1&xUKQGe&VbM)rj5Ad^2A2HJXt89g>b;?7SerGE?G3uiwk*O1K?-;; z01O;FaKs`O*X-xXO-u0OlU35=Icvartn^oJ#)A-3wiI{A;nRt&l0ti2Ee8(y5GpT& zv}Ws5jp(bCo44gP&kpRYAg}AN_Q#sO zOCtDXGIqGEZ_otJ?x0K>xakhl&8V9u)bb^8f@J?YePZTNV#vRr4(Fxkl8gNM+|2WN zK|m<|LLM*1?_=akueByX-YeL9i=$e*FXJV>>uqWjs5_NM+6Rx29Zr()0shj5uw3jDn6CehXBhB^2g6lTIuh z%Wt5BT5doHn2#Je4nuEb2^(tjIMj3PPZ1t6d3tJs!O+)LWk2I>ip8W#Lk4e>s~g-? zt!TbT5;Z)X)c2c2H2$Kn8BUczv=qi^)!FJ4{<{E^xSz+gC z;&bcAYY4;AMQwwryk6o9)(xVo$cbzM_$CaqxJTaSFJdi>dWV^kwHNnxbTCvC{OEP}aJ~ zsx`bu8jlEXYHm8ll^YXWXE_*E@W+XCBq5?9b$`=#0t((>r`+YHA?M6Q&J#W1xwTfl z;|qEBq|BLHk{9Z>$eeU}Bdt-E+rVcmM3@+`KjpP^-r-|{Pe?V8x~AuIKA)Yd-tGk( zZE1W}V-SgcWHt(enBLWY9Fy@NJ+4OR4K$jt7BW;Td*}p#kri0vJ$o)#T|3j3oyyaG z4=3J%%2@JO7cDCrV#6=zmGynw?v7Si{3jk=gBGFr#}z|Jgbq$sC|dcf3TGGV(~lmJ z)*jEv$=C{XNBR&*@lqU8 zaC(T$P=Bu;eDS~yEMgd$bj80h`Wi@dt6bz;gA)PAMZ-G!$`nI@x;@|9|2MQ3iA?-u zk}Jq*ek5U?)hU-*FUhhYc(t;0F>l=op;>hERaLdf3oE+-&tch!ra`=hrsEk^C;ynee=B?;z3 zU@myKCb@lxGwZL;pK(NkIK~Q565{_t?9czO;!h6P@R`HUzR^=$b0NX<(O}z* z;9{?cbPR=9(^EiLHds@AraMRmkLo*Y9KK(+8syy(^4Km0gUcchyRG^vy=(4Jlmr$l zcHqQ=pwoU=-0GS{EC~9urfyF<9Q!K~dhK!VheEOOc!0-TjQGx`WFR>UU=2ZHgUG8_O;=B56t%5#=ds-j%UK@ezt*ufX4!!D0dC@5r)6zN1s(@5YEXA0g5{ zyx>Y;xG5_r0Q%}OK0V`#k=`~c3#QrU!xl8oinY44-U^?gD)9DT`jU0a6nI0;d#r__ z5_kQx+;I3+u!!e$te11%)#g--ud}b*5i*AaJ`ZIZ=q%IYizq>`vuiiA9?s!mC5%{h z(UoN@Jf-VEV!v<8(QHp;*=6t}bTB*8aydE6afgcWG7Wc=r3f`+>J~o00w3AsHbCF| zQyKSvZ+IMw{x%^-!V9l-(h?#&(BKC2)VmS;S(iq!@6g%t^MfSBdkXj*if!3{r2AK<)^m@vxIZ<**c~i6!Ay5F z%$)L1 z{11-Ya~Y3>{dokA{<{lGk1F$br^J5tzf^e*8L|0P;AqM~XUEE)&g#MSlggrBV0=BX zfp94;odbg{QcuK~F*`g;4c`1;l%#3NdR<>-hC}qRYayl{%>PU7bR_H^P{==So40&^ zF!xl3)wPf>Laqa?L;`PCN7xZ-fh#f0&c-4E55MRgn{EM4t>DrKb*=!NiiA9V#rNXfBp4o&`gI$1Wz7^r9h~OV6Nux z?lebQYNdjM3{>j%2?^Lwckb#eZ1|}%Arf;1r8uxbA}1^Rgyup%n2$*xr~i^ABn~@o z=1$|xEC>~IWBY8q2J~OBN+$$rX^1NDUNl|AT=0kk96ubqz!G#}z?HR_&MtFc&rDSs zRN{bcE&^&Qrwft;vkR&2o;#0eo1fF)qfS}V+be^-H&C$Wq~a)lSA&PNZAeR|Y}C#* zWLT7*p}P8qzw|4)Z5m?OY%22Rq6lU2!C$=mZ;{1cqL5Y7{3sZfpit?c-@BxI-O*E2 zuQ}N)$(Cn@jX6fnZf8YyREr1JMmG6GQa|IB8HtXAjqnzIy-a)aZL1$vM%>>MPjEwUBsyo#Au8typm%4+m_rgS}d9AE`-21)ixAmiz|q0_7p7r^xxy zley#O0C6F+XgmF~b%JcdbSSKA(rHH~Z6d8YFZ@lj;57Wgmp+xe4|2n)?H$3{eHVi< zEo_it#RlLugOJnI70KR8y;{|@N55*YOzcJ;L9BcV5mcOn#&VzOOs;A!SXQ&UCLkb? zKcp_M!{lqet!S~U`=eVQ-T`F3$x>2p;f!e)n6*DBZghNR~5>zFJ-;xiM$1cs}~)k#uRpVg-P56=}_Q8c#2^C1-fUJ&NR57R@^t$L)Lt&#JY^67PHkRMa>h~L}i!VIDvjn1Ep0t?_( z#E6ylXW>eJA#XGa-C6dnUJg{#s7({ODJo9%u+hYY0xaNDtRlJR5<^8Xe`@(LgDDC^ z^!T?U3iS0F1@IpFr(8%Ry}T&WYssukZEFA;n>;Urg6FpKgSqT%Xd0;7*=&p!q(Snl zKD1tK)Cto%`8GCrk3OpO5Xm4n85bUyq19d(Qo(qy6&^!~f~@6aL@X5KD{CusO@1d~ z6%OAT_gAVGoP1o_ELIm-Ebqo!`@4q|B*s~FMQqD_RTdt^t5Dd=M{3dtK1)vTh5XK? z0a%sb9j{l1)pmcl5n-jvut#V39qJ+2>#i5uq}B#IyRYz*PsrHRd1x9EX0k~|q~~K= zgmi~3G2C8;aRitP8RYD+z04Q5n1*QDV|p0a*F9& zWDn{xEOvTvV;-039iBM%UU?3+0u$Ue3g9l|6Ki~o8dQm8`deG_P&+}V(PTv+F=3uT zHnhVeP&5o~x;~4&K=niWWO<)LXAzV11j03r9_<<9FU7&YmCDGH7nbh%m#MwG%#r zJ!ad0PvK!SJ;{+ZSred+JcL$jG7hRdXiu{Is?!Wbwiz=21$8lI6^_0_#MT=9h3IJ` z0C7))mjHWvj$q3_U-q_zs(2bH8A>W`6AwN|&lm%@350-DzY}kuao&Tv$SlFll zGW+@`ws{+!U2hQ!TO3aj-sAAhW}k99D#^8`0RiL)8;U6KY$*efer_@`<OSQtlQfUEAq01E~`@G${sVMHkbrLf~sy2 zsALW2K7;Z1y={RFx>S!}QssMLK}t|_;a~08+M&X#!`)D{`<|P^V_~>5nn97j>1tS; zzx9!f1Y7JBVZYbW56kIr2O?%aEvNP49-uAW_cyHx70rS&7-E0kcByWUF-T|XF3+&onjQoi)BiMR^-p2!OG6%xZBfpf6&g@1hg5Y|k+vxuJ?xdG46 zGP4TT?#fmjm&@kp*z57`BKS=@U51lB8}cp*<>S<|z)Q<_pVG>6!ui#5(vO8fL&jAn zvZqV6liAj8hKiqo`|Y5kuTy?SV2-O@(xy9yOe5bIPLxDPB>_tR@iyY2EWOkQ$$yhu z+yLK+8q0M<)hgHZ!>9Uk+p?2fQX;oqyf;^as}i6Vv4lvkp4b-PPjI%bavBi)TOR>Y zQ$ruKN`TGSZ_R$cbGOygCM5VcBUddqF(z3cWPT;`-$UcT0?1AP_5{;OtTD30uh3|% zFvFr3(?>TDT2jcmT=c_Yzo1WH{X#{LJ+p4l4-X-Lo|DSs3r@aj8T8#^TQv~O8~m2Gay@rb;C3w z+1S$z^6rNC&JM=Ct5g4fuNiT=5*+!Ctv>VrqTWgvz<;?=X+)buw)^HP-j9NP9*r)z zC-+ILc7<#H@mK=WxIkCjGbJ?P3|0>iMpbaI$T8J?HEH78m~BhX%gcJ@sY#@(_`~jddn*q|w#B#RIqf|Z^6Uawi%JNJa88?Mq|d&-A)pM-2n@ap zjb+;UZV3DZxoWyRY~KhmG!|BLL}Q?|Cx-`YcbOF9)&cYp8v@B38ti&T^2MMPb|ULW zMn_>W#GTy)CyI5fe0&5ZGiZ%`>6_x9Fj`R@L3F3=k<|2;{wJaiO`VgD1TV24hKJ~< z(4FDj8HfpU6b(}9_53K3C#6dthbd_kB;YZg*N@gF8%;NRv*l2;{Q9p;a5fvM+QX8) zWzN?=;|KXQ?z&KhaA2A&Dqc}dHV_*+wHWTngksA@JabdSS;VA@YuDL|7`cJu?Q|MZ zjG)oESOdQB4vt8Oa!Oz;Ak$kGP-ywawQN>Bb?vg-RFQ|6nCHD~W7jIQ^E`zZKGm7V zz9Ua^4Bn>|`SdR`qDgHO&V(tnC1^XSewYHm-&N>2w<~$JQRfst-^c-oinjcAXRXaVBWo0mq?TmPeYq88G z!t7R1S|wf`mKzNh6H}(Zl+1ihK2_FOD(l|*BHAawf}}i1Qa-w0>SIL>-8~m1;pnG_ z=K-+XgSbhBz}Mshe^|*XCY>o9OnA`}mY}OzAPe{a?GIAyuP&!W)cCb{T&-_}mlFab z+FZRhF;PM{VDzu=Xebe=!(Rh*9C~Btp#EuQuTeGe(F=idbi=y4vicfg@Zz!1EY@g-_#WmxUM>dr!94=r_eNGd zC;sHw;6~6j@=tOQr?FU@0KPKkxY8`#XF!G)9N;Js-GpF?X`Kq7)^fw2>Z=dhwqtT{ zc%n&X+w05%797B4{fYa16LkNTXZQ9Fe>=Jr2}%tQ%58^Hz5ALFL!Zvz=EOj}k5g=G ziZIq-wxzk$jt6q3n@bvor8;Rf0B zkGR{VkjzI{x;_J#bb8Rwk8Zjere$8Nn)Wn!%CJ4l#>NSVU!aO--(L)mEeN@j$BN@C z_hO*VW%Tb;E{&{pW-zV+%e&#ehj@4aB@zKRd3i|+8s8m_MeHSK^(jHLDFxM)yM{)LjV z3|AGY=iJw;1;}mc!|pH=c#m~xvgO$4t{`Zk8@fTQ7SB3 zbu-tGmYr%4a3^=gfb^lDmQ^RJyb~RN@EP}85G_E){ffA1GfFraGKpTf+WL76P^yl! zO&BBiGN|o-{wz@v-~U_t-yA5byyF*OvKgu=L@Y2`(lh*O)joG!km^$v&OEJkt_8==f64SfiSiB_x*Fa%SEKY=Sd0Yo_Hh^VE%wvglR3S!(YoC5+4 zQX~m!i}bN}DxRLjSRNr4=H&I?cu5iuiqJ3l710za_S_>&OO?2xgtFoE;{pIe{9Wqo zd0ZWvQMyvpEf~s=^N}EVMuJ66@-z{>O3a^40y2x0a@v2*Z!4F?L8_DQ<8jL25}8n9 zv0_CZXVM&6+ZS#-NHRFR~Q8fg1MEG(4LcGQu8SI@uG7g+_bTu36Aewp7 z6csv}V%}TRALb3umF>B;P9c^71c@JD*JQi&g0bx9roUwXE^ypBwiR_b0_sJ|fa|Bb zHR|g^BxQ9ouNI$(9^D_ZV*GD2eOm~9&j6J*I6WpcnUMC>p0HCM!p=(HrlL2RKb)^u zF8M{->BU^tc-VDIz|jL~33JIK(juCT#Vm!ip9{pE!(dP@b=lA~;bnHKIxWe8ZM6hn zfiP%OBf5Bf7A~;V?sUaI?FVRZSZ0FdGoIS!e25ivFd8^+mHJw(3}v+v+O_7G?s;++ z@~66r5y5Y$JtTu5j6|6q5G)%in9ROb9@2liOU4h|z(#44Hojpy3Pd*u^&?`17p4`? zvm3iWcdrkY0+2g^ybU=)_~M4Y?p4t*48V2F-|@~cDj9jp7qC#)NPvBa)FQCzQ>|;2 zVBC*v=(^!SM>1uzVo;t{HoK{uaAqoM;nHkzG_!iI23|AnX2tM_5_m<1CtgMFXZjuG z#{KkF>vC8Hc5{x*d-#&1uwnBn>jMpVo2q-@DSWYBnPWX{khNMrgU*4Z`;7UX(KI;;nsJR$#RV%$ zjkPXBf{C~EO5(;HKD1jP?i33$F~fUy@rbZ$lQ#@-))v9okFuER%zB^XriJ7o(`}fI zj&unaM%qFyiSRpxIq`WMa4|?WnUNTEJtr+K0OrW}B@AL^E#=c8Ldgr)8u%#Ih1qlI z**o zkR2;JLu06!M?AWkd*CX+fYw~~jF-5u(s3aHI)cFtDR{fkg9a3bb z!+0OvafK(v5>HmRsKweulv2@=6F(CZB&xMyQ`ct{lzaSp7YHS=J@T4*WIZb$gO#6M z$tiA%*x3|4P|}+ejC5iO-;e9WXu$l$zVgUok4k0KfrSWejHyQS>j-#$Y_`5lzrjYa z)y~#1@LL)&i=2UdWy!g-{mD|5;SBDNGekRK&mFe7Zg}9>r~f=@@$|Qxq_WKaXq zn+u)ZzDuj5z_2Z@>(;8M?D%1lJD0ni%}&aMFRXP5>s<>h1jv97bOW!zW@lUt)&ncg z-IjU3Z}9YdugUe8tQO~QM~y5xsl_7|QP4{Y6kxXqMusf7h+o+VnlKBCST_%$Yiee0 z#<{L(&yFh8jiI)n4=DOL1B^#0FiaQMp}d)DqIi}v6r3VY3FqShDGuV_3Z*NGYh;m8 z-!oT>-Oeq8z$kUfFJEw!g4X#>@!!?|bU{PCoT1V!ZU}$wIybFA)vU^rc+E9aD2Z1$ z?mR0#{*we_`+3@}TOXjz*dI6L4100;!*kT{Lqxn!5b-mN?aVDVO+}Hs`=H;6V>S;Q z+plEP4kYaOlPUu(s%XQ0RC8NbA3h^=zvew3A;;+JuzpZOYM-;wD5}p{>Mo=9clck< zAFZ|w?%sk~A!Beara;_TxXG)mNGotEdkfLM8pFtKFVZ?ij8`mLtmI{7U1DH;ZA+Ro zkVZsQo9+86z~=P9hl{|auVEC=F%OF7x8X6zN%%61`AXY*hM%kK>n4f8kZ+_lz$JwA z_TNMT3^g0l7erfOhe<^S<#HDzlW~RHB8a1TV)|*lK|DjcN4(EmiUS!DQFVJ3S7`Ac z9)$j=F@FMVT?c9jTxp-`TIj?AUC?(L!YY$_kf)j1b#GZsvcDu1rqe&<=iYYSouTyQ zp#TSgtYld*_wUfG=ut8+oJD1AZPupnOuV3*wuk3aGw7q|AyoiNxZ^+#ELdH>#lO$R zg2DckGxRnQZJl)!77c;AQalw(p@Af8^*2~liPNhM7>NKPtsz5GPzX^b5@vu~e4E_8 zX!1KFqn*8Cb)!|Tv+{`()hNPQ10X37Qy%GpIF2zOrLKu2lngdNRTmbF8|}F?1>PB@ zNaR;|oTX`WtcVk>t5}@}Bo#__tBAWAZKnHZC&{I%mAwKtY=Okzvg79#;qg27gh?`- zP??>0{I#&L#8fmOy-}5LS$||QarFjctRe{a%{77LZ=#|}`H~X5Y^QGnegmJ-0st3? z$*h#?#u{sM3N(GspUs$+w;2*6t_3vh8K0K)Nv%2M&Wk})L&L-4N8Ua4A+f8DbMv3S z5YN5zZ_=%6=SaH>VsY{+$U|FsT< zZ2$C+z{I6Ea5yR$S}x`z2L1e;GA*Ye zDw3x%{O8{v!c)1i$D=p7i`CzT4u3I9W64GnP*HeTSm_5Qmh^4;e#*U4XixV8c>GSU z4T*9y)TeXKuHh+%46yAM_^PQd4JxtFRaL`~cZC~4_76xAVszVuOqoE=V)C{?!Li|_Goo2(`zs*YJn=l%6H341|(PZJ%HaAlKhM#*3zF7B;auA3p3sbD09kGCc{?q zMMmR`vR)q<3A-7TrbH3}vW0HWg(nvO**dDbgJCSm-aj&h z7K>+Q2ZpDj!V`|Ws9KiS&ZPK5W|!_^7J8aFw>>1{R3O<3@gmWMU3>=^c!80okW{?T ztuPGpK4wgIl=Ie*8w9uQVk&M;va8jldOrbtO424;%Al)RWdmRm)x=HhO579$lT{@; z?0iAk!m&fAjm%33JuinltBp%eM<20+G!E#_X0Q+5x3l#o_+{Q7LmS2b{N7lHaqvzo z>I~>v+%5IBT_UCoR>!rmP}wGm`a+|zHS+|fz7N|D*?40l14bnsZ!Vx`32*-UCp`oK z*{`rUTId}ljzH_&xSXepvFs&ck`C;r#$V&A36$o&K&+L~p>9kxne?yOlVqsGfl1@s zB5Hd;`2bE(nBsYWRCg@y#o>IN>SVv5_7}0WJgEifxNG1mN@5vNxQ4xai@F7;R~~;d z$dfSD8<&sGfcp&RbJEktAX*bLyTPSv8m8i`XbHg?StPrGzWspeJc?2_%#4z>)kEow zp#K1Sb_t=eadmpxls~{Tl-VDgZ3rAjaGe$?r0Zx`Dx#w7y9uFVuJCV1)i+QC-%qq! zaC45+-{GzMBJi5ywB5T2mpX?4bvvjUV=-KE;+1pBPI;X&76tnwa2a zVz`WgyUXF}bmL-K7Kn>O|9UwB0;7vI*RM$vN0Q)k|I(pSFTk{tK0#p8C6vOiEdNGB z4E)mDXwUvE8^qQU4hyFS&@mr7s`%yn8M{{>-c#?bmn)7c+>X85-i9-Ea>S(gU9hsY zBo@A0vJKh|Y5xaTl$e-0!`w+>uVy7pPRP_;0UT5A!IjaFkdQe7NY{e%XE;4(UjfE& z{84)ogXLw@%L96+5j|o(iG=667u`zFc@tudU)$`fVwJo3Z^dfh%)|IpSK1-uj@>f; zTn63bvVg|vZMM7Nqvr+#qy*wQl(bt`WRs((;YWrrYVofIN_>^`n_9j_mzoTKr6W2Y z6Z#GP^Xh{PS#h{-8lp7*{*rAAEzVOdL=!K`F6t?nY{7^j-wXlNsMlXfaEo!lEm3jr)0zbPX^f7el!v_8@osE z`c9^y&y65jDZRcxY^31ZkDHC~2%dz&sE4p3w<3NIOSBpQgT_z}u7fnim3&)TqW+@F zTwl_y(K(wvrw0FZ#|HK1yxdA%ERn{h1DhCjnVi|P#dL?wjNV63&R&Haoi7d@2{`t=2AQgy1AweK9F}BXw zul$MluG_pIRco~B?M@NrWuF;esbd2EQm$0T2@E=%YXV>tnyv*rk_@`7A&_ayboqIo zOoYhE4G!=8wrid8E_*d4k#Jf`&~S247FPTer`i?;b{^yE<5o#axb}^OYc?}ZAn_)Q zh36wn-~MQQ?@`$&a}eFR6j;?MJ4?LrGvyRO z)zXX+vFZ31MdfBaLh>)dkN+C&vY9xChEjf!iEvC{2O_9((_hvf`_C4PG0@ngrcJS{ z#U$>)YeSaiZKZ%^uVjb`(i1IOOnRz85UHWIPf}XEAF}sZC#1CIKo=X>h_m+$4xH?$v^9qRp$&B1EKR!+;$%oJ?>1HBBOC@ zk8hX4JGB@-F!2l)_=rw%9FW-(h8BzuPfpU7gclhbI zvfvK(YR$PA1RAgB%zPTE#4R1*2IpRbKO@s)uQKFk*^@XrL8(q^Cd#YpOchtxb}(1E z0pHA^z=U5^m^`;jYNXBbs)|etFGB}>m{xg2bX{=g+Tqc zTm4f9_(BujNag^ao%&|bhMvf!c&vy+ku}gGAjo70T8_}xJRA_G=w5y8tqCMHg z#`lLefvCac7hasA=_{iDI7%6r4qM2)wmv_pc{T`%UJjSAOr8UogGjpzZkP5H4WnV5 zp(UBiQAd;Mk;j1vn)r9m)~np;LnKlancfpVtM%yu4!&&I^$7XV{@0{Hn)KnZX6pr3 za(px_v&}6mXNeUEG4EwhP0TcAYegusz67Q5(o!v;-q5{X6m28bU1AQ=J0=0YFee87 z5w*^Fj+Nf8FQ|LJ@m)1^gu0<-=;{S>*k3)~mb@+jx~gyc*|TMeNO6$f?N?s%8uo)d z74lL2vU6X39e63>!FC5S$pd0fkp2*2wLAyF*yivy>45-Q1`ugl82(jtkK&1pId7*{ z;>0cSqm(pj&+kS*)BLjc3zE4U2;;~pxw%gOg%P~|oTBRs63ZcNQ2L5MKN|Zc27urV z6XbdmXy&D`d#B6}PPOzM%|if+6Vudh2m9Np|Q{8d6Lyw zPNTGOaA5LZ4CGqNG6ho%ba0M z+<}P{Uhw2I29HKA%s1WemDP40x7vOZE6an6rq{2E!HtKWqXjb2>r|7%IH?rQ;<<>4 z^Xn|BQ`cfDlebqkfG`G!sMnrk$|gHi+C~vt;wCN~t*P*)ml8?0_D8Zva<{U04-?vR zCjv+p!#`jEuvu}$cb0Zj?V(DN=ZeViNFCW$sJ6KDeTBc2he67T>jh(puHX}pi><;R zgNhyBDJJ=yYHSvVR)p&ved$y}^i69n9^}AZrYYE*xfj6MDBQSDG+u8tC`k*8JplY- z%pqXIdEnpU7Ll&6xUmH>uhK#A7sUuH_E(3nxZ_b5d-Nhng7yPi`08O$ zI~@Q5K>feBZ^-$NE`7we#SXR}+mH5Pq>Q?pSNXZUQ78m5HCpG*?O+Rs^kB2+;|;4N zt_{P${CxMTpb(iK1LAT%eMbE-MxGV)l$2*~Njq@EOow_7z${CxT+A%->9qE8S*Y0vG7`6*3#`3Zm2G$faAjUK9P8WL^rS6-5Tc_k19!&|7=T06*P>8r3V;e-L7;_t>OIPQK(fd6?Qn+V#%-s;ZDuRsm=hcI*Dis4kk6R7F`Q^@s4|7 zX8~QlPRKT8(D#w}qxV-+tJ3a{MKiiOfH=v!$9 z;XbyEQ%p=%nt*$&xOv+vH)QJ_@}p#Khl-U;i};$js&4gI_>0f_TMp!+Q}`Ydz0EJF z#EcVIWhlc30bCX@K+bHS42E8d+CHo~xkQEf&N<7Xd^=ez+ZR2kn5b!-~f z!dh4Ht#g2d8F+IT6*_OqsL-;xDOT$7U1lYrPG%y z7JO$fhEq4iiSlZQGGGBeLha?}O#9SE*K1Cn6GpI|1Q%k$0Xu8AB;I%mfcp_@uBt-t~bG0P0rdQ5|?1AsBOrzzaZj1F&n1|<`BSFADV;W zy0RD7Y;$qYW$!;Z-8v^D0#lC~rLc{U%(bz_rnv$)C1${TJ`zk0_}9oXFOIrn^uLjqmAoG$^)2HGI-6ctccE})Um=5^3`0G{d3prF=>TZeW-a0( zLfiw4+E*G9TC)R^KX{dZtZ+2y*5=u(lCYgwkig2mEEO=rw#8#40JyC(+s_USSPX{o z+oq9syN~!%Dj#>0`L(D-DNhzcN;=WIP|jesBLhTtJd|wFY=!_D3f^={Scwd7 z{h9Iq%K99?!5_)LgTKC^(+KUT75(##T5{=RfU?aOboj+mX=)pZRX%dO#W$IkYQJYB zC7_+T0D4(RZ+pwqGVPv~&Nk!NEzp{N%q}@K{X#qjdHjKEQRS3JSVHxBh0E^T_ zhCA?|!A<2EH{Hf11MuB$RpnJY0k;_HdvK~I457I%XL)Mwv5Nd2G&LMx=5VmN`;0xW zT$`}G)CMM78`~HJVf>6Ek#Cdy%l@tdthj@#1BFAOz$;RYoRP)Q3nzQ9y_H?N{vox> znocFqk(*dpGGd>!Zb`p%VA*PqKzL8y;?v^7h2l+vB`hG1fZ7v!@2ZB7W_d zGJQ)L$1Bo5KcS~6x)7v&tbFk``*a|dzD$+LUc}s*FmW;b9MDmGrBtV#J}kSyxZbvbC&cO4sreJZUbLaY2{RNU{w$0fYs(a{Eq&-uo|!N2bqH9? zV`Sqwes;q78C5?RUA->kb%t*_itnD=z~FOQl6clYnMc7kD&2Gol`Ku|tbjv-`C9w7 zoyy1Ud9!g@r={xsb_t`LT$<}JFan#+LlpQ`CWCe5{5V%u;hYw zA0c=c+VNP#(CA1Im@jM-;;v~x7LFou_ENtRogMFJ;udZGbpfAP(ZhfgB5pu z#2obWo^4vG84<{aAn|nAc}L~23>wkv8xyu5j1rF|I0V8Iw-E#Z0koB(P)7ninGr3A zU6&AFZ&>9PSZkKtkg!|%5pD0h0kA(@`U93O`&+<#rO2-ToN2so1TjZ?&0&5YtxVaj~jdhF}^z*c?q znGrsfuqM93fz^+isUh`mEwn?45Sufx_?oeAuZ`Y8;{4itk}F8P{n+VIs`|+l-kaq)7!2cU}aaDXqYWx z2-eAQD-4?@-XS7r?0lV8d+gZHm7=vusDz7JHbydEIZCaWW5k+(4TP3iD*fZD259gj zXRC1n_swJT&9^FOtWq)tne6nM@*YfzG2G;!tqJR+ayhFpjz8 zPbR;@o@l|!fXiPLfv;)U(QvvZ$@(pDIX&1}>}6z$5!xQOrfA4x1E5^s|C&qb*yTwt z0CzsLLnEcQfOYICqUxc(U_oly7zAde3yI@I6fFfbm+6rDNGqDRUs&;`KwWlblvb(g zt%^4OX@zSKRrPq-K@TR~kpUPpA@mE|C`vD6az@`%R@X7{!~R-O=e+L>v(sH zk?L|-aZEano)X>1v1v^6Lna?Iu)m3&2%rBZ<;0(|4M( zUKJI-BNYeJf4EGzK0a07)~gI2Y|KXDctug}lC;m@E@H~K--SmtKY&f>+d4=LDg}qA za*-h|0}na~!P=>iNOHtBBreAVBZ`fU7aJ-~9Cq=aClh;&+kNb2L7qZ*mwBN}$lACR zoA~HEW#aKOB01wszBNdC?v*7Q)mDLF?sVK7D=h z%8OcrpvUeU{Z0ZWc9mk1`e{?6ysu(;$n*pczJ~w-1j)lPz2c=t}hG zBTo3ls}Pjd@s)<0=E<;v7%g}YQD$J~vuMHWMRxNxnEANhn7}h;>>McSvN)T)?tSXd zGb5!YIa||Al#-1c{|yZ5V-1e$ThS>mgG%YX0|1ROMirf}*<=edeyJ+PDoMRG98G5v zc;q1IPsd5!0hbvabZvhunq-bCY;*TB&y-=T-@GO?9IS?9rMB@CpfHzcntRlYZA@?#}4$@<45;n)eM6y z5Tm+hXp>@-*v@!Kihok*Vjr;Z5$2{|HeIh!mqKL0>i^gexJ^&but z%3#s{)F$u2BeK3N(y?rIcP~fiKR3@y=iWKG;W%)Q{P+XCc@B2MRq^jT(R^F#o4QJ> zX3op*QqOfF3eX-QmPV{V@2Y#_5j%C2Be6NAD|n){%r)jm!)3Hl-{Qo|$%aymCz8B=K5ovl${ zc0$g%DlgMy|J%8Y7Cs-9Zdb!>OWk7d#yB|j5~Qq*gKuA3LGdjejN=6I^{cx8&^daW zps)i=C34q>r)Mca_tCt*PT&2avceq5eq&qm$recPnYUoa3r}-8b|Ef*h5S`qOl6X6 ztzvZ4Yed4F)}y$DWZ6h1%C}*Zi`PxicCBaBp|k*WU!7ldB&K zzIwlT(sv?!37aYwhbyj2YinSt=KQ4)VP6g~T7f>pt#H!WL`yte#w-oTIqr8&xKz=o z7vedfFOnM&*>i>#urzVGB*DmcvHFBQ2qxUn9{B>dt5ptZKV6b_Ud0MqJL!ZR*d4jf z$w9F}1dYHWi!@)xFgw4tv|%zDuLb@WVA&8&th_EU$6 zc3xf1fp8biJE~&Gx3{x#LlO6|j+sCn5Xj`TE5wuu@@A&C zqRM41VP|+Hs+qWfg-xphdD+Gp^91oC%aardCq_1d-g!X%{OXaUTAhc_u3v~Hgp4}ijD%3$g|2ebD z!b)yh!9v-Ozc+bpJ<#TjmJIDBn0JZ1{+))ynr(T6l5I4IlA61S$vI=MmG#09lTjg!tOHF zkxu)FAB3kISd#N05P(#l@8gBFtcSWrixqs@W^j5yM&`OZzc}tV_hgh@CAabCFIrdGMhi}L6T3ioskS;kEV6)35>zHg*97F7kMYRU}>ZoPr1$ljq?VOZt z6F@#S-ey{OzftTgPKen*fMc7TTBK4q#Nt<~cHicla9sCejV$k4k<5r<%&D&r-DWzPA>HB-A(bozv5kSi%? z>{+_5nK+;Ggh`2LeM5}#qbuk-1ca1-zTB6)YNYk}N3qJ?q|3SJAl6%IDfCDJNg@}5 zP#0eGE?(2~)P}2K(zd^I{%3dF^Z}JSx>Oem?MGy8Ix58GlXI!sS9?hllc(vf8)J;2 z;-!G33xv(YiL|-c+2KWx$=e-x2{&nVv`Z%BiPN)R^?JzQY;W_^Xwq30jjV&L6~{PU z$*PX)Ti8^y!7){&U^lzOYKm^PX@)`7Bbo1n{gnj>x_lyfT}tz0#p29ag1C`kU>6n4 zPYEdsiVl3+b@RDie}P2fOX@*&a?F1#t{~c?R|u(P^pCiUk{t3vN4^4}qd&Lz`?|Rj z0nTZ7ADo+vI_v8UIa#WCVKF92(Zqj`NCEREXR2kJsXrj0ls;a%f7;B7D2c`EY`GDr zf9m^dt|I}ZOiWK3DX;2MR+GA$f1~A!kh`p+d?p~=%v3V-q=+|X5Er%7(1*n5ydNf};g@vDp{}R^OJ0FeNKg@WbytGg|J0M)pSq{2 z&%&x8drI_v^mz9A-dFU?^|LdP7HPJD_Fz{>^+!ooSr(?kRH-p-b_^8sdum)g-qsu| zY1I*-gtgK&A~|1`gXpB=@7+4dakowryXDY(%Z4Rs=RoLT1v+q2v;eHRzJh~pTu4Vi z3`#N^^u*Gnx7vyNUukQP!Osfb@Lx~6++byR1$dCn>wn*4mG%$H{!0sDgzK|SzP$=- z$)ufq28FXHl-%RN{NBrzxJN50JGkN6;1iemXKwgwFc@YoD)0>>2j0o_KUOY-T(2L* zB<&LZh6`vc3bN3{&*HSI3B<>oPmdu9&1MD6fe^H!I1zH808RSxiqE`eEWYX|#dK`N z-2Mo5X?ko&>irc9`)2h6HgX!$!~O;W0z`J(Co8M9W+PmjZBpQ31b8`MPGx1&O4xq2 zm;o+61I}rI%lvBCVUh$Z-cFyF&&n>PI&>oAzz=B+IMzi1v;E-!()Bcharr?VVtEQR zzS1>4mdJp;iv*Jmc$<>!r0koj7#fu=!|4`d<&l`+8z~y39%V^QAV6upZ?g1Ry-<2+ zljBO}1Fuy8TZ@RG9Sopn6ziuJvYv)XQXT$ADQq;wDD57V+g4n`F3g|q|CHY+`5tKu z7h%^z5Wa4{p)kvv68myktcG%vfJVW;D-YUQtAb>xdbu;G&O7ldziJpk7@R{;-t_t1 z&)b&-m;FLGvJSH*Rohhs{RDjBRM%`u!Big~_ab*f z8&uD9%X#Nd_akw^xr*A=BjktPG6I_*e0PL7W#0M7>+9_{B?%_xN1NfdTpVjfk2Bt? zcqWc4eR>WiIcfr9|Nac*e%FF~zhl#8G|%2ABOuGsq=uwHLT|&69V0^#eT1k*TP@Oe zRaO5t1m;H>WmLy*mJ1@VlzC#dVE3s_0sm+G$Os!FapbP}Ig&dtEy-loKh+$=#D51J z;FO#e49b%JsHkndLR`Dg1fcK(o1)D*gtlhvqXKS4P_-*JRHzBwDhYeuPj+t{<1hRJ z&O;#_K>OWCQ6j?4D0Wx5R?>1N)Xmu`tZ`u%`OM&>nXwW=%_{4D9sNJYamJ#~#!va& z#jbep0XUSC_@VzTZVg&F+c6~X%qL(QeSwt>dCz^UW6osHGI%Nl#znAK=NzHm5^lSIa}26OpcyNf z04Qd8+HqrTdwNEB4#~THSr8+)`B3aCBuZg=bMz$DH|Iz=c@@Z)%9TVN!l-Y7DPh4F zt>8oz|8EeX&OmrJQUs&bLj0zyQ_gr=(#m)VXb-ByohjeIbVVWz_rNRB+#Mfi{U%KO zv~~}|a6j#fr4o7;++*fG4Cn6hQGkL;R@UR%-qJFf2bLd$)^O*a79CTH9Q?LdRVz3~ zZ236(MzeSMY`a>cId;*sAJ;PS%psF-BxlJDLp5%~A&7+WbS2v)miCc|{V#N0TEGeW z0Glz8uG0N6cH^@A^);Fy<6mFv``F_s5O(V!qGOTbY?Cwo=K4{m@>p5=xAUHCd!ysd7XjH+%KSh&}E*z%5vK7ol8L8<2 zUQ&7<|I@8I^21sYX8SfxDvms+iti^85Bad`&2z;umwM85eCGqHe%2}G1&)}CIFL`% zPB;M>tHI%d5*U5b(1HzScf%*WWHOzlebO|TPf*_+!I7(6DDBIE?aMz)+dDKpct}FV9r^>X^!xdZSxV9HR;8$BgZS-E zz?A4=yRdWk*43$^@2Dk_iGjg6_w_A_J=`v{hrOVqVJ3bef(1XUjUymlDLE4>g?z^0 z?1RS;EkEcoo5Z}OF=y`FOrZ}A4(dCeZue)9Jl}8US1%Yf`X!{w0sIo2$9g+ zgs<3_ok8z-nPVh@d)}SRgw4*%$ye3ktw#ck)7jn)@3a8!Y66Z}sdQWqt-;EhmX;sT z$?+UzW^4cN3LN8%S~-pHJGUk<9|4L0wmu!59P7DU>CXoD)x+S&Lw**}30D5^W+A#q zsbgvZ#kb&?5gv|di1BVj=VDc`^!E*vqDGx=}n2fgOQ{J?fvoQ0)PYS6UQ4l>^oD_ zbchaCiw#`TC^LAf{cZL3U81-eAxVt6Oeb=7Re6eahD|ww=9NcYj)H%xd&t3{mej5d zq{dxO7kA&7JT&E_cwPlqkZKNXS)Go?#8NqSFH>!Jtr@j%XK);pCB`{mM7QS1qZovb z^)o}51vzDD{8Blcb=z?#81Nuvl3&WV2ODZ~NuBv!$u*E zL*I|dh5B!00B2cxWH}0X`n(N)EE1||E);{ZC78Ei^AUPfEVu|RIBR!P>JmB~>@Zj6=aamog0L#L`-L3x z=KC8y`76fn+YY&eHYOR!V`|vGwclt8BUgem~zlSc!Ck!{qS; z(fF|bLb)?)y-{?b#TG19RrYD*?9i%k*q`$Q{l^IXKc_I0B4?wkVPaZsI+e7uQGkyMUmu#u?)_0XbGD9Lc zAQLC@Hn9k~tv$qs)1`=l-|E{k6YVrv&!IcHItB*0ncKES@H%>Ug;+xP8|dBx&iU}* zNXBoRh0LxT{=8*MMnCf(ZW5R~jigdP@zjg_kVpMwF0&?EDJ0cFmKBNX7b53$ok6}@ zkSbkF!^>gfk#zvaMsrCZDv^lgAwECZjrUX#Af$}G2Oe0|(1*=QwZ{%ufi>W}q?iG? z(FmM;f%qFNL%nBhgHnT+)T5~VO!4cZCrW7Zs|t&MkvyJen5f)gs#`KzJ`H(*GnY^@ zsTY{&arImg75Sz#rM+2C)A1O5;rn=3vv9$C41t4L86bIsskVAA4)n+#{3Wbo+U-Z- z*sg&k0+nwC)@D_LYNsGK=|2T#ytXLw)z=gg4Q|eZ@~uqA2o;bgDCG@`2P7!VuJ%&W z=mB?>k^xF4r+2%*9PBd^fTc&Fz(<1k%fh;ILSN`Rh75&`*kAgXX4ONrkh(#->7ugZ zM7=Eo*y8MCMh{#Mt>Ir`GbS9br6tWtWpRj5c{G35?y7gvkU$AGl_&%JB|a?z!*N6L zsy0|&%qO3gb8w4*rNQ}e6~67v<)!~7a2M>Zuvb7WK`scWWVXf^;0-X`e@GRy!1VWa zE!cW)GuOt|1~h4c%C9DSLtaW#e3-IRCeyFquc`CvS(1wH?P*MKy$S*!^Yf@pIW$(C z7ovEC)#zT55G@j``g(Gli1@Z6Vy&ja;}~S?gQE%F`R0G_q(Tf42A)`MRudzghHxY@ zG$~lF2B;b`!Pc%8yD>1cO-zOmVBVELL?J@N2{du*&TEfWpH{ylCfALJIRvC0A#^v| zoP;%sKKFmA8V-)t`LFWJWd{0?#P*Xqeyt?Mtvol8(n$>Os2M15*HbF#fR6VNLyVjI zMF>?TBXmTd)xn^ITTt7e;EMQqQe*;Ln^7e9h|V=iW5xvv01SGa4H|+gJ&+X--*R2l zb5o$aLVq4+>PcJ%>d3@D2TW?avL{l`{amI@;6vY7Hu}2d0^@idG ztVA7ce}62TSLExO>9qx~NrbVMOTRhm?4|-aF2j85ShFB;Cp$R~rt@wt@|<@MpmB6~ z5^GEw*3I@BQlh}~QByv^Rns0({+{yLGG1hC=~?ajN23vZ5tG3u_K1>*@;&+vZ$O@8 zckzpjA=Tv2C@A52-wAYsms2BhAsFrd`Opr&B_jrw;lW z>pnZ9!w!)PpycJqtrF!-T@mIcTh|IBBn>A>I|5q$p7{+Env!n&M1DG@EwG^}S3KDT zQ-Cxb{8jTQ(~zR-IsFzG2q}C1XNtLwq`sPZyQx0-P zaOX;%)-9^Z#Spp@hvz8=lrPPUraTmYEXV!T=ez^O21WECXys_QyxfU>hA}45+>tY@ zXi=305JfmEk%P3n5&~m&!9ex=gRd)0opSNSS`OP7GHYUzcI=ydz|}GEhUig|%FxQN zoj-O(?et%gFSNs2Kt6Lf4>}}0FM|MqlR{@=Eoap852C>oEisqVys}c;=DydZ&~d;7 zSFNrXJOWjkCPI*R3<6Y6QyzeN&Qz`it~euHq`U~|{YE0}bJ%Og+JSXD9{}@b0SdVx zx-lC`PA+J_X?tv0Ca)?PF8>t zhSy*UWO1G?G?nD^$X9on2fn}Z#7e>#Frreb&JUp}oI7M)2y?81wW(vUgets4 z9ZBQL6^V@dL}y}XbFjy$wHK?-)C5TLb+rUd`xf@mWPxD`c7F+u=BgLXdph2!c_ppE z%3mzVLtL|B1xZMt_iq65nPtImf;k$|5Ps%@IK_}je=PIDUCJ|^`H=5mrD-N5&(wC4 z9Q8b#nfl*G=me^8(0HB3e4RmNAioYdlF*Hxk?#A?vq+7_e#NDU9!yif2U5aeEE~++ zTW)VBm9xF1abAR!Uz-FW=MpBiZx+7(wUha!sKhSTBg?$6F^~CFFmwbU{M6z1+i4~72OmH{<9PY-~$u|E1oJ!Bn!5+Pr z6xuQ&#}HU7S@XbLr|BKCf>iO?CXcvSXsH%GXqN0JY8el*wVe;K0hQBS4E)$4s^F+I zgBU|rRU>F7nYXM?h$;kQ)CIgUBA8hA>%`fByLZ;cpjBn+Xo&_kFZ4OVW$&#_fH4$f zvN_WfGq$o*{}`H-F!#rrILG<iB(=goxe&yw#MlNZ zTD4{9Jk{*~YVs8}(ydA3&`T!KyMpw&TnQ&V3lZ5&IsS51 zIsMVTZfys|5l#s;T(Wc8UNVdE|D3w21KemdyZ}@gSl`p%n*KCk^k-`SDo(T?$ zcp*cjX;`&>+NBY(ASaFYz6E8(&-QKCR(YLr-yK%hp&lkn4hCJKKM^Z>e-9g<1kNMP zHX`HNp!*6#==pzOia&uY~;3!ciw2qqZa5M_!nEn-Xo?(&A@q(*0a zdm3QRV8X-laNZ(`(QGx~7I=LL2LBZ_a4~;TNGCVNQuF-+pgSRiR5kj8Y1#oK00+xb zoI2;|xwhK8$5_0bVlpqG4=&!?HCe-l*gIb&ESjJ&C+Pv=R(oWJp#oOyHb1?3SNuDcWg$N>MJ+ieqiJp zMJ*+~oZ|p1ShFc8WmMrWI}p}cF7!|_b8e7VxS@?|p7t6h_PJtF(3eDk5QfLE*?qgm zoH=fTqzlw>dv|VaO)k!3$!;3bI7zr%TEFn(qIm-;IfNg|mwEO=$T&xoicoga(AMS2 zy(7Zr@9Q~m5$|UT*+fJ*@}ldRgGgul=q+iDeKDGI?u=vhup)M1Sr+R?8Nb|cT!_=g z9L3#7?(eqbVWa2)W^rd#s;6j1A23X?d!e&5`K76&kidX4gKWfehuZ2d_1Cr&nB!H% z=$Gi_uAq0Uy35mnm-`M>y&}rl3&8L?T=cU|-r3{s3|y}GVQwbEPYy6jz^7CB{Y1S3 zN2O(Ht1SK?xsW0k(G*1yu$s%v6w=tA?|wbdodRP&xNJwOs6#A0jQ{&*V!kdv%?j$+b}usQ z(K2R9lf$opWu}_VY9Smst)dF^8#;+{*#UZbe4mDM)+)p-pIUX4N*x;j&7Vw`jt8l4 zXEo5_+baSmA5Du?@zcody5-dq|f(wn>#!cnK-lx4b3K9vyzJu}Coiu@6Tu0rx_ zK$hD|lgL%u(N73xxE44ZUOLanXSr{6(4hcpIsyOn5E6*xTbRPpE`y}0zCKz^8z@AI z6*{pD!Ea$TpyH$$2pzu~uKSw|=+!!N*wWW*77X(Q$R3DsaXM@B&T(UW=X|cXWE8|t`gHkH{x^ft#<}YPV!

B3vCeeG^<`U8TFAWBK7(djE2|9uX4C6X-dfrmaKSks1Pt?Nb=eh z@%+b8dv-}N#UFwj|Io+WJ`CLSN&k!D(pA?TD?FD(3K3gMG1*EhFh;Risr-EmH0JPL zq$mq_T4s`&xogXFa7TR;KNbq5a`dH~VpUUOT$Y195{Wu*)Keg|bF#KV4SdY9PHri~wyIlK+)&U+i_+6EIosSiN?JApiyy1SLSWFs zO+oWtSAlT8S@f)L@KOM4d(7@87KF)+>o!d^LK6RS!eM`cNpt6Ouu#n(V4C#rew*bm z1IYR+84|%;X&5QBzKC*i6yX|O9^t;!mMTAupR!&9$X56&97HpH%*rhM)X$}Dv88Wr z8B|=8orJ#7lPfu&{k40_xZb&(V?03h*+h$EQ=;a7^-s!l+c!f#T1`*m{23+jkW6@4 zvjy>W_Iyacz_QwolIzj+mI~&8jRExC>}Bt?{cCQ>U+CI)65#WS(l)z*&tv78Kb^>2 zB};I>T$03yN?pJ^SI~Z5)E&=fUb(?r#f(+X&U}H)^m=+7nE01o(MjC8{*ovO!8lvc zT}}j{S^__+DP5sMQ;^aY;l$>rs3n}D5rL<{im@*1e|AZJ-gjYta&*e0l&MT2_-(ihoA%jZbHnx9Qgw*o_fd&Bp!VP7wwq|JkS_u41C^pwtk zH#O!sOPC4mAfgRk6i020vE*c6Ia`ysWc|(dhrEEf-4OBzX-<8Zel?;p)IVVDn6lCf&s74}8=^zroZKY1mMuY86ykGCy4 z_?t(ZQaXs}cEDXxxK?r&NU^Dk=wG=eORjE0ocB2~?FBiDJm;jiN>kSDo@dN0bQU3o z1){SdMXQ4Z49XfZa<-sLhHQ*!PCP;6=nf}Gh}&0-$(-c)z#6~CgHW@u=Kzgz+z|Dy zigFcOb`Vi=P`FM%%RIHbZS9T1a!yo&!-Ep8w1k9BGEj|n{I zoSrQZR%^^I){`!;e%R)+iiXp+N>D-JAI z8d<%jQ3~E)BRSfviAv4GUc|%Q%On}=kK|rp);KDLmUOdGs^5ZN{3X1Q9Adb!aMNQ^ zNU*5xW&-5@q1Ef1jz)<6IAs~cI<+WK%O>GTIu2)x1(0s{gqH8hf+U;Yr07Nbv4tAA znCo8ak2}b#fjK)B91&*%9_G3anI*L#HQN%X^WVGUY?U~fc0O!SSTe|B@?m2Fy&>Ch zmk%k9ytii)KXZ58Ulm+d-0L{}Q=`#$c)3{6lsIZiGLgxGZum^g7ju!@O=KZEyPFlY zqrAb!xmf3hMMZqug!BK>x=^U+6CWCPYLWU8Xf62voPb6>>qb>Gb9k=m6%}#ych|PddrMR3Ka*=#qri6tLaQn|X>Lhj}lsdU{ zI&lmol9g;!Ut%01^#!~~!y^03e_9LgH&2899u(u%x1|86S|l1I`hGz?0)Af7rrTum zl2OrGw2Wd;&T#L!X-)R?Dkn{OXLXp@KVz6A*GsVHX&L=p;R#fak;X4C&oYM71XwG z=}a+;ez!J9?Im+IpyNL7&zb7!LI-y|ZqSsCmmFf@07&D-B;BvUn;)$fW}f4O3=KQE zm87iKD~rRq3BRARF>04>vK&iuS+GA6x+@5C={nfT3=W~}`bLQRc|>AJ0?KFf2XSj` zwk5jp2rSNCCFFB{buck=y5?aPy%^))_2YLR9DN5`$=jXi2Nh%wvM=zeSooz`K(CGNVa#=u zb?(2v9UALn8a|g)GzBfRD~}@2Mp5{*XB4%o^6pmlv*^OzJ%2S)tqjq?MYDu)rbW); z*P7{uPC`eO-$4CGZz;#TxfW?7hWS1jp=w<)}po6dI*1a&0`lFqo%^uh{x%skwZ zw$Y!hA#69b?W6#@{$-10y&L^`_5#`R8^9DWyU3zWL4ay-{%zf^E*}9amqmd>cphXt z?|z!%0B~g`f_I2qG}oo$3;o`%x`-VWVYmhLY9@qZzE8;Y91*w~-d>sJbTK7&y&}gH zk3001?oqvokRH#jI$9#3zBmE&!2yV^xdKkZm18xYoskm}9T3S5;$;Q{1H}t~7{NM< z^a3FlIWWAFuu)YKPxcP$iYUI@Y$7zPX393=STX?Tt& z&BH+$MA?LX-^6?Vv)Nrn&-Z4~IvKVkwF<2jTt3=~R^)tA{d5lMsuu&`p!;B)AIcJ!=e&*zq*YQ2f`WSNhIPrETT}J&7&K!MfN?ci+Ooy(@X3YpMU>{4SpK;z6;Apc;U zhybS=WgiBtpNKn$@$DkU4Cl38fRs1Yw#G3Dr%2wE(J7Bwzy?X9CpV1Khe^y3R=HL=zUS=s!}7Kt*tS7EWyD&#V?~^R zA~F{u-x%l&m@e}3^eoO({K|T`qPQ12K`(N?oKEfFI9l52cGk`i|7&u6j32WznU|9< z_ehIC!s+XX#>+cD1$`-o%iiJ(}{u;OE-nAbG#^vK=pd zYaR&*c6*XK9d8RlvT)QsbggoAOdi+MmDIj2NGQHg)z;jMwZsan{){<=pkgFI4;u*8 zocSutUqUL76P3c~Bj@{XPbFzjH=rZ3jF~kg4@YtPFZWXvO+|sM5Un>v5*Zj#vO3mu zw}G+R_JYX0(ZE!l^GlX2EzA<^e1EL|MYl7CvajcKB_Cc^6n49EFnEZoQdESYnAH^t zl5Vf#LI%ZsE1fua=)~FZ#`3ZCs?ZRz4~_o+;8N>xX8#Zka3Am6;*ABr-&m8Db_L1~ z01w~)^puWznq1P1D!th?YrdEU7Aoz5y8f7NBNL*26p<{Y<^EY|O#S(zUqX?t71JmN zs1F=YNK$^*0oLf^1{|D(VeTG==jWhp4_K1UYZ%{MeI2V4-z*?x@ihvej zgLk=>Xgt*ZL{3vAhNBkn+)D9(N`rVkl}*GYwEsIR#12&!JFaTxDDkWfScVd2(5LH} zWz7Iwc+SjWe`MCTRrdkm@S;LK*CEU1gFca^4*1ZI>HCZV%n%p(;vWB3s^&iD_I{z3 z+8)l_dG$dpQO$d6gK)Y}TvNp+b$iiLxNO;M-#d{~!lqHNX;|r3{U!}LP1%pWpa;EV zceN$6^!pHN{XxkZvJiAyC(2GhuCOe5D(6z{m#vD!YV}1GLTCNww_fT>X&}Avt|-Mn zUSWG%;g)^cn{iDS1hvMl)aMng${^rwrU5O^nzWyC%E5k-hHg5*(tqS)EYz7;pQ{`n4t@a)Gp|ZnH!(@#=jek-u-lWA{C+^he6NYafDvKg$%7d6D zFZto%>Ju&9Kp!C|KJuf7Yb)4kF32A5e4ZIGin^D2Nd%B7oTn6X$v2d(nMr-p+Akfv z-T0`>>h_%fB7W|YxTAh-kN<$|g`-VxwI0iu5tsQYTFk#U-8G1kjlCs_@0K=l?r-we zEb~{yc7XQo4aX4w!bugRWS`qdFz;|8?nx;(q>jWbmpl6ASrTPllP`?&`#0j*rN}&F zqOe(bf8PX=b%Kwq$2`Bj)JCq1XZi>mkEVc1PFdpFb`XYM$ZxZrYZecAS0r7Yqe9AB zc8Sm=x%wjXU^D`qCUTcW&B1sX(q=f$I+?22Ic#7^0;|KU79gTqXhmXgxNoncdH~i% zaB`X>gG%ppj-9qa%uhHfq$7XrQla2Hy?V8}1rT71t8kxC*1Z93>Vo(bYwFQ1A^8V) zKYiE~x`!jFI$SPSpaB0r0Kg{P0$csrlm_sIySvW0!sQ-y)HT%;CD&N?n#aLF+5?bW zk=X8ZT;IE9wR+H)l*W%Iup@S73whIKw!0`aYf2Tec~Zw4`oYPOf;ny3{MD~ZT^NER zVvK|zh5kJvGVS+LVpdKfSb=Z5ci*mUGS_{XK)>ct1cftt1c)8ANI7zt(T^M0WvtR~ za>742!MX6H4KJ*OWsjAZlDg03{WOwBdMuCUOEf@k_Z;(`J>$@?V=lqlt#e$6qp<$9 zA_>)e_EB;3$*(E&{yR`V!sH;b&e>cJ;}+0^S2~k(2Ge3UIh|4bPN) zEBV!;?sWW|#+1?yv;ZugTEoI3lG>ewyQv|-d^#LEc^Ihp1!87k)KZXI=*E=Q&69SO zs5JRUgOyMHv8|IcLApj&M5!eW0={237I6L13(Zg_RX7wMP*T0Y@m%(r{%Bmi4WX}< zT^mTu0ZPVslc^HxjAj9atB`5WGxLOlaT zAfwKtIDbW)3u(?#KXvj)P_YZEAA7hxu5wlT$gf89Ay>^&7aw0OG+FzmvcQ+^vWV!# z4ofgYJmfXN+=69|1%9FvoehKh0y7Z0aynO~3EdE?ydov}U)}dsVX~u=>R{RTk~NxE zNx_M@Q}~l7)u&U^RnoE=*@Eha0#$aTXGoK;7(jeeBQK!>akeDg?H`Fr;p(QoDIvJ; z)8E>^BV;}m&Fr%s4aQm1)eHM5vpI{R;Y72BF2UI8<~U?S9u6LsD5|={QrfT94R!LZ zV+c@U!0iN?jK;6Ho8RT5xkd5gF+(W8Fj6n+qsb1pl7be$trC!|3$~6DD3G|ko=kqj zK`60;8EkxR>+dmC^L!sJdbKLn2x9>R+`Aplk&!&03GLI?yL)#j*o9;4>i1iF(Rwk& z4jIMgha7bR{ORF{9afW^v#k#pQ|hnZ&*p`q@A|JVAtx%yQ?5{?YpGTI%}e3z;RxGV zp5DKI4&$yrO0)1|WOi>(XCB1UtYm`bf!_BYP@up#dViF|GENI}&pU<|9qyfgGTDql zTVP#o{shIC0jY$fb($}!P67K5n?*o16~gV(3}`Z&xQOKja9SNH)(vd5P`sJ- zckLbP`R3r__t*KtpE(=P_4qC>(X59h3Ry(XfB$9&(t6PZ)l_xCC`p=IZK;Ovsr^36 z?P8S0jZ!fB^WFPzd!nF_%m*fuQmU`GUi- zX`-kJBr>chaRiv%b1_R~iK;+k0P-SW#`EU?M?jO6}ZyQ3b~ zNUaYcoOT?^x`#@@C_m#+h-9bWGGe99OGuZ&s8Wc}&p7LwBU@JEZP(bY&_aF%#?*Pf zq7pQ;%JG$cwiwpLdSCWf0d3*r{?zIUn5z3NWg24EH?jqR!QO_KU595E1M0@KB3TpTY^*`jk^kX4ui z(~!^!uY{q^z6T91a6GNJW@PBJzIAvAIV?~1-4P`|ZUD`uN3P)%LVrFCjEW8W-k=pg zbd(|r(-SRR{tNbMZ^%Ca5XVF(rV_7-44et9cBc$K@w}L(7kJ9U7Bq3oT=nd$e|4Q- zQ9{_^ulIzyR6(6|z%^15{nm z+aYPD9kHF|6;8lfBEVNKz01%>a3?k1&X=m*GUYwJZNgcc7NlSJ6=rDFn*zs6)ENAq zV>u4Hxh=!pnCEF^5Qr+YZ_x~gO>M%g3;%~wPFDYtQEAQd(~pJM>2l-rLBWq!K8OprCfox z%CFn-%mAZMUPHc~l!`PTii2?mm zVu}fE{QC<>*?vCedxol?**ULyhs~Ir(3AUf5C89cw_o&QXKt8)7-xb~;q?Im7W$D6 zYi)@OW!i=XZ>P1=jIjJu$%$0j?o3JBn-4_U?CPsT4J_)pCsa%)G6&F~^En}^t2I`I z7DTu#ow?dUUE0PmCVpu@Fr(LX^vObI$J}!V@&FdtNXD3z9YSceHv#%AGmg;aG!v z>OP2FI7gK(<;%EXA!);r;%AM%OCKG%X4m#az*(iP8Fl}O2S3av{>nhXKx$31?6%x) zx!Bz$Bhl-uHxr2HbP@7w%BK`ovD_I_xEIl;4)l45&9~;YnTG;8XOJ#*v&hT9%1~cv zjeta!N!_Ub{$M?Fj1m(Fc~o&DRh-Q#7Nq4WUi2Ko^xvjCfl#QwsEb1;pLty5MY(@S zG-Wl6rfGpF7IeAcn;4@lt~LjYdBI5(tg*3biE?4hI#l)u!d^Qk@#k7p6E#);8q|mF z&j;ji+%Ir&0wqxfK?#OQ&wq5~w+Z|UkgY&^G_tJ^^okHG!|)4tE2~HGt&bUX-5!jT zTe8~s865|tyW;afzaf9)UH8DP!|ZiUER}vG@PE^t(*#^xB2HPWo(nH>pQ>{tdxl;w z6XW;-Qr>>{n5wc)`RPlGV}U~7&3zfCc?+2Pe>Lw2MHtmym108$^ZB+O2y{#7&kMh} zae45Zr;jnZtHw484Ev`&f6-ZQ2!*7X>Hg$8>BQurB{}b&qxi^POdAKyK7TmL!x8hE zHO5;Y?>v@?pqx5j-B{TWi1J(@W_RaX7xp;qHw9qoqFQ6XDy7U6`O4 zu?<D>OAA}h`ERX4;U!s9<3bE*>rBSs_IM zY@^~5wU`7Jj=|R@?7F=XF5*R5sM_~&c>c>@~v`IbvsX2EbfG*Ne>W1-FA!Man$E*qAWWOHfGHPniL99Za6Dy(sfsY5SpHR`(X6*<-3`q&28u! zYP}37>aqO^tG2>Xa4!TOkjxAVjJ=yWg;60$eXpPz*Q;8Cj3OG9v*eo_UPA-d(LjnN zZ3ig+^5;KvjvQ>-)PjXhxbIlooK4z@B+q7#!S4JWpSwh1+VP5R0wAI%fsf8KgnY91 z5yLjBaUQF?mbs16ma&S|l;Xpv!Z8WVfHQdgr%Ngx+RqBbnwEcB5f}2Mq8QUnWP+9M zJl9!@ALhWYzAi@YvZ*NADwq0*Z2s7$`rufgYUE%a2+r(_rb$&;!4|JrOp>6KGhLBh`2U;xsjjJdFn6%pJC8=d?i$= zD?jg5ae1FB4XUoG_&MorLO@Ng2m%S+%+@Rt<$<^2&Jskp2c?>q*rrHDksN5E27V4h ziZFDzvh~?>5+X#+SKqGH5&8Kj|8$BFlXnhuulon8kN8!R>e(O#e+6)B7F>b5whe~` z??avV7_Rkc2%!Rg79u6mh9tOLcIy5mW&d1($8#@3Eo?5uN2l9rIE#P=)Ey#~a|-o> zcEBC?t@XEwn8v$;o(1u+3E$u*zYsR(MT1?yKE|{LBv!l&SWijPmf5n$)w-O&YtR!% z&s%a_KAcj-{AGcYA!mt2L zz9(a@i^4|RV-~gLi*CqdAXS?|V%(coEQA{d<%Oq~hq_OL*6=iGpxD3i6j?N*j9R6} ze|&oqlpoFm;AOV`^?P_7{uNXIhq${N@JM=P4xbTiUX!KcN;5PD2o#IMQO8u2eV$$f zv(+>eOkQuL7q8pFB*KA974fwMKmS6s{7|6^3AFN$*AhTEqqFAd&xzIiPI^|k!7J0e zCi43{C*aP5Ux1L-B6CLMTDEy-i;V=apF1Pmq1{l7Vs8*s9FMg=*(*?E+}0=R?1x=| z_C9b*h+Eu2>jVHOW7%7&3tT#gE3enER&R3D2y^Xq(JGnH2Jec=)C9OFLkxdZ)9}|_ zVqCDPS64#vx+yd6VDz6OP$s|T9Ze10hsWsfQz5zW^5UM7Dym$eu0lJi3|<#Pyv{QJ z7}3qH09OH$K5Td(66A5kW10IKY}+u>oH^TLQAWe^cpwd;1!3J_9|N}18%0^2czMA=4pKuIItr0f=s^h>PUm8m%^W}@bi=2Z;CquPgkI8MQz zcvh*R)loI1=6CeL0z0nYy!Xm0f;)2@O9kd|_>JsK5o2iU4E@jLeSUM2iP2#*VllijeXJA2y{DvHrO6aL!v%b}5h)T*DLGwV zdBJ|)g3EuF-QT1~1Kkf+iys{Gu56~dg$0VQ0)>rX*nDeuLv+fGDvL!|go*@$FXN4 z2&2)Guza?(N&As@;o`sk>`cwDXb4^)AT=}uccYAHYvg6UhqHz-GRDsDnd+?7_m1Cf zDRns>Ee*%Iu|CsBF9jz0)0yCuLj@x$!;{08+QS837YDSu`=?Lw+~}a~n*-DzhpURl zLO^BTAY3<1S4C~~c7E|4XPZcDHUjTaUl#XK_&m+~5-jq4&VJGNm&iar)NmKDBL_ji z_`0BktGu|xUgzp&7ogVeTdetRhp60W>Q^&Mse3OKJ;Fy@P(`Rc-D>gHa^z-G#LS2g zr4!uKSzkZFULR&u9XvuQt&t}J!?G4DrtWl0vV~X&xNd4e9W;gTh(`7=G+)K&wideM z$IfnCMJFI0D-**=Q2g^OFVy0qSzqL<<>3S65c$EMo4658<*G5-(k$mQ*?^c$z9;F! zr)#t*9lYnL4XAE7RFq$;e&S3?_J7?->uCgb1-Y@s$EhAbdF2n>0PTa`e^#r|owOx& zeG0Z=j4EtKC{7YogrMk8HMOZ7GC!F^^^}5Q_BW2AAEF+0+ ziVip;dUr=TDN=C#dI!)}kt9guvb^{ww`P;mkw$>%6eYEq_h?=wzo+gBP@yJB0#`;A zzGmgv3W`Bziz)SH)hU9@st#Ydi2kU3G3+&ZpQVJYh*5LUbHMwJikN0;FbrMyXX5~!}`zkJ=Uwq(d2myT8w;%N)t4a3Hw}pvuB8zS^?)N)cquj2^U(T&DLc2j;a$xnq zcE=ZDE5ijDo+eoc3gmhI-?)JaAeyVq@I%E@6{LNvaS}~x=D@E5FR&RfapNK9xXJZm z_-tKX1h%BZrSfQWDy*l&<&PebgzN#Q?w|b16hSu0MNgE=0RcI#H0n3xi1O;}fw{B% zN$C=k)r&mu6vcpwW;KLmU96CGyGM zDFV82mX?&}(Ni%t(G@M3*$7tHGO0RR9MsW^nYO|*eOcNdt+JqUDC$9AGVNRrQEnjP z*cj(8IJ3hikku|vh(hVYjoNA;UBM{Zu)j7z8a-$I+PAh0Zdya6G?{1&oiv*YSWDcz zlRrNqyx0XyU{wVj#p(~;a*)~FJ`-8ZDY6AIKx2fHAEmC_8l5Hq0D4NECtCm^<5ld! zKo2azUZ)x~?kQnx`c7$s#t`8Dah^k}!cwblowVb_K7Kvg%iW6^K*sF_nuJrg8sw&- zsfWL7;hTQ75F~=0WWuKex^)v2jv4Q9ohWWMqsWkR#q0jMlfzN-?6c!;7asN~fKtQB zzqL)$#m0XyzibcXRNbT5akf{NQnR-d!bQMoj_MQJ?38$A7%sNz=SlX2_`_)J8*U^6 zD~$$Rpb44ajmSbGj1f|+FM^o^Mf+8ZMj?KJ4%227Y|#Rw%?Wi&yfSNeCW6%4G(5)h7}+aor!X)&@YQg zWln~y1x~wCCF8#A9Mjof%RwLI-~mAfd1Z71l~jR}Tvseb1pvwCNa1W|pPFJ35?r(w zyp%rg$`9U}iJU0|pLt5$Rd{+c6)%Kld zM3`w5mZQOHTNK~Cp4W~YD^$nYF;`GT-AXw8g@}Am6p+$_Z^$%k8>39@iM5OB*EeZn zf6?YHtHb|~qtD#Po{1DYw^%BH-;R?$37?(qPGomh`qpBu)E0u)pL}OX)#OeK&xwML zE?Ift2IPmL1yRIxa9QG1>wf>tW1iFTm=5!1C7RYK)smDiUScoj&WMgYZKLH}3e1Gt zpHeQB8+nx#Wg29DyXqw~2AaYxM^@E4$gU7As^k(&7CGpR-2+kGE9_O}(iO5{nT+JE z@eNwsOP!&T@^1eJ*pgvh!^VcB6n3-vq$oo3J{L@xC3AAN^Kcv<5;~Qvz@?lFmiC9@-$L z+Ws1&FtQF-ZL*#*qmG&Uo` zsTpA-R^sv^VR~)4O5@m~6`W0tB;A$eL2u*0znH+JI2XskDh1fXomlC;uOrH`FQW&V zV;-ka{M9mW2aG7u;QV{O5|gll3kDl`N8kc;Kj@|h`Ux_2P%~eq&i<0MB29ZI=BN6l zLYaw><6}919_}2g+HO`)~25JJ$IjxXLzc@n-!l+O^;}FIm3X>#c3Emzb$A!fx(Ym=UyGw)jNZX{g=*Gin45}YA{2o^EZ;$4kS*O&!mI5HNT=j*rB)a-E_~C)W?8h za^7blpL{a>{ZP8`7~+dTGqThyS)KJT>|;}`EqNT=+AJX^{bAZDIkBw<2bOn{`qZZ+ zsA%)Q;=YyL55Ax0sRxTL-wX#G;N*YJkqba0(`R>XrX9kPsj^A=rh8wT$Bc zEGq}FCa#?J-^B)_#l6r`i#5sPxrF`4u5>M9?<~U#!Iwid5`VQ=T;hv}GO@szWeSir z=Z6woe=yf0&yZ>tlJ6nCe0mQ1CLRFrkvsG(BRk;&tLf)k*guTKd9nT_SGH|C)8|m} zhl^8$qyw&Pl$Mh#<}Wz8^Fgk9gOhfC=#%FXhxUGp>nooOfJa3e-Yo^G%*Owky)7H} zyhRu7;fBH>oPc1|l_3?_>GAj`hULg^T&hX{fNeg_3uZtp2R%z}J%c99U(+vN>Iut^ zbaGv-L&%M-e^@p7z}*~dGtwGdGsqPVqTmw+R|Nal5MNT_aM9ytfrreC3cVlO1WWdY_^cC3JL0|ZxQi@JB9mrB0Bd#A3WHmV z#$(H-?YWpXV{6JT@WRTi#r8MlJa)o>x>u@{Kywq{9VmWbN9T!B%5~>*7-1J7s*?F(?!4QF!!i zLNWdTzGvGhU~4}9eq(kVVs==XwrXBHqr~Il-W3sicX5%Pjp!<5y|RM?tbk-o`u`*o zgv9wQ|1QI+ox%W&Y!Yj5cta%vd9hUNhTZ#X zFN-RvXU$CTxGIFVlLZBVqJ7uD&)~>e6V6Sw0=L&TKI@@%dg*?X0Lv?u?+EI&-%XEz-?63)b~R?@P|bXw#%;i}6k*rFY53Ba;T8s~+8y{PyBF zeWWKfe+>+cHGp+u$3&9=Dn^sy@bXSYH&VeqwNnp_@j$Nk@{KS?ZsxdlIFiy)Se3jI z1*0=F{1LoCVfVU{v2)ge%^|y4|2#8R=zPxd4efmr*1`Xc8 z6y2AzK->UH#SZlgR$()T>GItLCcPa#O}TLSw)ug-VPoo0hJ2`2IyF_pb?tT(-pz=m zOv7o1XB}utdfAWrJ|qZsLU1Ka`yEXDZVuNxu{HLGiVLrJ1fPN%TF@mqMAia23U^;R zn0@#@6c#d&Z>`-%7tz~7&=9qWUlH#XVWlQwLu!2J1&>%BRynIR()`(VTMZm)0BnkM z7~^oar-ojOL^nRcuv1&AXz~WeF>@TRjND}y>hU-3w^>~8Eg!b$2Kh>IP`1Jw_ey(v z>o4}9#SRFgyw~p4dDH4;F+=WSkqSmpytQ_r@Yt{u&p8~SOVXxX@mDKXb9TjRL@%le zT2r=#7FxzT-!TG?e2{A`${R26|0@}Iob)a%>JkeH+FFCGW%$r$jxATZ*YwC8hry>B zSC!~G{1HG7u>{i4CeMdTgv9&CeJh-9PQAFX8{D8JWux+duT{WA@JLMQr882MHOFMw z+$dvgua**v`52peo%R=Q!H+za+sz~EIsS#yza#Ocei}+$^4&Gz07@k7=+nU(Hu=-k z{XZ~teO!`}?f%VB9vjmalTVsTVM_RE74Ci=Z-@)GIM0ZpCVwmIsF#u-iFc<9SPP| z=#qqwHi4DEk?XH>tozULh)%0(iF0#S%_D=d$jO`UUlhYpH{sCg>h(GvR>|th9`N4( zpGFTx4V2I_z=X0c4fcNecR z4CnnkK3(Xe(sfv*>8;w_!bP)Dr)q<@$mZjdmD_@TIL{&&C(&`rsmlhH^mC$KYNmVc zN-juU2Ta;ZoZvZ^Oa0d`TD%NskXSvCWogXxw9VqgJQGUZ?&$JuaE>D3-IveM>G!-% zFNP6R@mw}k_~N*9M-mlOu2ch=Qs|^1!V=mt7|1Jd4RPTV`0Q+T@s}(Q&y*TjUwf{(~qd5X( zN7(mr#AJTQlG9)C-}H9LNjjRvT@g>tdpVd)S-CT3-HuAcBGh?^!)-Q`vtJvdQ@&lW zCaB}w!6G5XbBuZ~vCFoUUT17?;7>`g&`*SaXqEpe3L_^UZz;9y_OoZA+hamTKVwn} zemMcgc^?tKIK|Kj%$F53C9=N5gXX0I&|I@hk9Ir-P2CsTWa-FEviC#|>v;+N&}-Hj zE?K}_8;l2cjN>D0RztKW5_b>Ij{l-BV#$7F^yniT5|vYFiqN1yiz8#>Xw=xPGMZ}ML;X|mCIm?G67Va%aFN-fy6e6{ z_kVI?G%EM%D5&@e8Ar`-@zIB=mx2ijGHJA|)1}6|PIid>j1x~)MA$=z7PqxC{0U>{ z2~264cC3b!`p=IflCFZqk9$*gh1iaY?=F^@T|CkEa!YoDI{RHMAOVIhsl9W&gI5i@ z&SCORMSpB>922Gs^F~EgpXB`FE4QEejbK@p{Pyj<9Cs=NV9fJr)vjLsx#U@`jp6Wf)~$E}FjD_<;@+Y^Tpfd}RpS9_F8QXMBTh;_DNWS30iLzHjL62nA=<|-_m?&(Ay05*Ne zt9P|wM#@y!>~lr>Iq3UiOpYj+kv)>4EQ%>;1`b}Z-e8#aCxX!lxCt~%jnu1=&rasO zdhy&zHlGzy6c1q>XEJ; ze`H&YkrTBz%m8JT+CKXK_1i-ZWp*C!69MSf14j1;fJTK`3!e^S;_~sWG_8`kN5r0sMc*h-Y(^~$fM+<}f&+;+bD*uG7uH8|J8{?a(*#tTC zZ>@G5kMpevDv~1t!Hk4?v1BIe5|avS5#m&RaO&ItYRZr46L~Q++w^t^W7E&|Ax2^h zYwT`)_(u5y_0?ONw0kP+RwL0#$et-^I1W9BAR$>I21D6RN^NeUXVcGZ_mM${@fG3H z>BxY)AzW?yoB2x7tgoSj$96N#KDAI5dx<~EElkP@#-!1T9CrQ(+K0XbI97`iNHV(~ zZ)u?|d&?v1)>sBs&2R&$fL%>RvxCwUf>YAfW3z`vu)ch^eIdVaVN%sp=zx(0Z?mE_o?V2)mKv}ZcC{gmT_1lClD4+a7u<=F2 zc|i64-dyj6x~tcH+NET{u8P6$hmigG60?s~}B51nks%kKAESI`fw-9PJ^8yV%P;55fnxUF zG(SVnDS5ixvHplfzV&T{S^ zkJkoOl84P2@D$;wHCH}adME8;)ZV<1Q%#O8f8{K>nKA*%Fyy?6zc#&}%Y4`2R4( zJ~Wu0Kl`2#Sef4*f*9Dv2|R-GjdXvPN*%Gi4Lz^37b~|TJNpj; zkQ86XD7?FJkB2tma*2=e6!2xT#$+!8zJ5r0uh5hH%f&4<5BXVH$apzDasaV05w_`g zs>;Q3S^EBgomXpO19ONeRTdoX;74k#jIyhDb28GdF6U9c@yx6FJrwqCWk)>`3gPKL zfvZ^?%Eao>blO4QSK`+hKWBrEM3Qde1zyT-mQ=q#$|`=8-zbTNMw+RCY$#A=sk&Qu zcrORT4M?2!vsd7rZQLzMNFZk?YCSU&7+fF``(u=1vIaD}jPa`+aaWX%72*)Q^SAM9 zOWH*kov8Ay?$DCM*L}az`SQmwOLWzTg z7Ec%wL|Ia8DjkBpr)A-aAt_R*71I@zNK}vZSOp8s zy-}`z$m?qdQ#?MKrKLQd!tV~TpGL1fvBTuOYxPfFp}~g~HZt2jihB||4tyHgSak-m zBvNwq4q;AdMW7&QUf6`KO4nj%y@+tCIBT-)SP*x$96;c7A=P{n^aN>s*vMTt}gSIxYPW`Hm)*>>+ zOc_=s>gRfplLUWk=FDC|XRi6UEQ2u9@5_Tg9sCUV7abL~(u(Ua%RqhzKiIAR`#%PD8U-?{}fW`(UT6C{SMy7PIZT1`8>Y%EV2 zZYPP{2&~7tI{;~+0Wi3&Qx@v%QXlHC`q1ia{N@nRfQDPi1wUMt8KgC17xkH-n~+=5 zCIWGjc(IJ;I0+b5i+5U#4Zv>J1Lcpk3lxrR3Q-FHzvQa&^iYKT6edOntSzDjq$sRU zs=t#eGae^{d2nOsv7e?(AP*g5BpCoZabC8-WG7GL8&P@H947p~NE9}L6X-=Y-rA5^RpGT}UzCQ4i(N3%5D!)A~jEeeftcV7LPt+*Qw z&~XhCfK~69zIC))WK>QvUb=xe!N@+nN`|<*#YD6|e7sRXtSMuXiSX7Oxp$4$RvHH; zp|s2@e9kKF`1)m9F#mo=mjE?fij9f&B0<7i1d{Dxg+RZ8@cOFkHfMxAVHsvM1r)=| z1xU`%{8TW_Se4oDW|8^0v#h$%Anocg&c*XtZV5nscoaVOX0PK$Z2Y4x6tD8IjWW_u zEaQWB8$bB zh?g@tr?MGgNAha*H4eL-33dda_L=`GhA-DTwBn4US0H1Sp{xGV{NSI85c-mlM-wrU zb}<6^Q8vfBEA)cYt@hdhm`ckF@;wBG2l~h zEFA&mC(R&wmiZiWN=H7)CZ&KY8u*rMd%f0U&+rNcw@~gQ9YbEs3gHV1Y(amCk&2@YQ&Y^wF8ltqm#4@qWE$ZJ#B2i`%V=|r!8;fKO78)Fv&5XeD-wvw@v8~M z|L<>c&L$ej@O$cqL?NboVC7G&Pwl*;hVIM zK(uk|{Zz+=k#v<%(?hSyFFmD>71o_vHMB81HceZtuz7!NdBG-@Y_LYwpLzzv`kH$4 zTTeY`>8)n>8!~zh;q{*>>;>;qIYb-^otOK)UjMd=q}9fH(EmB#d(fB;GC1QZfEdHa zDikAk!t9;IjW85kNs4+{a@q0{oZY1I4S1yiIs=%dyiJxY*yZFL0Ps#df~ zHatOjpA5JfO5B_ZPqKx3woo9?)BC>jV6@Lo~x@b5n&v z83tNRg`fHaG!6GOY|_V%8T%^%#646s$T@ABLHKMx%m7e~8OnuSlf9SLmyEs)MfEMV zw9EJ}g??1vxJ?y@eqqJ%pX~6H10#L~{`g_xGL2}$*~2D^P2LR8V?Eh<--OG@X2hMu zrWP3K4ga8YtV-*X9n;i4W>S;YBR2!7L<`HidMfi8WuN+)%7Qt0UfLNRnS@0fK+6`r z&U`)zN6#!k{V;;PnRElW2>gd-VPte=^G%&Ev9j_<<{*SwDfy7gjD08|9$(bfXUERp@+RCtH&52v}#JiZ=mA+MR1pi0b+BLch1E^VlwQHHlXj@d7{~BYcaCR(Efj0;orC zJdhS<~rd|_U_oc>yCrr`(gRJD50Fj(pv$hH$16ZTJmB>Uzmm1s? z0hhSnMQEw>T4&1U;PsB@>TOb6pemi8l2NW3@pci8QgS&O_`nlebN+$OA|f z03}*yFYCzbC*DOxXnXHs#w5jyq3Nsxb`J^^u9t>K00R51Hzepcx|c_hL=t$G?Elf6 zxITmdwXkaokqUN$XGgY&AG7Ld9?I+%>_K>j$Es`)ldug@CL^bfCVH`j`a1AOUYoOt=LxgBx^HCI2=vti78Dbv5 z932x=br87IQ8W`tuqG^$h^U|?zQe5QQ?89K*yy+Qetx*XsXfeEh!H|% z`;;@__aSPRpb>x19MFDp-8(b3aQIUMlxK3&^%X(ayBUPlXU=q#bu{h9a-l}%WB|h# z`{?aG&|Tb_UEg^-^o$}x|ot8nbEiPFN7H*evVG3A0< zFFgvxd$^oBTxqG%k{%9;IkskPWcV7%J9J6W@)p&W8}39baOta?2Aq#xyEG}w0#lZE z3ShU&q%_c2-i~M=olDt&4W{X(BBp=Gj)7;xbleD^C@UFy57Hcu6*jy5u`)+Dv#%nI z1Mrfx)Ti_+G&YQHRgCB4xEaJq^mTKQComw5N8(@jcfBU6XrbV(p@ZHFLu2jtFXS~8 zv1tS+id=E4?7?vy-v<)zA|5xOY+LsnHP}s`_;VbXrGY#KW`Q*8mEhUsr6Kp(34fbG zP=Z0|PwOb2qkV~nzqLd=5N~RBASzizLWfZ1h`_y`p%P}p-Vcc(A2O-*g>W2GR8kIq z^rf4^%Xy1MAdPO zx-1RTWqokZN0ybC5a~b6RSAFemv6R}8DNwM{&EDZ5DvT@+|7`9a#x z9Ol}hDdbrX(ZjRw3y3+p?Y1Gwo(;|PZ;od>d%Cng%?d`z@G)d--`1}?!gYF!v&=XG z`4;pHb}0r?UD%r8)c!NTKfHgMz&+$b1YSSp6G4ALF2fJl23_k1k+~>dy-2TqGnGY? zTY26Dd&kIQobK12 zM5qq{zBY%#VZV64JI#|S%Pq9e4x5{f39W0Q(Zx*ILDBhf;lcHxysMKgU{#c#R ziDb5ly+Z?E=*Vk0LAhuXyqf~j*;45&Y~ELcutTIHWPtg8B;LX;B z2%#*^2%pV3faY>O1L_9rt&6lVst)U1{%bZIg)y^)Tzx^@(}ThvRo0arhq}AQPU1^l z41%wD1$AFBDKnTb;@-0}(H6s(%Z6{BO6?n9^s84FR-bOKBi3cyXjdERe+WS{r6MCZu<&@ln@^u1~M zA*Wd(Jn#bBoBNKgJP$=PlsXphwyGxKbCHb|(Ub$0#?Fco--fFxb3$pmFuf0+4KWZmysfWmBIDgpJc4K*zdD#;F4p~Uw(lVyl2MJt_+bm@$lUZ{&fHx zD<&7sygm9<^K(wzS9Xq;_tbO?e>KzMC*W`sUb?TS>Bafua08rMbe3JWUZLo7NoQxJ zH;i=$oBAH%Wfp*Yd)1I4SS}13xxCatXoug-${V6!JuqNh+EwF{m0UktDN8inOFho`r+yvyEJd6EL&O0m;LN5yJmW1zJx#C^N0%f z@P<_|X&D`dq*elG*~zJF`!h&DU@`d_k}E5G?=U=YzU+kt9!Y9I;@52=>l7 zAC>Sw<`Tc&Pt*LtEZdu^LmO)K2eb^<4*rxBDK!)i?9wIr&?QnRTZe=)uB7f4jGRjN!ajxvX{D>goA>cq^Qsjs`*@&uHYRHLmIXFQW z6Cd;}XKofgS_u#J)hCS=@BfQ?rFv^;-lMgR#=#kqw2Di`;UtlyX_Ygf7* z_3~nXlNUhWZC11*W|8Jwng0yht|Y68gXFv_fX$5^SXd&2wjYA zzc4Q6=6)nBi?M(_u~h}xc<+p<_8h<&v(6Qjs4EZLU6mS0dkHEi}Iflv)`@S8zAUN*+1@(>w1Cji@AKal)+s^MTU zJy{VTQtFSc1=^*3u(;WaBV3>|9~7dtNle!5kU)X{QT-z>P()F~POVAO;~uoqQX*ZP zrKvC1Grv?<73C9Fh1SQ+7cRWPa=06q5#>1~Ox`lVTj${;-|Z$}zS!Bsy0xV{?LfcS zdacYR(%EC_iT=w=7{j{=9h+vB9F9Mi97TDHR3@|OpCyem&yyaVtZPA_aqnPdq>Qs3 z*|rZFf_j+wN?}{J6g``q3bx%|IH&TQOx%+OV{ozUCYaCd=B3mWd99#EGxNJb3avmje|n+eC~vTsJIS6g2FYq>Rwuu4{nIA}f{-O1pM63d(?6 z3|B?j56?RtGiSt(7xa`Rp;21;OsC`A?K!*ulln;yugi#cd>pcXM7W)|8q}xVK9dQJ_hsc&oZ~Ds{EW&2?@3`mERl-`JPit=+<1o4rrJ-J#Gb*VPLLQ0 zFp7$nWhcpdiZg5}~2$TUC}#jz-yDisI4jHR7K z-G6$w7)z*n99?pdVr-EROf~UL+EIfcCwy^4f|88NmbW=>s0%lwGnE8@#W9-=v<yd+O zSvbZ!f%YDu_1n9|#`D=0I&tXB4@nUxghW(Z_ZD#= zfDJ!kT4dIaI?I5vum+26;rvM|4h3_Buk6G9cvnM1oHLBhDWHK`Xm$TymJHkfG^TY4 zhDRwn3rR2@z>5G2)KcZk+w1W|%Ty&7C9}uavP?Q@pE~=KKb0f9tPCD2HaB5 z$AX!Uqy-+ud55!?IhY$GAJqA7uH>>{9yWWOKI4-?W+5<=9Lj<2u}4z~#TK<6mz=Xd zw2s1(A58*eF80!Z;I>i&pS$VN0D56cV#fMagWwe@y&TpDDtEZVeSdin>aO%-tz6;^ z*zQ(55TFyGtJsF%Q&&WJ)qgCDs7sary_HJ&-58V!tjOuttr{lHgc~Gi&9{=zK16nh zP=K+W>6Bjr>`^PiPp&+qSO+H>@q*+S-UGi6N5oWuL=}NSfbG6amL_<=7OOw^?+Q^u zEg^{E=bB^O<=PYf_2B!vydk1 zHRlWuk`N0Ayh{sTN@j2?+Ho?+>j08Pxv{jR1+U5@V=OhrB&>ziKVJ+rb?{Cz$=c0+3kjk|EKR1*1tRCpKCs{N(4$UtE&|8Ckv z-3S@rCOtx9ad~3oL}-ZTTqQLCe*0Gm0wg3-9s00neXS|iT5swnmW89dOq)X@j<>p! z12>7S<<>d8!7Vq+an_TOh55H?YwCI1*k0QSPKOX6p%AlR;SZ;oQV{1}0z_#d-95}- zv7yAT;Em{wK5Hl2#*u2nzv2>-(3eu$h& z`gR^U4*Fad%;2|NzsnvyyhdUKEWl+YlVb9k5!*vO!bgP4jv*Xtw(JH|fm|>%2iuR! zm-g#2V}^bYiJ$%h?W5mo#M!x!GW$tI*f`2iqS%DUB+cNa^Ewt`khJT-V0@`r#kUSd zfh4;?n6Zq4@|(lP;8TTw|EnaqPJv%n#dgup%kpD$+?)%aZQ_NP&(m9dX@rI7_nKS> zUar06a$DM)QshZb68vTHAbre|3~lq#RvykO#n>*p8~Cx2qO6jF^%z$Hah|AY-C3;H z-^K`X*1sbi#%=qmt?Bx-;d*G-n8*aVdSsL!63>sCR{@o+Qta=Q+cdIc7&TJd%$MY7 zdsf-L)wz=$f}H7wQ!$tHv{wTcX4D^}f>W@LJZx2!D(n@NEQFQri*VA1{)w4QIvl~r zOdJj`7PsaScW#yPEme=<((*dtoUp)*4v7Q&^SKq0MB{EeD)6sfyWMh_r`kn5L%?Ko zL?lyEuv@-!mEnn)veD_q^nn9NDNrO0M*;e^;9dE}JbTz!1RB#+CvuIYco6KzT&uZy z=wn{OzRx8&S&aT3K<0}0i>%aGJ!3$9@>4tohC?kQ8e3ta4l8+VuOOia?_52RKm&6R zBXeB~`eq!HJB9&qc4mZsd#H^{U~dEfu@3>oXgfeee$L;yqNLEy&nk$gMa|vpxCQ_5 zBf4$omg1z_OiTm^*=k+$=`wkoSCn}utCle#YUlD$A*vS!P=lFNaGUG^|4=j~K>)v& z0k3V#szd&(>pTedw23pf>3m$d!6`u~Z{9lG^G(htO!ONgSh{(qNOnTNUn%i*o4{~K z*GHKJPi`Laa=lgr2+r)gfm9pvu{km3*a6*kG`3BQmeSYVMzFyr2W}SHn2X_1$7)Y4 zUMa>zPuc(Xxe-b;KAm44i>QazdKeFdy90v;j@lF4Xrm;vj0rt% ziD#@|K<{434jHqNIzrA`-&=T%kF4QFc2t60wrX2zOOcem;|Pp}Q>U*2S>&s0Ie`)Y2@DMv?Y zgjTW~`OJyOo$0TiPuYU!j`tDu0O=%=qf^d>!CfROgq@{s26b1E~B@{a;i2bbZ(80s01?@tK1!T^;-Rz_vljYYr;1_l1L0EB0j1s`nbQ z34g+W9?g9CH3thcky<3f&bvc|2n+iN5>K^AIw&V;F?U(cOjBt4s0>)!im?F zj-d7~GHqoMkrmuyf_%5xTL=RBm}*;j;;>nu2Bij~5)$C9q__e5L_A=`It>5*2>j>H zJqK_$y6aFKxE1il&09x5Uhbu96gC#Ft0REezO8T&YuOSEG%t;#zNKtwW;080*CmNC zysqju#@<3sS<@8c*}s%8#k5EZC%Ij?A@a7u47hptWHiyuNWr0JdK^5>ADg&`3yTXQ z0fa_b4zhVAzt205gO#ijb{8eDXcw*%i9Br|-^!_3d%H{sAg?3w!sK_+PQ^C>e(? z3tse_i$fQ=T6;-xWpGUy;*%O-85>dLl>vPoT9PYURd>636wDKN=vugP zpfVsIKH%tzdl0PR&yR=qtv=fd`_j?GG{sZ^X-AZH?6s!r`q;vqIY3e^%kWSH=2Ufj zqU~~I=h?8yiLXKL3S{~VRV%2&yPorHD#_zk^HFITi?bOFgjQJeDR;oDDZCa7i5|QE^^+ksrx)|r{v@H)B zCdy2mp@`wv;<2?+TS7+wq|R%0RIKuQcU`-jse(@V&K& zPmRfv#3@eg3#M{AiibH$S4rlhdu7oe6^MyGr>81*@{kz(awl89tg^{;6yM(ab+d?=F$Nz{|M6OowIm@#-1bTT#J7ch@ z3pdZ{4rogI}|01jbpL_|+W#%fndO}X6q!9MS_%NV#Cqt#?8e;YLYM52Y zF!cng;hT+V!qy}w>_K(Y$doo_Sdykrp<}!^R#8{BhJaUT&X<5i1+DR*ff^h_2WkA; zm`I5KqqyzB>n)6_(oMQ2wuT8(rHE6-qA@>Rjb*N#t=sB!w(#HxdvCwKpv&a!e7SAD zyP_=Qgq$|yVy<|LuooJH)g(w32#7k@5oCTatjb#Bc7rFBlrkB!CS22?#6?ZW*er5% zw-5kQEoK@%K+;|lVc|b26?#w6PhA+Btm?W;kh@}lYg{Tz>@-u+OeC6xP)Pr@*|7YiIwYnE;W@3pB|>%3%Zy6|T`81SF& zRsk2aFjcO~9`lXX&t2<9CQJBqY8MA@Vs zyQV-1wuS*y6#;RSfgak<=x7whcN+6TV;cQCen>k6bv4Ff+YH zn`#Ao*&o27&EzG%+k8=x{-ZzxyM&|CQfX~21ucW<%O_ArqL5b4L+Rc_^R#Xa*5A@0 z3HJbWkhvCJK7%#vw@=G={3G9bc(JJzZPJ(h?g_&RR*1zVJUHEPd`p&$U~tM>SJtH>tk9X{?|+K(9Z>esI1ZCdZPQ9RZk9ZqU5`@E&}Y)KbSR{=Mkb~X7<&3GY`I% zzfoq{ThM!$Os}O~wKIz8W$}U4^7Ws$i71kYHqBEV(ED3dam{Zz7|rdH*0o+1Pq+iI zNfhmoo$YI6FA!x6-|Hq*CbH{?^AtoJO_x&oH*9WqvV>j;bn}-yha8$uvXmeGLh34y zkzkguW;$I!?W;B6jPq|4?`Ra30z39f)2rDBD}rbA$Lz#u?uU@QnAoVO3}?d%X^_~DDh0_wHficNuYJ!t;*?wCd;=!aEX~PJFMftkUNqd+b8{W~C zF)V|2t9J4xu6uO#`E(UpCk}0Mkes`3&XgII>4$}ui`yYm4n>2F2G({|U@uyjuM=Z> zv4yRh7;gEz69yLAI8Kl~VKra^bKl5Ikxl(M^I1FMl0(`gbCDEpJa9EYc~RAUQ>1QY z3y|~X7P9WY6IyM!APN6;DfW4(IDSlrAKMXG5c&;;N^M~X_-^)B&xmC5HsI3b|B}HB zy-KD!J5MTH+z2y6b{Iir`S?gUoLSe@MbXB)l8bzckZ>m!^uc9TPht7g*#O99wjWtU1{V)M!;4F>h^?|H^?` zy;ZI2@_wA%4p(9lNq=tZaCa+f+>>D2r9cLYzSVY@rnml<9RQCn22V#4kp3 z3cYK%D=E~-Cq7L2SF8pj-wmOs(n3 zf?|R5y~urruj~ZpK$b@VUGPSOD`Iq)D(w8`@6r~CGsvjeH9O} z6L^o-<0Duj_#3zR3|n zRqBGMbCnKEtR$$OJD#FgG|N?nhmAS=il6?kpndB3C(v}_PmMi`Ech^(G{S?l;Jc(rdmQn28th7{d`E~vy85d~#h~=h!_kr)`lvXUgyAO_44$+89hR02za=2L8 z7|jj6laIZJi_zNQ7P6p%!DU0S85{hilBfx16{<4;wq-s+kGZ5l7z@2Ei9 z1R@m*9APQR_VYsO#^!L=A!IBy*8*W<5O$js#~zgv_j!Zf>#KXSUM6O}6V8aAVf<() zd@L@kD_ZGN2FA8CS)Gi*+l4go?o0(qnuHb*LEsFN8Tc`ljPdEbvM}0AVwbQFUCQEl zRun&`LM!GS=PCa6)H@#TIYW$}GC9}Uc+{?O-z{)$e$zBqqVN1XfDy@g^^3`MXM6Oh z4zZRV3GlkYLPqk-BOaYylO~1QE)6JcUiOAc`k1qBOyx=x%0_9gvdFAD{;@d|XZas- z`Jg6pp%;T~skvT3p4V9|i@ep6zgXD-Ywp#PqfEuCs5Ah?Wa9kDA)Fnfguj}Lt-!CP zaQIlh?<_6t2w(Ozw#NDFF2vl^FgT~iy9rM=O3lt zuMM%T@v+=6S==hs8L}Yey3!JbAAqtiQ?&9zZtfj`OK)!h{_`m^P3CFeW+vnV4lkYL zg1wvXq56Wt|My~111BN#My%z}02b2ekKI14V#{PYLjm3qHUg2j^5or4&Qf|V7>6au zk_M}<|E>23kT%Hpt3WOpC+wI1T{TPDJi#n;cJSKS>HGZ#MoWELBi-tr4`C@jE`7&; z*8h~mWAn{fh}?a2NZ5BL!{N-1YT274hfj;mSYY3PYxAKH+QuX3+8dOH+zH}cOPtZT z!gd!<^Ez)TiT`?QZ{%9HP~TQ>5f4Q5Yv;C2-D{DvYfbYwtFVI#m%ss#4B1Wi|K1a^ z78ExGiK+w~4+C=`Uz3E4q#zt-0{kP2CQj4jWcD$5LE z3XZVvxVFV|19>pc;~*k6dtIL3()lscwX_wyTz2Si%o~2#tXI516efMRz4X464&+w3 zor}&`1pGj^7W3QJ-{sKdzg$X2p1-5?r_L&u{*u?FL*(+By<-Ehel?mIfchj9cplt0 zXWla_E#Gq~F3V=`mp!xxMf{0KG5bkbU>zWjn{lhzOgiBr{Q>E|_;I)*-Ff&4@eu0n}#2*edvA8HVtKWR$p5PnwMy%e-3hNHR`Wy_;we*2{o?@7e?SwJQb8(fBSv8n^C z#Ch`8VO$fUa=Bn*mJA)|E}BweAKbeSO1jVRx1@K+|;dAnuzI{3AF1fYGom5|==q+|MhZ18l zkJRSYD;BVe{N4IJr(Ww63HYWhRWRJM*KRr#o6~|50I9kR3DioRVz*a-mMo}FBYVz& zA@o#fugQ_?pUHH8e8jDri=EuT>+0tU4oQNEEF8(GL3(O?`Iekom^k|Ss|D%ud^E!R zqrE}8+8M->bajIT>R5WbYUAl+uT^1YRU&-bv&CgUWRFW8C;GZZ~4KIsfhAgHErSFy2o(#}r2qTsOeK z=KCzJ#>MWrhlr__LIirsX^HM(=9ccRJq6p+AL5sS^nT-^sX<4zf@GQYue+FY%i1Fj z%2lnh2)nj?1QaZw&@VpRT7-kBI>gYFLv5yg#t;uQSZCn%DZK^%7jw~uoNcZb5{z0+ zK#k8=BDxb5K#p;wrBg+jH9zlW7&gI^HnkGV*V&P~I1=!89lz^y`x8{r#FM$Yk_WR> z&T;ewyegI%GJ_@KoPe-a&FOQR*lxh2ddA(n-?aXGNaF#SQ>(|bWK<3&oBgvr#@k*o zNYotrSn&o5>dhi!9lJiu5{$`RD_SVgEU9F^x*or5)Dsi+M0iyP&u+*Ns80b|Pl_hf zSh6OD>kxl>Wan3PE`%!{m}7WY*-+_%Xm7xMG|-VmhqJDqzkZu+Dmwe7@TVmY1wkN( z)U+?Ggmv>k>A@S(_gGjmWNVc5QdJl|&(1$2r!TUyh5h_q$}9Do_4QHsV`}w!!Fr5b zo(kT|T?nUVfV`A1?rgD2Q)7XgOoff_wu;2=o==JNlxN6aE~!hX0h5p`qg|j1vY9`4fyb=UT4Xx^vd|ySp&jf zyVbRCU62Nx8%*Tj0YT6{{%hb_;LpYUnCWxIz;-9|Y(Wald{lzk&V`o@42`d8{y&4-+qh~DpzNqGqve6c0CZA-1UmKA9 z3-)h2VrTxUPs4}g3HhOqG9pqy{?HLSCCC^>vm|{M8}mWCPAF~(u09D|=pf=u$gm_$ z1UO#cpRGJ6c7y7dbFRICeXJNac9M>&=N1I#2B5z8R=|zf#o@GgYlvy=F>E`fM3ZL} zmsa4}CzL94ZIW{wBcdQ49s72`faxd0)u~z&xpcjd5kA8`Z_oqW9qdsEZJk+ZikvuGueNXle1mcv|^}^mx{e& zT9qjYZv`o@PwltQQ@p4sH9~c^7@zEDe}Gth`~R1?OA{#iU)}0O?2i-Xa1A%GPw|O} zF6Dpo(?Mueiea5osE&DYmAG<63rHY{R3pUKbZczIbWa8r3MTSG?Oh>8uOSz4Ty97nk4QDZ?#MQqs@ zBM}9({(bP_=Z{pfnN*Aid{Sx83QfsSOS>PE6YxWX5zEiqsloXMjCCLVtk>w z5L5#jys9=hO$ie0#cA!BAz0tYsym%-L^RHj>AjG&+a|gB(gJ!gd6^&%w$U7$Z7nK( zhZZ--*(tyY1FfJs*Jm7=aW+5iJ%L0A8sIsj=N=ya+8mR-2IayE7Ojv;E#ULqPou7@ zfuvn-y_r9dEiRap+n+L-aFgPXY0BuIBCDth=%msQ{|rzUNw47`x0cU$#&RdPppSW|blHZO(O;t4*Dk0WBy0bIM z^)>hjtfJUWUuAo@x6E^r%D5d8tO@13P%%^BWmk!v7BN*ZL5U55YImAXR4g}V5cHfb zCXasT@NqltOh3X)um9d7ExX!c4TbZIBp*X~pNlw|-k>zs+YU{96`1ccV(~bD9aDs_ zR1N4rPbZ?_GV#H$F{LN7Md~TFo~F>?f$bkr8`Yd^Ih;9!>-QtfTSk@xJ9)RKXuN8H zyF=Eem8z==F_m{^xGnmDF1#^}Y4bnp1x>orRH;NZSoqUO#M6*{A#+6{EAeJ|JdzKmKKbAY)}P9ihQx6grfWr>7>*mL6y;$0 zDcymo9>R8w&n;a+=~G6hw;6y3vQsBZ8fhm$FY2v-h!+r9o8|t)l{B>CrQZEzN7j96 z2XS+8sSapF)Cw$3VkTs5wFa#{ptDg@2i`Is~{{wYgLU#Wj>a&f0ciX1v1U48G>;6TqE3Z8nU2 zsr8oEVrC<|`d{ z7K+J(X%Q|#Y12pcglUN4YcL>fn|5+m-gZA^-lft&OHczonfn(-0#?kj^l}Zb5Fr0r zRNftnlv)ipM^j}*MI1;CDdGz*g3HPfG-foP=UG63_0>+NJMq?0&)|26$-{>~zDpPc z<&^(IBurfBf{x?cVp{ZMP|GLP$<@swQN}{=)eh&W_3a+g=z^nn-n7+LS!~ZnTpk(7 zU8HIF$und3U^V$(Vl_@0@+$>Tuw`B}&`as!2@V4~uw($To{Rw!0^TjllDmKtE1$$c z@JFeW4X~@Dpoa9#%_283kWBr8Hd!d(ih-@rU&Nb;bFMS6aJWui{6uv42jny z^aC5PYF!W_pzElYqx3J!)P`tPDULYxYR{XkcQP2#Y6oDM=+G#PBda{Hf{=5~-f154 zKk~qU0Mf{ub$vEq=z)B?z9RGP4V#XQz|es=_w!zY_QE+D{U@Y}d=x4==`Zv2-OFmg z%DMlONNJD&2RPu3-0>AMhv9BuGHx&`^Rml&9Ijy&J580(|IUPHq@gKd4`QyD&Nn56 z$i!`X%puJJLc8p)oeV$`=^?dO9mC_11nFbJ-<@ zs0x`$t26I`#NDgxR0~xyeiv(J!#`QIi*E`@8eul2mGG0LI(VigKr%-dn)Z! zjnQOpB8WRN+<=dQ9#QytB>BCz5nSds!-&IM5Aq^I@k>Jjcc}CL+~7O&;UC&7^Cw#Z za(|rYV1D@ZYR||Hh?hyabDha{(gCt6o)r5)AW!k}1JqfNFhgm@eMa%)l&2g=7yRFv*^{vcSZ~h~Y3EMaQ8LwbF z`Z6+1AerPw;-PQI40U5vU}LeNi!;vm#OdlMdl(b;68VDxdMiE4I;>JFyE~jD{1ikt zqwW2NeoX=-nayb00`HK5W^iqDd@ZCtj}YlI2M+J8)%ys(GY(Q>pTD=N3h~Zv&WI)a z3}ITa)R&g4hfzd|eqI_K-I5%rp;hshScmVvYF@fICo1Z16zQ&Xw{*m%9RkV|olD?7 zK3IQkxRV`duMw{!HUn0r@llOS>{0Q;5KI9wtt_}Gbq+4$I1rMnxsb%p8;6MnUUVk? zj~cACx(``Eqme+cSziJ!1u`1DnqS|Q{o|Z5&g=|qS4L1pQ)u8Spls*spbWUwU@btS zy8=~Lzi!l9B1Y3cWAGwr-xmNzs6`L)`X!=%QR@UQLNb~h?XV^A(Mu6sqj&5})n*p@ zrCq{WBWn^*sTkoJB3E7y1ux4~9T}imdAN_P@;0HW@}Yi61L`X(4J6Os($p z4W@jsgDppGyUTn4=&H__$A<3)>BSFg8g1nTiuhI*E;0c0o5-2#42kL3j(FcCL`Tk& zrvJ(s30oy%l5b~3gUqS&E9uM`M2j#>AKW?Nw5R-(_>y-?f)bz~w$k&~JXS!35cb?g zaDi_0h|&Q@Mkew5^W(Oo0LeX_>9&!eVT=D`?xBpz3uCs2DT}Sm(zoPzgWl`s=k+tw zN6-KF-a-8${%WYR(}Nt5^?PdK6v~G{+LPJB`Tc1$#N=6Z%+HJ(qGCAeOlDu4J0|XV zh@PTeieRheMCAU!uO6@J7|u&#D=?!_R3najU;&?;=Q8&hI1F=jd2QB+bGHgL_8EPc z8fwoHfV_sK#1Q)Yy&&!k+YBGV^G(kb@$pH2a4BA<&wDo0Qwibb-EpzU5>Ko;4>T!O0fAU%C*1Ry)57q+s>OR9Ye8S;~ zb-*;d_Mr*T^;W=MYxC9imEw1KR80)gUjqM10?MoZH$&FVk}CA0H7*V(YRT;cL!&Md@)WdD%&* zkoyd`SE#5TOzo(mmfSY%|Gg`aLl_E3|MSHwUuKW~cKUE~!V)18P?%Ca62vJ-`BMkb zn1SDzLdgr{I7xDsBH2*Ea;+!z{37qGyQ^4)F1BJ4^<3>-n6+S>U#+zdx7_tnI>ZMX zlUgsG`|cq-a{f^c705&XM@q3k4iC>D?k1F<;Gx?0jVj5Ikd6wSW0|Xn!7oRF4y7tr z&^6LBr?r_od>ZaK;9Q<(Y_OzBsj|W!D(Es?(oEk8ptPW#w1q7Zwmlreoy*8Mpd-`3 z4RTAjNu*>;43aDmlRG&P&yq@71bC8;-dOo{%s3T2pu!;+xh8OMPMhnNm1WKsiirke zFEeU9)T|pL=63M>A>H~d zu$zorvM~k}mRmLGckS^WtST5mz?r5laM~(;QV&EDN`6GrkzZa3T4s<^=Zz-ct%K-M zduorZmFB3#@RYU2r*1a3C=F^ij3+FZ-V_@7-+A;{iW@-xjo3c4LS_(<%=NloxKJR{ ziJ-;TD+7a@aMozyHO8?^ps#`Pmq;!yvZx*HZyL@9ex~WF9V*=S%;VNia;4GHk~C%Nu)Ne%lC@*MBN1N;2ZyIe5_mYAGW?3oG>{i?B( zrSo1Y`rR3{@<+GwbpEMtP_CXYmLmNNirCalR_Je{*Vps;Y^y0U0D{3Y?*U#)2X2YlkEengrfum@98<&0|#yzXtdRqPPVZ7$l{RL%D){+zWH^P z5EL0;6w%M`k*o~#(9ZRkQ*nngLT(n3&;*mJ!aS?cBsVQ@-im&C(Lwq}if%TuvQ5RW%==>?(zN`OJj}9flC#5D}QH4sG zqUsvfw&1Q$!IOe~l9@^+4BwNt(>D(z(-Bw{bXO(CuTCwRq3&Xx{Bc>SXL64SW&=?w z30b3XP{KdIxY(%Qnm~j(25hYSGRpWp;`<7ip9O@bxVdr312>wSF7sKLUlAmVWH>Ci z$Bf6II*Pp|yL!AHo06>1`FR*3;;Qm{Ir7pqp@|8y1wJ8mc?X%I zFi7$~OJ#8vb@;^-S*95OocJm+E(t%}5Udg0pHKT}d<1agIGr<%=ILg%2B>!i^UO|^ z63w>x&a^R$46omCNWl==DsLN-w@=9@z!AI~^U;$43cv2B)2#58F<}Js7rly{n%yiq zPh3!L8yB0`+0tk~!zUlMJAeeh_d;iAs`497Tv2o76z9VmYOcO(U9 zQe$~a8;V6JQ8i&Lx&(5w#$B`J0Edo zzb!<#2l?Ww#IBOKz@-<4zFU^aUaj)7fIW5%zwKu)CfM5w z)|T#BhNOyB-J~(=@hYnE=BE_(o;-u`G)l?rSkMG&S2J6ffk$n|_)&r?OD!zY?+p0e z7zAdhUI+uax{_tif$*%lLa`8JI-luHRBEIRYfR}_JfJk~TWeYs9bH$EBzN}0K zos=vSo!_L6eLv2e@QRFF2{z51JFU}+Yo!XHkIBZVJI?`t@TDKvnW^KD%9s)G2qxtp z%SdqMNOmVS2g-#2HbZhG1dfOmq&8Aqi>}_Lg*|DtzqEn z0puG*XG=+}@upE)FGT_fYV>+dn>bQHLFc4}6 z1LkcEqUM{543F0IRztDCT_R4$yo(nl;N8wE^4-j%T>6jJ5vVCKdUjFt@)ERM$R_`~ ziB>e=?0si#_=6#kd!3Gf?C>iik5Ci<840FwpQi5qV!0i5;e};@@^HZHw3#4#i5d(| z86ugo5EFRKf8YHKnWsE`ri|9lpNXFaiKc`ZWf!vG8H#)iFQ9CzVlblWYf=kBt2fs@ za6D?K0>M|&z?!>VZf+ag7En9yDO_No5p?^IuyEH960;Ofjd0J7l$r#&J5{1@-RSGS z{q=L_d4-v?%%j`i^Kv0YfyI929b$#c(v5%bazToVBPjHO8JmdR6GGR z1BK#18fGf999cVK1cKr2N&q})K%yFshu22gX@BC0+VEDQflrhI?9I_>hqc~mVRe_? zIGzHr&m2v;g)}VXsbyX@lmvG2&*%rW<3!j}J!MD_J;Zoj45$h;fL)CWGAQl|;Bm*t zRfN2+gTDt!G1tz0nndyM{$^{4H|>6u+W9pFae@h@H{F%gtL3wsLd76#D;K%^JAFl; z|5;d1$zou8a}pNlniK;A&_Mx*o0p1l`}+hQ3*7Nz^RL)t$m4g5Sz}S@56)^2?sWiz z;~6s*FVtB~H_zE`&E9XBpHrbzA3&QcFcNp^a7AZ)EkP9!Y^d9G= zC&?~|@Jv}*@HD=d(mk6oV3o@YpEQOF8@`ZG%#RD%w<&0|ale1ZSp!1Zsl;6})w9O@ zd(fF)#~7Y3mFs*%Bo)rUdd* z82{b-AZ(%jDC#xP&=NQ}jv=`mmU+QSYjN4vhS}(ErTJ}s(L~B+@rZ=~3?puq_UGC6 z_j|riw?U%knC_2V&hA4m61up+|AXdWJgl6>y=NkuJAr?1^T%7>VP7kwSh9WXmVOH>8MS#jcWy2&bHzSQGFQzr|u&!J8o#%Q*Ql#hzjL2qc`NW+Zf$-*4 zv{_eGxP!F*Lm+8ID--lR!wv;mep2Lu@1TVuaz~$PmL``|AI6m$n zoLEt^D#MEzSEa)o=ITeOIn3wy6Y>s4&&a>a^8d&-?lZlb$O7Ri&AMcJDY{uw8@u=6gEz+`?&<2U4G!r_MC2pnp-pS5xW3R?J zv)zrtPE}AC+p%;GeV3W~!p0k!l-mTL(ogFG-0fX!jwo;1Se9J7!dtGXPy(cWs_{-!}1<`(O`wFIL__uxhn+({P$^f`@XlkonhaO^sG zQ|wn44UlTmhUZ-YdeTRrM9ca~r~v;z0Kj6%8z+uv?-;6Q<%%;9M#O`y z%zS8_*Du+^H!6}b&T4eFTB55^jDLciEo=Us!R-0m>~Y)J`RT6Eiz z5CCC0ePgbqvfHX=5xr`D7!7}`EcO>Bv-r1?1exIb#ryG$&c9!BWO{J zsd`N#nT_7b_-v~Fl$wl4i%-Fo$dVU>Ua4!frt1u;GIE*b6^h`_-TavQ=OWK!aOaww zXT0G*L=+Y|v0_r~e`ivnaXs28#Hz%p&FOpDz**G&c3g+o=!>G!@AabBYAy4j@QE4m zMZwH;pT=W`yGBt()0YznTc$-2DLj?v1ksNM4uxnc`v@0n35B&BrDyH2#n3-P*Y7vk zw3a%xw}L?4Ci@LIJqaAPqXC{?HxBuu$c4gCgq$U-QjA9qLiEH!XsM{rErxPTZ_Q z++V4PNJHo8=5QEsl})c$$5JHOl~^7-G}K^QcWq2YMx4(ronyKN`v`0{{Uy{iEIcy< z1m8bdPE+L21H3}N%4aeb{Vd{HD@*vB4eY`y@V*ljn7>162@ryxjI>C^Odo_Q5iEJ8 z6(xk<8M)Y2@ZV%F-W-=pflUeaGz3cr(@Sw|L@b4@yzEE zgy?Q7UIMc(X$H-FrTMQc5&O!gI1)}DAv7rr%3r(PMjI)qEf%ktkICl=JDh*&Ep?2gBrF&gfQOHTbc#? z=NHgq0&DFqUjzyfQM*dBaaFbsrGwX-xqqB+HcO9AeDQGV2Dq226fLd_xaz#S$u zd{y$1(wz2vpeJ4ya(|~>)5O&4-myuGJMuv@96XInGn4y{Y}JH8r3l0dzGx8w+*jTh zaeTY4mFdfhNlzzoy^kD6AakiW2@Dt%RMgb)VDdv6#L$^5Ta)D$k^l%OV49|OZg|S- zYj>bIZ8GF0r(Yjzs;Z4D0Tci^QEKcg9H%N&G#rCQ^3Wj$r02Cb_II98Ocg@e{y5Np zuCpq>R~_Jx0d+yXMV+&1UBn>VNTD#IeHAutVc4o=RTKV9=pw=sO;gr?cR!`ToNI}X zY-~%!BOQHHus*W?TrvKfX#=$(y#w4<3a|*$7_-hzG6c5xt8ZujO}EbuzMY6jD{-Lq z;ykx{==)*4kv0^$(veHOOLnI1Ge0(r3OCK{{AIcYgPGwfv@69Z1DiJ`yTah8T^dR2 zvf4AF4Hl>9*jTwf?^|o{1K5}V67~mR#4cl2h`oJkQr4ZM345d_%-4x;gmcp2Y;SZ5U)RrYs*K0;9g(SLNg4TJ7m$nkR*y=ydUm z=71jDT9culr&SHvR~MbCNAzKP^#Npg@#~=Am-&kQbbeELXw6e4(PAO8rwjV zdBXAE@r2L8;;o-)&%Nz$ZQNG)ig3T7l)pG_)rhCz5xi3si> z_eoa?sm>4R^0J~sqh92FNfd?_B`5F6mQ%Qi@X`ab*`Se)}Fyv}KV_0yWn z)|qjLSIcC~5q}4av17IZ#UIL)P^=(~8+pm4#3atE^wMHa;TV0)a#^E-y6dF}wYTGw zs`XDm`V}QWEM(5CWRrxkKjO6mdKiaRS_~cz@B!(_6ND61;KG%sqTl|9K$chZI%>}% z%^9up4kxM1j&Bi~WtebF(eNEzMeqzp3yNEp)6fF%qWPMI!u7-ALGFJ#<{4*a%#<;e%6wR{H%4^S-M652v`cJsQJp!VaZ>C2X_VGq+9ZP)>?B*f6#t^GG zfqe~4z0uKt{0;awq_~_bqCRP2LMZEWWc%Tx2e&oB*;yQToSq-aY(WKCf$$`+Ea*NV z&j0P3KaA$sSGt26z=e$09PGaRZtgHK%q9eEv5WidE8)6C@Zd0RSRYLtx&-k%>agMAl%nyp zl`W8vurOC3KKv(1VXMGTB6`!ZA}7cbA)IGsSE2$k${i+o|3AEElT{&IQd-GPABZDV zoIIaVIGf+)`eUoz-=6>XMaVmAR84uhPUI)kJR_lX z)pt)xQFJM>cP)4;cn%$u(uD!FVT^{r#XF%d`=GxZ277U^2SKT(x3%(j{xXnbvG-;W znExgPujlqNkDMiLvePt_nj?j>SQXkKoCg*mk)E9Uf-lX*WteCu1>`z}5R=07snH*f zeW3p77#WAD?6%bu{`b;f+L)>->0B|Oj8Crbpl!5fCXRFXA%S>) zWF+Fv!37m(az-z|)OhFJPgE7m){M4|G7p!z4@E{SsWNo;K+kX*&t60XRy{r>51^mp zXY{X6m@>*BfD-q}tm2-zM4op~Yc)}{2b(&7|I`#;$R3)-fR=*an z)Ld|AmV?D5U_8;Lsw5nqT8Z0Tedu_6DFB~LTt2Sm`IN$m66>Ba35C!$HqP%1%ss}Z zY70yJWf)=t#lAmsyqu-ZYLAWfYZ^$DKD^5nD-{*Dg<7~!XdrR)pvY&M#71oCD#s;< zJrpJQ!opn+_&HN>zv!!isp!!W8)}ScvGzPkF@;iKY@cDfZ&zB$RSQH^o0Hbte$uQ% zz~kscx@28X3ol79(eCNhaV6R^Zl3&i%14i-HkX(krdh{m-uoiAhsAj68yQeUuA+0I zRTpi;1n#?s8Dv@fBxkl{E)^yrTCNQ^xJd=S17CE|`F2GvY}8lAqFeAP+c8$##Azz5 zu_;y=t8P)a6+M0fyd4TP+*voU$%Tq2Xo?-)`!`+!x8kM z>z>GE&;Ujc*POrJVyrZ3#4vM16+JYo19dm=V$d0MywOfDcfG+T|B#EM$oR*0(ofwy zCDXt~wazHMAts$gog{9xvgv}Ql}U#S$vWpejIWJ}{ywZxb5b{E+2UsY^J# zmk5=2&rr0~V>}P<)9cJBb;nHs5p_?FXAdXH`{hU0WTUCENK&LSd*X4=_+U61!BiDI zxZh4Nr)q!_QNIZ2A+^t*lGgk0OP|$~K$EpbJFIHg74x7zjMqIq|w|d%n*op$WAkJLEi)V%a!~tYy>u%|1mGz zvRzz36!@os$>10G+@Pdf196%kQn~?KhqZr1^Zm{N+P9kRc1TxkKcoTF4IC!evz9lqK05eUYS1+H%a zZCPk5n$T{SF=1SYeKqztr^G4=z;k{SWb8-{0sq<_q!Ms;{X~nU&;pVg@9bd&Z&=cIZ(uxta%(qWa;#YRs46MPD=Z7%$f5mT@Q zOk1tQ0GT4X^aTnM{P~4c4}=t7P%nE>)$xspPP0l>e=?q_=e_D0SvDGt=>-_iF1aO2 zju~ki(80tPa;mH`$^@(`yz+@Gwct-N_LAh}N8qC_3AR%Ayc>8`G3(%@(0l?+y5Ta} zPs-}A=-OMyqj$K%M##mK6w(QF7Ij~oY%tZ2m21=Rxg@;xG*z zvHFnw|EBNdqKRV?4e~ALm>%#TQi8ZJ)}%j~_fT@*%tD0D0)HWeQsS%>*rcYyh0m@4 z(Fq3pgvdcDMl=NVJ?a*Q43Z^Akd4grKU$RS^f{~q~lpv-}y^m4Y3mf~vpSIKPi z$%?J2+uw6?yZiNpNTaUjL-`y=$dVZ%S<+q_o6Mo+NOQp!NL>!B+`q z;5!!rE2t7kNWFEK9&;S{NoZw#=#eRspdafnw+}0Fq}l7!d^c2)D}+F7KQP{76aQ~U zM`d^du>d5oJ7E4NmoO0smgoBh^W`O~fOPZUE||YNT%G6GY7rgM$A3ZUC_*{l7*=Yb z^z@-l+$8)I*?bBdR1 zL7!XFyr$9zLu}?C8llGI?KZh6iGw9OsWiJ1H*19wZ*pa!8Q+CZS2eLHw`Ol1#%Tl? zNaf_Dr>*EoJlmx|h)d5({&|Z%&aZ7qn9YBcB9qqlge&qi|F1z0HNn{2FWNBPKgW1t z1m6pk-N#t@4M_#i>X@DGd3kMsETj=B7GKQESDl*>S5<#v33FG0*8cwD;>SoH>|t=@ zuVzjZCXN{>i^tYkJO&lx?AWP?0ypb^Xaqdxxi;vH-Ysu?* zdu<|qWGvi>Ts)KR6A6}%FVN$Uek|VmV=ymFo&*}@5Jxn9K!D}BW?ex4AFUbDu==on zRC5HZjS)IAzymkO=Z_U${%Nu_efwMo>l1J2M}TTmDoPn;PQ7yoI!6_aHf)7LpNf;W z%g^yY`Y0D=pL#W2(WyZAEuU5j-RZMwogGJ6Z`P@kBkD;ya1L8Q8*79HVpp;cB8ZTp zgGHFU|2RkEgJ$||YvBQ?TgEd=>@a<2GZ<`M^E(W=D%z}cS6;Gbn4K+y_o`yfp}k3f z?GPcIPt<`RNh_po26c`Sr+HWDzU9*q39U4}r9QR_3vPH*11VB_=b@gYpq~f<>8hKr zlB~S|*B4!B4fx$=nzWH-9Wy0m^Te_;(~!8C0u^=v7~tvb7J_Ck$5JK5aAWO)(&CS&rvtjFcGTobVB%D68{rrXE1 zDkZpwW#eJq-acm>z!rGo&83`Fcna{Ii5LnFXfZUiw+K7y^J#SP4s&fy^kBpNzaQ!L zAX2?%cRHB}9@2PG3M5FybFZLec@-7}@D$rj7p7SRyhrJ~MUE%DjwMaN_|qc|%=6pm z4KyfKYOe<0ENnpqqxHARu~ya^H&Cs}b-*TAy(meAx7xK<`%Jek8aZA{L`Q*&sBH50cR0A!SI&3k8ggE4 z7m0*<9hDnHA-tJgnm&jl8FncDgyG)9Q=yl(!A@s#hzIP2>Mo zmhE)QR=jrWf@qFc&Of2a*P&PFT}-B!u?W~|7RIJ1B~_qy3OF};9IzpE*9!vQ>UX-1 zg%&;d5Z0jsrPcFO!PDM^Z%jOO%CNyX9~Xee;fLk4D&X>V`&?8uVt{8oG9Q!SmD<_Pr40CLXHR9eDYGcH8jGbq?Z<2 z(!Z8rFL^q1JxFLcLR=ud{^u8o{T1&u^4oDD`F~9J8;-%JAg?vWtocio1ju+#qG$_Y zgy>jDR*)#PRk(r#go{mUg zdCWN-o`KI<+do* z+cM2#)>S)km-pHrs3fUW#u1|df&1DRT{Ck0JIU#nJj)3>m_bp+2BwWKU^uv{zNBQ> z2+)iZt>&MY1?zWB&g(=RTsYADyp0+B8kdSHY0SjatguzcEm<+oDNxI3j5HS*Eb{oh zw}d6hnhMFINm|isJJZFCNSo~itUR7R4sc2H{-wZ@GP28tit$N9k|n(*wa}xw=hCd( zNG8EBk$JY;<;ux66?iB)TeW!>LOMD;=@E9N0b!jOyQI`jRL4%1 zMV~Dym0PHPTxJexhhJCk)&=2RYbZe zuvn$Mv3Z}`g#Jfp=n?N8gGcS(V~blDqJqiwS(UVq{UffL-Ix-WqrsI~FwekpYuL*e zK;-~wjiMtFsP$Ujp~}wB#l-f(r{`tz+0Y@)u{Hnm8m<|L+M*5oMM#N$3e(kMyAJX699+sFc-(Q-_Zb=U&Nxk8NY7{nd_v{qQJXQ|G1JW= zPrxq&O|(eL(FOIL1s|Jmd6W$5qZFm2Fnav5R?TLz8Q&$){pjbr-zmD+j{zj6>3!ow zfy2^lj&BX+(w#oy9Zn`F})5V=Wq$dz=*Vo!SLL&R!5FI z+uj3Li;?Od)j&NoHGpJch*N3H8C5c$_B(F^(xXFDxKTRxNDD3*qI>Mte{2;1oeHVZ z8zw0E?cqOkr-c|HR9w@N*rRNaHwCL(5>V&)HO<6`5(BxrJ1git?@Eb2K`mj?Y_;7z zAuDZ&78I9~4{iLbk$2Ot%tUNA7c1%FR&e3eEA~Uyyz^Rdwm51kve-U}R9)xS%k*BB z9cq!S6m5~F|5=);lOIrg#8DodIsSg}wj*6PDM_D&O#aaGn@6(VXki5~ASPvtLeGV8 zPG$#9`?TJ_jqPrXBpfFP49ZTcTmn_MjPCBSf?0{NI5SBbguQhGG;qrqeYw=F2SawT zf7C9J%KT;H$qH0YgeVHesh+KAod|PiX5iv4ytH01IkZrRRxGY4xmXY-n+O2BfHI2- zn!O+xQ$`Xf_9o6UvLcOdPD~P6?$mKiKcCupzgOk5Bt@87AJGCrV+|-^4z7_*QQaL@qUQ2KN zhM3F=n>ls4LL8)%2yxMHqij-mdx4tjPgW9c{HBOsJV~s;+aD|WxT>Y34?7-N$HSNuTb=hjSU5x4Mc z72Zrtj1Z#H!Bp@JSg4f~t5My3&1fVxo^4-Nx`OETZA;hWJ3FTTkpR(QXH2BVC4Fg! z++t5=LDsM5ImCLKnIai|Aml0RVoZ18Piw&#sOHQ26^_U>V@34E&ro zYD(nso5vQEpfc*k9BA0=zr9Z~A=Y?u0WHR)g}uKbG?*kt*n94`%7c1NQ8N2Z996B%?Jn@8&$YV?BMI ztA_ZDXjd(gt<@CEK*(0vr0CjTKu|uZy_7q{z?`?W1Zdamj#*oO;=twsr}Fsi`CY3L zO%T?;YLboln>Gknp%duv717!HDrJS_L^=V25>l6GjQ6ez@8Z;*! z{`Uc2Bcl8B#pRldPJI3QG@RE-OP`Q%GukD&QY{zYY(GaPd;&Zudmvm{bfP#m0+PcK zG<-SgrsiHYu!{)FS!60R`bcs%|DlQ3lYcF7;zP>lxK4@?r_>LOSJkK@T~VP}y%S0+ zA+CIHx|{D2Zi}@=t^*nKT}Y6GFs856LLh@g(pVpmqy?i;#|P?{o?{8&UX7IeG4&Gg z^Vx%L!lufMkSR{9Afe|@b~N8Wkv9BvP<&z1ngoUZ^V`aCxGQ#rni&0d&~J3Y@xN!i zTfSDsG~^Rx#ARVZ$1IkL3~@+9{uSWWrZPjB-aL{~S23E21d>iu{y-i5`y`b603k+7OsU>ISP66}qr@x$ zM2!kt2D;A~SfrUImOI7Ok&22_lqZ|pUoG2yQ6qO!jI1bLOY1S{=$(uKq{YFjDyjlE zoNQE$v>Jbjz#$i{j<(_>{!l`POLiUR91fQ{Y+wh*jMnD{vhFkjA2twS-+_=yYjuE?H%f1=0W)h+J#a#w9{ar=)Rf zkAwenyq7k0axW&^%VCjuBr%H#ESsD7y*7gg1OVnL2PP!L!dnFiI9f4Y8;8R61m3h9 zvLbWaoDfx2RcH_f^lbDo-7qdKXs7(=6CK7*^jr~SdZIofU> zI3eLO$Du`YTWfiXNmH7m+ zSbwrR&k!$Lq`=AQ5;Gv`dpFi89i^mw(jINIiPkb;!QR^=Z?W=vgIq%EKyOY`vKD(q zchxeUUg|_2YqPK1w#!k18y22W|B_jtBoHrpEj2n8t0v`*UlV&p)CodQ6^$VPVKBm$ zJJcYnYARJ9BaO7*F-5|#7|yk0?-A%fn1+DfCK(C|58Sh}Sv&Mwl`m?_4texiQRwDnCxvR}33;5h-_C8v*q#`4tyqas+8E5B zM>vPwGNsk;M}5y>j(C(Iq5DKqN*np{k~k73%dBm%99~3QW;XbW;Z#5dDOSv`gL95c zfOcd@WT>r0z?rAe?UuraVsq2oBP>49MfAUm?L_KWp`w=Fd|zJlgvSp*4J_Z1W0qBxtcGlVjsbw}8FJ ze-K|%uCS*0ss8Y(OZLLjaM+0TFu8zudiv|&!Z$veQ~o~X87G$>(+Uq`nuk%Vm_LM1 zU4%IDo2#$>gR!e9-AndshN&%n#}_43JAm*p9-63K{D)# z_Eq>4c!?Ul>;fby>UwYQ@mbA|HK??0@KLEBh$|;`l77ppZE+h;6Fk^X^udqKvJytr zfR2HtDB1OY@jb%1yIK`{;eg9wdxkiqnGOS_M|g;_bVNuSs*!{?$E05mdOGo6K)~xE ziXGNEBpkOJeT#a{KVwrK;=W#XAJ@kfH)wNeL49%Epn&aZLM0bYuKP7L~wFgWn zMRc$;@H2Kp!edC(E4Kr;?=!XRAN2F7UH#d3hl6^ORwU?f4x$$macxmRvg-dgns>hx z-yn=B?smI=9Y*kH(UbF+TOG&g*o)C)izs1`c`0v39DfU9P>yq=f#sbGsEG&`>Rih_ zwo`7CL_fx>Q+1Fh1)5#jW0SjX;=@top6SS3?G|UHKM!nWPn!kCts#;e)s#{cU3Ltk z8pgiVZt_uhq~^%P4!YC@_wCCfU^~KQ*PfJP>m?sP9M~A4s~c~ymMIj3Jp=8K zf*IntZ;1UmzX;svTK3PK!$V0^=mU*aU?2$5M!4Qgp-g8*i@kWRC^91=mZ{VGq4{n# zzQLCwq{a$EGjx1#$NbAltgWF#1amDCt-X!8GJ9d(?wCucZvFu{?+WyOA=f68LTdGy z@peSUEszS%#rm5X@i(zTrdL}Vd@Wo0zX*!>znlxi6-4+6Ewy3ibTWg3uHOk?cY?fW6 zh)A8)7k!Qa7JbX{Wdm3V34O`BtgV3N!`U6li+7Wi~HB< zmSE~QftcA;?p5Y2h3Gby)Q!wD&(yR)8i0{~gT~221==>^p)whNt>~|A6Qy>>ZW+d{ z7;kU4<;u?$o3hZ?oE^?gnwMVN!51;R%zZVrwL3^1k1#T1{LcWi$fnpYk?mM**agsJ z0~E15Kt(m+jpss!Z{le>%yr88a;skiFS8Jgg#mtcXC#c{^VtYwzoH)09^y|R6v@tA z&IOqO&|oo69H7L_9@OM(QcZDg0E$3i+kUVteHByFKttT(F>OQ(b4J|${1^JKF^O%v zm=p|P!@}ajU5r4b_lH*b33|La*O0^C1ywS3L)!ts#(Zhe&_UoGQIpQ0J%UguJ)k%> zF?g}g=&XOWvP1*YY_P-bP^mHVnvQ_F33{OeSir?00T(-Cbc)&?i}Ta7f!q8R@Mx$V zs@aOa1f3krQ@oQ>nHLgz`nTGm`}O+CQ>C&^ur=ZW_Ymi>&7l;_wDvBo9sa7C(n=y*IfZQ0HX)j zNvhx^MqDSK@+P5!qc;7kYxV0rQ!O^EQd6KmV4W}IqQeNo>hQ`D5ef*QaJ-yZ?aNt0I*R!6keGW;|5MqKoH>isCG-M_BUzr)G0_D1=FmfD<9@#(#l@F!?e{ zhSj;T5L=9;KfH{|ouEhBUw(Te0mrcQVdZ@Qf^N0c8W?5D-(#c2z>ewtot=DS@5(vv zl`BC6h>$cmlF9)YxRd3r|KK&7FIh;eV=FTytRd|y@8p-mIsMOlcA7TMUQ=>f#W5F? z!Qc3(Z$7cv_^R5idA1r?u}wVglD$>Gz{$c%1M*V;mlxa>b7lC_4;?j)9(8l+isG3% z|E$#YvVN`GP8!m+3+b#A#h8sI&OZ2&IY9p`pHzxpv3T&C4uvtOQQe4F^5A6wdj^># z9|iCd?GXs@ju>?77s^YT2LBWU*N6P+&Jb3z2-R}R&nd-&z}+AnciT3!iOi+ni~c`s zTHz+9M_kI^-z&=fH$w2~+*PjwvQlv5cEd6H$UR>@zgAX`b*wU>5^ z-(>={7`zuG77kCekCqSwL9SEQ`eyOXYMKH{f1=IqUfJh&A~LqL)zMr?-=grojD&Fd zY~xam1`utMiTE^&DaWH?&i>rLh0s{Axy(Y;&-v_sS4kG~mjgxb_}U2+EP`tLB@%UW zc0I}NoUV+n;er6imd$;B%=`9r+m~?;#P4z}K5lsb% zCYJcVy%@4PdB9M2QMe5B`BbN?i9-LlESzc{+bpS)L{9gw%L)ktW~bIfVWHKndUt1s zMe4+ksosFslF!pak}iIdVX=hKa2Eg=OVt-=cA(*X()ZjMSuVt7&}jM#_Z)s2PwQ{)LG!02MJ7c zRMKRXIks_z`R&4g+sj8qp&S_=>l_ZWHek+o1*0>%(5P8dwzR_=H^o4zaO|=U~;k00>li#hW$60H3EnspOOzJasXb-^4I>Ql*mkOh$J@1B9^A( z(@g;37t)p+D4bc_^|8f}+dns-E6Zpe!PX^t3mz^r0aMWc{iJ$S!QTRF6K%x9-mW#{5(}yG0qfYj8sT_ zM^%UM=*jz>=jy$eAdeX2K**_7Ul`FZI)#$R*hhcowT5b?Km<>h@W`IW%L;I3AYxOY zMDL!A!id<-w9Q^=XhD*2i6X-a;qpvH7SvJld$k!mCMxWbw&e`n1~cr{)`KmX=?l%D zdAb?W5Xd!*lfl66J?T{(0vEOj?e;5<+ad%IjjQQfz3Q4dNX)Ij0bc#TRy%a2p9G9} z|M*Yd|6Gyb2cZIu$@mTzHj(;*0>^uICEZ=udLb&Z)lh7u(ndwgOVdifdTnYiKcaeL zx~+SvUd!*f%M^!$>Vo?KgE|C)uRrcgu0IU9nwDJ!6>QHdMeF`{Ym__#Mh)(G(hDo- zc_(Ko3VHg5JJhnSuYamLe%nTqOOVv={nW|DwHl5N)ru0u%7&{eL1u^eY$pS6E!%+d z~;Y-u0ufO7jWi2?w>&jxRDfHmVPNqd^xT&=IDX^z=@50OOCBk4En1+8&(#NUX@m zc@pZyUxXTxcrt5ww(+&Xt5<6vPlYu#INP^HHp>M-Rr)N{fGH;MOQprPP=I)QLzWqd zQqfQD%#}lvf-!Q}RMeA%mF&I5_vSL?R&jcj zechftbWY!X<%-2%@5HcdReGN%$}VWQZ+4QLXzP_!XZO&asg*U*c@odJvm?T|gvmg? zASmO;CmTN%iw%LU6=BEEx!}ryn~cMd{+K;6Z9vlS-23sB&IWlUQ7IGX!qv|s5P~)X z8+%5d%K6kbANyy>Y6Ycrp`$L&z8cLL$;0tSn*Nv|nLcx!dNiSS7<_(DUu0gd;ZJ8zzHMSGvb9N%eRz38!Cwca1- z_qIX`|Iv@$U13-I5hgcQl){?Oh>!{`wk(_e^|s*hF5qD?Azd}lwjU*_1*v;Zc6K(} zH;ywT>r=PyoTObUfyQ)2Jy|~Ig}83{i8UX<#TETr5Fj=+Q{y#QF14;B)zy88=ol)1@6oL zp;8~cTZQ9#1m~89*AopX)BQz&}qgAfc&9mBuutyaiQyj1w zBBn6Bt!K;6wGTPv9{F!4QYm9FIldq}5IDNRwAHCrD5nDP=UbnV;9F;j<&uGT3jQY2 z#jX@e!#@tLCwC$dG%)vq_0ejpcX0=Gj?`TMTpSDQf5sioLAK7&>x)_ zM9R8ndzz=&>gTgJV9|4)K|WZRsA?tv1KiPd&0(8w_THY;tmPA{=dSJVPFaY&`%8c|cD2Og{Bu$T= z<*Yf5w%%yPO?$|zFMWv6PLGdYwNF^K(=tsa^mb;wdsbmlbax87hnU{n5VyHZOX zNe%kYFd#R#w^1Br*v>NJ>3#Q^VR_!$!xo4cpM<-TkgS?TI-dMk3`SG<(Bz85Chh;h z`a9us1pzi~TS_FB;7d>d`%?eNaaVxR@pjCWS_&LhCJ>E^ROMh+qmwgJ>f==_2j|!z zN&28(KA;>P`Rc4}jMx^29K9CqyDw(u6|&H}a=2G`bvL@ctm{`8ZEiTOjUf3;1XpYk zjWbTZjuKM6RKMw^DkEPyGL6E%%DeE!9IvOEubpldNn;UD&i4p6)w z7zzuev~j#Z?f$a6IFxLV^n$%-LkqkZg8jl}+1URSEj=MF)i%64SXOa-dvrwV-chY{^dG}BBeIy~_(E_i<4CNRRQ?*@ zrIU3fbJ0 zPODMRSMIcVAnI*#opd3$!r4vH8aw46YSrif`Hmz1o^!&X*pk{;94!BS5i7_MU1OWx z!yE@qATEBX1o!d%(j@r>qH%qKI2SNq*_w&fx8AGw>d@aoaDkKH03&&KHX1!0y@Yn!e?iMVlwUD>i>I=5w6sTL=abCQdn{Yd~gInJTygnk+0 z$cV2C&Uu!*{KFQGqSsR2y$TEJ)S8KGvj{X z0!-0%y$pc|p8CdNt9U(9@{tqn%+3_mMrIy5ZrJTi;|T!c6q|IV43f3DzVr>=U)fOb z_EW#Svx9bu+jseEID9VQZp}Yk-poCgSS}T#S;4+#Jzj5-Q`bCXd6wR05C<$GZIU)2 z20IKD9f0@f&RT%&?3J~B42U*T8zl1h)22z6t^`}bxobt=11B616n3apx`pAnA^(xC zM?FBUI7~!JAMs1ON2n(wVmF8Fu*ca6aQjBXhg7hqF5r-IsjXj+Ua(^)4ErfrAUTk7 zr27Y0W#~N19gD(?n-iQb5+7~w6!Er>cn)x?bl`Zar$r|V{_6k8N0A}VxgJXE6w3<| zy)p|Bj+;rz%Tj&$$2uaRXaf$9v|-GAU<`#5p6xPdw6Yp}&NTu$Sn`&)2kZYerL_)= zJgb!2ZTRes`q?b^P!CJGqQ06)LVSYuTmGwCxEjE$%$Cu0 zrU~xVJn^Ua`~%-a$W`3@j?@)BQG5PR1xQQ}3pX+iTjz`%{5BP_q#>(nolRJUt`$9* ze9Mj`?KL^bpFgcSDrqv5}9n=0;)eMZni=KJKriG0&ZBt)J&DiKC2fz{dXu8o(<|hE*0L))?Es5J%(=yQJZ=+RITSmcm({ z_ZK($dZg!0u@WhjHdR@~U@C7e2k?I^$)UZ*HA)vE$SW z3~y@Bx46X{_n_e;o$6j1u0D2ZPCg3A6R?C%n*gsK2Z{W1W`)M@;#c-x-0!`plsQ-B zjlcJ9rV6evhFEHhFvhco##7)MZnqRw=R}vcj=B|eyO_{y@LuhltY&Hjg2*00omPpA z4fB+U{G}l;OlBIeS}QRTXV#>0^bjdwb?+{f!;I%s`uV zpC~w0J$v3>iC+yBr372b9jZWxRZv9Jq9!r zyx`#-tX#0Gdkdp{+cTBeXnY(2pX@Xd>V%eL1My2?B^(S$`+v07{=EAp3O6m=S+`dU?(teS@rr25;WD`R%8k$uNMeun~aVyJ}QWh$tEB}WKU9A zfx9v)u0Kwno8|Mg=jn%tGZY+n+(Jc{jVnZW7b11g;M`(rpP#Mh{W1S0)?z{?5B@iiIyY5WW|hBP-Y!%&B5&|lM6E;igHpUP)f#g(0?#qfD+0N=Z)4F zBO6EURxqxE#bauDHuYO!Owt+7n?~pgn{j1ETmg{M^^M7hvkL3z1$POCUn|k4iPQiF zHrV^*2edM*W$N~edp?4c-R`#g(w`oQr7*?F7`fJPt}Z3M)_wjQZn8r}precMZp*aE z<$agu@%$b$kYT5D*qHdXPi)tO=LyS`TD%Z`QiZp}*CTg7Z~Kzyt6v1L#Yp+w8C!~C zT$GTFC=2Draz7x&G_74O=G}B}JkT$Bk|-D_95z&6ZBgn~bXw)imtd9t?p`gw-5&5s z2pU-%;fE%FX6xf`_ez#zw9x$-8k~i%MkgbET|$Kfqs)%mp4Yd|4pEGmHT#w3{S>oG z%Ls@}xQnNt+le1Bm5Q((&90Q1p_#k=w+2KDBv6&aDh&zV)7|+0XXLc$TgMz$`DvyT2~F=VUSBRR)rws(Ld&{=#epcqTP^cXkeFM# znStG&Z6&xEC;hM)-F;R1ps~^{spMu{QooEzcof?NXcow8Sbf+ACQ(~!8U8_T@0hlX zYAy&=z`39jC2J6MGXZm6=}EK_<8+(gk>4-38vgbO42SZ)D(2YQ1@-Z317+~{{>97bBpy@U-%Y715!6ORrlNH|aK zwJwN9ZRc`$KIkp_D^!T8w>Lx6Z%+2Up^4PHq=wEZ#s@8D`t>Sm0`i3Ec zjc3Ws&Ot~C)mVr#133O_sYuDeWz*2qhRTG_w%`njYig5@)ByiK0Kn3!$RD3OYU32Q zoy&!<;(7zNxH+jgVz-T7I+0gg+I)tY0Prq>y*D|nc}{^cxTNA$3=0Sr^gowJx^CkOx(0n_jihGa&WD`1}tS%uR1}L6CFn?JgaZvCaTNXUMT~ z3nOf_RrHAnz7g@;%UP)*0EkjJnbIYGz_jD)dfx!7+X-J#4;EHqVu?`VBL*g!TIkXnN9dqsZ_;_U&f{)7Q-nzfT&4>2oyDr_`R zXWSpKS#X40p!`7Yz=q&=-|7}xBk9Uq_cv3}tFq0SILWKG?z-%MD@-JgY#t-rNxgRV zVcdIb7&!Vrerwvq3&VLz_r&I9GXvk>V}9Re`ksQ!OMhWgAzjClf@nrDdg1|Ms$Mh_ zFH%`+99j;pI+C+G@7nAFMPcr;;|`+;K!MH{ol2WPAhfngd8ljv-0#P_8uA68ndvXZ z{z)ga#eo$WKYLkx1&DWBY-mWB;lmZ=jrZvvZT}O*p-oZ3-f)rAB zQLis&ts1WZnS27yZ8jJ!9$@qcnm)ZBu(D%Fy`)-UYTu2ojB~Px#f?xXFv4E4XCI-| zR3kXKjAomd=!86oCBEA++89Fc-6;`kGQmm#;?URvhX<*<_d6P(rd!FXIftPI+72zE}`>=;*s}bDvmCre!LuKpjJw^MWwr)gB+*P0Si!2f0D_ zjxyCg8loq(Ck-jCk8QSG;@x`w%3-;Jg+}_fw#_yy?KshL(Z>a@|GLWTlL>*tCt@{W zpi8p7d9<-%ZvJl8y_YvlB@HzDtK;~tO145ZFTofcL&VBUhk3*g`@UL$Q`9bNpu{t= z=kQ_nqJ|qg0p>H_Qr`Hl&LC3bL9LcrmD4H#Hxn^(D6F(~P0WKM*+_)gWzCnaq+ABmA*9mg=CvC}1H^TJdq0+Ah1d%Up8&_Ox`T*dG`K zvVZcH-7Q4*v0Goppt+qFPg)AiQbWr0Yd7(Y1Kc!ou94W9PY5JQ!_dRSELJIF$M3`$ z7nzX*)i*Dii2LnoInbIKq;AG-SP$_XLQBJWqIZZ1Dgau>-N%*pnT@M;(7GQnU!Bu6 zYz6wPBgdAgz1tebe8Yr@o^ou$WBf776)I?@nx&NVptsMs{8Pw1asD>44AYq`VdEt z4l{pCD=~p7LCH3<4KRoZF~^aBA#@|vJ<3DkDAvGyx4A^lN#+mzZ~O^f-l_mgzU;g2 zTnboMzW+}Y3;6s%($0O(TvIU8Vy%YBT9f?}%pKHQdZ%ZID071^8fcxnk~!fb}r_PIaj*dJn>ivilRcCT4z;LDwxA029h|uI$fNck_F0b3Z>_+ieC=~$RTyQ2LM2_z$#e`A z-XbOD1;N;+>5dJ$@`94OEp^-JQ_ZQCgFUw$G!rcJ{L2`HM2caJ{{p%W8T>aQ`Xz?` zCpO2+J1NS_n-Nuxz-@;+ssO;X5Hrn3HD)i=aDDO9{fcXKB3>!R->l|=^k)AOlPV^y zSpr52Lw9aVVxe|hxJy%yE@gMJS1~^3Vnrw66+}}ccUXe z0`M7Q3qzQeWG%>e+}nGy9sIH}XmZ*`Jdlmo=k}bw@;jN#&?`~v2u|+v@FWQ1i$py+ zdXf?#;rv?tsPJLi|TXm0~A-qT)(-bWU=XfV#M;LwP1P7%zgXa z(x9Adn6btK9oH}HGeJjsnU>M+RsFMaF>%imd8ektk|i(voK5TKv=vJNnYV9)_L7S0 zhh8Bi0?f=NW{jxX?k)&dbp*{~@=}IUms5b=}fSNe@Fp(YPLR zZr+Dd6Xxa8)Wxwb; z$SYBNCS@h9bdms}{C{(nHBR8BUEE7chb)1fwuNITz~+GD)kreU<4o+Gjd-p23o37^ zd>HIww@ND(5ca`iVi4~Uef=mr@U)-LmFxd4&AkG<@+)e44RDDJkuc+7!f!x<;W@hz z%a`+EyfJl-x{_vjeS|hO&bab*!8b5=ND)D==~&cNY>I;udd#3uxXWO11&l0H5?X=% zQsQ7D$srIyl3h4u1JqdGmyZ6pW|!tcdJWSpq(B|uPQs!eC9vYi2@B2{v6XH`DI8=p zJX&^elOB|LW^gI4S|}XVX%^6hn(nw6FO-mrsxI@8q zJ1Z$I>mpJi^RvzG?{IAQ%o`-)ZL7S~es}*EyFuskF!-S~hBNbB$vhpwpbcE2xr>Zk z4)jA-lyIWuq2IX@*dh;?Sja9_m&#Fvo?$YWtGNC%3YZp$s(y>nd>#&NX~%;^`%R8v z>>_`|pdF3L{F(=MMo(Ce-XDhDjt}*(3Ks#J35PJP>N2I+jL;6IwP&B1MAmAN>*iJ; zQI%~jrz!R^@nJC%JUnT7(PJX4wV7L)n?J#7C?`*+a$Z^mFpFfI8Dz+5l+ydFE{=_P zIC2tGp&=AF?#*kdpQqFrxzJxyLopoaUy08#2__QlhCmEr$aNY#)7FwF!8|XiW=9(_ z>A-jS(G5bKh$c_h6<%cyEhUyE z7)f!LN$VzB1X`*E3%eEROFPc(Xh2P|;Br|iYlvkVAf`twM zX`)rYlkKJX1}QCpvC@9^Igz@m_$sz4ZMBuTAY!8)j(o7Vvjgp>HCx{z6kfBYW>8kh z2pL9inHEyroB{kCBVWSqp;^n$prvRh5hMB-*#A($Cjqag!Lf$YpT{+j)v(X8)GBS} zBcjPif|N#)$;8fIaayEN0+{cS@JY_9+;0Ox?&@bGNjs~psaiS1sJC?IADrKQ&H8ZA z4NFYA0a7}CXt5~CIMEXruVRA7p#(;_g(xGAlW11U3QmbF9xFHI=|f;Ctf0zLn+F<4 zmqlfiLS+oT+arVGstb=9$$6bT6BWNGeX`D}QL91eMW8b)I#Z2EE=@8GJ& zm!r>!#IkrkGf7ZimcPDSLJzyaC}$@Y;w-k-QwBL~4r=@&51sAqUx#R_);kW8Ufb5? zznxb$M7EunDV1~K*pXv{%f)_e6XQKc2yF}%OI0plxHbAPoW3LAqV_`PARP)rW+?@JztigeUQl^Dy zAz+13QXnz1eF=={k4aQb{)9E*3PTm;@xbid10f#ir%q_)W#fBa!{6uq+kYx(#$`eZ zI%J43KDv&V8Ypvj7K;eG!{pjb z-K&y^DorGLM#Xg8;vW!zRyzu;#qSe~q5GUvISK-sSY;r;j)zzl$+IH*39J~CqL>*N z^Tq^1m?iGcy?YAD_6E{1;{8thUpPQ>JPB)^apAO7B%({BQ-KmzI-FsNKc~LSBi)zl z*zDkdlrQ>T#{+XUXaWrZ^!yZUYlvq}4#(TM4boh-&*%4{a&FMpjiIl!4-YgQZ)la6 z;~O(h5C+6Uz2A4*;<$;bU-LJ60;Isu$5PQuZ)qlyY8`s_e< z(&?6$8p%{<7KNviLzlbXti69K#vr zUnURvvXNma)ILAk{VRT)>$(Y$LFf7^fkSer?X8`S1NL}bkIib7DThUBy?BMxosp8P z#@TfkqRx+=vGkSiuK)HQ#LN5gac!fSoRA|zm2%Gz-8iUL|G5n>Nawjp^VdC&c0pqv z8ac-wmp{8JI1xnqiVh|Nj~*pCiEJw-QSSIdgna$@n3yO`;A`x<(vqMno5?bJ;^Q2L zT4)?1AC%JgRV+_5khDY~w;{yH7IBv0Bt0NlT5UX+x7Q-x*RXi+23Egvv*F@GnIrt9 z$=FkHnmEQhDKB{)gWT4*h33(|QN4-{h`yo}5*H#@;8;_NQJXsL8YbxNRE&P^@R-Lq zw0_AZ^E+&ES#qe%zbf}^Pd)NVF? z;BqEhCKdicT>R6An2E4QXUzcRri^NM>3X>!ipVqp^iA=a7QYNl<2a+W*=ijnLJ^_} zg~o-qTk?d|`wP^YP&dPM2J(|2YVZJ$RCnk1v++2G=%)rM*riGYLU$$7)ib!s^qM^Y zH6RlV>Iv^;=3uQIj6;0$f_Z)-A`pJf(EALQt?2lq?ev}w3! z4G2)dmhHn6G@zebd(RX+mgS!}hT$#D6b5!*1?kP9?XWSVF}4BP3@AfEVQ!;Rjekin zf#4W@dGk}8k^|jg(~HXx!o|<@3arH00MB;*Q5AILlDMHoA+bj=mwVW4&dgJwYdCDo z0GXPSKKi7N^|(h!Pn(#5B%u!K_x3&ba%QeD=>1weAXu!enq4D#NJZX9gm9HuM@Kf` zFB;=u^jHKMd^q-YJQOC}aQYM3%Eqb0q3zIf*`uHOmD`=q@Ff6`C*P3(?J?vymYpQ5 z&2`qxqw;@4xv>%DR77Jy-Gf&(Zq3J3L&3|pCOSHDpbk)-<8GJ^7(=HnuQRX@x$;7Y zJ4V2cYlYeLu|woIAzr^?XHKF0yDs#Lc#smpWLkLy15PR^1`cJHEC6X! zv>&f#Qn1~AG+x!)i2`f1QfM$P3$<3bh-k$TNFN0ltKLD2{{Q+$5;!24fy5&&Dw(2zM8bvK0y`pKgOp=oI|Aee|rF!C3 zXyiKJ&t%~jTh?P>g=B8cE=s>Bxv<4u;g9%bMA3U~NF6n7XE63JhV=-5z$;#rIe2{a*@j5 z&|uB718FfB8rPPQM*e%KFqE0R#e%Yn(v9L^Psk>wdNQrJRndqye18iwpvE^n-JS00mUtX74>{+Jn&+^)pI|_B>9St;B(B@2!Fyec96d|~Qff2f zE`nA;W0s0@1D;kPWTWzba`V=2tL*NMUCRnMVE{{fSexsRAt{wT*`E{j86UZ}q+Zv* z2a&T6DOLI{a^l%_HwqK`Wl@R{%F)%WqcA#asf5#Ig2_BKDPPZljMWY9X{r=IGoa}gT&tIKC^9xnoyWquuS;_n1bM{PZ9 z7A=w`JCIXsFwcREyG85nJMHthGCGL@O(yO?S^i3U=FYVUx+)X7;DBAyApEu zmmF>y7N+;_8=jwkA`LA)j4TF#HGiPKg*VR zlZOs)8r}?N_saOI`s_3Svx#1Q`^=^5gy=|PKE9JuIYpsHhwMr8q47VaS_5l5l0CLf zM##hCUv;sdHiwCQ$qPAYzC0~0e&-h(XOOBOAS@O(<1WPYA0iL@ifRK1(s*Xy?hNdY|3SuuFl^ot)YW*GPWsR!F^AuJWlp3w z48S+o6%mIy(;`+LCFt{vOEzB}30sopdKA=z5Zh^W$}{bwU%5sE&6!Y`2CHb(gfWV+sa0`# zU#k^MYT39`R@vZlzW$vvo|4BClku=Q%2L1;&LY%!236+>|2eT}RO5S678#;?Pd|Bv z@c9hgO^j2t&3)irp|bS}C*<1!`(1e61my=4<4Z|43$*Hdip639F=Vt^Cx)K}bKi9a8tpV)MqEFf88Bq8fDml`%A%X0Ak%C1LXnn6fxZ`97E`de zw0MM$Qw4e&PuS}53&iM!YL?F)w=T5sw7_T|@`%EiWobhIjYwq*o5qPx*{pv^-aSwH zgn?$6l%&JEk1CZ!v9`G7GfZv&uo@i<)#gU4ahL!_Zb^`loouF$cy3c2oE>%TE3;R8 z54U$h-Dx38AK!iuckD);Z;ON=DvQie+=$E*j__3GRq-9fu7(YqG+aQ%L|(8$bEC(U z&2uS+A~}66S)_%#-ZDtaNYx370xTtb!(kOA5hrfCTvoH$mQD@G4VkYG_AL3dLt_+UK>;A@OJY*jowKRx&=l?7^1QK)xEk^ z7K+hVsr*tRaAO-_A=d15y^ETvabf&{SeWm&tGdbM$7I8Q$3gZ_%1s5(;Q(u74 z>7D&w5w|}v{mvgjr%s;raYTs;CQAwvx9pI9`{~2_Y{{jwTD@e8$IIfvJzF?b%2RE| z_(m%ToZ!N|UYn$Et~}>g%-OrNraAS}B3JetV*$?>Dsvv~NI{3f$c(@Oiw^}mPmXzY z)WEW$ZG`0{)(|RX{kNKx2CMVQ_W%veGjOer#dHu*L=cX7K<}l2y$B0NS0~cFgif_c z*mJQKCtTvf&t*>dyD~lznmUjo`dQPYLwA6DyPe8M;*Xw-3F+(!>xe&Vg96ZRbTK!r zAkt1a_Q$414e3tcr=8{s*Ep%zsCU-25A)Rd$tun4SC#ff5E{cTW(%oz48A=zVPAuO zF*Jahy`ntHjESLh(yon`%EY`V7#vIj5PLD~&$<1+)-a{E2oxcx5o9=TIc8lBKR(En z$M|$gBE*}1BkEXni(;NOY@5l@x}5x{*T$)1@T}@jD>QG})S(R2ZsNoT$z%azdy{dC zeuL+Cs|t__f}93eg%lMKg#V4*LSk3U7F3C+PX{03MlSY>HD(TNU7>jK_c@>qT0au# zAOD-V##yYyXs)H@PBI}EaZ%vU-(QpmWiS|sw8vpT@>?Xx?N4&eN!Y1My# z=9`~0T^o)6r%8QvmM^hjJc}lNij0_9q~0Go5xzi%rhMu3gxJX>-uQ4UFZr{3DsgMo zkdo&=BW7L7sf56Iphs*G2Pz$JX-qqT@hXwYM4ZoU%-ss!j9JKW4?FgB1HPDjv~h?5#QiFgg)Nd1Bq?`cBrXiLOfK*GpWM&T$JNJ)Z@luq zU|g`};}Q6khgCq#wSkrkABcur+I95eTOggZE^Vib3kLObWzWj{8a5{ z$l89AhcoA3$apPH#J(M1Ss)M+sa(?sZ07^-5^?{jqWqF&82cy3YN{3Ofu5N?Gah=J zG&sQY69qS3i|}x4S~m$F1Y$F!w_y3Biq6;;D?`I$D2J~zAKOYN_wroR8*N`PuPAJH{I#A{?m1ZCUt+>bWEyH zJrP~*3H-b_Y>k=zYaWRP%zl$tBiFR5g_Xt4Ze1{_k#X|upqPfgD<+}0d|6_mK)3G# z0IAmU6nqV?Am&>YjRISmJq*zLK>uu1*@ZVsRso<(s`QVr5AovsVfu3V;!TkSV1=he z1kr8$9h@vcglsEf1+JPe_kxrWYVyhj`k}Q{W(&P1^Kvd}sFBXQSs3J>yEDI=X^%c4 zbxs7(Rmu;MQ9l^7pnd{oV|lrW;?C2DejvH>4^>7+Nz(@~Z7MMtpas37 zY@lUg*jTW7r1{5yzZ|nR-5{h0^UPCG^L{UI z%Pbyg$2m6?F(TpP1dW(<66Dxo+X(QGreGh?jbe$M&L2fB&XEwYtomFj=ieD)YMeA} z_D`rbMHFvHomLV(i9gH;O|B(#3sEB0jd3+U5k#Iz?r#9M*r#BnB<5oWwVsFMh}*KL zaR>nqJs}gM6s9oE#O{AytHJ$kN4k)*JXYe zlLMaidzgtc3|6YV;jYZ{<^+rup0y3MppH~Fd(OSB*fQeYvY}7q_Pz*ExXw`!NgZo` ztISp*uzQZkR+Ztevsk(GFb%UoaToj>WL}WKlJ@bHUH3vHb;9 z-m0z}gh7mcobL;>d8<}X93BjVS@IE|s~(Gc@hhw?!JpWDas)vlf`I9j$QH0*K%O|v zU@tuyVegyoM{x)JAlR;|LGHs~i%y-ByxRxnY^Jw7rE{Mr4a;m3UWn`(G+8xRLDt?X z)W#!*6H7wU6P&!P6-=tYJ34%nNAi5BC)G$S&o;c5J@e803??`Tx-YM>GUweD$I4B@ zY?RK+=`_k9V%i=KBgAC38KA8oanp3yB!TRQGuw( zsSMX5C2=&3(C7)ew*ES}f)aes$n9*2n-b0x=wu#d63FBu>|Eo~{pux63Sp$eQ=a@* zI!r3dg!l3X5fD2b?qXMMkVyyrJ{1@H+5Q5u40n^RT6cq)rmgYy+!}6Q&uED-vzAKd@u2gTj8gO&i+t#!q>;yRZu%ro72kB^U7wV| z(=BiY=7;pt=RZ9?5VK^lf9C5J5d*-6#K<+dCyR_={*$1wbP+vUO#oNoM2-lZ?Ubg! zR&L6QOZ<(D5$6@xH$G21`480q$Rv|=z6xc8jJdUQUI5Y=P%lA|8zYh6H89jF>5tHe zG8#bc1K%(5z3fHZyl>5!)lMp^Gy)rDI;AN;ZiA#tr-KR2>^Qc}LVS`nhiTDHDlRt- zqLvnmb8F_7_ZjxT&{5_Ul4kYA9PCS;ddPp!4)fJQ_kVeowr5$o4 zs~+SO%n`J>;kyZqX%tJ~fwb9;c#m8Rrs`1e8pXA#D9S~udLO;Sl`=)f;NeA_TSmPrQ$IFTr(uA*BKUiTL*l_1yN0{$s#Ah%J zm}O044wX(%{s~3wpAvogX;jthxV~+l>dEZK1m5hb0g6!Kft1UaR`YZA=rfs4`D$u- z@0Rmpf*^K4R;NCj8OX4n;f55^)UmW8yE%Nm_<2GexHqzoi|W@YXj3U)qGRyjuH~`U zrO2cqE>}r%^H-6=vFlIIWID-+CtVZ%$vAyKOoD zlOao2&Q!5ch+fy!k5Q%!`NvBnI0RONiKE9z)Uu}a9iacft>UAA z6zk6-GP~48cS&|3;gF)Csrtrj{Zv(uniH%RQ-*diq6n!Ok1w4q>!aOE3;p={|Dtad z)+ReKls4e;D^PEL<)g#zoP$8N@j5zv&uK(c?!;wt@JXFP9cpqbo-A%kdU4uOg~cv< zOdDs;r!Cy2OJZjw&mj@Ux+Poq7 zA-IN7?|wJ_rkXqY`Me)NJn`Gpa$;oeC0{UwU!?Pe=fGAQ&2-z|8`;S&kE z|INMP*Msj^@3Ys0`uTZo7%K#{l*|as3@}h^TW{VqQN}WCUo~myfX6YDbcUFcVe&bd zd=;(Jzml0lXwz3W-<9)rE`bqG^4^~St>P$3=#m;K25YC!`7R;5W&B-G_G^w1O_f7@ zv2L=8@CA6NgA3u6G@zVk&Pz*7R^uou+|^P>PxnE(0ZSacqedjM+_4bo-{6b4E zPT$y588}uO6X7f6xK!wG=Sxz=7PwM{B>y)@M9Ko?DSo+#6pMYeUGPJE*lq}6L4a3( z1EL+;ER$lx_Rej$mt*URD@Aq{QL0&FZm&Kcq1|N>Lc{eMW#>#ZoYmT9hzxe<_&x>m znL7B44KFac^;t4~$BvJ=$CL9;&cKVK50PKG0y059z;v4Ifa5q$%!F6vVX%@5_ zuYV?1LTS1VkFOzepY3q7=--)|d8~lk55?{K>ZR}(BT?FML&4-RJYNwvSCU}breuLs z-q{hly}9w|Uf&6Yh>`_g6L63K*%6lm;Ly#aBnLr){}@wZ?C&O~#UDSfSGS9yLQEWr z{f9YPTx2zn%rlD_B^x;gUf$zT3v3&Or+|`1<0Y+fuuVD_n}nDNb47z zLTb|!O`F|{H*@2xW9C?RI{}u4)l(-hFi{l^=}Sgrq*<`aCmzt0E5wvCNv1wItFY=j zFkFiK#EbrYG4`LdvqcCl0futMz9IRsU0sSZ5T!Q0YKuSpkk4rcTJ=Tyy7Wmzt`6XfQ!=m?w?(Q}ghiPXI=NC}MX#%H@NTruF3p3;J%54pYNhE+j#qsBE z&^xbWw-nB0Azy;X;vW6#CntffUN$wde*$?*Mn4VkLjwpKpS5J%7#yU2s6tXTgK}GS z#0;|&W^*xG0&A^RUYq1+V$^BQq=Mk&PDozhN=*I7u{9OL1T($=_Xq-nQ%W_f?6OBH z6$8Y_GO4&x;Ghx>@Vvc>1XCS}+?8t~i!}+sBg`kbZw+)|NC4HY*kM1rCtKHgaQLNK zvw#!TmW}csxotg_+W>b3BLRWcM{WnaJEPGktYwhF)Vvk818M!e1*+y}r;$F_mAF^~ z9pv0L;KX>MRCfu)F6t?e=*ba&m$0$MF>;|z><|9OJ(Vyh;NX%Y)L7RCr)uAgkMFGo zcG~#`775_;K=fER&(a(vve*eB*nn;w=rRdPN&=o=(wP*HW~)ve^^|SqB2D&5bqoPi zh~bT(ONzPx5Uw)(MYW7hII|ha4#|NWU(L+s`{me|itrN_l&a zH_9J1OeTN7h8(I>RDu)H#+HDrOf-MFK=tuKe>F$MP!nX`lWDplgr>&nG{4xtp$dF* zJEl{U5XX||%whCQZM{nW?=zEgRWySCbybHKTZg-N)&FYK(qYhQ*SennxGw`TK`!8! zDW#x2e24m$ZfZiCl)!Mt4&kLveiY=zH=R7&>NeSbK=~F9b6C zHW}4Xss5CbkImajr*%<-3}1zSVjQOyDLy!cP|T}OeMwTWwpVgAEy!K=p-zd)v=e$N zr7+jY>#uNw8F|Uzto6(BuHr3tDkEV0NoDuKW{8vYO-xU>AFn|}sw%4e9R#t<8PWY!77zKgXVobuBGBkCCL20cVO2VG- z*4Y>~;vozBhP9L@A&dL^?O+WI;$QB7=4L&eY|9UJ;jCh*1Hl!?wt=I28IIqgAuiMp z@}7;n4!lGG#!WWkfRH>nv8A{=y@@raTbdaC zTF?``3Ngmjp7gpLI6M?XJ2V=Q)O-g&K##cVuFn?r9)=Gg7v4?3?gA`7))t}h`?Oqc z1(KNa)HKn!03lmwCM*fY0H}pTjh;A6G!Rq!f%-R|CpT&qDT2JIAr;DRV#=6duXLEx zW=-Df9xTPz8(uW-okvEEqx^eWsy)>_qoOkCWUX$b6?ziO{{LmNX6M)0^j9uNL6vHQ zjV;F$kJCXck6p^KL@FTi>ZHH}Z!$eYP|e-9cn2gt$OMnJU2 z1oMNwksi#1@JNfJt|t`I0#y6|R-!Q2w;#(kpOuQ<33GeEOQxq1vyATK+pcRd;E-Ov zf(hH}_YHgm&8undH~k6}z)y^)&3&IU@)hiiwJqYWsiF8~08H~_Bo#_1$zT$1mO zZ zc|E5ix2-eqXa!5=MDO;SMeWUomcZPXp4m%v$@6E2_YjRN_cMl;J_E{n($a#Bj(cP( zF1@L3YH?#~Tp!J3h@D?^qxq3#DFx~!ihyU+c&J7aJmvniLcdR16{qCD4Y-*rLoQX2 z7s9l{*UyFl4TEYoocyc0N;qonhY6uGYKwrbcyzBN?&qvVN`0G!hxB?_1;NeKFh=H! z{PSCvsTHijX|>S~21259CZ)9W=;v>9C1CZ@K6Rgrt0O z!6*(EsHZUuALC{c|5uiCckCM^5ziq7Hzw<+Yip16J>zp%|uH~IiN1=5Kczwu{jdV5|)4WsL)`^RanQ= zk%O*?v1VwAD?-c3j7V*f;dGm2Hy*$&?$yUSC8zJ^P6uPk5;hg$FDIe6!U!7S3O5Ex zN_ix7FJA==$B7xc^-su;;JR_HB?Q2cpQ2A=$sO$r7U3}~dtT#cKM=z&g6!D?3bgw^ zIQIhMG(O$SgC0RUO(dqWrJaIsK?)PvP~4l+P{Eh?tZ%U!EB5F_gWqGQQT1|f-cBtd z3{Ze$^}|jL`GqA>a~%U(uU%9;Tq!v#u8MfPAFPk?DJpsS330m4&r$> zb<1_ZCSc??#goi1GSSnv5Pd(+l^iG%%!=Vc$68dE$-H5nm1oF+9X!nh`ZUptDemNQ zOT(bA2o{*x8gSdPmHu=n4!*0*7!j0H&;uGG3}VRehL}hQ$#FCA7TeZnux0MUyh~P) z2Ks)rO|E%~5R>}|%8|(bDD5x1(SO|7e!Fak1aQ-HVi8ya%76r?CSFS-H8$b} zX48EB^YCl$N}C_e?{@+GO#6V4>z(j*j;FkLq}Ak?>@98qn#*e) z&%FMHY|$3;c0yCcheerxPjgfz{KE|nc+ilb{I)t=nqzD?Wsu)4#X{v3#Ba5d-^KyXj3=uPSuzSmjkrJ zp2WB%*a%6i0Qi1B&XJLUDHNFsVUaiU#RR)9DyOt9%&}F4|DeK!KREZ)2mrJ=#E8E3 zUi`q4B?zt=Zt8sBVH?1My7xlaI1AX#O8FYQGw%O7|4}bE^rWD4u1DYBcC&$XIgR-J zc?D8e@){M_mR$u&Zz9SiwBL#yYJ1sE`kBk9XjgHmE00rz-eXb!5Ig5mniKg%=Ih#&z?9+Zq{Bu-cmzPtAC-qt$y<}M`b1w zhB1`>&bvV_KN43LsA%p?S(u60ubjT_NC~sTR5-{4Qb~x2Ueve7l42;2!SL@(nD>r< zT){SiUe+uro|-#QL5fTud9-|8w)GGL0NYHU%i`RZR*;0D44Cr+1 z027^y1lx@QoGbefFVoI~B`U*{?ZIyX*IP_)hM28xYW8nPRtmxGG+HW+D>#LUsu%ie z{g?g;u0_;82{uppMF&9hkk;01JkHD3YRMw^Bbb3Z-M)7$OsR^6G z{n5B|>;4jfC=_6SJ19v<@;@3*Rk7r&IHKFY)LF2<8E!IB zFX<;T8)n+`okx?0@tR0`b(I!lU8#So7@$Y82hXsW1c9*iZA3U#r9RM=iFOY*c6+<>oqtQ6Iys~wot9Qc*q zgid@e-{o41v>fZXDUzKv;G2s22*=iO;$p(NNMgff(uRS|A7Ky1=#MgjhkmnbuC~Os=`w2nZ%ov2Y zAY)-_d?y48Ok4!vQjg_~dO|}fX_#x9%FL`cIv;m?MV8f@qdbj~T0G&KC1s5Jkg*>^ z<&^=AI7Yxq88EiJ0xA-NuTcS5mM5E`Og*8i_ie}jxPBr+R}j%&@zb30<-Gxhf=EOV z-l!l2Qu8bGHCMD-FsPZU#A3>-J^mRa-J;_|QN{HVPCoQQ6@?m)aYD>uBQ{7Vubz8n z8;-?@!#UBLnXC+tS0KF!&-+N&6_-V$taEGy>|r+#i*KyKf9AK7Jqf*;s5J#0rbPB7 zNjBl{Za|js78`%euf;Epk5=+dHHgf$^1PKE=GqGJ=5Nkk5I@!aNVnyrWuN@k#DWX^ z>)u50(@Bi$l5isMTw`!G?}E%Mgw}0r_Joh{gsKX09Zl?r2>lb}LMLhU4vAyjY%^PZ z26PzRie%T^`$cD-yPeLQ1(=2F^WywH#^}}ET~gtrf;~IbqpDP=Z&aeWAxw`cZqXBP z6tHT@qbOwdtqSjsEUG}Q|26~C32+R;Fr@aya_bn07UP=3cSq{_?CUY`M1vvUE2dO@ z0LznLgRc!u^k7GBWp#&k>u$^LwR`giov>gR+Hb%6M@7gOl;sLCF#*y);*p)3kp$~AAn z2L((f4g)ot?Z%B#_ce5wq)VVl%-xrZw^~r<$1FO>u}cIc*$C4*M@F5gPr6?R#%6ga zWs38ss-M>=9-3amF^4##sHf;niB4lCXwXq#4};q@w+b55HPi#Tn|3>S+`me6!E-tt zZS<-H)KDF_eYINA;(!F83i(TzU&m<;Fw@13l6jx$S%^L-k}?hg>`!!ltjeyZmQu7^Bz_63r-G743LCe;@ z4wg#cy^6gL;(35P#nF`te2XLm?KJbU z_Y7o_GZiwYh?L+n33~;g)J*fPxoK83@eMXx%lAQ`yveKduHg9_Pk&I zeufmiBk?uo8Orm!1+!j1==H_7HF4?Gz zi6}6^tQ|}QZ7fiQwe<_l?DSQ85wgz^iHwhN*WCm~BgaZ&gYfXGARX2AC)!%`0osGn zDB~}?88F1n7mc7`;VJ^*gS>2r4RpA~mQYN_C< z!s9B!+0S3WUtq}Bir;NI)5_|SAVuWBoFP=h;}wT<$C)2{BhcKk8HbBf{cu!3+`!>n z7;0)kAwEx%_qlKYchv01o7dhrrGi0btLsvw1kVHIcaMpe#y!v_BXGk30&kp@K2k6O zUg0kwXOT{0CmsV@k=nmvU(z^or0azIYD_Ks9I$-Dnu3ue^Jt0)XQkC^rfXu6HqjIc z>GelUq%^#?*YmXggB$%IKAb?=Lw4ZNUsobA;rn5(GU+SMjV8s-z3U)Eu<8~gAA9vj zm|~ygk{RhV_CchkV2gLCyb@4qd&7z%^OBjPDJ`6zplue+94A9gZAu564dYjG4mtA2 zW(Q%Cl3d4NkRw%2Z}-!?T+Z zI40(l@P#M17PK=#*@dQt`;i3IXfqSVa^AE`A>!rR*bXHnym#X4S2R8ri?tSW z&;EIz-u$7JRinQ$X0f^VMBpqDutCuHGT;QTIl3ejg> zJQbQsM!2M?WA|_%Nv{Z1)RPaP%X;Ur6CKsDD&)dm*cB zF~-qwvVR?aX7k_t3nB9l?pYcFxTE-~9!AFD!qYP7Jt}qrZ}U5YI@?gy zX~Vr*KkU!B*ZiCzwUMS?w(=5rgWiejg$ zcqsA2Gj~?r0aevbjn#0vKRi74RJ}b+H7;IGt++}I>j^WmcIPY+HUF7|tvWwYivE;u zh)NC-_fe1R|?Io87FWu@)CRdD}z_=)_epFOZu^EQElcr z)P-rG`46#3T=pVi=3bpwq0N6F6hQWHknr|_YoO0pno?SO>j7vMb5Irp7|%wy-_CcF zM5wv7z-eThy~5=^-|y7^h648`KCf@`((;4wM3za90Bw}U&y&ixVIw4@=od;>jrx5; z)~H5XB=Zq#q4BFn4DUeYH`ttxYIpF&aU7D6WbL3j#u~pI+qAB{B;a8D_UiI-B-@8G z(}JmRtZ-Drt{?x|7dwMh>kn5C71vPGFu~#KRvLGj>s*1s+1-W0_RM>vjVensX!2JTw5oa>F5@yMDUjCq%u<2Aa{pF4}nB1$_w#VSo*dv zih?OWJ0PNEQwB=q8WG^`ie`}=bg<)+d>4le07$p~1LhvM1w$L47_FY@QtPgKmJVN7 zrNKBTV&9Z$c0T5+f+vU7P76khiW{tG%my^nO}LKzgxWNxcLHmd^pXlW3^<94`ugT9 z>P-z(=i2=Q$}FfmM^*o7@*g{YG$*+Xf{dN(0IqNNEPaMMK+Y}v14NS5@=CiH`<4!t z4(C+e0k4A1*ThiRB?bO#LsZ3T@+wiv5|BmYF-Y7UUyi{fC~5R^{2X0I?$t?Nieubq zP0`FvGy*+&X>jS+sOAf}M;IdS5$JR7$>Y%-PE)v61FC5K-ktHQwy5a?0W7o?;vOGX zjvA5!IK39;U)~QN2C^QbYa!FMi*P?1x_QBw0cJ=na?Z&IVC+%5zL+Dzmj+7 z2v1qJN! zr9EqI>C-VFfnrbDz=CzS1Qng!{*MmG@rKRcMn6Zk;yXQxWec%l0P~e8?Whk)_yA% zjO?oK%#3QaQmC@i;R>qN(|23VA+@s%psSpjyhUp5aCR%yHa_EmC-rcw{|9b15XPLH zk?l^*_~Il;&}5Adrk4x$Xl>Ccvdh5sjL;lJ(i)|X4hzwdn(Wc@gzLf0i%HE9MMT78 zsxb&chyWGUn1NmM&=-6Qb14?MQm=um5(z!g#BdWysp0)d+_9E=o=H$ZDt-_s@`UrE zQAZwBIW@U5-G%o)NCI3QZl(mtN#_%t;t;AjTfFRrVKkVgogjZiI%@BVi%6HxwU2_b znhdYsF_Va4qi(FtKz>=uk-~fV40i<)9ZF_N1|7*_zSmK`M*K8g(M}=-)r+I)xV>_x z?lg2AbND)-7Bkj$i{~z@1#@n^AZdmesbXQ9fO1Y5h0-ZK34mTSW z`YV#+Fqw9J70}X$o0vECKfRTq;z`_#g%shX6ZZqPx!O*p03}4;A1!9+5o4YT1EHZ%{Lv-9gam}C4GoyMu1r07sbNcsu!qxO{rm9G^s z1%udO+E#B2u0=pR9RvnwOh_}ZC87J1 za#Sa#zxf@}?RtR(TK@GvoQIP{)c1Bkr0R8Xd?$1AUx=Pb)Jbr^l7vNRXaSO_Zl5%M zxbuc;k)wv8;h9?!V5Q)ryhI_^tLHe`x_7Gr8uXhVCpIzyJ@ajCQari?1rdu+l&no2 zHhB@u>Ehjl&R2l(wow-^8m;|lG~kq;gmrpJCmxaygjg&Bmi2q+xK1}={Gn|Y4-5q3tcbIJ zQh)icjCZNisV+8+zZGD|y7z_ru~SAq!(ZqR1{t0w89H7bPKF(PaE>jRX9HDsIaW%^ z04ojAoz}Z5$w;DyBHib~S%0MB*3k^`fF^|oHNAKoRB2L6x=))vixz){W(=d>adBtg zrTx8QL#-OhQJ7I&g)Ey8vCMcbVL;$0neo1#V|=$1$-`euras}ccs9vZL3le{rRGxh z(p;Kw$p=@AnUC8dpw!z2SLbV>0RdBMEMs|LxPd0{6BJ3qCKW{$GQ$BjW zWt*p-ve0D2ewV>rwsW%9ftBmCe-7xe^Ns{63p~geWIbgO9G4&2O&T}!7T4^v;ey4) zTMj8GAc*ma7SyzNL0)c=;Lgf8lye?9C5Gq<)2XLK?UI}1rN;~Umm5ifX8i&0yBM9R zy^g|yH0Pex41@+ucVp=tnY|Q003A15SDehbM*>N!vs<=n$;Bn?YyNRZCnFcA|C^>s z1?xaZMtQm2_*QSe+tES$n)sj?NA8Fs+g0fR@!y~7j@5JTT%vO>z>~!p>pN><%z%%& z!l-~E1ep@d2-`3cUmr|DSh_f^cjFPD^`V1E;UxC$_*2Ynw)75pvRe#_DAYS#?<%cC z)wlAn9v&8wj8Of;efsaUou1ck;v4#w8G1iEEaP26SqPX{ua}a&Pa_7xIS~`m{AQBRa3ZHZiK7Pzw^uNGj`D0foWf#tu8rXkAL= zx@hmB{t!axgJf#{?^`v!5u`{uLE<0AeZ37bM8oe;vSyT`#RvU!L(Yy(soA#LM#ne} z;bL!a>e9`1P?oeg_#Qc$Ftm@wJRVf{ph&vl_6kWwVC>6Ln=@2)6Pk*a(&J7hRW1ah zXV2j~$ns}X&IvpI?RG*EYopcYjS`z?z4-;hA+9#8) z-uO2q<1(?9N09@dH$D_l53X#)y9(`2&Ej8GM|;Sqj@TO{=K}8n8ojv3vup>OM@07v zRhM%yBi#9&?Xt>H?y3N`G`FB7^Iv6E^&5$xButjj8SJB%_4{?2mo$DjwN8->VWEH? z$Gb@9)7j*(v?r9V!f2@X_fk^=m15VS-40Qw(QMgiX2t;Vfk@Dryh&FH{Ni>Yv?Azl zB8KC*TKk)2Wc7{1^yEy@~{qdyqzf!smE}L#snbTtc`?0WYk@!OT zm5%qPx;-6CZ}RyGx%9ZU+u~uHAimKp*=MIG7#r<|32dPqkZNsy^+gEHu_ge1bNws& zTZf|qN^{(tgeg)(V`fdXCl7CmWYy{Zv= zOB8JB%Bp?p63KNCiqu7SENM~RBe?gh@Mge0=CP`1i(7GHuY<@F4scflw4l(q270+cz! z&Iwl(*gGGJary8MkO>H6yr72jy()QfuR{4y8YEl7Y5B#3Y|o2ZycVnHXG9dG)oi}{ zD69BIYqFAamLR{we$N_XqI)&orc}k%+u18w&!qXHo9a<90eH1gMAyfIZ^!w2r>v}B z*Pm2(1mbw2-%k((i~Z&Ar2qaZ`ndj^@?_vaPbhYIfJdN5@gHuTfs1z6D%7G$X6U|? z|HnnZ8JmSj|E@yCD>D-j@3D5nA|2WFPb24)q*T35b!ppK`3ZNSa~%lLQ1M@g@10;| z_d*%3*b7G4HOI5P#DYnH72O83(>z5utY!_RLkJuAH;QP2>l*yk<38G5;ZO=Q^CUwy z;nvP{dFr6h8RU01)ufpn*v>RBa8yR5?<3txKKjucX)5FS2u9<5QLtJS#< zzlA4pPBb9H#_aS`*c@T)t0CmY1n=>w^p%WHSO#W4GcSCd1i+k{%zGLo{gA6kIJQ52C7fNv3Lj+j2A z33ypw|FEY-M1?XEQ<9B>-{rbt@c`Ouxz+V7;xj(`EYq#!8o*ywn(30p&D@}}kZ_4G z$j2!WZa^7xiKfX!jpYmVuof040#tjhc_Ev%>NA+>v3&F(-tGGg*Mpk@@ zk)s*3jnXc?GDzlCNl&DyS3ElP(&LmBj=oc(Jj2A+w9kVp<;`MK5v`o{~_q@f-5G?Drhx~9F{d}3(3 zrsLjqZ?vah=n&@YUE4vH(V=RAjjt+%lin$0GR3n#8$wmpX}B$jS1ENn;s;g~QbiVe zs=N{&1z|Jq^ZOMRGGxA9wwC;95%WU#QOJS}nlF$X@0J)34Epb%7ar}59dp0fmiJ#f z4*jiQH-7`NoqYv@K+NeZ!a4_b*5{kw7*evo3^U&UubzBQHit~Xlm*Q_mTzn1n7^h= zPQjSYg@1g5SWTGq`f4%>+I9eqmYg&?E7yALA^~H%N`)F{26b-4QaYc!Ctpb#Yy?2wZ4oMcNBuQbzb zZ6ofO7O1QK?g2hS@Qmg~4XgND%m(^8rebNk*c^1fcOjmgsw3$Z+ecld|t4 zLsEkzzMQAVGn?0qb1k#R`mP*z!K|>i!vdFqYwrxXz}kA@wZ>abX^oneyf_v1tWGa| z9jtVR<`#nC=7d?zmOJt<9guhnipBqQRfT}0T}g7e=GOXDisB0+;Z-SQsHg|EDUHA& z1Ad80kl#>XNR%uQ{%K}~mDRd*M5AK>uDR47%XAD-B;yr@^?9<}P4MPWy0G;B-(5sg z5cOA_Q%E{M`b)uwg<>>LG%Z;P0!KY6OUc>^IHf%}y7WA>(+i9GDDM$gI!VB! zHMUq_5((Ro@w2&$51Uk?b7o`+EX$-D4z|?)oT&5==1$erSbYO5Ot^Wzm z;sVVA&}YX#y|a?@|NWN$g{*j_nwV;=Q1*KI?uo(+;$@%&4%?@LPh0FPZAMt3Tu4`O zb(egBcXZDG3U?d#H6Ke<*LKgAruo@O!Vh=U;T=qn7)U-+unugKzMyYPnfdHO{Wv$R zri15eOjV9I$7gzd(hPhP^Ci+E{4Dpul9#srePQBj71csNY8ePDsw!I6<=#apXYX73 zlYd>&!1urUOg2#_iGcOF7n7Az-YAzHXpQDhn2BSyc<34KCYf%2 zdaHnP%K4V$8<`D%HEqaL`6Td#_}Z2s8g1dfBbl)l1h;6#S#K@Wh^wg_k01&`(QO(4 ztJrSrN}<9vpdiTqUPl!z=KlN`&$Ge!-5ReVKyCQ?1xx*Xy?}$MG;(dvUnr_141!Tsbk~<>WnuuUGi+=$SLqPH14aH#;L-QsV4E7z%7jH%G({oI9RL_^=V*z66Z=IZIgrRBMVF?ZU$dzfL zW7K1tv>soa@NoR^zU8LwI6_r}Ywm4)sCU(Wm)Zw3EZRwt5gXqyE2AzZTpmRgC2F#d z6))-?!?{c`9_9PNh3k=6VI(j}=`g)igFI34eG+()u`Yf3(4q@#jOdsT$NbGqBw@RzO2-m`?+}u6 zrWE9P+vLI&*1Eg*4yii)Oug@aIgGi8^VFwfCAsM7?@M)-P%2ZxQ;ibSK9C{qa(_5# z=sFCnmXu&)%M!_cP**_ISLM*{bGLpC)sRKcGILr%y3aqxW1QtYiY92Dm^ax84bDWh z7nUKPwn^)PrE*$k3IXu-Xc(>_=WmTx5ud#^PW-G^lJi1UQ~yP5KaPenVc|E)HmJ=( zc1#;KIed$K%hDkAV1e>C4bBZ4jJj2Cj5*Y@S+B2`gQFJ-y4>}Ho7W9Mg=CXYfZI6C zHNT_O$8pKfM_ES{2eq&vVj{!3n7}+!xk&~fF*LFISY^$b>&L|%6dzVlLpo#lP zmw2Qjvmmm+owG%Waw<5YW@KlO)+&d{`A57$}dHWG_5AP zsyJ8b(|L(n@+T*7wPSfia|j?rwaS3DmFtUuBEy?U)DQ\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511102001-Diff-Config.rsc b/MikroMaster/history/20260511/20260511102001-Diff-Config.rsc new file mode 100644 index 0000000..b070a4b --- /dev/null +++ b/MikroMaster/history/20260511/20260511102001-Diff-Config.rsc @@ -0,0 +1,8 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0