From 5ac5628187ec051e885ee208c2829355faf755d7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 14:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 14:20:41. --- .../20260508/20260508142002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508142002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508142002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508142002-Binary.backup create mode 100644 MikroMaster/20260508/20260508142002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508142002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508142002-Binary.backup b/MikroMaster/20260508/20260508142002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..056878bf3fdfb1b0284bb72fbeb4983162ce3c1f GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXKsb=l(u*n>qsx})D&wh6uf000O80004Z`T(2&Lur_$qo$j# z=5hFk8?Oz8e#a&b871tD61L23m5CE1d)CxfAv2kc047t&yZT6tS&OW z*lmht%vhnuJD-i%m9|15Jw$45-<6qSA~ahgR(&_GcG=i$#I<+cj=(9;ZoT{fstHDN z;;Q$%6YoCXADvw)*3{>@%(NAFJ~!_2Q!xkm&7J~A&O_0*U2<~Qpw=dP$q7&Rkg){T5WR3H+kBL?$} z&RLC!5alB8!DyXyVZ9lOoz#dM`K6IfKV4-~^m|SycFi?bPWQ@uh)>V?6{}oYovFwq z=bNmz>PWkGjuEVp%u z$y=1saj^EKSNdxcC1<(-vuGM#j2d2{Zrvo+9RIUcT>GUr=NY{iF|u#n6PW7lQ9H>+ z9wf(_!E4L*_Cv!7aOXcl&hK#TYXL|X->bnn6`6~C7nQDC{E#bUvJRKW2IEfx% zXh5F8Myvz!7-kkN6hr4dz)(>Vs%2mvETgb;n_jD90U;(4C{l}K#~)fh#h3|>GXVol z$n?yK)#)DCNyz|+zV9#PeF(!`VnW~SM`|b`SiVnno5)G2rw+Vr;DBRuJL7xzid5}T zvLI=8XHUVxcW|tL$#5ZG>}CvcXj(MEmQ?fp_ORd=s>vqW&LC%;|1w|mBgsx4wV2p8apuO?W>c6IaLxz%5FWrkt|Xv9vSUKsT>6#&6{}Cl zWRu4H97-|L*w4J`m9q21u~VXBY9HuW6*nAUOHKbSI7W`9@m;LO#J z4j(+gcjta%&56kn*488W{#Pw^qXXEuWdv|@Ra9&~IsenP|7-K>Ud;eC-#djWk6Y@8 z0DKY2v;Q+33YxN`y=oYhU4CCxfx;WboHMVU+pmwWTwoVyifYeVDvEy@#*znCA#>NC zN-(v%Lxy0du@N-xkF4$=9!{BY@%zNRaTgylC2*`6y(h$!-b164tXLXDt&#Sw=*;wz zfF~zj)`z2-O#V68;haPK-H$>2y31%6xWaK<1@i~D%nbado5xbFFJr0Hh7%RalxZq) zJZqq(lqtn0$?M){N7WLz#nU;57&T~RA$EiM&LHj+fkg+fD%rk+%%;P?#63HWuF1K$ z31{Ri7tIwtsy}FVhLY|+v^8abzPd%Z;2w}qho!#fih5<9pxG_0rTM5&@P3x zhG{rNkMZ_!Vwf^Fq^-^IjPmPp@d%zMin6(9F*^?9_#fX&onpN?HFx`-yuFo1mNV`N;ZYRBW!8xWtq?XnCh zNac**G>-$qi=sC9YT{d(s0bLpK+b!WC5nYoKW0LQZW*YSa)~mg+y;=;cU#ng2U@VTg zweb!eIr$Xi?s8V6!_7|GovDVmo#9^Qqm%W&R#bdI2*h_4v}TWWIjhZ0S~d2kId~7f<=5%|r>O_)b+3=Ag9qmsIn#k)`cDiaPiMb6O)NMluk`)! zasQEmCrZT2lLvl}lZjxzU_)X=NW%L$etA>Dm>KY*PP+rhdHxQKEe;SR%cF1sCOLW{ z@(LcTppSm|jsaE_>D@t9BM_ebwo>6vlrKG$gnoJ=)JfLKB1!R%S#xW?)sT1^^;>}L zc7QizTNk_{Rq{c20vkI4e>gc65&nkq&u?~MA?KdzV+ZNv->N-w+NtoCn^=N((f5RK zMi^ST+B`KR-jhTVuS;mzYI7i&xE7&aW?Z0U8OdJb9@&2EqB)kcj$5)S71PXAlHm6m zQ_@kcgghFt+$n_>oDsEXib2kd=Qv5d>X->m%`=w@zsg)JSkYc~i+24x=vz7G`E}wB zd3tBULIM^c=f&$d+^TF`C=Sl*#=dv1BHnp4V9i1>Ft5)-c8yI@>coMoQI^!o5>~mx zsoAPcJ7?XdRjj-zWUTXKr+g=r&r#~)O*JJHC9lBLPBJ}0rBrr}7ixG;ae`--7w)*T zw3h*`(U9}1bZOI?nvvav?wdKO6c|NJ{WN)(Xp&yi2T;z6qB+miQoUQj&6`1sX{|1*^CB>Ib3(aW!qu{tL3xzma;WVARs zz#k{ZPmHA_p)0E(bp@3WzO?k&3bD}j7$Wo5gj-`5R`yL9Rncmw@uZ{Kx1L?Aq|C=dFkUPyK;48zxCnuGPVe z-+?}q4%`mI@tM#%r$Qtktldt#kWXSRF+D6NAYM$vYqg{`<)oOfGNjvG1 zlL+s7*hTV4Wsr{ce^LfT8%rs=oKdw6`kugY104J|B`_6;lmV%Q0wVir9c_%qMV#Wc zPu9Ikt^{KK;(7a}1&zH`$1KukMcnt@9f^po)B46iE( zHp7z^G*Y8tPsl7?<4rQ=%a1og7&;#&&q~xnWSwucZG#Gz-MuAalH8f+;G-}7!+IK> z&VZS5!GcJC#}MSXICata8-w3DT=-&v0yzsHKN10qlI`%E(CSdh%#-!4YxsL@TK~l? zq2KJ7%$H*lklNnZjeT;C$}w-azIBQ1lkh;s(i#YK@`Glq231}ehjYsw60e0SGL5b@ z7|2Z1kVx}kb2E0piPA0|314SOE1Q}SB!l^#zT6P_2yax6^=IoeJQbcqwqeXG=qE;T z!ohSU7I0c1Q}sO$+~^O9=Ct@XxTH@h*>CCuqZW79xiDF93StU;Boqp%e*N6Ohq?|I zmNTZxM(S6(t*m^2lb57^;|y2XjjhVctp`rJ7HSLDpiGQeKPtZY_C2`y*S0W3(sG^@MXIEIXn`h4%N zl|kTn;9+)=1$epG0?!Vf&e!(%_}vdYpA;5%E2ss(0%XTTt6Z9igADLFVO!0OKL%Sj z%!<2ZRSc5~A9E0533^u<9q)n6+niQQVcOshExY0{L&_MR(g3I0maYJ?jy#V|g^}ve z8Tgm>57^^WeiU+L_i-FXQP%m!O||lzaV#FOQh*%MQVCQh} zPoIbohdJxO9Q7bNbvfC1JY!Zx(L0zu+eN$9hQ{QRDb0-q3PKmjny;2rY%uokmXR-2 zuSBh^>z)6oar8@3pejDdgsq30Ep!VDlkynoyqL{@*GP5h{xo+$6tW7zO zwKvJaAuVsi^b;GRS0;KsccPLkMf8$n>>hrt4n~vmYb{cF^|6!w zx%!=J)dQFTLa9)~roo&admnuSE_&5|5S`_E1}Edd z&02qworD!u%jV93cT&GC{_VI6=i{KE-{M6#z%GY>RIb@z4tH;wFw)8>!S0F4j^boF z3ji#0X;>VuWe~#N9eowv?vU5^%#CkuQ7A?;=Cp^=|IsQ7EvTs=uSvu~WB>nX_(Ay5jr84vLXUjVjYI?KFqF z6vyjWWj_QDk)|Wdu{_esQccqCh`+gdS^V<@nYsE|ij%;?cU>~4^!9s`9YCB3-ja4$ z0-nwzzG9321ozn?P{-QMgvcoMML{eKyZ-V{q#em3it;I6-Vk}UlnP8EaW$q+Rc(`y z21c&I%Co_tp}`I#{VJ>ujKw`8uO)QoCpe+c5i^*BwddJ0bsUM3$&zcG!gx^U#IP+v}+l_ZX7klzRG2h9&h0)x6LJ|pTVe+jIE|a6i8Q$RwzGr zW)7_hV>kB|(FPuRcxg|-s`*A>0s#pC^3w%ge2+R_QNP!hdMT3>JIHck)zMDuT2U4a zsW~vjy|(;0AFlF!jM|S&Udp~)Du8ai-LT?z&(o*uF66A?X<@FE*y7Nr7GT?jK1FVm zsXyzk?CwXm`;*L<6<4H6hmeME3!pGFVBycHyHkL6NJkcBv?!YHW2nVYaO#@$X+yZAd#0@~)wrfWv2~1f{7`|w%|8gWU6qurf z&~zu~ZiFG9+YDf6!)mI%DRz8EUgP!^?I?xb#|7z-XyN~wmW83ijWv#M<~zJ9rECM% zQ{3x9<_-lLFpU+VTT@ph&lxaaKbiq+?u+W9FR$Q#&=;+;{KMl_rwm)%rMV~*k1Tg+IQ-kb6 zB2wus@CF1+V?=#-x=I3s8Bz}>3m4ZzgC1`8Z!-?4L-g54_(8WC4>oVhFE~KJ-Y!@wk>Z$65Fefto(s< zP^6$FPRodyc_FL8*fW~!?fc0szf*z7dv?gaWcjD=TdHe=w$N0QJeX!uNt5s7WEwpU@0imq?i2s_-7cl zP=%;4VA4-Q6r?23*V={yaI4cDYRXNF`B(w7S0$PO201i@8g#BvA5zt9yu*y>bkV?+_?u^b_eEyI7r_?1^@5mL)EIiyDw*bFwz9AKDUy8XiO6d$=qqq@Tk&Ugk z^3pLvr*rVDV6=Oy8=@5i)6};7b!r{sOWfH1*LNnL{>0yx(I-CXAR$q>Qc*SerXf{3 zoXxntUr+5Hmf*^Wc3hv2h}>53hqb#zrrM_Nh5H4UEU@c6P@Lr+RwJQXL!%tqv&+3{)Ue%Y#3<3Jd)QY7AOl9??xm;#@eA+y_ePobccjJ=3&a1 zDlj1SoQ)vZIVl@Dh8m@mFjry!g-pBK&V7JddJeCS`2%?%Eb1*uWE#uuCa(AiA zag1dvdjPVaH57N{kW-``F++-F1!+XN*hCbwHK^HQz;+7gAXEBb>=sc_i(%0hgIp@bcCcPb(SpQK#iozhMbNW(8GN`B&-HO8 zg2@-A$FZrvwElFy^fRaF+=bn&cIDiuyqzL2OfbF zPwlnq-SzjwR6o_|A#pkZCZQMG1-O9<`4fB_da7+?JJ`Hg9x%v2grbu53Rd)g<{@{ar=Gv?VEEp$dnXPT~=A=(ZI?2M&jJL+Q` zr?2(|Sf$*JU9z|uq+@ENF2G~hBZ1$HMaKVYYwmoJvNv2Syh-6F>l_MHzr@}^TWIA! zK^lsW$EUAjD0hMsw5+ya(tG0I6ayh8$tl+A!;-&joZi+gpOr*owtg>T@xc^{j?7An z1fv}>nFmu=olCUtOSli7I)rrkkpa|T3`yMh*g)xboD>L+PU1%#JT$9EPNCc5 zH}=vq8-%I+y<5Zzkl`()CD0OJ7;sxRu)^6TL&{fJ^sNEk)$-9bAwZau8lxoe=4%K< z_|txL1RGGo*SaOinHe_zJ>mq{RE~236^OI!)}6t;)HT1RRuV!Qzkzft?Fr-)=37Ea z=uttomyk>^x<4KPv$AL6kpCC+(eS9K4w?3ja9(h=`KRp;_PU?L zdoVB#@YBy1%1{5y!>@HF$cr)bevmDJQW(K&IfSKqaqIgEHZnQ4AymfFC9sggta){L zUSj=9Q0LS^Gxs8%YBuk5ETlJw01(?DP?%fKQr-;kne{^ZZO^L4@$qKNUS@`X#FL0Q9n`9jFz{sXM#Dp_xo6jdmWzi?Nl8KEGYfU=|eWc%0 zNYB}Sr@u?{gmTFCJ+dl2{q-6J0NnaP6ni(v$)2(GAYoR%l#E5+qLIP&UnAgHop2>> zC0O~aqCmZJ=<+z`Cv!Br3_NLDLV+qO18D>Kle-m#n3p3K_K74I5eh;wOiKvOZwDpR z4w*F&)0*6mAuCc#@-_*5ybij%stu^Xm#;EDIO%cxrQ79hHeo)d{Bx>^cVOPT0*TOjZT%#MRZSB{eoDgIN&<5Xk1$M!{B$aJhw7^4cLmfS zPmcr5a0xqv#p_=v|EPpO`J1Zkw^UBbwjl7uLYpG0IbPG7$&AEIS78RxJ_<%39fy1V zVMh#Qi7Jr?!-Wq06aP?e$P|^uIW{c&0s`0g39G+1d@z~NaGC)F)GZ5xdM${J;U?dH zU$A&Vw}Z$TN#w@Kvln#w83**A4R!e`-PismiZ$=C4p~AFiPa#?1cqy__R+N`4GSvl|!3N6WKuqwhP*EbRsSl1aF_qC=h3n-{+4PLQf(n`KYFa2??apw$X1? zW!^d6q~gd8L3v})BD!f>x19o)lWN6%jKL<{3W-d{`(vD)XPb?(X@m60(?0&?37aQG z2XTO#9}#}8Qs@O`Sy4aaQxZqPRr;mp1toxgGVuQvO`GeF9Q?eW!~s<4t2uV%>37FL zJdCCAzWpQy4XA1L$Y^Pk6|xI`@Tcy+v01qYG+e?t;huFvsv8b^W78mKSBCoqo9DEmj_PZwhMXGZscecLpSSYiWCyo8fk5A9~3SM z|9f?2iC8LdQvLWgQx$H*+lG4@tNL!=$j)B=Y9N%Yw^u5wE#S#OZhf|Blb@2W3C}Xc zfv}i?v1bM*x7nq;M9jIZd!!xI)$Ww5P|X#+u7=aEa-%}A_Wn|A?C_3R=H}^r^*)Sq z1YC3!Wu|$~ybY@-xZ~>kJ(t{K9*x}}6dkUW7Bas>OuD|2cVuxzmJL!9UQgeC`aHmV z{V_3aWa9m(SbFwSt-NxEcXCQsisctAh|UcKv%tqtM-SFf3$%P=ttQ{4UPJ@<`Zote z$F;)ZFkE)VoOt=(W{DNUQSeEJaOeeb)wXfq8h(`4optPXt+HDRc=Nt%NTX z<37Q#yDMh13yVgV^U}x7jk~)OH$(_9VFmhU5B)8o89I;NuIXQ}Ps!mj9tlQdR!hLy z|LdP>jMt8vyw**VjLN(4b)z#t4l-rfKfa{RB7%-Pa1r$vctioGyucDB5P(xy?um5D zMTgy=HEY^#Lp>^Nm*S|Y3@)e4F+4G`(kcB*^(Dx!ejjyh^-OP*VO@l>k++pON2S-I z*CMzYQ|)l5{1#0=jfw1Xz}5WR#xyjeY(d@dhv0tos$9~L=y7FriiavvyFtb^cRE0E z1jhZz{nNQp&m#P^PwKkJA6vM!^Rr@x|4~(^riA$ufscM!zVD3C@7zrO9HpCSJOm6}caZrYJsuaVG;7$76KEWMH%R6{VZ#hGfC zsI0Jt4Zm66sT-Qr8{oHB$6!qm&w({&&R~`F-wuh0pytJYx=sbh&G$F0e*G$q*vLV2 z!F>$#-Ohu${;_eg;M^w3sPOHK8MvK6xvGF7~x_f%EtR~_D zhc;&eWxqNo^u?5)zdkGkXOkEA;1tAYp}&-45iLHpvfY-+HeJx4M<#AI^o_JQ*!k2Z zI$1|98EWWZ{RMUFw7|2X^rAR1&l{~3{8|hfH?k*oi+rC-W>|Olw&jKL4JcD8o2QLo zT01a2(EnL}JS#KRDjKZw&+I4U@bx)A>Pn`s)Kd9Wj+`Nc=FPpcT7yuG6F=3bN8+qv z_gGe=q`%pSxEhnexZ4qqOQEhzQrbD}%Sa^^^IndwR0b$qW2zO`4{{595Q@ox3mYnp zUk&2$;=(Ak2Y0Ce4v%#N3o40@+5_iRwFwv`1jKWT2Q@((D9-l&Y_8bgXgX+|tTWgE zy9_G>krJWWp((a~1$Tu1GDLA413oMjoI|J|h12ok$`P1|L5<9S3W-vAG--M82Gxbb z+%d^$k)^+&}Aqs zYV#LWHhnyPE~QPA_I5Sglskp9(pF6PN(5ZI zm5H`8CZWJ<&GveneeI1)dT1M^lww-1WX_0w);zPMv~wt*b;!KUq~mPK0(^oS zya8cS&zrS+8LAajYdD7}>WM77sJr1W_8Nrst6ES8d%EKFT@!r9{3aQojxI8@65 zIw&LLg=S~fPgMLY50UfwE+I@D{NNC?6%EB8^_bLU0tK+YqdV;UGL7z?IVBWcY1WjL zX!R}?i#fb>Cn#Uw zf^mcH*6dLz{JbvjLAT=g&STBpQF#ZZ@JtRNv}(V}GVmFQa-*`M{P|O*e3P?kgKg#Q zLN29xvG_CP@=v>tje)-0{-`bSgv;8OV0 zxF-fpqbzK?D-=^hj4xj@i;HBHk1CQdbj$=m(jchQ1>I|i_79+SH%LrJ&U$bF=3IM& ziI5S*{<_Pc9$-v`uqyax3CCgenqbe>UX&&iHtl`iU6fk7Q1JIoA75w*2CV>eoQ7^S z)AtNy0J?;i#5Nax@hnTkz{(D}{A>kjx#Nd=fvzLNZp`Qx*@k1i%su6G}j~6i~Tb*hHvCQ6>jV?sr=q@ zK0tTpFaJ)vZab3l@kxjLq__Vi=x*E55uVdL+ek_$xt|MLe;1+?Kk~O>HL&IF`x(HC z2qG3mea@dNscMNKx%Nkh0XV8SLKZqm4HUZ#OC~Cgd-ntNZx*8F9POY9i9~AmRNsuUjrTpFImhddy*Bw z$kmYOQVJ)-5fTRVbA_1|An>Y2z3vqHy!d2OzfOi3lDc#Fp3S2-EiXmaZ&7Podk1t> zsh7P@ig;uJgCKk~sAug=&$j3jZ4VpLRdBADDKiYixi(dD}7Q$5%!gj!yMVKwER9KcLJ@`$F z*X*1mloFgpsAhu$rJL8*0SzYCGk5^$5h1IW($KqWxJ0VqqO+$jz!;qRYeSPSj^F zP;1=-w7jc$lY)7<#N<*n0)Rwv6ue;ZVqCD1ZUPxr0sZ(sG&?!|7XSX*5C$%b2bgle zEK`T5Z82Odf>I6qup=>ba0TkYI1i*Np*z0^hsAV{(KYV*T)cyR$sYz=6$**WDAX@f zGS!!DE#!Px8bItm;_;gv4Cl3M8=9^>2}`(Ukwe?9(MG! zyxgH%mQYRxN^sB{mL}nTF;l7P?lp^ucm5kKc;WC)7{EHw*S$mW*%V!S-6!P$a3bM9 z9B#}*W$1PN)@+of{zbNsR?JLv6ENsfY;o>(?^=+$?ERJLmaR{R3(Pu~7oq z64k_Ui1scfK$(_{Mtd+`q^yNuR+}|zNec6=jPV(_+3`i9*MZzoO+4u)T5oKBVq)jy zbzX|i$spCHeYBf`b-(IX(WKaEh_n(nAV6C1Pi&E|FgV8`I8Vte1fYaYo7$1e^Ht1HF2wE$-4A~c6nFED;hzwmDH;M?6Dsp{Sgq=D^t zGpMbBzISdD6Y)3>cH{U0jsYRhqI!XF5$0PG?z&2x2OUl-;1+{v!z7WdQO`qnAhL?5 zC-89gVov<{4#$rt61B+;ZSBLFPd~~;8Y}*!6)lg3MRTcSAJ3_V<0h^7pD|tR|GJXy zJxI(r+x?jHL^In^liI7|k$&&re|Fb8y1C71(&;LwZ~5e=XB<7$mkkG{$*tQpF*bvP z(QY-ZLb^`D%I!C88YRx=dKsv2FPvK*eYvGSWm*n)%C=-^|KEYBRX&*A#folQ=gTQY zRekX9c_+s>EY07?&AfH^6GprchqU6q`gzYs`q{q1!^ajRp@7NwrG6xT{1p=vU1Q#{ zT1o|(1}q_c5+`{=ie3e(=^+SJrLNe`G4dwXqaMKdQ(Un&!Wt`$v-DxnAlo+$Xsw*2 z*`k6nGVa*=WOU*Se3K_I7QJrZ<5dn4<-6G*!R@%-?rYb)wnrdm{f?&;2 z%n2W&C{R;YDF_i~qelFc*mZ7RD+~p>h^2 z+kbEhXlZ3Wn>Hc8IggOQmk7sV(V2YgBQzS7xX1;;<3Uj$@PYt1@AZtZ7SFU8{Syd8c5b$qIdym;l;eAJUi@NgDU{j%%;uBw@!y~$*sNcnzC9r04p2>#C(l zc?5%619N9}bF|POkM6@)w_w#ZOIopxU+}h}>rr=`j_VU>k=p@bPg=Bp;$~ls&ykrj zZ37oHdJx!+>(NFoGhH-CSYlV)?xL=1fG5+X<)3_9X%U~ssaQjK zqJ8HVNJjkzo%(058-c4igvvfYKA$doH66Y~{F_Gk)UfoNxS|R;zaxm3Ne_1Q_v`7%?3%JFQ3WjvR<+yR03>$9=6@wBRT_ zaD#V;VMJdU!0$7?gd})umFu{KCGG`n(@ef3j3`0?x3h;OhCatar4~8iEnH7qWr209 zOOG>GL!K8!SA;9hhN!1$&jr756PFath{=Z`dCv&6yoeq{Ha^jFDy(CGFTI|2Nj1m< z7?eg~3GU+xkpmlFA7OdKFSepn5>Wyc?-sBgu|{9{)yr6sgtMo16e6$FI)7rCpY7~C z5w^!z;~^=G_g~5CO<;sy1=sqb)WTP7ryS6{a5tC%I1ht|iz{96=#psHp$?`^phrqR_7=&B`!zTdTtm_-!Y4IPK5o(ohNNjZ)$udzBrR zZaVky1n}Sd#BC%-n$j1j+(1+otDOsN*^ShqP~Z0W1b439e-VI0pCH(>Ae^s61eEJo za+EZ1>s7cM(1^JyMxZtRZkPbEQsI-E3|ErI)+-l?mh0-dc)XB=77~#Z9jNikUUaQt zIP*$g)T#eXP=wPt44?WA|2^#$rrf?(tVmMMrvBxM6m$OXC|lEP%GH9Vo1qR!OKu~w zqij_riL%B1#p7Gd7^o(U-=33!2c#ida%R+>YvrLCr~P7OPZx62@>`n%V5(F>=SjEy zD5*^qW@7iBOb3vJ-W7IjG(4U+wh#nY<~FC{FD8?75dWq8S`B*t!C4LTFCsD4LpgF# z9=w}mtI%NuI0yIAxFo0-aok&`k;`8Po}_douG9^ad6Tr((|GaCmT<-WA2^;8Jv{kJ zT@FOrwUL1g1Nt5V+rIrgTg1ds&_r}Q64N%+NH=d?cg)FU(}dO$efO-4;y=SIx=dsg zao2fS%XW7i%~D2GGa(28Z}g{f;5B2t%CBwbOCjfH^Ws;Ony1_G^EPT=&$3Ayzd&Dr zPdoO07~279YpMrbqIsk^3*J=rEys@^1sz0jTQ0dgs)9|0U+IH5 z8T$7l8_mDR&02(qgSnzupZ>W46&v4;}UbYM8!W zt3BkV&K16|2x!L~x+zKA3bTB5f|~H{h=kj1tbb*xqA07ARdL z#@}U(Bm_$h zDmNQycbq_wzBzn2U&2U80h|&|Y>cy*4?-H82MWCogocfYM+J0}^L2$Os`)6m0J;-{ zs*16heW3R%r~r_n3O^A#iHFpp*q2My5#PSMu4?ECXWmXCg74<%fAj=a?3$6#{J5Z` zD)7-%`a6y=Z+u1HNK$vBZjErv_X9!Wlj%{gd7}JVA0DI^dmi)AX?Z}}nY;^K;gg97 zs-#IaRY*fMXc$o*0pYV495xh6&ex8ZN(P86tVmWlIZU`D2w_J?6rsDgg&9zX)Zcv) zJOSo;cY(5c@5D4NY+1I0mhUr(W`TKVxp4@z#K7W#`InUD>Bz+)>JHK&piN+Xn!CEJD+Qo6>GxW}_R3;G~T4STyFsTZwA# zaHG1#Xt=Qp*Pu+V;!S5qF;qYh)ZL-n`%iJR-HW%MRxQLBfu^Jf*B3mZUL;UPVf;Gb z)fw2&jT)htc1tw&x3E>tqtjqPIHOIg(^Beoj;8R{g!OUok@OcpS)*psXM^xM7>2dp zPOchmzT5$!1f%fILSjB{?#1sD5rdd(4agZM{=3-HRsa9)H-|)jJq3}oA^c-zdbtfI|Y6I#bW5J3|_>ucK#v?aVgr3B!|1Y7R9F>Ds-2rQ;rk0 zb#BXOH|x~jI;X#;39~*y{=ePMI3=bx;IV;-;&j-jk+X>XO|01GV*$3!k6hnRTl)Sz z)8}nWsr3ar#^ijBGBN7VK`e6|hKWd>13t)uZ0ILEqb3P6k$siDl<29<03{STc|bau z^x5@gqfWHw&bDZH`LvtI#n64Okm=}zI#x?rL?ss912HfBU)a+yv{Q%Dsf4)&Z8@5c z8JtD+y^kw3iIZlpApUwAYYj7MNjIc^pG1QL$AV71j3YtRY_1nF#z&1a@4|1&aSBwg zlP%{mVBDo1>^9J#!;f2Ov`1_q$^K43JKz?djRHSX7%qUlvZmVko2h`TR28@UUYpqr~0h5FDQR$tWS>QD1oXJ zmz_0&*I%L7b{$Q`BH*q=CKi}A;4*7m8&XZ0AFJ~59$#XnSb+$R(1%UhVBdF>sj+Fq z7>Mp#RaA}@6#FLX<+ux}YlNPXo;Jwdf?hPz$Re0Mt0Zn%f{dOe+_NN{DciLj7Wexd zoJP}?MDFUDwQS4cKQlEmq2umEVspC*yBr7b&$BwU4hil4ZA2Juo)HY_TD{s9k{!W- zq1vwO1K6Y4W)$P*-{LXyhiO(eTYEpx9NZ+%M|*e8V7lvJZky5X?KCA6am{dahRWG@ zG0pJ&8pPPUQArfVyehE^p_fy!x68t3a~@#|GHi)8^l0nkk}Glka!`1sJMNdsSKSBO zyUe4qyTx~;0wP;te{b3Fq;xDzz(aS4ZKh*K3p=_+pLN8GY3*JVMCPg8Pnxz<4mZB| z;z+-n-JNpA>;)5MDaO4+sXo>^6i?aSo?-8UU6r=}f2c z08SBuR+l5R(~r2!!{{TwiseiZ0y!gkv>3~$32OT8^%?KvmZPx4sH`Xa?9mwJ@4Qdom^JG% z5uDKzT)HLc`_knE11opuF-7xASUoL(uVZ3_no?jx&TXvH(JH8;;P_@SmVtDy9nPNk z@99k=Ybi$xB~~ur1N7IuQlP;(84hkPWarCnmmay>J8nhw%USLQdnhm{PNNgME+QS6MOR7+LT8}%WIF*C*QgQ9x?+* zD>cC-3AQx)ZBq;i3HGBA7UW{I)8px1*$rSZ6gqiH^R#*!Yb{-b09OR^_*_6E5iY(mxDf2VRBQXUFrZ|RdUj0fc#md&0* zC@y9we6nV^NL+c7Ih}X1SS=yXqwvnr8ahf{r`KD)RIkStF2Ez%yK_t}8y0%wCu~Qs z?-76UB68DaJZmughf4!-luS9O=LGR~2twNf#f~%cw+z|FZ7maa!xPZOY#Heb1LA?@ z=k%Am!Q)2`yC94SM3&AwZ`&ojo0VyKFvs95t`&n4iEcGpg1|V&miyeO`!HUyd)LXo};|TI*kWz zY=@EY#bj!OeuB4> zZlbhE2zr%GCR2Q<9KNwil;53N+;akwJ&qmqF0^JRmpwz`jVuV(ecu#v$Y>ecIwk?A=i`zGX+rhf=FLzIA|4&V957(~%Ui)I2bPgnFL|KmXc zvwbO~%;eUGW9#bmI7xzqqo0aB-da)wLlIg)x9@Gov%sX&040vTk*J}I=BlZoTlP=* z+HzaVv}stc#_RxJM?N+W6{9RAVxCM0*u^-5<)DotKAXKor&I4}5`= zrpc@D&hWnWUbs3;ixsm4J*jQ`nUXMLjZ|`w;ipFx5!PbLdR^Slp9{|j^F?O_M+7TVs*ov z0{b~rzebYNn-2cywC_QDz!&TlOuvM4kuluG$uI|8*gG5^3o@`mmhf_$aG7&0hPH)1 z12x|rNsNdGCU-YR2=8ndr=9%CwX$#hdBN`~Sf$=P%bC#w(h=TL;9GlaHf_aLJnR;7 zM;)Pt8x5&Gd`1C#lBjUMpY;T~H;J@*-kc_KTLTeXO=I<;JaRKpt~ zJUl^bYtg;WCTjryKLEf+a>jpj(hR+xi{G~1`n@2JrpbZ2m1hj%=_7o@**)smduLv_ zPuUs3^ELfpSJNFg6&(0)V@xS|Uf)_7DG0$e=Uj=UWH+iah=1Nd^8{sQz#4A#I$P5h zS>81Xv4V^80#dMYs%dk;O`YLm>Xl(%ZT?&X6D{-Ahb(1rwqLqa`9U4!y z=MVS$$64ds+=uI|63zaDcnG@b95>%R_@FS-5;aT_3n5JD_lJM~FoX3RPP@ol|tqAt8eD9-lxQ0Ar4hab4J%esViEiSs7b&Z2s zHHUyMuM&PwPH}0alK)ZF+2M4Tn^u+`N#&IH%yO7lejN%~Fjqw0lP1?ha)iDY?qpE~ zvHKG5GGG8sHB`Rn5JsI>x`M7NQFmdjU$@EBY47<^!E+fNCVIyl-G@Q~*~uc_8EvZ~ z36AGYzT&E!ms_Q3F#Zh>N+eZ?s5%Vv450!{?o>d+bsq~#4pd9wtNf=WphrX5jS47O zvGd=1A>kSX?aVy9P7nIzTB@FOadtX1)X7w5;o87%`{-ndWfULebE7F|gaUFp*stN| zVZf^sVz*3ApM$h-^{{L#at<0)^nLB5Z=;az-y?E{^|)3xionEFAKDT*MrToV^Q1CJ zh~yGPv|X~?XG!h#=9;Kaw#j*9zUB;Xn_#tX7Pl3k+nK9jIq*B#g8NaP`QU*|kL#`d zXR*D6wbJx3fONB2!=8)B9dQEP`zOyIvFiq!E3LaIhX)Aw%`f&Tn-){of*d)@aHASe4VW8AQ7vTVYGm&NkWL5-&Gh*nex9r6!f-x!-GL-V7OB=`_GP4Kh)|Yvx zdpbMrUe?b)@5IwDbnY;zFu?+)(_fBxZ%rG1<^6acab;6SowwVkWgCedI!w1IAOo5TG zYjnzz5vQW2|BcMVAm*Fa5_Y+w;i@)3ipX=Iewu>6+=Lw$%(ISFT(r;EHw%JI?DNcx zi*@?SE}=uhH9gA6x}1l6+|iW~&c)qW&F%Ek%tplV*j4>37zYI{QA1(>%6 zZLdRoxzwka3b8xf%%E&jE-cJg_9J-XqR?RSZvKu-0ZTU46EV_(Ce zr`)=sJM}@U|LfOKo~6$P#a1y$N_>Rze&NIS@9>j!)<8*xb+0Px!~khC>6=fSGCA4Z ziQ;@{aDXVrNipN~3GnI|R(cd}1x*cNhP{2wx#To(Vxr4!L16=oXz3bMOB^|W3P|I9&q?}e1} z(J`LM8+cat2=rdS!Za#__T=lQHGAKO))3n*Vc_jo79ToYKO+pz6qjpPrvJ{uJPgB% zY?Hzs+VaOKj_jO_O%OpS=Jk=!C^Qo0?-`}#CE+zUK`fNFshp~;G4ll{(@I1&n*lo) z<>LYgC!hVj! zmUXq$mmU*k<{~VGC$=*zQulXkm3kH#SN{?|D4YM^edEh)Z9BmF>KmOKvSX2M@W8DE zIPIN=!I$qgybN<1M{;kio?eh)|KyMJPYEQt3P3~q zakxWo8c3`{Zv*01gO7;ho!g(Om5Xwp;;@ng=gDo;Q?Dzg_^wNo`t|V)Dt4hs2`TyR zj17SuImMNEQQ#`}zm=0XnmLJrYcvLRFqetG63l2%6Z7JR;#zGi;0CSi?&C23HwxvT zdnJ0(^IyONBARq-&=zqtT$C|Su3pj#SDS)sFBRp1GMrPE5llHONp7JS&?Fps>5f* z;0B}I*5o=z?66r4QA7Im$_10a62L zCyx5_(vi#mqsT8w_f3*Z0K* zB_*a33fSIv%HTLxZ)@9U*47u_xJGWYgH}tygxEkLTV8BtpLN1(Bnz@1da~<|-@+EQ zY!$EXKAR~Z+HBPp#w^7QNOb;%@Wx%YtUYLn)PlpAwICCHiy4j({~%?v*=k#CP2U$F z#riqg#*MUl&yK9I)mhs1@Lpvk~qp}X!<`#y1SW&plK%GNO%KLHx>Y;T#o*x zC5@>=B+~XNi|pS{cXgo&J@5%w(=6YUHbSr$;UoyMBctjJ zyfGGpi&3(>vsRoHZED#C0-_AWdv9OFs580_G+Y00Ht`7FL zyFMsym|Vwv{au!`wM<(Q6upNDHT_zEOMi1n?hazbiI-q_j~bWt{h_2xUv(qq5_n%< z)IUu)6m`7n$@_Lg^e$=4M8ZxHkvqI6x`P}h1NgnwLs4yFrj~1UvdULSvVnkIpl7c6 zf<7eFB00{zE;APRHoT!P8^G6LI;a(>ID*Dl;dziErz#QJE2te7bzGqd`TahpZ0Qn0446F1`B=IF^ptr%eB6TTHIYgf4Wev-I3+7Z{Zd zdDDMRu5U?mTK1-omsOG?3SGH!S1xul0zSbg1)Z&9QZLY>5u^_MkvS!6`ZD~% zv|B2CjXM4KP~ibCSQ_EeN#tN~v&$YeZOBtt{W3yL68`)V=($i@F}W5j)n!rQ^e5LX zG@}jW#dhGcUiLUR6zQ5CSqJCuikz@EpKM(1mr z_>akD8`}VSi}_-#_Yp=35BapoN&t94mh$+BK;Au4F~?`bQIX@^hCBH9S5`o!d}AZf zyRkTJ#AE}#Vs;T7;?=j^WZnMO>e1glqF;xXSo+l>Dsn@fq$?5(kGW$A;YGN&Fv#FL zVW^_H#oZTX)#(DnUm<+dSOMN`ygobH*eoz`ETzPOBOYs3=YFo0=B4$l*HrkOFI!45 z66+g}sYJvU;+vPo zyE+~FGta6~ugizlu0}veYK6-tx%k^L;TEFTuNXPT)Y|R|O>Fnf8$XR}^Nz*xJ0Jar zR95aXc#s(z*h9FUrYl6ft)b@C{Hr%@O_hXTWqwpH|en32>KyPfIzpTq8(%z1_oKHi)FN}#5VN= z`MXKp`xeo1stzU2U%1^ywk`pnaVaB@T!LOD032-iL86<_2T4Jy-*Mu9K1{H&rbu*z zKe{La$M`RkAwd_T(||nPsTB;AsG;Erzn+fO1fq!dnYf=Gg9?nK5GUt7$rS_)jAho4 zz^YB@{4if-M{4c9h-IPtx608jObA-)M!F{M%ISXy^zoDxse^8u8bqOH;uue_UVTLk zoh|{U+)+FG^LmiSqq~DB23G-MZ+yH%sHGpcGmx997CH$BA>FT{aYY6_ut4xLwcayA ze_+MlBr2GHBbj;CB~l-|?F})20m+FtI0rN08FE zjxxIT)b5Y$5$O%bpo%vS2Sp+%`J0G?K%Am+A&fyIIJC<`edxz@jPnl17kjYq-MAZa zjA`3KYO|HJLB<&b+P@YKfW91SCqs)U*H8y>k+Uq5vh zNc)2x=0%wr(>mIU-^LMa3~!})M#miW)|!X~D^z^QQZ9*_^?CNKQJq zA7m*@cYu2Q4qI4tfokhaWu~l70T@GCTjI~eQNj#govBE$-|)#-q2151@%z1)AmY&8 z0LXZc2FkN?4WD4}!4dz>3IQknW=o#}q%&`u?8g}`3ZB>gXo%{`{cy_0cAJT9?%W8` z2u1n!MaU&1q9XJba#a|Q#eefBuT)$iWJs$ftxaH0<|xw+y2d_!%%^~znj2@ z#Xm%?R(Xu9B4*E)@)FTe&p*Ute?xwsLyaH3A40p(TBzXr>TB-e$VZCFs^hB(Fm8{+ zN4h4K*AQcjW45uUk>S4Xs1HLV@)T=KJbl(MA^j)^EHUK#c?{cPsNNCu#cHVFaMepH zutDYvPE-Qx9YfgB-PbLjtBK1ry_eYc5eq4QOt7}k0N*4Edaid77ij;16KFQy2Qnl9 zn|}|N9oQHdS}WEqh!ZA0 zazAi1Kyf2^&rm9bR}ftQpMP~_`dlyO%HlPJ0{8M-=-THg&5aOGh&+e$fGAjO3w} zKW*UKtlgujJ?|;iLRPXD%YQ4xns+tqOxOf&Ip>toHSjiv9Zluqz%<~2^|J0{9o4zn zbz0>J6~h2Lig&w?5J2>X2yYa&cjGhy=V2Yq`nq&#LOc-S;Fp+Y2O0FmS_?=J$>jcE z($`W&stRc-idgI=Lsu#$VPC1l(@t)QJ{WPdL10MvCQYteca)pQtMtdX9XX16jX#Tm z5XyOm>3B5`7ws0l&h28)AVK&j28d=~b0mzkTXg~_Lj+1ks#PbW{zn9)R!v(6OZKap z3y%S3Ko5}d8*2|OB;{HEomoJ;R3rI)9d%DN54+7D2t;61^{=NQbj5*_AZcq3<)F+W z`Lo&0v_6W8p4tRZ1cOlXP)*VqHhx3SH!q3Bg6j88#_5;~{GPu8#jRA|i0Vx$W2cNR zceilA#%4sJ4WkJO>H^J;kVm_fOD%I^EOu~9I23B@&VI)!hQVw%AZSDyXQLmhT~acO zYOWO9S8!=olT(i?560;ec(^;KXdj3{X1wKg;5)uJ8`Fr-k4*K<@!P1q$~B{P*G#p^ ziZ@nrK*EVJb1uE4@7*6)J^4RBtKE5)~!7Ehug)y#?Y_TZ~p%m;A3W^hu0k}Vk zWXBizRx+2WjFcD^L5UNo$0j!m`z~<`r|Q)7Rkyx74Rl(pH-@`BcUGNb=Ci!KzH8I0 zTkG(j0t)w487N^niE{@@L12by8s1UBj21W z`N!iZYx<@D$I8B-QoU75ff~Dz%5}i3oGj+tBIC;oxy-zC5ly@nh0XJ*y_sEUM`p$~ z3cbLKkmL3SenM&pb*n(q*c8O}E}`5d6RgH$@EVAceDnA0${0^I^1qygCF7al1lr81 zhaVsKSK z2LW*{<8@Atx5jk;!(mghm!>FU5_^-*ngW4Xy2AL2(fP#_;+u2RoK_fsUcFE67*Qx; zek2y8(ZFHwl*O19Gd;2Q`+St~Rz&sH$ZIHc^*$~0>Esh{lsv9e@3(x`sy>XNnISOI zWd)&l^SQM~F5+)5;O~tI{*-Co2$Cvt!(;zGyL%(r&>uoW8l(Bv zj1encgMa}!N|s4xl|yVAoQUT_xrhth_T~KS3qO>jGL!SiP*_E{PC4KOhjSS2u6Oah z5{&$H%>P*2k`&@qE`~2Rg7CBnvO(rnp>CpeBL)^4=v*>YDRuqcA3Vn|MD-3LY`hXTI_BEbCtaKNK4ucp5^8 z48(7Tj!Ki}OF{JbJG$VCN7r9D5ll*g;Z@l8vj`4joQ_2Vupf>~_s3Qyfwh)i`WO9T zBdd%rOH0=h+|6tXN0n>_3OG=1gV;lR&2mG)2IqNduh3>Q80f2V5L!P9#Z-pPc;Yr* zSj}gy1q!09U}#I@r#sP`2n2!G@fXKLaDvJ+=C!E={5#Ax214_ovo;ZRs)!-+ko6;7NRv zIe#W3c7}}+FbqBjm=DSY*-sDM_p42AcP#<3vGTv%tZ%eNBYlgmE-^=}yoigOo#f!M@=3Gr3~_t(Jl)jrtK{$jb0 zxhpO(wP}x!_j^(0brJ0>GLyZlrWQ_uZe*jB4S(lK{9IH-rQ5G@_6|;+G?l36xteE9 zDVgd^l!ld0%D@&a*cKXobYG}yS7&H_j6*GAH9(DeDN^t+bA_DXB2wVxqg||E-DO$@@Yx1q6aCnMz75M)I>^y7zzN}TN*YX0wxBV%&pA(_>*K-cm zJ&d^%c=DHkVtq@Ot2AtPn~C9>2Ez6d7#oU{(~W*|$tPaOr@AzX)i$2}w&ho4z@hNQ zqKEXz7lrYV$|4Xp65JmFLgd{wUun3L!hT7NN3!_7DE{L*Di*xF*iE^yN-#e(WB7+( z(_Bzc{Pk;1Nm*2$<$RDuUE78CcYhC3Tl4Jr!QKvG5ZQi=I{3z&Hwt-oDt0im0`_R_x$|9>)>q9vj zAgTsUR2zQcp7Un%HPsCIaMGcU5qTiWB+iw11&6wv%=hXt5E2oKei+=}1=i6vzwu6Z z_eWab9!oX;3Yynhx*^x%dd|7_qom~DbD9cc$>#PwFKT06?;E6@;l{6cS3+s|fPqC-pd?Hj zf6>+5AL7Yk9EEeA-I0Ei+QndImw-L2>(h!kapKu|URAF`*M>p{gr>5}3Fc)rZ^!|B zKR6J9y5x}G%>s9I-~x!aYWcH~rM`$RCTt>$kR$@ZreZG^0I5H-t|7{V0y@g5n`eQO z3ZnwUuVd;0=lG)KE`Gq8=Xp^VQdmCRT0#4J8Zn9gn^QP(Sb3@2ckI3^U*%-Js;s0> z&=cBqo2HoytIHL1<-yR(63F9)EbNcp`Q7~cfMV8nAQ4Ni)^+rzk70lO|JsptwWAU^ zf*?o0XH`;8IHg$zOhcrFoXc8yC#pTWQ$v9_8E||8tC~iqWuCDY)LfwvXq{qIJ92-O zEiNz*qa4|qp79j?@Y-Q=%Z$(pt_ye?g&i49N`G4?EqrWYXyJ{w}_( z=&*Hg{rz0#^IRhTcnrBl&~_7V;`!2ui;__XY^ zuC)HLeb`(XH3E>dwzw0A_HI1tP%1b%M?PDf;~;CHC|5HjT&k8(P&UFMP+^Aj&kN_2 zU&lKEl7Arqcg*Ey?HP__3M0jTL4#ni#uU!AF_ zpqBjIU-@(l<1D-E>7+@Ln7w=8T$wwX^n-w5P0|add4<5b3jIpk2jd;!FwI;7JKNK} zpIl1el!|CNn=gchhVwPoeYWOMpKYAE>V)gy_%H0@|2F_CnAenWl6GucK@!KRq05Y& zoiUYPOkrB$mq6FqGIF90GjV%aP+$uRII?0-=6_k*?zdAnJdHj@YNMjmM-I z&${REkcl~yl`H077bm!j1V&tc<^LOBBnQsQc zffb}hrr>3Y=@+R|$J1<%M6h^07oA0?1ckhL-|-}JmFE9D7NV`3awSG5DsO+8J;KI|%zV%TGajGB3*bhy-)1j^4egw6R3 z5T&0cy8>T?(|8w`wrlzs5;@jC2%6x_J#8G0s=tvPOB?jn)zx&Yue2KeSI4p*2vv{t z5Npz!hf?H0_0q+yKK_FuTK2e_&cv~1G(c8wftKY^iCP!HWKwMeXbmN z>qd&_NUyQp?4;J=mn96mI0SYBgaE4h+TY9Gvg@zsuvlL9sl2)i09GPiij8RS=Hxc@ELf-h)UGbJjM&3me6L!a9qNjMV~ z5Lfh=X<9p+kx=viTpAxQnTl#`-6(XjdEcqZi>dpd?RoY7yNZfiJR(XoQN1|nl?E01 zJ$|Qd(sM_(p1%syjmb)CCEDDV+wM7=*y;Z<+)zC$p$T=i5_%}KjF4PR+DCpn|IGla~ zYgIY^FHrfyICjE4IM}FlQ_9M$-eo?{;kuA=ok4qAFNZ~V7xFt}dohslN%M7pNTykL z+!Jw_R3TcwO~$C2roquA_m00L23e?-g#%!R1#9&NVKT2iq2^SMXSys7iaFb(D*E`q z-P}0KWawn^e-T9cR22Ou6kHfC87#zpaWVpv&_s*j1nH+i%Z`dF7Saj&e?-+D(xdz8<+JC zkcZ99c}0mXGRDMd6?bb6-x}$jLeVENiA^Vs~s1t zN~hkm{}{z|k)B>M@s|-4q&VPAW9f^v>OA(Jc?mLH3U^zWEKr7cbs;u2Y;&9vd5MaL zrDv(D3iD~~2vMo#g757C;5rSA1}*moa-s1A)d>OsegDFWv9R4xxT_@F&qxp4Ufn22 z8Iq0G6?-Dp?3-o@If70NJgf0t^msR|L|E6z>T&E-+L_4xZ+Jy>eT&|1Jg8CWfufc= zb^gc7;|i)rtPJm}9kQ;aVFU5FYE>RuHcf~r4sGSAN3=SCu2HYJBU=#@@<%bK(#_RU zSq}0Ua9^^*P8{z8BnDZ8@t52}V!Au;=ow0nd6Im#%9v&zUF7D4nF4%nS%Ps+9MbbW z7LR0FG_J>srQt{$KmR2Qn)IZKWyLQGS##7TZ9PN)#6#z!rlRgGSB8)8GhcQZT%S-gmbRWn1T}jg{SbcSXDYeHYOlXCv zdN%y}?d2p1b!~YJzDnzCo{CFPAV!u>Se^Y%2U%Gf3Cs|Z$%qA{4v*_tWT{Xh@0c`0 zYzo~={8V=+@}=y70LTaMF`yY}tz10UJCEmEu*le1y|AH&|qr}Y|XxMD8pGmf>=-sWUos*b;3~5EB z{`5JrDc)87f_*owD=W{d5fP|tJu@|CD9@XYr)xdHeh3RGc2rhA0TfB2oGQ0&8K2)9 z6$5ayqkq7H>l};wt=80LsA5!?;j+PkGKHKOsm{|;tRj~55L5CVVp~KCTpPFyqF8O@ zY4dE>5u1X~TnB6HE-W)1Z41bYg7IlTwMr%u6oTJ=8=}mpP6=R6SR)*){rPQU2nVe; z-qxvd;`Y}c7fq_fjCaWk089gvCkuMHH{_FFmDAXk-tR!w#>%x(Wkd;eRPt-y`_bq& z6_XPrU=inqc|-xw+gQ|?2)!>l^9`{uPLod!=e`xGsHvHohpo<8-ux1UXi;_BRF73q zk+t1~qmIQ8hkMe3!2?T-+3CC2NHyCZu^vO2G${0QUfxBJo2N7=#1q^66!OWCS8ZtL zG4|Wm%Pkr}g%u|vjO|~(ppekBkSkNQ^>ny12FkL@8}Em6NCdz}Hu&W#K+9yulzQi0 zgq{h1Pm;NVy9b^ic@|an37nx+W#9Ggg^b)E_s1Z2;5=ToOIsg}MDVD- zwH|S3$GpsBb=eka6d0AX=Fe)t7W1kEq3bBH3U0DY_# zKqPH6>RNtQ$3p)*Dp>8`X~p0?jbfVH9@0sobQOKNv-(e9qmD`3wX`0MO2UV6bywA_ zN@3K|Fw;|tn_n!Iv7UeIdu-DZn;66hmdMaa$yjZcxkF_0OStn)%sXqAp*`4(nfXfi zH~zCqruW@R@_zsaAa^}lRuR2o9J=3kWgO^Wm;W=GKFAW;kW#Gn^Na+%c%M|2AT2U_r?4f zXBI*c1i`cZD&U>Qcby{7_FD;f&ts6A**MMqB?-FXQ0U4A5!qtksH|;|${l^hpc;5< z|HH3pklIZJk;RrL9-l1JPIj?VRFMYP|3KAz9ee#B54r!hLTD;|8J3v1B)B)o!1LWdqa9NZ{BxAn-;Y0cPWziow zHZyu%(~P1M-bI!{@n|^zF_gd8ihBIb%ntN$_jgO_GO)SLuIRb*?=o_{PSVL2l&ki$ z#KJ4*sAgX>$VLH8Q2Fwv{`CelGUZ!GvyEsF?b$qdO z-qA%GjhPld9?$duosHB`C;>?&X z1et#_nZeS`5Bvl6`-btjO0q{DE(I;CPs@fQ(n*g!Nw~wz_zjxb$eV zC%smM!%4-u`dBdaGYvY_x=J<9g>MsDGT^@&2?wBW2YiZOf}Y1Pt7J+iiz(qaGh2|` zb|$aTNH68uL8(I1adkgIH->U*>n5)Q_A#u0K!j&8djt?5A##s-q^tWLGug?-Mq4tH zu}o(HL5J$vQ9ErUl?D&+;vuMT-!|hyHUGq?GwXneAk7b~n3Q5)RGm(z5X8Zg*6tgQ zQ)!|b13RYTV}v(8_Rd^w7zpkSd?jG*MD{#z;+W*=Y8vG1$7hzfj#)v_ByyjnOMevC1Tv~lS^5yjyP*c&5e&vyf-wU77S`S8(0$4{W6>k=0`JSE(pGH@)#Men ziU;w-@A?{2sA83@M?t$R@*Jvob8Rw>~JBgZn% z=4@jGX^u(&ztS(O2fZz@56gO=tSG(R@Z)g{?upYMN$MgJutAlF{ltBU#OjipFv<2H zPWjQcJnzwg+X@Ve+FJ%C_ar+eyuuYz#W|~#t_QQMbo`7A3SMiE!({FC1}5!O;2SVcG`%_TyT&ZF)gOkz7)j~Z0oS)Xfl zxLES!#+>-}AqXZ+RhCeU(1_T6aSD)=do zr^PC5iD6L$=F4I&DiKuU{<5%Zl5>g<$VwUe&~CsmB}@4Z@qutO71~nD4JW1Ki%jqN zp?F8S<|odfV2xL=%XDWNjdY(PbxxElPdb`#`|lXK7!?4t;l<7mdpcjGn6>ZJvvt;J zUmL!m(>;3D*Q^YBgH*ro?Wajulx{XzGB>YaMcNAw5@joIF6MoZzAz0=OutUcFieJk zj8~jT%~28wT4IwzP6UBc!}OKnhAWt~F-~aaV}RTi`Dm=uPPYQH zJiU-*@al6e(T{YOL7|TFY%wy@-g4K!q^mcJcrS~=FRaD|$dmLrSd9n~L)#(XkZ#*& zr8vgT2LU=Xa)5Q`d^2N=#FqQvSBylpf}jlpWcGOmji_WjRJ1#r&*b< z0nlT~tdx}r_3+fqkhPXAe~>0AstRveJz4{8Ioe@3{`j%CWyM^#o5&dN^Mw8nXnz1O zC^q}B=n=Mg$U^NV>8I;~Ge)h+AVU&OjAW@6W$9r!!0)%%!6saGZ3Ii5#%b5>)WGyp z$O^}A7EA-ymev0`+*t~qWOPArg}1bo7U%9lWvR&=BHEr+{8OY6fT|7>0N&d#a~8K^ z_U=(SUe_4UaHdFL2!A&_P;pJnfEbr_p+avgTkZkfh#FML)O1ory=-3gOdWP!_Lvl4mbLPV-eM9tW_xrg+4V9K_uZI0C|n z5G;Opsdxr`W@BBLp$&-S4SWZT4=0?Ct|jxU!)S8YI-x8oRgKNn)y@>&Ngw;F_Js~& z$>LxUI*Ys9Q*#f9b+1o=%p!O9bl5hp2a5W@ASA(JXMzHTwqh?W&2L5{4NglZEBb|s zlm(!&`)(F2iU}1!L!x4Ue*KN0<5~9|fjJS8$CMI~a3D6O<95r#7(55Jc8RQtCROTi8-Ur_gT3US2g-&pGrkNw58#D63K>Y1Id() z5UWoqmR!lnzD7tzI&faKSYilvGFCRQ)$)~s;;9qW>8{-4@FMXZ#8r9!{+fdE{gME^ z&`}uW=U1HGdh%J>oofCkNur6bWwe6`HnJg#U3qnDo2+gZg6w*vsrngkGn)V9(<&?3 zgZbw*>4vTY*6TLBcSoQ>wbsk-sE=P=bA!|J|+j4GPK)J z%(as_Ikgw|A=dN}n|c2MeP3k6S1*6s5s6^Ah}$D_!mkxq_;?!8ktS{RYfxGiqS~Am z=_>$XmO^c#GV^@0OVEMMF(=)?G-e+M|ay$n&kCUZBjO3 z-(1h2xu&8SM)460sB@LcqYN4S>U11M(4bqg7?6w;oC+7w$zgiLw$r^q4=zOzdn^^XCFdY*MG*=1zoY1M^52 zETt$&DLw0W;mcCkwVI*K=dS4{m=j^ri(7XDTK&{sDXC+4utJA_X-EeF@wP$IQ~b|> zeNv36>M|f&e4E@ZxVf4v&*Qp>c;^T9{AO9jDC!1Wa+M-#O(8UTkQ}RxdD*dQQ0kX9 zBLEOf5{KE8MeshGsgKH2>^IC6RX~4V*tT8FyJiw`l8p*c< zY<-CcFH1efhFgpcAoiNB-Ije=YbE=UIl@coWIB||MiEIT&E<5)E%$|t5BszBz^h$C z#bEF#TvfU+Jsx$wJY1bk>GVhU=F*#UhOBRTXIvs`xSmdqX6!piU$jTx@+?Ap3kCsX zx(5X#Y{A;BcIq;sTCAbHzxve)3|0+{gm!TpAK04&TBvJjh@5NZQRhFp!9WSXGOePT zIBq}Y9}1#lUQg$koAtiu2pA)>M%Us<8P$75XhU=F?oJ2&?Icr(9pSjQW;#dMd3&Ld zZOjN5xkH^(8uZ^KDwF<_QPk&_Uc&&~=}SWl$QpFx_&iQlKmX?3#oC1v7?uNY3su?Z zEJDlv7}4Na%SL<%Yq2*r{@x6Z%2`zKtoytFD+t}%M3t>*8G`fYk>{Y{0`!xziv|L66 z@$w{%U4b}@qdMLCMQM-gl$L=R*0;t*<7SXXvObizTF0*zZHPXfx8zV4q;7e#AIQZ=Ms+L|Kh4jq4`XNq=+N ztEkThE~>=meky3h4PRLGI-dalKLEg@(zG147@ zzkSBMvI!=BQBIGMj)h!!d!V3@N*mdCU@15I_Gc>U(2-P&01#%+eQZAydNvQ|AJ59e zz>}7)jPo7)RkAnYC4Gy(fU2qGAs|$k2}tYVX2ox>S3wx%tIiZ2=_89Ho#IIr!?ToW z=ng}$acqn;LY||@QF%yw#!I520v|&h12}8b#V(d?Zm>#;WiyXe; zFV#7)*f!krq5Y<1iw*o`Fg_GJT?v3WZN2sds_M4wn3!lpBRAxBI#2{qtz3>Pf?$zm zb9h{+y|_%FfiIr5NC~NuD6}@Q_|Ii1x3V$ooMSFad1OHAwYO<#3Z>~IKFfiGSw+e2C#1A(vzgMX;7 z%&2xlZv#t>K&w*%`z!tJi82Zd?8Ng|D-%n);Q?N2JKRev%>RSRL(5B-6;s4a$hr$& zotQj>5phC3>kOhF9$!1{PlksSRIip@gwtRb(e8=T7zV!@;1M3g#S@HsJ~Gq**y!hT zv8O>(YSdK&7Y>TD*II>fun&+EU<|qo#s13CLwX?dbhs`Kc@dncf{X_}A!|iJYpgIy z(MVIGi-xW6M1j%119@;Evi~(L0f8B^uLf&?S`N~#Z#9{<4y2HQ61iaL-1B>*ka|f@ zX(50N_wRG7FbTxHu~fCbt68}(;qZ}OE-5SC8)v<}jq>4^M-jdS5wj9j-lfm#xvjeZ zKxxG>XuYrSfzA`0(|dTPW#k?Qp`HeRMDluY-`%ttm!PT~#}3jytAD5xue)l*FiLrW zzEANSkboy>`;IP)8tW~h{g-@yjMyM}K`@*g0LkDpeC_2YW)V3XSjn>fQP#44Co2B_ z#&U6UtTr*@vmx-gxCkSODFvkoW-b1yD&ZuRV4Asb`iqrK%Cbl&6Deo>8&$1#E=GQ9 zL1|~wIjs?-h-{PxioOlERzaC($e91x9oT~PJBQX{S2MuQs+VKWgpoS*;XWtzeyhrA zw8%+o$w=)=bp+C{7Z{cqJt|Ucy{4_V^cyqr3v$-~`^VjjXhI~%=_(k;j0gpm9*lpT zsdZqn0tz34I#nazZUj|Qx^$>b!x+;O;@Fm<+88$d@7yW+tr+GGI;a0}nXLKE6`+;7 zg;d$WYWi2LERow&yTJ!^QLmKczmL)A^P3y&aNu2-?AL|csWJVP)(7M%`hHdZEL9FQs>tXh>gxG za#?njxlhv)$PA`bqX6w)l73Ku9Ud65Cdg|RC1;UucZFbOhny-VfMFWHS!+~I#8)a& z=$*N*UU#@LS~2_m5=FbV8&Q36&5DDzug~iMmIhOYB=MXt&`=gsELjIIys_$oRA1WD zo;s)xXXuj##0(6a3?rjbZ`j3HvNA^muO72)6OwR!_*|mmylnz+vgflSjmi6BCo>3G znacvbZ7_H9Wn~3@`p=_prJWNoQYou%zH2}LO@1gp!Scl?pgqArOaq--s&qNfp4(Ps zYMVco-)4#chEm$TR@xF;RE$T9iYBpYxncousro*)t?0N(8horbbY`GcFfS@;z|bUi z!wz;+ewNbv<^&_;s#LS2l{&VB17gZlU_UYSh!okv$)_qH@-wUiAU*0bvVs2W?;4g` zBT((7?S9XW7=DmpJJeTQi2U*m!l11do8Wuxxfx=)Ppt<26u-U4&+2U2E?(8qO}rZm z^(IF?T*|;(fsjE>gn)+GxpmpHLFVQ!?8RR{4SVK0L_J}F3tY5-^n1sempwvAuX>A+ z%-7s(d_Ght=qxKp!kOxBpU!qEx=|8Zrow>Nrcb z5+hLsRf%P?E;BVWvSK}z!|!j@s-ju&Ucd60CRN3}H`I|_GjDf&H2OF8Mc+KaAHVYi zpc8X~4a?q-zU=ji4Z+3}J6`?5Rm2!kvhNxYk|IMb!lM_!8dRiwbGP` z44Nf0&1vYwSF>@Cud`0mQS_b?$Cm9XTsCE6z8ytw$i|YUHTRawQ43{l@%k86ybx)A>@q0L;Tc6 z$LEKlJq(+{K0U*ERrcijf;lXHPu8J}6Y5Mo(2zJDIBvt=9~@^gH}DxyowT^t$u-;{ z_cI4EHnMNbI~6k)eIPz85tHc=P>a^v&a-n2L~-v@Ea&ZU_0^!Idnhsw$n;EY3mXuv zzm1V{byQv!5Kr{k@&o7Nt!c9Y^HY@SkTsm$!ecyT$vx)f&qE;St+h<&GV;E6@ICzT?;%)RQfk>Qs`3XcEScouK~#f>KPVEg$t<3u!Ob0kLw8C-7Dd$2T9 zAM224GoPXWK+FCnaiYzWngUC#rL28W+5h z!l@b%ohaiS-DAIm_)4BXRB`4s_&0^ef<#i2D0=|ky^GS>BM+%!k1Gf;3?cT2m8{Bh zn5%Rp2v46gkte=J{DSgMI7TQOzCaak@mA0`{n>!m^nOD{^O0us27Tt-=Zy0qVoJ73 zn2aNGO@6fj%CVY8k_w!CXIk0+CtRwoZF_*oijb>Q-C+U!b4z^m)Av_q-X`BNvA^lJyMcirsSIJ1kO?^}3_3z3Z0O34)pDf`Q$n-ftK70IT#nD=<4?zI@EQogK zuh;>|hE9@|g8PpL%k{#ptKjY){jW0+c`IFj8p=-Ec$;dGA(4LddJ86h)gBEoFNTmS zrInt3Vr#b@O7Epl@`YHNhicCZwZ!cXj(tqMMDJ15e-h}W@3Tt#cRhGA6a~h^=1s3y zhwIR>GNzrgrZdcDZZVAV+){kFmisOn4GGG$E$8s?Ur@YNPbE1H#3XaG)&k2I2U%K}S=x|nMvaA8o z9*YlV0ba@J!PA}PO}0fl?{z)tgx%GnGo`qT(HvB(V;z7yHNS|T7k9Y9Hm(|P2kW;J z)ioFEJ;!@Sqq+qgkjwum8wxAjeGEZxng5~F%s|7uVqg-8)N((}x}s?F{Yw(IExl1I z?K@CiX&_89))ReWMR*zO(u@6ZLZ&7#o=^97M(`foQtB#*!hY2s6{wa5RQKw~on>)Q z&e0shVgDaeZ$PKDi6;^Zjstty>m9n22zuJfZfizuYw{g=m}?YYNC^8H#IY|ZsE&Zq zD}bv0{W+Fc3}9W~pCHudiJC^9{32KCm1uz=1C&f zg6|e|+w=@EU#g9w(5i@gGk~`ht>t@?=xu7jksz@B`5`TkEognkE%^{u>ab>@6ocuN zhpqu#wB?3gh{C&o-m_kzMt$LUt}uxULMX_*c`u?`^Kfmqohh5wCW3`ilLq^U7p^Ke z9m&&0eM%Pfdg|+v+yow7TaA&Db67icLzbt;%+Yy!sv65IUm~f*a4i?8`h#>{bM2W1 z2l-~V2I{UFV^!G|_<>?}&*G(16zReF-RTGW!9~6UXG|v}|MPN)3Z~)U`>eqLJ0WV< zg64&dY9}L1FyJ2TrYM?+dXk}bd!LmLr z1Xc>L2m%8Bs@m+jt!ZET)$<0fQ4Iv-%{up=%pLyy44S)v}N%Nws@#F$$8o+ME8ffwd}f?9`~ zg+DQ^N9zrS($j}FZIvn^4ZTR}dH}pkMYZuSxwhK&?GwrE&TAJNYkQdHi`4H3(<=}* z{a3SMKE}u)mX3?<_wWDzPCzYH!Q2qs6rM@u})zO|G22ujwVEWo* zL=Yahn?WQ&5J3X`B6B^-lZoaCye&5P$?Kg$_EMtOQw=>KRG^hP_?QSct96!5YGi#Bi06Mst*D5P=l8eh!_(f60r%KY`qQ z>vuHZ_zOyi!e2QdU;1U*1@NErr<jjx)4y*dG}?NLwZT<`mF?2XgU^Za!%YYyC%tOkLq!6QR$DO}}`l z*@&(eKSV_>pU#}NQ9}pPtbp2U z7U^Pf%D`I4TO*|l%ZD%53UGzq&mgx63Aw>BkoB$-RLO*1U!0XREH@zEP98T4pEX2}CF1qf?2)ZZxOR zPkt>GUjE1qX8)Dn+1-8PQ|;gXhAUP6^f3ub?5=?r~1di1-dXmm*mvYKv}X~mTbHH<|rNs8ac zRxCfR#+VGI2%c!lP#Xed4kmWU&$aXXt@M`+$U$rRb_u1aE#u*%?AH|6KV>QEWidR| z%s8h+Gpx{(Qs}HfVJ~enyt&h_K#+-E67#KX!J_F&9Y4IFLiQpAv*m>U*5TSBs!`== z?vh?Dj3bqa0`ouM0_a9L84fmxfF3DokYIEC7Dm~kQSh7Z6v)~B-KiJIVj8eXOgeZk zj?Rj91uI>Wo`4Vt-Q5-Rg*0dGCXzC0ah0jf|3zi)ftNBt%CUf><3E2^m?H#DNu*t^ zzI6rc81SK$DY0eIvB^3*>9^0~T{_0PK4?BrGI3N^}9(D&a zXPYonRb&I)svO4+S~1{4t)2Hk%@Bd!MS!QR|dyqEm?x1u81avR&e&56SpmxG&W zaKsihCr|55m%;lrLIVKbb#`YI`r{8|Q`4TTjH(m$Fg%p+B@R|2N~*;jlfu|g)6xr3 zI)r1KJ_!1|y(NNpQ_<&Az)nv-|K8aTbUl{``XtTajE?pE-zNLkWeBn~E^N5}bje4D zFD><$K)o<+y1L--Uwe9xR;Z_!9UdYFdJVQDE$dW6G{w*6=VHmPp@Imm6kHz1_fAvU ztD3}RyOfm0LWm)|Oz$!nD8MhbX4I{5h5Um$be&2%%TIMOjjPX!S3m$?`ak4%Y$I#s6cv+jOiX$AT097p##=9bk$79w z^txFR9^{JY!*wc4Acu%Z6M))u8@vdUmAGTUa2=$) z?}PEn(il2K69xdCz(DI8B=fylLM8+mnbe%Zw)oCyrx`&U;88Z-Vjpe507q%>82P(J zAo36TWVTAUD92_rmOtHGuvuY+$x~d0xTcg=xv=_IPkrT&MA>2*V7+Y!xj(!~{$f+; zhp)JC-!q*3)e$2~E9?k>%>3?{!(m{n@$6|2V(Ki;`fdWq5!Y7N3@JQka&2?Q>kRL( zNhIDF+8}u;Iz4n zL2MIBKf0yF?LQeZJUsaTIkBsbvmh4~S!J!?yr8&dp1?yfM(%*GCtyp@|A6NVB~iUf zDDbH7WQd-$2@tZa@#f=syasYoV9`xZq%y`AV-hD@eGZibAUyo_3pVNooJ>=XR3Dvg zu1QrXf~}3Dcg*P3szH3}fX~kMcKEaK0z8$)mpCi(s^9^G zPOx@lY%~M}BthT6cR%ATt{_qhq%C5b1}F$#5GYp`n>06FOpF}FHQ^;q?v)97N1Z!t zIEqFSvh5kCEvVGV+u1rhFv|kyCo~fg=$1O|X?0gOe;UBFSf_h2(eVdG10+_4eZs1B$VU{)}dH@A%paLEOJ z#T^OiB|1HNh&tq8=-$xBpsphWW=Nz0fiGdbQiVhytj@wKwvlM|IJEa9#w_3kUq?@e zF^R-}3Vc_$y&P!gm7sOFW3*BTb8InRJWlWwlD@Yu>S=j}q-wgAZC^y`|8eU(W<=It zX8wus*btnMCt2^v_Z^l-vS}nGz)T)oOu+~pg*VWT1VQ&Hu+;^D>ir;Kt+-24)^{(d z3F44I+(h7zGBXA%;?VS|2EsP>Z4}htr`v16X`HO`SC9-9!|L~!RnH4)+OWeIweIT& znvW9O1U4!eRv5KZ2IZA=r)9J86HWf#J&K24blPI-_Ib~2xo;PHP^z89>eyl45wio` zt81KzW4+4f&1qLx8fnZvm74Z`!1sEdlEoX0M^>7x5dx97JhpW-bL5eOK+y{<9my{E zDK6x;reeV%evU0qZ)e?P*@PyaNs5A0v*a{vJ{Qrg75?E`Ef_CmB|K^f3kG6-TRc#X@~49(KE#0fCAL`41JbxWoS4BiQw zFY(7nSD0n9S_+A3fKx69qPIXJ9mU43hmLXz$r*gG_=oTbJJ|e|th}J=pF_|5M=&aO z;U@07&HLHL61OZ|sOP3Ut)O{DE{@?(Jv3skRj@>aA}=}~;}ze`@Nf8=Z`cK`HOw8f0W~{=q$ANsDpLn|F`KyO z4{9fXO{+=fu2czYGQf;l7HF|2+$Hclvb#nHG@KE=iD8$r49+6BWlBe8)7{EL5(x z9Uif2-~gG(U?*Nx&se!&k4=fd&(tGSwI;TTb&4SpZ8%N1OzLmBz-ts(8^yzMHt!BF zUPRRq^-&BFuc8;hJ3 zi#^3FI0ZK2@#cD`SaUS0-RF-ldJ4M$%UuySOGaOg5=(a!#SwMglM&oX&jTT+9s;;t zs3}4Y8)Cx9RD@Dta%%bwb%Pf-M;6U9|5gjbkVYiztv%Bt(A6V&Q3-!{-OLB-O67|k zLh5vxfI5}lA~0bXvHHd~dl6YRRu=&smIm3myZtP*xeLbbT+{E(0`@$R42+(NThM^{ zC|7II9SQBdJ~wUrA^;EKU07OFJg%*b>fQeAV{!kv;EJfDLiw@ac)-YC>ubz3@ZhA} zRX`=lBo1)hGq-7Rk%utRm*48|ghefm`Iqq=>RB)%a}TE(smO;EMg=sLSWXt}RSI6- z0A}b=FQ=)S)(N8}{;}m&D)j8{N}E4uM?Ng%Qrf0eoy2|9*OF*m&p(rbxA8@7|48K| zUU{5p8Q!kbi^oPzsP_`V&KdHc|y zv#ePcYS+K%FPqLR^8b!kW5ih(mu^+e_l6%k_>A{V2qx2rz=f=_!h{QTW`2x#*3(n! zgHMKH3GSx4>t8XyF20rZ{1igd&>1uj)-GQ&)cH76tHuO@* z7u-n2x3?D;v5xJu=mw!Hd^`XwSht(tWR_IL+My*z;uOO>KH<#7q5rKWo>?J{bj!tq zb59~O&}kP(eg?f7Dp9}ep#M~dv(j%TQeE&f>J%~JD%(>T{{&E8bDBrbAmwJYo@N|x zVp(8LKDR#W8nD0}I95hXdCS!G;D8|UZ!2;&nKD}%w<2E3tg`Xb> z!6WoFAi$?Pg@UXkHS4FC97Utr7ukqI{br}F*nn~ru*in`J02k1jE=YLQ0vPMT{n2l@TQv5i|=bA>gmWi zpe4WT^B^N5^7IxSSsjwcgZLhJ!TozbWeyiDp#p?6luEC~SOC8dzyfma^Vt=vhW$g4 z7!)0dOweRz*LjX?R5FOPku!UL`v>b!+=~-umUs-81}8ixXmBvY7LH3}lY7QsWTZCc z2l{%YM#PjI@I&6Ccg*0W5-)xupF-D$aEJCU z`i>gY+HIQJlTwRJ$lNjYBiXPcHmQ1+suddiE>APTvh+CEAK!@l0xEU_LS(t{9TSHI z$w~c3aTWr_hXj7KJX4PpFz-0c-qxo@ics>+U!l07HX1dK^|W7`%NZBO$9wIVg(<`5MmIv4I_Z)_udpks=j1wQem~LB;Z(t8LkS!KXP| zcu#$l9e|JTYZ(9VP^5Ixk%dubcuZo{f;j+ObaMJMZbn)l4W|m#rBlU2b0U`s6KS)U zNJ@j5frL0VNULpOU}zSb{eO>#rS3gV2pN@(>;7jcC(Or6&?RyBo}ZA%d9Z7O4pn)7 zYeW1~{pluB5PGimDjZ<8`ty74%8x^< zK83AYzvBS(V}Hjg)_POvZ|E0%C^~YLow7oMP=wq-3><^ug!M~Ga;V76sQoOd`iqQhz-N!RUx3rH!LI?VD-E5}Twedpe#m`OQwnUdZ)+=w zl<%GyYnuQo5?o5V_+C&maw?})Sr9+QZ><_G+B}jVu9$Ri>N?Ce6X`qD%OAj6plL5> zx0@+k$Mvuy5|K{X!4=7;&5S=;5RhaGvOY2^CC~%n)Or&VDN-@%ySp&Cn7gQJ!j#Ef zQKT-2Lx=6`k7@aLT1-lWi+d$E-^=YgD05=7geu4wlx*7=@O1Q>Vk$hFhFH6JT~mpb zhie!0@+~>6-uBsjhL?Ixfjz0qHO@(|Wn12}@ znWvQiAwKK;868qwa0`xT5kI@+Ge>|5# zP1%Ezny=(j_R3Rtsld3^me6L&kFDF;O`J@{0ob*BP+MV3Hf@zK-d?ve<@ttfAOk_- zn4=>y`uJoYNzf#gr{E@<@rpzizrW(HGE9B`$pR{X4mZ+EL#*E`u2h3ceN0sgj0LT2 z;Toojhfv!NjR8_xAczXH&hrhM02ta~y3B0ro<|P+mP|5oBT$+d%=4F{#oxVcbcUE!15ghEOggty9 zG-#TI-PF%Oa|7=fAG*IIm_lIYTa+FbXaUp*kdlX@?}FqzuY#0amjsc+Y5^k4O2Vtx zqJ~$cmXkAE3C`tezk!?CLTL; z?aJGi@xTD=j1<{tvW#167OID)EQYH|XLhB$3wG7{J8}4Jq zO8uG~N-ni@%2`9-JmWqCQ(@_fv=kj$pk2`oN;|?ts49!K*~Fu^KYaC_3wMiN`C-VZ zqtC`wNW#3Leq5J5dRyYhdt)5ad3&6$eAh-S2IKtmdWt_2f&CV+WNF?e>V$pMpH~bd zly=?OtcP8f<*?@dtbo=Fb+4h8PDK3*??!nu;HEaf!tFBD4((8x`wFP%0%?eKIH|wf9w?43GUSbFGcq|)}bbhpr*}Q7my1htG3&H>TRq3k#{;`TTG~o zDK5l;Hk1wJqlAI>Mnojyt3Jf{K%=X_zXe6 z<_f84z3#dqG?+6QBHa3MozlfblLTBOIky{NhES8HTkW^``A&w{t}z~z*obJ_>4)US zJ@GF~m8rWctLg-k2rZ<9>R%RqnaD|knwB?V$Qrl=mp&9Zxjc2-{gD4b17AI<@OUzF ze<5%1iTfB-Gf;cUHM>)@1xIGKY$6m=MB^%;KhA=S*!2 z@Cj5ZR5Cz(0k+x^o1G1cEb|-1^_+4BwQFlV|1)`cX;Y3MXrou-Q4@BBumC{~*uH-y zRl@tpcI&%DYsNgkZAzZ`g=JFN3^Xx^)cQ{^3))oC0N9)Pung9dWOod4x9;*pVWcq* z3ZlMDc40~Tjzz=XxoraxKt1*SX73MFi^BxgX91EDu`&pTDh_U3)Ij7J6xdn-%>f@6 z3#Lb?q(R^P;1q<=jo8|8W>!3>@KMW76yry>*zmJ5Xvyt6yD3aapx(+Tu^9&_50nac z*_1@QFYmHr)7Y}k{r2#+d_&SK{--gqtK%Wsp*&SunX8C_dln_)H`RV(MdJ8+oCdIxCQ)9btW?1@=q|N!;ADYjK>iyCDfu-u+Kr}kVl-b z0~~S*)s)r~6;U6Z4@Jzaslb|rK2;Z`gca-zFYmNrHiF4kaSk5V ztFh;lj)g z?JMic*b$3{6^ZwvFLdiCS+S{6t9fIIl?7sK=f`Bp3j2JwUWtY0BnDLWJvZ{K&oL)w zj&*sE0Wce&p^v@ll-HwYc5x81*3=Wp>I;weCz_NFg`?Ti>^rm7-xc8y*0&DZ^nRX) zTNRFSDE2Y#5p;~orrX!OP|sB=)F)9v47ByCQB4=`$`Wt zk*E__-@lv-EFe;ZvgOJ#J#{yq^c=qCQ$FJlRH-+s7^}UoT@W-{dp`w5Tt+tnT-U5x zMcMqZP_TwL-aZx+z0KWU-fdh01jv=Mt)ObZan~~zoj)7eZ{ z9VYwE{Af9J2M><=X{~ihV4_vgGm;bs48~!pEHM}2fHPlr!V{GGBO0%#mapT|lw|Ni zj)yG0gd-+I`q$`(zOr(X$P0<(-WeuxE zd()v>jdx_3xqGnkD9QW_BCvD4UGgraKdn)Fh~LXrqv!X`)Zl4Dg4@r)GCOY|?8IIn z{x)Q?Ymb8nXgfl|?xU=xA1~34-b(0P9NxHXBQ4+(p`i7d^c*`1gcvs+#aW-@(NtSTOQXW0l>oW|t(g@KfO+@NiZN{g>!qQw6P*f77%AKLNX|Q;KPa zK_YeWrs7z`W;!0dzARU<`8?G}Ek#}0I9&1F@K$x$Xjs4xdo2_P--k4m_hb4#H;!;W`b_Z556 z8+zI~S+{5#*EZjO2|tUtYZvydGoj^&cOQ;b%SZ>3%J&W%lUKjmsOjmfoOEJe@p^mG z{l~&|o^JvcvbxJsFAs*+o#c`8H$$;ovF?Jz+)k)g=sD9AbbFrkXQXEi! z&j;Jjo3&)%KCnHhfN?~!+^*}gt`{V~{T$#tR=h|Ju@g6*pGh|xwyL3&cnCdjXl=_? zc{%Gv?%R3G3ohv()d(&fiDMk*p50h-57wwf zVGgn_K9VbY&?!HplDBIVX$YJ!eG+m8x*U*h5C2%joT#3XwrhE0+HjVbvFo3+v_F8B zZ8CO<{ISuSRwh>Ce&gabl<6$fzPoj?qDA?J51uI+Q}7M-R%oCB9JPK;uMOBC3LwVu%F@?xJS(sK?^{)5R}8%SMr|GtcNz>6_LibO}k( zjq`Z}gxzqj5x&64YhHYtoNKDt{3V%JN$90K%jv<_#*4z*-a*jLf?bNgwx+h(Ut^2QAUBTM7jSOuYOanJ`(f{5Y$#gGMq>vqH!2BO zJxIS&4eur#=J|gX62zDJ@;})h>mpPmpFYcrwossOfo?J{F;NF@hC&aGD#LXWbMLmA zW-g=iVrOSA18nbdG49i3+ARY+Bxp}sKkB;&we)Xe4nmH+B2Sr7Qv<({#h$JA5_MZ` zAJ&gBt)>bZIiHKMX2@0)r2lx)i1Lt7S?m%Btgy;f8N%9e># zyhBXd4n__kv!0s{MwWP!?UVQ^Wfq~c(d8UbI%z1PAum;v0+O))nKOd3K0+DO%}~sf zG4tv{^uQ@SVS5<#3s425vz)eJgt-No<*|QIV^NyLel~ZgFrk z!;w!O#zqADh%5uhFo_W-;tzw~efmf%?xvo^S*?R{`tK|HftIGCAYO2`a`1S5@UTi; zIm?cXGb7cWzeNPUUM3^2^&E7`uPA(y0$&F+-s=1Nl{Tg}VR;Pt70Q3dF~jYf%3r)a z0Q1XLToPM}h_Rt*MJLO(bjXB_T~Ng$bDnOV3a{&V1%u>u&52tfd%)r@V(VSXj(BYl zGZl_S|1WYloXg`ZMIh;4E=Q0zQ?a_d(#wUj%53T3sFQ+T%*-j?f$US@ai8N_-r#?) zfsybelJbT8Xk^00K=UAXF#XfoW=n|=mo$fJOEc?uUcTY>3r$d8{$uxKz1TEW6#(+k z99~I$DG)_)#xi<``moD^q~lt& zIk&KDvSHNR0@?&#b#q)3)2FnInGFx?1XsrT(9ADqFi1 zis@|pyZ~p(e2n$2Z8}!mhbs+a%DB|5;$krwb()d=N46tX?Y*g=AnrEtG{}>4C ztH*ot5160h$l@~iIDx#+SvQ^-s zZ;I#Bnv1)bKCjw%(_9l*cgEQV>+Xcow2G@-RBw{eVq0y1Sn$s``|x+$V(;kl%HqO; zbZiuRLbM^Zk-Jz2wqvlij|Tr+%Lf$Jhe!meT~k@zhndf(*JCmvfn9m8ut{JtY_Xv2 zPzpnF<`X5ZfE!8ONVhd{bOT+l0Di#n40D*8476=UBP@wKN3;?0NQZM(A9_%;u%7>5 zL=1g8kJHzej=`_QHRG8?5$!mNw)ah%Bl?XOb-5zd95rXYo^Gz^C+C5=7hL#hiop$@ z3f(8gI0bm(fRh3;B5!l=rL7$+0S7rla6`Ix&rwTf+~E0}O>YMlY z%FbZBS3Dw=fT8hTj}!|MymD=9_AqwK&V9Oc(AHT;32#V`F2AzCsqc(7eQks=@MfHuLKD zHZVHpvwuTJnz*o_F z>58bzu!{S0(btuv5jAcOp8-~o$;3yGU&{M57n2Bc(e}T~bz{*pNnJto)N)1#j@+xV zY^#5*-n$kOw;=@OpHQg+0I-y~*`f<0_ajd&m0Zz+Tp;Bm)4ojp3Lpn&@{p1(54$}Q z1QzD8p|Zr)g8?=A3JU@G#i#RNn!Virt3voq70?0rgC>8No!;WWxar6rV2UA8u%M*n zTDOU&?1jB3Row7@uTS6KvfTI-Ze571oA%DxAzQ3syHk^C0l2t1yiDYH2}ikHy7DpT z9sY)p>lQ~vqa5UcWA2lZbat*P4OX?(`c;I(Tw#tnK9zr;e^rw$HuvANNtlnZdA08_ zA;g{j@=uq(aBS`vFRk-z*&p6VAbj|V1l)|Y6|b7E?JLV`jq$+KBK8z~murxSX4~C; zJVeYY?ATc9!lxHB3eh`pNVh*bwjh&6`uZUFU7E*otm)q0yaD&c)HUyI7jI>ncI!HcvbUQXEFrAO*+^$nE5L7nw=zs?W>)+YXFbt1r>3 zfBiPvS>Q7Ld#3~aD!qEHcgBSPs1CJ`Lp!Wa&s%C;CfX9(C94Y)P=+I^W5}NRS(C#_ z6CZa(Pq;2z;?TGd{``EpLj!@zwA~Nd~P~OyNhSxFIng)8z#rQB|F-;eIX9%*HU4y=%ZQ zl=Jcof2b`tG|dM99CxhUe+yyA9boV_GAKEgVl^Wh)po)?1k-&W`u6^oCpa$0@#Eoz zx0_0A;F+Zu#Gpr40vbKs(u^;^{2&ZIB1sM@R=P-mMfwJM}pvZgIFsrRf{aJZo_j z>rs32q2Cx%H7?i;XV1XE6h2;`t=lS~6O zS)P*W)(j+rycLYsvByi`~z_5AZ*?1*)!@dT|cp=vW7eD1odHme6- zfQ!U*uxsEN0V_yFnT=kwKmDMjdJN!4(@bpINPe8(BeCw72eE8!m3aslyxd~`dfehc z`W^1sQqW6@GD^#qHeAW2=w@<#&>}-aXWx zFATA0+8BsRVV=RI?;GF+#uH_rOv?vXwR5W+5>X|g1kE0A;D=eXlANDQJ?BH|cwAYK z>oEp3H3fSJFy5?4Mn-86Q230e(@FIY+FC|iYkXH~@vhtcu)(~j!mE#>$iiCc+S_e_ zW;?&z=#*#=jy1ry!F9_l`p3*Kr^`KObeI4FK>fdD*6_ym3f;NrX~8aOyOd(=5&%3; zAkvIOe0(1oHa)VxXRFA9tM%P9Ypuf?k|W1pIfJmXIZ$ zz6MQ04!xy`-yMOD^u0G;YTP-4+EX7eg?+8Ri4IF~OY#%Ml!>nqFrRn%ReTb`o{7W( zt}7A8T<_*r9hP)`#A>`9=xWw&Y@mj)vnzHOdFxgLxWq^nE%5hGvHMbC%DGV zKFN0@j|8AzG?#th5#W{)?I60f57hI@ZG9xdCm?zyPkm=7oR`qII!f z?{ppbeHE+jl5hx4SttiLP@8S8Ae{7PSnY?@rvi<6WO+E$_`OF$Pp=f?G8M#X(L4tz zHOG4_D=A#B#?_yR!dRZrLOT{HU!^Ff4P}-UKsM^W4G7-TVyux(Jbrc>`n48AY0G$r z&KB*Od(DAIuGqO4vz(chIuHPilu*N7P)7R=>_jQl*ylj83|Z;4Q>IEI&}qx;UXHdf zscp6SSK#)MY>cK>!_(=icB9oMGND9hewv680IzPN=zJ&X(-PQ?dOkA7LfW?_+v@Uv z5Xmy(;uA+#KZ?~V8r+nsR-j|_iC04}4c}{9j%55+G3eXYJs{JHt17PsI4llB%;A`` z(T)j;In>(B3+@~37Q^)*mf2x*nZlT`R!MoKD1 zCQq?`>0}q^(x&5*d+&-TyMjCutmK7%zs7p`PgH{fQ#_qlWQdu6KvPmHySczU0tYKU zJEQSYGjM37>0%#~N_}!eCa*!>h`;~NAJj$k`x<2bM7O(qy|E;8SLk=pQ>62&EpqtQ z#2I%38h0KIF2&CkX``+pKe!GM8?#7ZT+3<|D6H~3owHUdmAp7$$*khhMZbrkqntuV z{1^VIWj}5NP__9(CO;J9i6eHkouMpH{*7bk@xy2j%f(q*S98lU=0w+z3q_n8^L9KB zR1fh9C!@PvPVu3|Y&FNE8|YLmg`QAj7ift4$rkP@4e<03+$vxK{4ODwBqDdOSs zoPFUPNeS}lk~uFj5iza#BxW+%D@S3LUH?Fkjo;5+mG&r&{KOH+D;6ZBV!^ji^J46= zFC*8_P5qjIDl7vLXe|`4%ZZ_jBk51WmV{PQd)^Eck>~;(;{Q{DYWTHOV?bAniv+{M zEX6J$)-wgx6z=h=P8VJkU;c-}5NAQvD>Y8UMu$I*YLQTwXlH_@xm!H}n+1 zbAj=&O?L1lGqP^A?%kS$2ZUK*L(@ELg$4&vYQ-+Vh^yy?&pQhB7ST?h11g%yso;OY zkf|S{eLYf{qu?$1d_$@n$0$nh|Eei#{iDQ)9fJ#bvfO&1B}oF1-feVBs$CI{DuZ~4 zc^tx(!=yJ`x7K8MI3O}k!ttn3RC%<@g~T#85kXV*T9DKa_#Js=vMv?~+?N zGQTdBxuMc-%wl*bhrQ$LML$AxMaq2Y46Ot|iKjGH(=O&Tg8u@{M@};RM!|`1av-2< z_4N~#975knwBUQ(coA!&qsyl@1JiD~`ju`zP8j_C^#-u}kR@fu9CNUEyaS9A23-%B zlnja(T{xhwGq}doI2X@wiNsB=m>8+&U+R@P3t#_59dgt)PbXKcOVSCk)JKb}47 z%$56VbXgl%PdiG*ilq<5Whm<3_m`y`XK?}gIm8@5fvdF!g#Z2tYgMfO-iTpqYxyZD0a{}`0jmsI?d!!ajVQ~pU`}25@Kg$ z3%_e&-7hcu`#J*PhB53;HJi8Y3B(dwG5_DNS^SrEWYA%+!B1nVS&oKYlTD?;b{$db zcnHFNQi%SkNys~f0{EkQ0u@HZ${sPGaX;g0P%ogCt7(u+=Ku1X@8SnmNYT;kb!B>a za?bELqRvfqGZeOeL;_@hRcBeNK(k95zZ>=22K$Yc??d{)V!1db@0)eS#j?9<5cCeG zY!+R=cN&zJExcG>T5EuW2Z~p1;;v_h@)kEhMD<9A*>W;OUfu*bjM!>CmQ}y~7FRo? zoR`CAs?g_v@^ZO+Uo$X=*f4zGZAuzO@3{rRRU7XgzeQDHcoMGsY#6HwbTfUk+hYl# z8h+ss`dXeJI1e?(wbZM89K9+{)Uy4%kNXGtgso#XYm|+YJads4(*T}z3FmsMws~^l zrDXnhT2s%thNIW=mRHZ8@K1U2&8tZ7f)oz55ml-3viF&vE#8#sZzNMGwn;`U&0%<& z34(9i+Q~CfpO)I_fZJiJ`xj%32Y%;C1!0p<@cu036WV(BilXsI2@zl3kVex?pAg7% zIfmvmsKA9$hPWzOuaYA1Oo-*Z{Pz5SEEF2wnuoAwPsuROyNX<}5g)ZWH`8~y;f0^i zTw=cx#mi?+E<*ODfFe*{ z?Efk(1`G+$X1gNHYD|JXOl2?(39fwvXfR}tSX4J;$!cA3wAttUtpAQ59`WsW%6HTy zq*aqve8Eov!G)+QTPCZWephJH+-ug^|HVk3(e~$?u7d1rv-XxI<0zB-TgZQI zq}Wn>&{?HB?33@^xoq7y078h1eb4BQgw9*?{fC%vOE<|48wodUi;euW96I zHu0blUf-#m?IZW~E02_Zo%!PG7@maMawPNl>cA>UOv?bER;eeiclOxZ7nuVAAfyMH?!@?1hh!U>Qf*#A$b`&t?&1kx(N*r;?QUb%cebAIZPVKav*H zwIJ&fBm?M$wlwk>yoih0k{oZJ_^V%0;V1S6YnX>b^O)OUIB;C?O0|j9Bm2q1iO@!~ zF<4Mr29^UUpL@UD#ygTK&(MkX7$(#l&AgOAGOy+Rbf|FWN} z%u(tBy;xsB_C6ka-%)S)Hc0ZIeF8*9_ndI*NRoAO4U6AXWik69Hh* zI5GSBBIIM+b5TdSoRbS^I<9*^H95vH7MRk5o+cfE4JmU| zI9j!X4cZ7gzAA|roG~`|MqE;Ps)_5tRqcH=r~)Dg<6Z`~v9!ThXu5@+|1?50*}Y3) zS4%ngxk=a4e~fGVAaiAs5dj{I(Vl{g8s4Z$F1+CNA1~Va-v`hO@xY>1zDq~Ro9_)D{i3E#fR*cSFZf-wp5NEu%9PW_|R1Yr?S zsdeY6d!NoBCm^rel;{30Q9McEWbs93$!aiCOg;ZDiLWDQTtlbmF&!G+aR5}e4`0#3 zfa9t8;^izP4uU=TdQ?ZHAr$z!L2g+lG{enY%W)`hXJmQ>j3n{%H~LgMpD})~@t&2* z4A7R1wo}7Ny%2^nF;FY~6oO%?L%?r_f{q z2dcpvglzB11ZBpCz~!6noYN$9Y@KCJ^cqudb?l#TR?Mb4P_(P|nE)SnOr#Wscpiv9 zQ`qocwMBQxMik6`pc3Fn$1n8voz-2_PVEc?bBo*YHzE<1DCp8=`LDS|Trej9n5Wz% z)rTLYwAp8!gXu1%R#B!Te7G}=)rKOHkU=gONZOpCaAt{fO)0U0pdUqU=GPYVA_7Cq zUbFxqByy4IKH%buEW2)tiKZ&)WtE&dix&P%RyE66-CYt0vB(+nQMx2=qla81ZCrS? zMMq9@svTkJS5e|tr_vimHnR)vJ$uBJ*s5!ut_*AcUo54_AFc$IvnuU3;b(!MO2OV& z`~F^5jMaQ#hH(^YWOjW}0Hd-WiSzpQOIYM4Pk+6>&nO1k5Astl1_i2}wy8rmw5+ zN5MI7qedHf5d%ZOJ`pNb$K?BI8$35UN?4w?u?gC9C@pE)(ITmO5q*X?0EM0friOd? zz#o7AHMSvuXu_M2NaOH$vQwzP2i4fxSrOsrZEh9C}T>ft99)QspT;GSZ}E801vbZrx5esd%qT`H4OC zHoq8^0ClWW7k>s7+ltw86aXTL52zFdx{x%K2@m3)gG}j2T4Rt}aecT{WCx-z@iYpl z=%E%fM!`FPQhvHz(mVT4RcC%^~k#$0%y0T7JbF;ZE9K-(+B&?o$_M1AyQ zkw*}1+xJ_j=Ls9)pHFJgeiCgv8KrxKh*g}~L@6b;SAO z>5#zBOzfi8O-bo**4yriK)5y}t&CI2h%Xsbh9kMqV>eED`pTUK?>R<(=jYFL_ypQ2 zp|i4~Irmk63c}Ja-EEvUmliI8wHj5A0+FJ*K=av(TDupN&U+cy;}wQ_9O?H!H4V$3 z+#nq!8sHkmGGt*GD#aUI*{$OV`-j&&@jYT9&!j_qH#=)c=hp9b8Ct~aY>(~Tsaza! z^3)X;rx}759)Ysaf=y78v5*7*idbq`ikgAY3xT1BDu`d+Da|R1 zHP^JL0QR`71mnwJh!zJqGTLwZqkWRHTVmb z?@N1=Df+#%M~&Jh<)r_2=V)x&$p*XozlExe(e%<({5uDuP~0SJPCH#@)j(wP!bv>q zFQ%Bqz$4G*Xw`CNh)qHaIEaO|+7sdYUFM^Fn62wwYHO}k(qavq#67MvEH9lGFG70< z>*09-k~%=MWpEkImM5o`yF5x82U)+PaQ@hPmmO2(H&t#$(OHEofm+<4T%Uc_HV2xR zsdbc_cw%BWM$3Tf>oGA?g>?FD3tJoqm?hN&KJ4mcKWbQyuB34jUo(6v)F4?Gw5Qc; zts^Su2lYldqSO|I0bb}h*9a~`*8Xw(;S#?kfr&CO<~t&~vlQP{0>{e07#YdA&=eZc zRiNi4uxf0v(9ghoC&)NSm)%E80C-gi!Z#m82<&%LpGN1M^bin^LexGPgomn3LL*(r z?g%tVIT;F4&3-qu$zv32!Vl6_+Cd}&kskGL&rhZObU(&*snl?cN@_I*fiV%>XKwYa zXEA{2zYYp|4>}Z#qH2X;c~z=KVmUccmn+h?byN&o!zJ`Aw+i^Ip?UAG)%4_P@V&D& z33L*$Qis;e=!3ydm8+?RA@gaZ4t7q%Jgy>BE4Bp~TAij1bJ7J+!;;s!k;C}{no68R zx8LIfF~8a2$(8cM+wNyCPPFHD_-i1CNosZQ%6)e}r>-IqQq;@-D3hbvb8A)hx?GJE z1@Gq5A-xHO>V*U2L_jX3!w4sFI=X-TLU<)#4zXMwCpeP+)!2@pc3^y5b-#o9Rum5h zlu1a>D{%X8ZOvo>2L!BBIUTw?|AXpzk%~9E7eQ*m$M1Q?1vJ(!6Q-M#I; zc$3x;O^6I@jsg|!U+|+Fi3D^n+*V6ahP~wAn%TOa^-($APHOKGL|ljAGN?U!*4~Ea zjTruqsGSj@rQGEb;BP$IP&b^1|SvncwgirN}!Ji(@kAJ;W{dugx4$C^&z7Q3Ul%`9j%@LgXiVY`~_`kl1 z+IMq2bh)Vj_d2gJ3XYd?BB#v)FK(Qa0Pz`UL|**~&$s($hn&*C2APBaYX8|hmC*~Y zQyG&~1*|HPo6K&4(_|3w597i70u>}_i%86#`P;G(Xty&rhT;!M1+3rF)0}o)9bhZv zWr;!+vCZ4@UzaNa+P8qVaGEEIkFA~@;B@bT1jJFt#8$p9eluN?I6p;LS@GjIE-gM6 zCatv1dF-_{H3C!EzQ2i)E?MhtI~!@EZ=odVHl;P8xqQ&d&bdN!aFdzF>GKGDULn z1XWsiHnC(EUEQ+x5TEAk7d4{e9uFnrlL=X0BC+vToNNQw^!lL!bxS7*(TJqzlL@yqt z46u=F2(rCw)zNwmeRWE`M%fJH=@gvtm4#VDpq#`W zp=a_>P2j<-lg3T4bOpnJ4?e1>_$NqHwx@& z^KHis1bV06dk49>#QvNZJ>${AWu&3jcK5;4703}U@-nxgG-QFo5+aO?)m6~jmj(kZ zQJ_@+g8+nIb$Y;A@y(3V$Rr9Knh!AuXkSW*%Y=zKp(hj`%ju_H$+5$D-Xo0a-|r2} zB#RGecHcUJc6d@3^oC2g1(mzT@Jlbk{T-67TE8r>6ll=vQu&-9Mq=242H6p_P8d|! z>8f&47;z)2PuLzsUP;x-IM1GTQI~zL2c07+=lmm^+Ae6$+1JYVjJkXN;5G%jSFbk* zX6YQ4^#KuviXzGnH5W%4AfG)H=MY<=S^V*D5UDEYRN0WeKJLVPD&%dZv{*E4BwkD5 z$i?2Cd7J}k6><0QHyN)gLjHqR`Nv5vQ>*pM?wKZ}t8KicibQ#X>$W8qQVSaV%J%{pC>Zrsc}M%0HinpSF{HPfe_LI794 z!&sf(n(MExfZj;1zpl+@Qz>Pz3ne%I-dAw)H252_YJfq`ed)}y$=x@#00(G81-VQ*-VgZ(U%x! zIJbQ{9!pcR`U+rXKj1Gioq!?t%Y383fDkW5Uo!N8oCazAT`-LHdB$Y%(bZ&*9(yd? z7c+1`XM@xLpvAo0`gvh?hpeWD@Mf1bFWD=2f{x3X+<`HDFk>vjfVB8M#sxyzjbXp+ z$MlQ#dF*&Qc0Sau?#u}dx>o9bL@-|G|I_D4`TtCMB}`N_)2NDI6~n3Ady2G=&%Cbz zHL^ZVL^JPEnN)k&fQ~jE3IiIc+p`BwrTPJ74$TF(smL~tYT4ilI~%M6h)-cDCY`xj za=9#Jt|hEwC#8x;{$ptOoLL9*%7v%mLwmR_$}P0P)QU6?L9+H#V3QKqS)~$;sBY8X zJ`4qwp4xtCxQN(_7yGish8|{!ek`|K@;wy=b;X#<&Nt7PgcMz{TAYMw}0 z4AqHxus8|8DT&wg(>odG%?b5s%&m#k)zsez-JdBGzkWb%3(0#8;CeJ7@T5z9QpB*`~WE8=a>N0(B%(ZRkEy!qWw4-M74&oT({Z3jw5hk(1 z`JF2VinCC9;3vjzt&~osGqemIbzZH`e|vv?5@jdWfFld-oV(l`?Oh$wZ?&GwQWvXA zNi%h^mgo@SJ`{WUKoQ=$n>KNdPcISPQh9_AVrOhC=Ym(TCcS@BnR+77N@2g7D<}SJ zJ+7~|CDJY+7{gl;3kb01JTkr&d7GU#mo8kua8GJM>k$RSc{&sDBB;Gs2u0sDjm345 zd2=~jjp)3d0Es5lJ27?8H4;-{GaYmjJ%k@QkXUDKPMDfITCBrO8Fo;ZUO8&qp|lUz z9XO2Q?o?_B*4%5>bzpXEaFv%qy~?~I(SZzZ8@3R%C%uS(KghvVXiwUHw4UA3V7%^2 z{}&?|V(IV&TRj#dZ9^1^@onQrEk!hcPCmXzq zKU2`lj7pp9Kc>GH_Ys zNFV2?i)^)ys+8sF^Q*)fob7Buhk77#!Ub9%VRnn90EziSD&v5sxzF>$kdWPbrkuvs zOYE|!{q=VJ*94C}0c&o!dly0>E*a+H% z2p}96aoyJk970V5;j@g-1*AIm%nY5~HET$1m1k@n^v8d!tu2`GD%~lEUvvD@_^}~M zg+^z9k#50)v^AND8%uJ6Qhe}Ip=Z(=U?Yh@u@3vJ_VWa>*$<{_dCEurcXjMbLF9Zm zV+$%&0-3^tiukGizE8Vf1*r=C*bTeI_(B`Q?RF z>ltWftqKdgQIJ>k_{uA7yuqp;@QgdS~Bi2$a7?0TJY4^r#Vdeus@(1=}|kS6*QO zRX09*{;rHM&do%1EhO~?Ehr8v8iNMP;D}&JdYXC`Z1!%cvVz=>SK1gkyHtX3)~9-v zFa!cAfJ2z|mMz{x-{pRE&hv>at&2B6i*6fj1fDOMRw1p~G(*Fzivg7>9fsys28#2r z!s2!FS5rtmBkniphEIQxz*q@zI8l*d=cf#1YeIW!wIP%%n4tf|oZ zrL4otp>v5UVR_C5x3bVp&v1I%x zdm(P%O@tuY!t;t3pjB0LNtcQoo|;j1j&kR0IaYU`L8^_KA(SXVh9BOVk*i76!IA zWyetvYpWl0|A5&YQgIj3^L*+D8SIJ5dJqgSrDOg(fCYM?G@NU>{{fI~2{Zg=%iYh5 z&Y+Z`Ov=2zfrMsq-LWP`TjH;;DwMJ%bmlkl#JnS&T}Dyv1_Z4ej4exa*2!7-ccS~^ zgf>(Mei}__stTtJEM42Ety+Em=cXQ!T3FquD6~uby=hrmA znd4`j$bTwg+Cl1$?g8*e#2}&W%E&4Q;{RpC=pT_7E0x4$J097ikI1Bwjr@0_^jw4~ zJ0#5_J4|N%e1C%6RLWOQ^cm@AIADsF4U&%3<%h6E6dP^OH8|1z7&%6h(fPos9W>*o zpksLvZ;^(T$20&2vaXZbr4x$;*ZTXhHN=It=#(!}_rnel%f9tNh>v|a_cT>#s2s<@ zu>8lp?1CYW1~ap)_uN6YFImaxC>2{sl6F~XNTP1R5pK5iS^$Mk402Uf%|72$b2C-X zaL{~ovNw=#XXCNN?V*|ITc%Z#?67eAHTsl|oIL#fqIeVc9<{umpikUfuUjsu-zkN5 z&0x-hMq24bs`2YZ10^hyCk*Bb+bPc$+-E!WD6*or;o?!i)SvZ00RWN#|6vDC{@LWIDPIs20V@yV!py?>8hMXiBly0g7?(Y46e^Tz!p+Mlf27OgagfP2vDGka^~ajZ`Aj;Va#r%Kqhny0HC#KJ||bQ(DI zSj1ZSMFYZW<4|0-SIyvt=PSfw+jixBXF@1MfTy|ajMS5`VR!ZAOIiEAZha-{5X8e! zI7fM_7ayC~VLX_h27^6Yd3Vuo9lKy7D1pu!M+4>0c|m9xPe8h9?hNpwmQ=6X;9Rei z(PWDvYbM&JW>v)K7MAyBBS85)dw+e&%B>&zB$|aM8}y5Bsj-29g9Ss3M;6ti#A@bv z@-D%5aWZr;NYdViG@lJ`*ABNK9!Wgb2kxt}bi9NB$@8j@dC6Zbxy2FWg=D|3Q*Wc; z)go!H=ZR#;3>!D_Q(HHXh)`*(+-4Gr<&Z;Og!y-An9K9;pS?fpYfE11OJ2iT+C3M$ zpwDGUz?QWlaM+ngs-i@gzh_3%qE;InXrEMj**z%0fSBXTX(B@;U?mQrfMD$E*MF<@ zt6l&rE9N_1C-n1IyVqNx8saqVS@iBBOh|y~KQ3c8RlQkk$suKj-62PdI!Bv^-fbcN zvZMNV;4sWp3AL(XGwLWVib1#ChDE^xEJ>JAY>b@T&}vnJXEEQp@uFR{Ei1NQGvlK9 zzzGbLRGNL&O%C7=^ZuUCT_GtJ{ROUWwWK5LVoQEZbb6*dM?-$NV(URYT9hX$Fdfau zFUqOtrDwIr+MHxOKJeSR?j-*X55WJm zB&P1UYk)U4L)`}+M%>s8Bna-ARqS#YojlLv3D8s&Fih?Bd@&gwhV8^dr2%B!;IIMG z+`=$y0y-@&qKX+qH0B--^M%4;w|V57*i(9E6a8{vNX;i2Vk4R8lR3G!pe2Wz{*(zp zNe`0(#&kd_!yZr{{J0p%q@^)FNFl8j^Q~)F!$!gf3rfi?U*2%SbGfAqxQE^g1t2Er zy6`{K4(*^71gD*hyRy^i_)A*_Afh`(MGgDeUKsWh*FtDbVR0dprjO7t71L6(XzNPq zZ8Se# z;S5Pu*V3AKS;nKg9_{z$i%$36y@XtL@+=~dA7++N3!9b2S{+YmoHpWV+?0NtsszdL z8xsA{Ld_M0H)bhF&i`%i8LDb$#RVhlw^J?K4UixBL!7|f&}UVu0BN6$pgHXvo|mv^ z+y4P93e~^qK7H2bk&^$Ke-AB1?MQmw*dY#~G!`h)g2dDyU8F|gxV~jZcEDEhmzk~v z&|E+AFFWa1Pf!-hl{KW6x%%p!3gb`yLTPwT5O^rk9njCY7f|3#r<>5#E%0cJ>f)q* z1Uz;0)rJ%I;Pw8I0d5}%o?U>tGzC6}x~{F2`Ez@q{r*6a?@4J);wwzz_w0G>!YVpf zOmldlI*#%1r4}I!`^K*bH7@b#mtUAhDuAS|FEPP?IDGzW@sENGACA}80%!oXm!A(g ztx0jTY9j}&DcPr;FcO}xuY|A?O+d0PgMLpoV$-XCv>8jM1ru9({aG))>rEERz$%O1 zLUE)5!jkU7WYnXUkjAC7Y_I-&2+d7|@XVML^To|f8B4tF+XJ(2)NK92sD5|0D zBN2&Px&rRzJClh(p-Qy*W|4I0bu)_02y3p+kLJjk!bBcI%wF^D+&$>u=_&#&`z36d z_09<4(u-6^SdbNrOumEIt_)b>#}=^({HJ6_h7v{FI#lUyY!)sEUYp%z3F9pI{>x!k z)CR@P@s?=yiOP!M>(YT?E!LO!cg+tVBE!t=`%fp*w@))5=f_piBeawR@i8e&#iauI zl>59)6rH=MpyCOus)3txpTxiRJGdsjASkY2V9odpD(_Q4Gpg2cH2o{_4z#O|ppvaM z+v{mz-b;6RZMsWr`f`GNkP*gNwMtNPXm9D3=}dqj&`@+{v%6_mGXaN2v+h>kEgUS^ z_o`on>*%9iLI3j79t+os2J4CI)x+?q=sujY%H_zEz1tK3RZxL@C9q`&`%M~uA6)%) zZ*#Xy@j(j;ACK3;YkNocHR2)Wyhxm=<_V}A>qt@DemS))F~|u%l-)3wI)c
PV7 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
@sF) z#76;!%!UNW6TNqDb^m#GgjYI^C0pxnZUhhsHjJ>-84PQH%?3?=l(Y&n|Fm$VHXr%A z5GqHFnHklCA!jeldNa@fp!k<4jML0!DGO1$*Z3!?o?{6x+#dhFq0+UteH;~u0HSvf zH^%vL_{43R$;WiquYk7Fl=}C+oRF@aa!u4!c8L!dUjd8{+;dXO_(=p>Z9y~Cf38g> zLz0WgIc=Xi@=2&Iw-=A^#;N6|Lt;Ggk;*YG(y2a0(q#nWEg-|l zeiG={%&ZnsHWFe_xpIa?*=A+%c_Q6OV}*-x)y)AKYvW+TA5r;0T7VkV+ zZ?JJo4zdu=Q@oRc!JJR4Nr|M*S*K|_O@@Xb* zoDEz|*nEeqG{QLX(XRGl0F#to7Yde}s;x~HaTQR8&|aUCo91pbKykW*m8`P>068Tcxhnuv)jhl#oFxx z8MPQGe%CD-66y+}6$1`(OT8(0z=0SrHF${-X%aN+k%9@X3|1fa#1dGWgMiKoVrF|6Lm}@N2KgE1PaHyX@J?twSU#C@9xB2$&}baUh3a~AUzM0}065Jof)-|^64e8U>DihN_o&NDmWu}Hd; zS|(NU0$Vlfap{Vh#C1XMK{0iMS%2RPQvv+25}?{ky_rfJ-!Rfx8t1F(Cj9-+RXkz4 zqkOV-Q5gF!zD|Pq9r2LfDp`=s-(y6tdDfpF^nw)!#9gdpXvvo3Df>cm^Ih3301E1t zd(~fSxq~MSR#6&H0OqBnWUZtn;(88{kEb+8c}zt0j8U42Tr`Omg3OpR8mNOoHvE&T zRSg86%t*+}^(ng7y=sWKXr%{Dux$RZ zANPpG9vRc3`ox^k+J)iQoYB(|a_ucCOG)4!bXjH@v?0q_skks( z_s)=YjdX=&Z1$~`J>VO1yz^}Wt))a?6fOaNTf6!)A|TVl_R(&1Zh^r|0djtFpmcc! z>YA%WH0HzVKYd?uhSsP#*`)0!>5z71(D#IKX4bTd_T$U~A7urGeO97lV?7DQ7}&bp zMTh)k!NZ9e>VMAG?YA#~A-!m#aFN4*W#lR13~Z&4Kr&Id1-7sY)M|`<(u0JhjQ8EY zrTPew|9tPKWoguLPL`_;Bcsjt{!ebpEKwmWb^w(Tcu|ik$fpNQ^CWje#tvPvszb1% z5Hz+`k5OU5buYF4WeYPC!?BmEb^nIKNXD^a9(a?8RThJq%%bmYft^4lO7_zWfp^>N zOn(4Ay<0ukq+{!_nNY&q6eX?4a)t;eVG`cKTX7RBU&tR7*{4x-(|Bw)os-qwDMOk| zG-smGVrONqeY2|Lib=EP27rRIziw{c$~lG8JmD5a!dQ>$GP-zAGg$_ZS6~}Phm3cZAzBQZ2!y;ezM=ceAEyIpP$NR8h z(R@VWvb#EhX;BL5(NVhy1D~=*q>GzVX{K%1Ws)fw9qUlBh1Q&4cFCE*K%OoRc-dry z_1Bi%tG7I`;$eZl#B(9y%UFbOQU4ua%JL&Gxt`g5G(3=Hd+_5jkF)ZOrm_>FUO(;zER$&t zFS;@N{lTRQSPS+Y1O7j~MO5~)NylQAoCWCd`Eu)gLosfCsF9-26(d}cOgM5SZOm9! zDxuVi-2N&4S42>&v&2EKd-s>jOLAb9IelfucD!x44FgV#mwzI_wA`m6G^ic!9b`7R zh453eT702R#1ET=5Il*4Dun=LaX~ZWKySI5-DrTZ{pv_th`NF2i$0&#h z3bE+HPgJv3iwZy~RSw6)pW4kq_A(t8G34*gRZZ1aq z9;YQ_bxPoNR}v;A#o|G0|xOkhOjQImj4w^Hb^qGKMP=%Ldn<^KW9O9*Z5*qu~ujubk`^<(KCre zdOXCQsI2d2t`QWQ&hlCU)$5hj&qO*fFbxQq>8UTveH_Jyxb5`H`T6G0C>ukMGfkjP zyYm-Dp^ZA1Fn9n&K_CgmN@}fh&|MZ};{6VSBxduk0Fr=2^CcMUKPutopV5ZhkLb(( zHmW|R$=du7PBVH8dzLD_H55JPaP=uFj*9U^_5Oy}I+D6)jWkNBrdNssqrL>+l2`b0 ze0;@Yx!GfbJaZh!32sa)SY)a;kZ7{M1i4QwE^)Je(3WU3=Ker*Nro$;o~Wx5F97ga zuV-=IOOn*X$Cn>NqTVxWp&q<&qZEi3rN3i4oZ{qGY1dlEt-+U>cBC^P(j5pYo^YX3 z#q803?LRk}Z{XgIA5K2PRcge;6Z9uq0jZYSk>S-_}008w>Fj~`)EujCAb|ka{ zD9Xo>{Elll8+=-y05q+uKqe6z@j%ou$Uj6cqVR!nK!nSiBkUb%6XhuYrWpOX`2hmk zGI)uV>vNbue$6^1$qvv-2b0%Z3ceIP2!}oD5FIn$6?xqq6x+pVH*<=gn-gc^HhFq-K<08`{7J>uyqbT%i&Et7}MaTl@R?zhHh5C{#u!nR& zaFw!UupTs_q#|#_O%wr$zp!QF(G@ECyO$Sw=u6BqJ(C(#;Yxf@*3=~BCrw1Z+ zIF|0`i$GT%A~4S61IX}xR7R3@)hoelo^DK!Ix2v&k*}VpR_N+Iq%tVQ&oZrWTAGXz z!r~m?WUZ3hywtdP{(03|&QpGQ{_N7GaWs~{QjxF~8sC3|XK8emPO;TVuO){c&pC=P zB*9oeT>Z`OH7CGiNj=opP4A|AG>XsZgjr#wtp(js%&61$Y48`rrIQM6(KMt2EF>jI zYvh+YJGspS`B@=I(??BcOYEo}RGs}9J?wd}Z_l2otMYie*?VUFY=vR-z1jEgoji&8 z`4Rsyl}F5iRzOGGI?(OWmg(0P3iVI1=1O?mrKN5bp)gvij094rciuq!7}?VnkAg6e zGjTRypIA3FPxtj_y$i6=LHnZpP$AWm_YpikHe!i{rCNC+x(LX+X>xzBREKN#%aU9{|9lw{TM|R{dQJ*7!fY(+F1K#gp~P-1=iTxTo6z%@e-_d>pJbH z)=QS$KOmtC{wEM8l|M?$_;Y!eMSs7gQF0-AgJp@5m1Nrg-msQD4os$YhL1wrQE#6m zmNuO}2Ux??@R`AFhVUl0rkKDVnzfk#jiaJm? zj+l2~J#38{4HtRd?R}{US<~6^!+^)&=!h=x4y!;i{!gt2N&m3V`>LQ|p#y{cli9(X zoP#p}1)!Wt4JsAMD9Uy0Om?7$L0{3r@oO;(E{jQBf)bL)$PhPWWk{L6M9r^&CSpKco57H!;MXy$Rlf z&wUwaExkdK8S{d`2qvsTh+r=B5(`IYak!begVJNHuZhsbYHxQnxTGdE`p+LEH@d8sWpwRSg(0}vm zyZUHv?B04dgDVxTO#^ z_W4kxvaEyN=xHEC0KSV;kuMHn->fHr+0OLJP%|Q=Sz?*QdM{akN5$JD+}vOOanC9) zi=_^cY-H<`g+4~l=AcHT0f7zM`xyrfx=&shq4Yt5ARD5;5y}v@7=VkNAsXT43B#Dn zEUNFoaF5!s+LL3m<b3P)w!IGpWnKR`h)~>f@p2oP1`gbEcPHkwEbiBgd1k?61e` zqu`FZ3D`@M_c+ILpGLBS5cu@PIm;^*oA_}rzls8d`Q<3Mv+E11rh=KMG+g&$*) zZ?(yT6!u8Y)Qu+`V8lK(sgZ8FRbR6MS$oj((A3dvg}tGRLM&`yd%ruIsp$3PUKd#q z$sGWa+dm_2xjln5c9G|aZ|V+W4ey>dqJFSvEL`N(puKmilzF8B6rj~n{7vc@3R;F;X@ z0g$p*?F(sqOdo%AK^TWzs;jBD(1A92cq?W84eriE5&$M4UG1659sACC0$jlP+H@2^ zIoW=!9A=w#9#m_F_54A#|7u%%!{aekjeTbWhZJV3S0X^b8+phh#;^C4QF?L!Lg}n; z&z9F4b`;^m%$DOLN2P7_*Brtyf}5?@#6ikYXNb>T)W{0g=+24N2@*>-=BXTn5&!Lc z@p-G)0qH}6_`E*ET|{3XBNjHpubW79~#Le*PuE+T!8 zFdH*IWVrP~6Bqmyjxtk21=n74o#DBc;F0Fpg%B<)lW&I-1 z9E1eFETpN5(ygT-58wn?E?nSMTaZiXeEeZs1F1}|0~aPbmh+P1I+q9;TIg8)n@SyZAu+RXg^I-Eud zyD|gT=jM#yqyrMh@&L=sK(f#z`WYw;^yXgzw-GI@*fo!p@S_V7l#u3D7m{@@)*Ak+ zaxuzY8lH&-a#ICxT7dspBR15z{_$NsfGFQbV2BA+OESHuRE>#DAurFy^i925;Xcs!R*!76Pu@5N^n23Wcr(VHidPA*2% zi`%3JDGIB@4Z^?y*$MIkWq3_tTrGNpFu^7??pBXVmbVUx$>e>chszy(HD2lD;GE7E z!YX32QbztH4oWv|lmy*sqZhxepr^o*g?>zdSfHQiqw;yrN$$q?yYxc}g+C=FjJ6-$ zFkToEmf5+tmh|n&x={N}8_+-fhuKzhI)`c$$JCa~Saa2Ad{P+9(4QFpleV^^7I_+N zGpdOvMh*zuA_9BSMlcY9OH9D-Z4^?hdboLK+ZeQ(-!p_yj@6FGL1fKndQx6|VL1R3 zHSqchRZg{FIH58f$mM#!3)||QRjM(G#AFV1^il60L;YJaK1@c8f=zIz|6O6?q zW2E9!J<=-87jB7HDg_X{2gS1*o6T&fRXd%(;?#}}?3M%X1uNt_i5o?y9?=pRzgQN- zE1`f9mKyZy706TzrqKkTieY21s{M~Y`R6%L ztwcHn%PlQVk@%5-9dRFibts#{>k`x+j6*sW+TP&u5VN|=D5`g4$Cp7|N5&ab1!J-f zHA<55C&0&s`E(QE;-Nxd0q<92v`f|nKO0iD0tkyW0)tm!yiGOMJcQQ>I|;y_B9;2D8?%0OacO)=X3fTy zyR1$I=tvY$;Iw6x(q~i|%T8&HS2NpjcA(U&bayT-HwNu)I&8kTgA63ry}+etDq3`w z_qr{Cw88Y+;FnnBJ203FB81^w!!9Rie66FBm~8#iYfS9zrXquS5y*Li3iGye*%062 z4O*ydkA?y65Zw>2)pFlfCVWbQn-eu-V&8Al^j%9SW0t}5Lmu6Z$h{5*SRdEKX=GA7 zWFr-SZr!-7Imq>Kl=C?KDA9q~2D!?xC*c%SB(EU__;uxrmI`6c$y6!@xN{RbEn)4q zVvX)6Xox=%73GL?G*x+7fBF&I^beO)kTE||Pm7Y+f^}jlqor0Xq`YgI(FEfYU9~$o#h2HC zVJ`g$VLZ-=h@7Y}uD~ubPV`wwMb^I>T9cBZUslYG)?DFGSBrf{Gw2 z<$)Y+tjY%%DxmjnzpFE8(R@CI}TwY!Nb@I00i2?+fT>y?a^a+v1G6_CYv&1fj(?tdfby@qprVa3^6F8 zhr)ur7wItGdm#f7jmpIS1l67V`i?)}-}%RGr`WH1WF5+$9xRy)4tpM6R}e3**8q-L zh!v{JCNuA27dc{=ZQzQ2Kve^aipCe0nNHt|P;#f>e<+r67cWibg`wMbJ^$xDlu_c?E6Vu#A4gi0O+9HW{7y#tGPc1beKs2VZ{ zw~$KC%Mw#q?R_`^&MNHRFPp4ZGVMUYT&d|55dbg&$tNz$dh(ke%pf}jF9Ld}UoRF2ioXPQb=)1@Ad_0+Ucg6cppM50k(NM>7X3f4e{B124nGR% zjs5U)uiyY=W6dZz(}vn|%RBneoXfHR;#jT*4hE~fa>GuO77|#ckxFqgq*4km>3-B= zg7hDi=7zGi-g5lIsEaL}+@FN(DIOh~X83CLLiImC&a)b9E)xgYWH=W^|G573Lm6UE zV**1PZQ|F!k#OrnALH9Z^+MKiTE1{4lr}EQ=a~4qmMQ`D_Zq8680{T|iMaO9$e~W8 zLx7DzzZOWwZ^qxaC;d%XKIQjxCO;}yz2oeV-o>C|os<{Y)aQu=(3?YB;Ze|fP%DoU zKYOPT)VuVOEj=n6b#nFXNGcLXUHLH4h98bw9^ z*&o7KLPKDXCue#N7XN*%_tYjlGu^Z8+LM~QKic$vC$~=znCSnS_ZG&{Mq&CeN?UkNo7q3Cc6p%dJ+{g75agrHjdoDPEFm0AgyHP_8L7f0_KvW~Apv z2MUA~*xk`mO2za>TE&=p*A+UpNDiag(a*s?K{dnwdA$RH1yiS`(|1#D6f1=~x4kZX z0I;cI98B_T$*V`ykHOUds7_Z-cL=kQ5TvMY3uNpuaat%im(viAdyegT7xyg;uj1AT z+%O#VslxO53OkxqXRE5mOeGW)tgoSxhD6-7WWgfIG^H4RA0TS}k9bA2(*68M5?*saiFkZrLfMPh0cC2ou6r#5g6?0e4g>-r@LI3~aOq;#h58$os~o zj3$i5K-YTPmq3A`=fq)hJ}fFxt5rIZtkwb14KY|-T+}(x!D{DmqS8ioC>RLI(T7lz zrTdZb-j-VQl7URUEyD9F?)nO%qX7SaV2Ck=Pk?&X54GB>Tt{S@nTo)u$h&L1HsZlx zC6ys^aBE9)X8>9WOc-RKVE>J#lqm+qDykf>Mn}_%2`}?X**H{6Womobx{&n2D6(qx zq|VyQw~ZnTaZh*4JBoCo;4#ZyB1nl^=3RHRW-OQ*vN{n95}~I^?YCvIr9{@v(yUGg z%!gk}I)S-#b}CjS|Co2mL`I&0S0kS!>k|)+IYF3tL$U?eIojxU=Tb(}i-eTz8)(T4 zj>{vFPVv$aAkx*E>YbWw+TVf zQ!Xz#!H%w%%0If4{H?zGiU-y(G@~xIVdW}wS4cXGKIKCU9sgthsduhl#u8+tB1OtR*FXAR%L6*jQjg6 zL&N%2_bD}FTQfA>Fa%kLh`;We0}JOl4>xN9_bFdLe1Oow*Sh5rlX^Vxo%qj6Q&BRt zpZ2>%^T=iiFc#(o^WKiq`YY@O9m=&B}a* zk)vGqiT+&BY@re4zxsKMPN*%71Ph}ewi_slFTHTK&x}YV zQRNYq$zaRL;V%7ybUc?e7AClPxZ_^p(Anp_lh)0YpdSMT*wht~D~;-7S$tlcla?tR z;+yIGZ%9`HbzB7(7*k-8AFd&E&8|h^4Qf@4)f%6i6zMp?35tUYHUKHGH`t?4H?c%?5d~>KK&~Ot; zeEmFG&q}+2!8c`EqY5BP##VM}8oFz5b);@j1JRbozU!_LtY?~=p2&;1_1Iu&?+s#< zIu?;YahsuMZY+IXzQ9QpS+t)-*%-gw@NF`}oua(cY}_pefuWzN3-$8yUB!4E=3CNc z;t}xpm_(_Tx~|k0Esw56#CvcNzg#8TH1js@@EpPNMM|dSb(;_f^?qKKG}=D07tH)w z;QIG(<_Qv{oTS>BNcd{cZ}bI2D1DmD^C};yk>++s%wYIL&El%d(5d4v@}YT<>{=OZ z9y%)DK@TK7<*rS)D`QzlU`RK|KBKts*Ms(9>}Fi@l|oH6h0?A(kq@B3s_*+nZ`i7H ztCOcLp&P4h&bp*oy@mz<<@!IaKP{j=*gfl!{6H)Ewechina0$U>`$WBf(d^32NdE- zsGRhM#H2bS1OUD%`cxwv)Oi;s6M7cL@n%p&Dnh;v55SH1%1CXD-h*wm`vqxngJ%D) zd_)zUAC5Ld4*#H@TP%`=-5sVlD&Cb02HPtB7}-r<1J*TTXf0d{Zp5@UV585#o`=GJ zOJy?teg1B-_4M){v;~|4SALeR97 zqkC_uq>?@ZS1(Gq`u^P4@|8%XvQstTCF?Lm77>Ab=DZLq#YPNgg|Q;@ogRGo^^PIy zWjw=;-Do2kl-dl}V|Gc!`m2YXJovv=I~R?4i`Gzor8Y;Uf zmHzAclm>$zbG1_$BD%jqn@mudU2juNvLVS!?d);+mLFSq{&W3>`rZ0%HaV=8Q-r1S zW|K}hRnS>u0|CWKIVp)L`=ASHd(d8)+?We6&)hT}lPL~<~@+Ibyp(0}+G71}On9X^CSG(+LUw-$; z%J!jF>kbQOPbK{@bE-Q+ zE9y!!@qO?ENj#e5lM_U1F(s`)Q~Z;#x7G zgA7#L4x^;9akHBki^GJ(h(nsCJ!B~1({^A!MYgRb0ErnkKB}g~k zy+t~L!szch;1#?HGgKn|mo3TOh6je)FT3)asPG)k9Hg?9Cv^x~l?nRnHO?NC;{IYD z&YE!VcbUdbIYSSfjwC@`1UltE*segGayPQVTKQ3WZ89cY6a*34hBVYobbUPsX3XhJ z=`%yP4vTaCL=>EvLaWGBG>_J@a!R)vk5Yh0o91-Sz|9XGOSK3-6E=p1)l=*NeHDLF zHTuMt$smCz2sE(tgpHM1+w(m99;vtKKmk{frNR*S>Q}rM9uwvfnD6&imIVI*`jAR~Q~^ zq0vd9QYMcT6{-F;8--GaYz>?5`+qK~IH*`o+G7(1>~Xf1IKEw@{ha zgdly$l8wH`nZGGHcKRy26&%WFd#~jsBc|G?W5FD`LDhn`k$PfNx-`~x?>RaPUTw&l zu0OzfJ9NQ_gE4Q%KNLOB>IF?ePCPlQ!T2WyR%rUkidcE#9$MxGpZ76jH^e3K zLNh?(&)5=)I}@v`;z=DnupT+XiWi1|o0N_0!`sEk-8_l$Taz z1`Jqm6S!a8Z{yPVd$p~dKH=6$R4c+1CtN1DhbO*oUcdY0sGDbuw$~BwpBV+JH5~-W z=K24G$~A{|40=T^+gJD`xD^A9T#fBCZ^xmjD(U@zvQ&0}1==ZNdZZb(7DE_RLP)vz z`9u4Df$n+KxYlQdn_fGB(2P=+jeX_47;-swSaRvNM*;Fsl*?%{OxIM&Mcd6SBB+rSwEoK7nFW$V#H-z*be9$ozc4+*8AYy3DcoUM%9#Hj z`sN&HFwuEG&u<2FB(%tV{JG7+ggucab`A+PW&jVH)*zGs*W$$P?AIqs1Pt-F&^;Om z!dv;Vc~Nx8CeW<1z3c17keA`?P*>jQI&W}ogTGqm8=iQ#%+t&KqkK5apmg^I??;&p zDID)Fyf{v;x%gCgIN6qz!c)4HO6$bX|eZ3ZpObMoZ}`f5iFUH*kuBCT;`xmj?ZIH-|zDHXmy z4x^3Ix}SV}9TyXW+EQJc;#Dt7X~j`l0{Ib*lk1%q#3(dyt?Z`Y5uq>kH;o%IOKQBr zm%L}!PR;#0ivZ>%&pdmeS?DjocX@#!|N2W2aa(NaFJjSx@?O5>Bh!;-#s`s?s7y8o zaw2KMEz2DzjA^(^z|I_^Wqp{^uxdw2%L1S=Dt|YyN(BkN>Tgmz&h=Xp2Y^T)B{_Oq z>Z9MzbEsJti_^sEaGQM-lN6d+PhxL{15E^WzUBQfwr8+-)S*`OhbZjEOaF9U@LLq{ zH5@cGHuM~=w1f)h5Thp;;YEdKL?)aYuEG9=lb~61d^d4DhZa?d zYy^6H8BD+g{FFz8R*EWpieJ|T?molVxVwNZX^bb50E15J0_Uu!nteSEKYrfk{vw=4OwAUPz8aoVsDdPb0hHku5yJl4QlBS+77g`)fi)2!-IUUjsf!RX%zD3d>`zAxkFVF5d|%R-F=O${lb zUNh{>~->bnBtbOl!L z-zAT|vHmkbY)*`U`3ou63d!+-1VHb3#q1`ON(&>|bAGd`cn0@GqkL`DLbca_x5&bq z%|@u(wj%s%{+y#pyf+QI`|250UbXC}0)AAI;5E#78b#@_2L#7qZtpNxFcr-X`8@Q4 zl{I5wWm#}{TbEofrjVVcN9Ax)4kxA|RJO&@RaOQSEV+e%%c*F!M5woaTe)&AQ}5(p z!46#1622pHX`5nNpzNjW&a`9RJ3h^2HQ7A&Y>7U2nQ*FHri9Qt26y0?!I0GR70l!o zYC^q2<<;&gxTHBHg1a?2w&w6zNYFEcsa?;Li}F=_3;#7ERalbioqpp2_beemnW`$H z%@c(J`%?sKWCIRAQZO9%QNGKC*!Wd4ZUy zV)VvciGAQBvCWX_!V;vEWH*yz`zhb4eQ0Tvg<%aKWSU8uOlsiM6Pj7;^H<1vt$alb(z^Jaoeq? zHvpe&Z-BEZ_*(9cy58LA`8VD?=4rg#w(F!=Vm~-q9Sxl%U$)f~7eA@8<$bdes<7l_4oV zf`ZQ$AWb_UxsniPPFrv9my8s*lXE90-7;9cUSa4dv^G_RNisX{bFh1N^obPbXt00# zSthFC6+N(cvGPFMF`Rj&OQ+4y!_%8;(oPuzzqA%WF$ZW#DlO&>1%8g#kyW?=!7*gp zSz$XjKX2?NW%y=qT|Y747$isWEk3T3ZHbdyhIhcn;e=Ro4z=V~Q}Ax@{(!H>;>ITI zH!H>g|MfzsR5$YE8w@WZ;|3YCalIg5wzkmayfZ(pu*(T=$VoXIGlxPH6>jIX&Us(b z)%K}8aO=lNn~}Z1#mJu};KzqlCr^CF1)|yVA^5vsmM`IV)CyOrd)f6s^AmO}ZX3;^xU+o)y`bU-or z&e^RqGg_W9S8d5RV7&3`5NFNOKC|9P?i$2Cko}*=EAy~eVHjlxQrOn*c~a)nUmei> zL2yEgcc8|+;3N=QN?Is!s_x#Bh^(=0*>%Cj>^gt|lLa?-+6k0j%DD7LT7yI1A4vmB zryy_odLOe!#$|&KfkYImUyKj4zUksP8TOG%MlI2D_6n!U1!H!`u3~hMw+cU zpR#$mfsUC`^2lnze>KnG$Un@JH9VE4fQBzJ6~3dO)+&i@3DCUH8mW#%m|PfqCPo}? zNn+@UCaso&)bO)2bmK)vO#?7WZMmy4(UgvvX_v{OOIu2X#VXCn_XN+v^SjHxA&ZSE!RB@2xBX2C99CFZ`KKHR8QT&ah zm;bk>&m#_b0y?~yeg03<=3_4!UOov!vt3u0XPin(#FsVJ^pebO?@%7wPQod zRDc=J@LPzHdQ-NBU@x_;C=z{0bnK>^%+JX+QbZtneeLC&z{3vZlWGeUon+Cnkr3K2 zJ~$)NXMy%Lui4(ahS0A1T7YoFc7N^hg9E?K6u=UdtJk!*TDaUE%ad|U{h#$O5=;ik z|K(yxKENefq?viG(|mV)u$_DT>z?jCB0TthYDM&=u+{%K_^wHKZizPh3nY}N5ge3L zk)i!mOk6f%e?`Q0MJKJXJ!q_rjY(>wu(QKYY)7R1&4sg;veADSTEWQ|{L(@!k757i zWn+)@GL<&GF2QAuK?0q|Msj2qAitEpRD#C2qKy8YeB^iwt6v|Lkz@R@!<5CVq%DG% zDx2k2HQu_HuKE15MZzJD#@w1t^rsIHBV{4g~5AtWs9-D-N zBEN`;@3YQA&VOhwS5gU4ED5?6U;+WZdp4>dd%o6|&ERWJ`U07Ey=sBb_+XhVB5KfVqeA=7 z)h|NsBoDrYL}3RRLK}28sdlRG4U(3Is1+kvdv;bza@DoKid=Ox`zGaNGD6)2e1(VF zdKc@?O6}*+1qL)tP&UrGOaF3of{12l_A#pOlrq@KxK*c>_sGWn*>QWS-RJ;RzPIzOUq>0L=l;A&B@3N#@^5>o&F&W#&GkSy1zON-t zz>6-Kv$e$m+$?IDj~v!q!c90`()eL1@`RHD=1#CY*3AEfe@4$r;UUK2yw5=EetQ#fK! zAbL6wmb^f(qIr}ge}C#19ApKKvU`2*svqeobXaA&l4897S_mvbBi`E1TWiy*V!0-) zgQYUI%))e2esKX)wdVW#%)luzGAK<+aSdp&ks}eBGxD267L*AjZ{xx!nC4wl9o;)f=;4ZX-v{_ z_l20hgU#zqYV{=;uqT!+cS0%NTKIB)AtTpg8>SL_H};z1A0#vx8!QFr`&uhrqV?@p z-(#k+1vx=n*oKb`8wc?W_7GDi>hQA*#M=T8at=#=p}Y(tkvox6h>Us!mm9QCPg3>4 zg|vis3vAjPXef}YzKj_9g141HGF5GnP#rP|WKv0S_UZr_Ny&TZPP`sWyBalXLKxn= zbc*ZtCv6^FvRnp3i0*vyD}DI4@A&L5@bUR8d1t-Nm^N*;wNvICok3Vqdgfq_6mRima=&eoT36nx7v1+DvcR-r%2-)i817=z~X zW4oT3!J5;I;(49lU^g=qf~^30cT{QHuy(3JSn8w>%AubL*&%Z6mjKp(6h_hca^Scr z^%ywPWOvJ|!R;a+oz=^k_0?&+bjJTN8&dRJ(v$Dqh;7X21YIv}W`;s#4p~()JGC=% zTCIFyBC(U`q&cGcS#EcSzIs+TqQ4LDD?Iy6Z7ATouY`XyvcFKYr7SZMS*gx+T7R1( zvukQw0Ms_X-IH>ylf~n;Zs&wH`GPim#9n@hanEBoCUz8JkvsZe{ZUsd4$S~yh6+hmH^L?kcvbZXnLFGZZJ zE3Glaw*KFiM`DZ9L&1VCzA4l&Ey$iX(n51JuFRm&%w(hwVfTUB@!<9y8mRcah2UGQ z_k&x|C!ryozQ=&_lWMwSu0A6a^zd`-?&S2Aoh&wi*Rw1eY|uNvhK@(HIN+Z#ReV~! z8MB|1!Rjta<<`-b)3Kp}l=}`GvIG&@1CJ?1$76BgGrOk^b=%qtnqCs zbT9xx+M9b$I1GVPLRJaEh`b-k!&(^O-~{{A^ZMc&H#^es<%Q66^w3@j!U!-zPd4cv z?-NsU_?<8VqZLwMMtShmA7|Ez-o-Okx+2GHzkZDxe4oCpXW&g_Qcz?HnM=+<=6YHg zJ#yaWe-I3q#1PswF-CiQhsckV7nj;2xpB;M7Ev}sX{PZ%Xe^)tM!1{yeQ{t3o1Amo zQOBf0+%OFOSE!5E$!^@(dk(L9?aXxZCj=!v|?V@1jsdL0W{E8(8FC>lxj!d zpV8V|Kzmx5gX8~kL?cOsgO_=W3s%eH3R>AXkicX3A%5_k=sT6@C6{N4OT>`~pNd54 zc&q;m$ubo^w;t#%dI+BQF1`w6C5QJ^C5fw+)Jr9fozy>ERR5g2e~lbG|74ot^K+Y= z=@i5B>Ts3rFcIqj(;-`VzJpJU{OrZ1 zPr{fx_nx4kn5R=P11fD^phnJ4hLP2^c#r(I4K|tSrH8@16ypE+?`UyJ zo?RKri>#?FnK%Fq1|!J^u18HJ2H8SmG+%|8D83~BY(K{FYaGTG5!oaloOZ|f?Zj+w zQMmV1F>TcOC1!b@qSFk+LSqX55 zyO=o(W$MLdcZ%3Q!?Vov&Q*sET&32=e6vqr8$~!~f0J%sJr|{w#AvUDh&E1wPaJ!= zN;9T1X?Z}HN8R9R2d3!eZQRE&)-V@F+Z^8}gB{JrPfbHir z&m@V_pwAH-BrQ?5YoQ#+<5;3UKJT|L`SnAXAZ~x!c@$({>DAL(HSnbY@b7@zr>OWA z0B-PoX>2S=Y%8oxLf!U7(JrRGYE>6b294Xgt?-ex4%5P#9*YXjg}h}39bDh2ydt4x~#V!cM?uup8!Pz@j_d)pHT4QZnDXq z{J;q1t*;+h&+@!&Bc&`_uI_{fY=AOF;DNgeUy6y+MoG1^|gUVPntHms9lR#Hy0 z3NT3l{ObNX$?*5q)%nh3PG{{8AuZ5_sBllgbPWg`17rW_x_VSjqM3LpP z%;wpi25C{nYwk%~O@)6cQr#+MCawuq%G+`pDC+k)iMG<-bK{Z67Au+T-dW5!I1kW!WVEYBrX8)2a(WcIk7ZjJ3=78rf%5wzgI*JB?*w+Z ziBQHY6gq8G0k*4jEEF*QxzH#tZC9AS{ut(2wd@j6>B*w2{7dv6FiQkox5rC%{iiWZ z?-t(8?ba6P464OV&-6B%bsd1txYY)f=-4*V@-!1LRV`>qcc00Pul`Ixc~C&+FSXQQ z0YwVD@wv)m7Th zCaKa2Z=Ia)dv6%omv*CftZ=|3yNK%c16!r~TD(8%(LX1nqLFwV$M^;6l-`!Ts27mv z0EZ@@!j{Dh-{4olGESwH8I9SCM6rymw4`kjZ^OX}+SezKQg+iupAC~MJYi2G^bQYr za37d$fD1iHSFGaGKDU5N~!*pc4nY9owB%}dnOa-rwP zAr2EZn^y~j%T8;FX#w3htpwJq_q?98z^_C*;WB*pkSoJGOI45Qmh$?-0(5WTOAVH? zb~!k+0fDMAW*;r1{ccK;sQx3(U|5te#Wr_zMYhr%p8G(mH-C0Zdb><=pX#m*R9P8T z*f|@C;34c8yzy4N-Y_G*$aI$z(4B{OT`C4nr`mu*HmTQ{*6hHp#~^zG1b2@{o<=+Q z6{$jc$}fRAOSia+N|;ajYEGZ(FKyM7F-=Re)D-u|X0$_iXsxGgR@i5fTSll*$qrz# z#kLM187QC{KY}2*VfHqTfw;f?9gF^d?B7)>yap6C4zOqufwKo{4KA@l0WpIx(Dl+7 z6Yn=NEIcb^iv(@9%wG{Q%P;-K`sKV*Ui95)QR@%rq%HB{X;GKa)|z#Z39rB7d1v!( zUi<5fLnv>uBZ=Z*wFr7AM`+Kc`<%nV=yF`S?Jz(T6dh$^g6akIs7e6^xZvcxUangv z0X7JU!Ko0iQCTxa#}?d`Dk&IfO%5<&s?_=lRb6y^rhxn=?3vDu*}*YnSuz{3ukTxBXGvTanA)%N7fmy2 zNOm3a;1fmiNpR%!wJG(75C`=?DlSs#%x-BXsbLD=J^Tx~)BUQt%%$E`aWeY~B=?`Y zc&1H4Kbcq1jJQ0qGRkfsKJjM0eC;vWF>WWh9w3Tb2YggHg%+IxlOz7+#_%18*~s!f=f(7_9l%p1P1_4@_btv+V53l;LEOpTJL3t% z!$3IIFa(ZjAuR6<7d&EFBW|mP!g#jiu2Dd2$=_X-*vF5^(oM1g^p74$RuynA!eap? zKf9cG;?ehwB`d)(N;kf_vex5Wr?=n7KW$uU%wF3Sm%>|6j)joY)(B&ofqWMW{wKi) zc`%`Z6sc0S)Be!vw(RUv<&-TQ(k(^nw2F)AvTVsVKEz)<{$;i#rW^pS05ba0j75o?Io zv84&Aamik1No{d!il?@4Di)OcQJH#XJg>9 z0KwTV9$~j3_z%lT5!fob)xUdk6cign>7h~h=*iV;|75RhyNmc+Dlh6O=I-JtG$>zjN=UnO#~$?nPpD8SZyWu z#RBX2$_@1!#=EFgWjRFv5eQctT$w-arwdc#22)3 zjxEj(SW*38q%ahvV2IRF*4#t7r)#r#tQ?&*gsBTG;@mPBmb;ji1I+{WE|j$I&TQj# z2-GH9ZE_wyrkk3b2|%kXV+;o$55b6Jv^efz;`!aO%ULnIMaAS4AM?Z96nGLoav(ZG zfFH)93MLsmvg}kTl9V7*Uy+s$_890N=IuV-x@ueg$q~(h<~MpTlQSaHQE?Su!tZ2|x4aAfE)PMk^UF_@ z;-rEhnq7Pv*eUH_EqppZ!_fSbR+__UR}=Y&zRvnzVmOM5M6wV<4%n?95Foo*+&WUU zq@CsQ3r4)C2JYwvI^b<|N30+A@|9dFB;8?+Bn zb(3RJ;{=2M|I$wrnLwt;!_gvH4iqAPwe6$Mi z?v0&HQAt~sq|qDqM~!*p>JA>X>^c(FhP)DFasDD~piA$^ESU5cb!40bZr7WH{#m&B zQGY(-uXx7Igo!4Yi2`!YHh|zWPDTQyd~VJaqxJ4=6Pirg<^Em-7!jw8?we^ujwe@& zhO(r;^yco-6XX4MTGdKhl1mZ-VNRL!{Wm=4s#G&5FtSSqQ+3*K3Nt#uBD}@EVOj?3 zq_q1UgoJB(mpQOj=4o(()DAe_Dw6WG8wmtxyLQoqRM!R?X>}V{iA-S!H{qP*B>bxA zP5N%8KT=ckG@ryP$P^$&XtVdz)6l~s9;%)o?9v8p2k%k_lla%1^m#747#%}R7fu02hWzz-HmLTEr|Jf0&qsU+6te)*g z1!ZX&|GhX_?r)GbLO4)_<>zgyXjPs8pEFS@HrGiFwJWp8ljE;?Q+@&^FUx=+ z>+5ZMnzHD@W@EA(P%vm8rSU<_t_J)*rn~?|ytC?pz>gz&lLk}p!2CHd(cuK^O#N#k zy5x?pB?p(>xn?M7V>=5jGR*+joUJwph!QmJ_lnv+*u~LMYfPWXRlM(aS%963L5Q8` zSm1bMqB`g1{8da`lyt%itvtYvYH4ipY$J9MlxUBhraJ1EA;(Ssa9sa85Rf+f8eRpf z>|UjaPcByz71am+&zlls_IkrJLb2*RU@yNA&TJ?kh{GAbV(c!;WCIx)TTu2{*$T2r z2wh}mcz7fHZef+uMARN9%>0&1r41&HT?VK|;qE#F#TMeFQ!tg9nA27CA+;nCeJuE3 z+}7n+IDHzqqDV2Dx8W*%7%IAC;rx2yzUH!?!&XRUj1rq%S=^W&OQPo;6uflx}0rum#rbL{)|W~l|>qH zOK_fz5s}+xoxC)xe=teYY#>5_9>wUQ$)X}$kqzT?y5_IGG1iR@?DfjRAbh9;} zckyNmOKN1~Ut>8z3e38ubUcq<=3SlCFp0%_#k|if2g3V4$}ygifCkn03z;gtkw(d( zcn=59PXakK)1kppz;m8Mx9@rM5;XIz0(ZF~q7wlr-BMhH#{0xwaFA0dq~eOISt-u^ zu2SWn2Fxq1o_;qCNMUw&KEX>h+jI9r_b5Vs66-gzej!z&{V_OZMJ=17S!zfrkuMw)@Z3#PRLWoqc6x?(xD z+Ft^^x`sn7E-FITQG>;O02Hi69ep|iq{z-(<>^967gkQ@ewYdlP39>`S?5c`yuyYy zW3v1{71M+wXSioA4pP#S_i6Rm@n)umrg+;D#4K6!Hg3<-UjObKePnG&8BsBN{FVnyKAsyXQuC%-n@2qocANhavAAU*As|Hu#KBq^g( z*JQJ!ruJ@+6U zvhO>TqP`yjEETeVd;AHS#enZRiL6o)e-iE;e*VZIVp= z?CwIVq3_%QqV}RaWNz&L@A{>Z8$k=(*+iepie2u52FdQ#oWGaT3^wM`AXHwyP*FEz zZ*0vYLU1)F)8U*D%)bri`ZJ0~|J^Ded&i<$@ruzhn=1^}_cuNU1Ok`o3uk>I)BkdL z8!Ua&&pWR!n@$JG33$f1VP*%WsE20$FMs;|aP zBRBi~UUzwWn(9qj#0bu@D$Q@|?Xvapg7u-mNC;n^A5`irDzl5mV;L$^0f*vgyyg=V zM6!-V-laZrfByWc{#UkUJ!H~q&Vd&+2bRy{5P48(Ga+SOu#gRP+v`KIJjt$R&UEAw zI4)$yaIhTtTAM1b4Bx$!VuM_UQmegE@`rwXL8!MjsX4(+MY7(x$H9QR>#U!MMTIh| zVs8gvFBL#?W_oRn5zT)1rm{Wzhp`*QXx7G~(^d8Q4Z;2CnDe)VC%4Haj~d^@o| z95Pz5L5}vISU^XYBJ~YzRthl!8PT&hgjNOk60Ma$ukQfAN;u+A3N#ET%M3~NuG0St&iM9 zZMANj;OdPe;m7cmC#b^W0)Ab{DQvc~wD`-Y;+CSkf{tL(bG(#SxKoX2BY(#v#}9U9 z*t@NspBmjQME-=ELJXA!%KQXg2shW?vik)#fxSj7?zKK%XfNoq-8<{tJeqB}7ut$* zLEzRr^2qp(+k7E&gLNBO1rC*P66zlAfL6?H9FYSq8d-yyv{E|5Wvhv%EBf8cO`drP&jdE91gp@7H zlf8wrWV%w3Y&P-VW(YSgq#CBN*jAdw`d>y6$UlEC6ix{{a)imUqF6UQd7)N0LK!G* zoh!o|moe7cimoGEQLNjw<9_ajQn)MrlfnJ|JUVY4ma1LBLc**K(XfXQ*@16%?|#LI zxpUbqh<)6Cj6`ndnWZD>Dk|a?C>w2Mhc`Awx8Ox~`_`9Rgq`DS_8Xl#Z4aM`i|f+9 zF9;c}K&X1zNH@GD$so^A_> zN}>SVKU6!uiKFI^Q`}5grwGomskE<-3G@qP)$m&~B?P!{4|O6|?jUd8>K1pDb;{XMX{MPkA}@h-G*7!} zv!}|{Y?Q!FoYqGm(w}j;ul*Y-5N>0}s;4Q?Kovr6y=HzVc^f{NW-RVS+e0jQDty~^ zJ)Uw_JSfDE>R#qrLRrZoK355nVV4Jzu6q#o^9J&Q{K_T;Rl&jxOYaw+*=>!$a1E3cW&gpVBq{ZJ-L z6dXJYk)2Z*2vE!$rSVoc{;%2-bsnX8X0Y_PGkiM#K6?^m@cuma2^$+!W8oYQJYxJ? zhzX3HjVS_XyAim7-Pjg*3XK!$0fEvqk8``OO)QG=2kdwDW0Fd=>uVhUaRe^EUb*)8 zGN`;XPQvP9TR(uJTmG6#ba_ZGWD3_Myufz0tjE5ayyqoLjr*~#WxVp3!8Jo!^${Qk#^cQmX~;xJw9!JOWXQ|gD;GnABaRsq?4+gYM7ZI z9pgF@W$mDX^6ee`uDRDO9mv_BKdyeFxzwz+OmrAIHHH(q<&vls+plk9_=$y9s@DrU zne&2s^hm8MO}t!{n(&=6piSh80hgyH42t}%2j6~^r0mFbU}(D>HOuMgy;c-jI^nR)xkFQWOC3)mIqBVG44v94S=0R)i3UT zHgE;MfSi|FCg)xWGMkAg!7=o);@r<27e77H6-sZ|hi`aD=&I|J_f{_Yl{-K2iv?>w zAqyUVlZk-6LB8MrfST<|CAL0&Z$5E)G_CsOv{jTNVQvNGS?bBKFe^=&a}BV4$0dtq zz-5SUXH;7YyO-1xZtWzG0$!&Yri9ANmD*m5C{^iwSfCh3#O0{IOC?8JW&*^eEh0SO zeGS>ZC9)IauOaN(m*LcfDQyizf=n^#HRjbjapd%$yzI>MJ7WQypE%mqrsa!!nGaTw zSIs)Dn^HeOdQIShjm3Du_Y({vjYh^&(U5U!&!%Q(jqewYc}$w4{GCH|80mm%+pHzY zJQ*zN2!R1!!s-mV%)jY1ZD=qSTVEkil`~l00VD~!E?)+URO|+3+W>NooYtx-ln~5= z2R35lxG8=YTjZ`dhH6t4*eHRGw%@CYuoqmFn?vhmtKV#UULn1hNTg~;782@LSDfE*2sLu~ZjgR7BOt}$xh!CCo&C(x}HiyTZoMMxIeghQf}(PnZmfc9jW zUa%Ll8E46{o2zpMj}v%DB}ooVav5V&Y=3~pPbPwY%Ve*|+(oK(sNR=LIrVj)VmWH+ zcxL+=qs3#dc{myd0YAPckD%yg9}>$D0@J$iH19hmiV&cf1%lfwqtUXj&BxnhvL zAN(&h!N*`7gbcc-LB1MWN0|#5x9V<0u;$D!q<=!{$7lv1TVHg5DvCLt;OM`TY%C5R z?0MgOUD&OI#9~Yg9XioVA{imE6Ml&V>XhX2BK0(!7OSIXzzxtJPlC3oDtF=bMYJ7A ziQ2Lvae#vE?(V0`31lS)tavmZU3!f%UZ5y-ky&wWD)6G^gkVl|75h87)+BYQo8U{B zP_|@GTT>=__n5luxl`TdXF*lFP8^pA?> zAV31v>)jNxVg|HJB}sg3hr=FNpuP5{)OkNo_TS80E573|M~iGvjc} znA2-Sp|c0Fvid6AiT5aUOorPmkMFZ-<9hfDGdZej|6`dA@P0FM02vD{vy`^s5D`+j z&(e?Qmbrvv8XepR1qJ5hqk`Ns)a{e)LfT!XP(Ddij^|6cd6YmeRDf4JB-SvDmI=#q zPnLQbtjobP<9fc%Sbdb!A+8+T^s4fY{?A5DdOuBku2;xJ@RkSqE{AOQQNPgc_6>os z!MB6GYJmF|ODq0F#N)LXtFy<~XKwJW7-2NCT(qH*-DTlijgvXm08Z$n%SlTU zv!yRh(4FO-s4EvEH;3m*%`jmv{6(Rl@k6rTj5t({bgJa$#0EKIVi;HydAPQ_ekT~P zzr|{QC(;MpSTzg+S!}BfUmP?Wx%NbrbSE$gUKXGOP3jqm?AB0Cl+BFNAh0ucQI(gA zWF(r7zlDOx8k!wMop{Titc_b8_Wk&n2zb=0XQLYt_oTQU+wZ5Y7fy~gtUz& z&*+H91A1tUWwnM7JWfgGM%rz_DR6|H{J+~sh)APqFA2%rUtL|4+@i^cyZpRy?IQKN z4JvoOz!c^xGM{p{Z0+n(8EJAo3}4K&O@oHiXq-{>DZjXf^5XlS z3(u3FVC^A5j>u2(UZ)v3p8P$%{w#x!eJCt|r!F zIU>vK@F$dnT7sh(R`f2rX|0XSO0NaT^{Kh3!sT^vGB-9>zG1$I3vT*=@zOfPfmTtm z>c8BMU{|Q`?dp9xyVqT>|G(HCxvwekua0BSr)|7ajvMKk@iRkWhM*X& zhI~5MS>cPP#|qMRhMz5gCGo>Bt341`9Ce|SNFq7WFY{bLP1-f;yW8^Aov}>NYFW#W zg06?Y4l9yFipmXXD~uf{(6xbyP)6Vslj!@ktonh9RTkjV#1T6t2?{n_Yp*v&zM#o-p>m-Lqus`U?uJJ`|%v}HS@c!nRE~;t*HYm~yeTxwb z2^Uc}0Yc&>=D@oA*8*)2Qz?hA38@Y?db0I`PfsI4cd*dXOrOE47Q)*CP%7Jx-!+IXJb0 zYYWAzen3zhS(-PPvR<5U^=a~#eWG?Kd9zX9IwDt*Y#xFnFC7m4G|(VXU<)oh>TYFKCac_cGpxoa(g+U3F!of z0Ap6>uIf{i(0ed3REx6|b@hA1Zuc#XwP8W^;Tldx90hJe6k16;V-1|0*+&keC_F_~ zKo`t2M@dO*DB<{AJ_{#?Sy)~3ikTrqiJQ$E?M%b&O99ATk;JUR-Fwc3-Y8D;wmdu1 zK;jHQ{|UL8)A(^rbj2FdW`l2$yvAJGN4yFnKDEIz!073hsK#U!xCld}1%_6Of`U=# zqEzBS3(nQ!ac7VOXR(!o$(wA|vdLPuP`e$MPv9MQ2#-Pd332~6|8)?{Z^}r$hKXg` zBxV@!lU6{MDghq_dE16jZW)p$QozS3h%ofkSEVb?kVOLZ<*3juzy?%?%A80=ZSYT; zUmxhLyBXo=cEqArWK=6s-dfATw6+Q>>b~$6%wAVf+LdejA3_0?D{B9rr|qSI4D~XM(s>WHB!ec_V$Stb>+-VKGid@x`hWC9N8ImjPAPO&0*de=S}Asl?4Q z$X0W|K%F6jzb-;9xzmMamW$(<9pdC^&}75SGD8+bS^-wJ8I|bd()3%7Ib#8pg0Yxf zL$LD3Vs2HgRMFj9r?m$m(fo=VG~o%Lj0!*(!!8`^z^$GpudkHmI***q^ojoKag3KQ zJL5YKgbpXRcbVpvuojkRzEP^oSnUCT5%Vc>+#wO8NAqWuz$X(!+Ea1+@66& zaQ#Q`DzMWKChmf2qtr*&IVWm%KhO4>OL|-_1#zb1OXq#xXRHg3FW(a~s8~Yov!A=g zuy;V6^7x3MZI69BAgm66im_LQb|Iv-q2{?oHw{+Z<33%M`R9=7J;WP-1*Mft=I`go z4ZfZR*n*$f0r5!h)UN4*Uv@H1cIbBX-2w>Vg_l{9k$;zxrrAI74|?5x!Weo_;jPL} z;RkMrR>?(^LrLaUN8+1x_S~4E5{GzN`AZ9Sop}x-Q1IBgwk|CX=h#;WrU(OD$2XSg z%zXxo4ogLoD10A$@of3(jOq)>tJ#x4weap_6PXS$oaT_RhXvZ}!fCxqBtQD_${KJI ze|YwQ*y#LTIHaL>vEh19X+TXH$J@q?n_4Pw*u)avZ75mt{Dkmv#axh|D_j^~o|NH< zt_;#;3FU+gSkLEA^Gar5B-b?aWZWimJoP!h#QKoVx3DNhy%!MW_N3z9Wt3*5GpdOg zNduZV8@$@JCDpNuQ-0sf*3My4`GTCX-Gl{G}=T_3?wmf+pUDa1k*`>bj&~U zDTFb@Y~&fkZ`D~CVaFI+9og2oHBV}J`2h@7G8DBDvKS3 zHiuK~Lt@a#GgX(!mG&)6UmsyGjKFEOGneB=2DyEXO840f?SesCNdK#Ngd&tq$@eIP z-6O&UQ`m-pjpZ|sLnT$g-0c;92W``t_>7>rkY9f7$}A<(Nr&qiZe$Vn_{gY}7>bCf zvTfbeao{{?G!)TU6oBb-H{-B?%)y`jWY5yOfx=nAFH3_CvdL zn!9lN)WkdLH~{}Y0KgG(D78kvnj^2p!@AY1rO^Jb1BQWX1F*W0t*XW%R{lM}g?g_l z>Y@>qR+Cr}uz#f=43+T;gseM>kP*XwtVRUet%QjVfe8p&K8$p0rGmahi~cTEZag~> zMKLidYpVDl2{yt-ofsxFq^@V=*O$3FW%<|)sqi*UxCkv=bbY7{+ktiW;Bf)RT+_O1 z`s?8Z7omfekq#>ty5OZr^s~q038lQwzL$eX(c?4~{npKcld-Ffob=DSsrw+uS;NG+ zRQ^JNP@>F7Oky{YiEBLx2FtsJLO?W9G!b|DnT?*nLCHZbFyJWRc&Ub`X04k4NnbOY zt*saDg$j4x$@GplA0)gW=1ve?O-v)(f0(5{@dVy_7r>LNLq9jkUpq`fQ&6GGhee1F z5?0q7Z9dEDD4HS*>w_4Qc|6V7rrB0j434-PJ8kPk6(#wFXYogx^R;5aO)!m0HW=M` zcDT(MI7Zsaa49!?{dvv=R~z2*)F7l@)ND4|&58ZW(2?^Y-$6GH+6?|z5%ajJ;P81= zygj@(tArXLUacFV0#xD1NhSj$wU4e0{@U<98(p-9g1*peXvlf%R(*Px7PC-=@Rc`p z6xSbC&G6|XMV}#Myt(r2o@;)hjIA{-DLNg^Frg7B4OCW+QZ^R-;Ka;4Vp#<9B&F&C z?58RJxa{B5g}042%_6zl%1NwDt%|X3txBGUzgcFP<%IjzQC^)JnEkZgGTEXq zw6fS)t);}>3d8B|@f@4eOus}990uBo|A0Jh#P1>zJm_DD0gfG%VKuNJy4hChF0*x+ zt(dn~R>3{X#TGG>JNYCiCx4l)b`yWtKV__&m#-#_Wuem_V!|S}sE@Ow`bD2F`aI){(R9;cX;Z*E%Qj7s86SiB z?`i9nTw-)^CFm}{Z3&~*Mi#A+P9EJBUc#9!zKz~{wRGC)q#+7x@aW1_hdjRIj4 z!X9Y7{K zQ3zWYF+Z)5WgrV@_9GY+OnE3`GAG(ntSd%Df)mBB+Ei}=Bx|@Oh=rPgZ-Pb>O8VP= zupZM|gQ7j<8@7HyJQYZJx^fAf-6KdOqBI8GnPT@_4DHXnBrr?dAV!^ST0PgT@px?G z^+)}tRRlLYIsg8=fq=yGH@o7$s?V)2mFMXHh_Q{Ls1>ly#v2+APH4^u zczhD4tx#L}&^VFvpMnNye_hyhuSahFz}^e#BTRFqlaUj$0$WTwQxR?d0Z=DVL|v7} zrYDzR>mLzHo3Q{ZodXtZuAjBNaO~B|c=C!^f!P2oRR}uz*+>kv)^M(`+3ImPm||9x zf-5z?`sGr>NrV?QtbQ)`*6oqD+T|LML#8Ek97op3W?3kMlLMHRQz@i;e<0>xr+aXX zY(rHLGUnyCu=x9}(0K({u9bm4PKv-) z4f)lYgW~CB2;S9Ux}raWQd2a&Yay`{?=vuvggg@(=_<>J?<#mjb(58j@jw_ulqbwx zPLNOQQPkBXrC;!?w$Z#kG0K-lBHnxRIv?%MN&g$qXJhvJ4xIM!4qa7KVtmp?`W>`C zW{6W_OZUF3x&Ut(7amyyKuK}$9=6b7MJUqwt70q8^b|+wtx`QNoFjWsPM%*a5#aBp z&#mom7+}{$iki5A6ks6-QUaoGu>aLN)Z*H6vOl@B?iYsvn)pzYES3oUighf-Il`=k z1|qaUF3_M{?Ri*;X1vq(?qSU;YUEoL+Kk5!B?I2Lg5(}P61y1RUZ}lZ1+ksETRPsUSG5NOZ;7-(cNmEEi_-bCzya80YWCJNhg^(=4 zG=@e3Aj!@+f1jfw;B-U#y5}&&9oDw)`*4L`YKsS&@%wL4bt(q5{-C12b{Tc-(+yeM zD@Q{smpvS(gGDCG@u9{j102TX2+;$WTYM{&$a?@>_q(MxYRfZEJGeMe@%vdS0jRlP ze%?2chQ$ zpTav5>9f=w@mR84BdM20#wgaV%IDd#4=r)tGu$0zd)f)vkY(h5`AZE_n90-K_uVZg zF(&hWe30`FsN}K&SH&o;&1hO2&z{?VL=5Vr*V={v1z)WNJdGAK3D&d5cV*4pnCkxz z^stG=uFi%ezsv}SRaNV#Plgn5QdI6O(PQoT#6!|+V_k41TU0EnPquUf`pi07;KB21 zPrtm0u4rSu=sZvb{!o{|cbxFdS#3-MA>-8c8H0WSjPr+7lSvXZ1ypEH;>YOJ{|6iX z@R`QRsH@9dj_+XfU%nM`h#ubZN;UsePqdR6y*@IPT|2hk3OARaTAI*|;@Faij79Vt z4c|BS2$I>hHL^s{ZuluF^^#O{BK>K3ab;-y4g2BWkv`W1mHuFi`o!Pb$f1)F{`5LB z-F@RhsNHLnrvjV5OiJs4L2nRaT~wb9pMqqF5~vE%E;O;OV9)c&a@r41)}-L7g?^{0 z67X=vr&o`tH>1A)$Za=>r)FHX#KVr=K7iWC_qFSj#6y@3t<%3%buPKF!Z}V;g}pp( zU#kg=e4Q%1R;8$T`tfD=`hoKZ(g?@-6d|{01!-GEV>(0k;1XFIN-owEiG^nMC*ql! z&AHNF^va(dH$de1LekwBbHvI}p3=<8%XFIWu3>p~f>>AYUZ~JeQbr?ex|)Z{5t-v1 z#5rlWG}#T_{?U*XuZs>buBQXZvEe;Jj=})&(12Vwr1i`y`F}6SAuEwhT7A7sEHibA zWYY|;E*Fwm3MYjbV)&(bl^_H5LoN2g(qn}JT;y%3fwEY6I{<}b)Um7<2WNM)CPOKT z8Uj`ZU4^#GNhm|hGPY%|1iYre>N= z=bob3{DWE&`rKa})u(JWU*2dIhv!nA*ChBU57d|ORW;l^5IDi{N>*?_T?Nro%v(WkyG+cM4Jx9E31K2;?Py;g5fkPj08d50kB(NAIWPg!F&~#39794NU%-NNywM4uk%Rfdd z9L>{h-Cuj*67|UmRr(lUrG-HpFwF+{ zJsumzGB}z<(jZ;(Wu$E-F&}{(x>A0*v9Oo!+`0Mbs~e4ag%RaOuLQQ^YTjn6l5=^X z@gD@iO6U$LCtt{SOhs8p`1&S^F?JN+_Y+0QFFBrJr`A>_FXilhkHa25KP}EF0tmM3 zfffD%r0n@wgeWMb6>pjrSF-sF0}WF}f>H%t@!@Z$ng!ve$L&HRG&~bzOav7V`SjF; z<NjcP+sP52(kx9%LX@f8vPxE_#bP7k>o>7Ap(uRdIUeTgG3BdU3q}Nytd2%H zon#L;qOJ{Lu)}6rFE+3zmBbNPyEUzSZ4=7Ev1+>l3UgFICfp)F0LQM#a=Z*-5NO8q zMt2E$+}Fc{8nH@#AJH(l>7@%IQTQ%FrS@E9D}QMH?xocWy9#2I&1BGup31^2wt>Iu z8_5iZ)g;8a(M7Z3jTWO;u~%`~ota0WL;!80nxzo}ykwR?96^%*yxHrcpE=;FUr*5L@0oBaxoWyH*&r_v9C zg!Hfl=D|19?*Q?BvDDZptk@P(msYXwK}pABJ%WtXhH3rCe-lHcLkM-3jsYJPvrmNl z5jf2VF2gFbQDDX28?`TI#a5B&UtEVuHA&hCJE9C>1^e zd-;69R0`Q~6n+%UP2dYKrNcWj$Q*9tZm8D3mo+sTVeaxq8-eSj+>^jQDd91=OPOCY zciNv&L5K%$)^k#3r?jTS{)=D?ilL5pIGg%InyBpfl=1Vhvu9n3 zk+9vG$+g>3wNLi2t8PM(vrfecI}6E?489_!+Os(40ZEBkF3Y5W@}ac8q>EI}!J*!! zRtr?@f*Q^K77NqdQC#iSu`rtaRLff`$p?zCRTXPUH*7I7hN5Nivw?SQ+h*#)$8X?J zKjf$%@uT&IPli}>M6NY@Dh`Zk#(8PUH>V?yBT+(~vf#(J7s1VSW?nUI|NO}Ne^c#a zOpWhY0pv)HEQBM(=$f$rgnVtMz%lq1=EhZ?!OF!dfh!uQVXG=KRL!0Ew+WEHXc9ov zw@d;Y=6tx59+~E@jyUieo9v68pxXsBCIyO2Ar8vmZ%83~XD~oW*uY)kV5ptfjDEnI zlKL=@HiSNP?`Wy)^jfXeT@s^>@4AoOsK0u)$cuPRRa1j5N`4eHCVO^)5G(YXIf8Ed zo03-H>4{5$Yi#ad&EVN%tn&UypD{#0l4@~Ki8VJ)xG=Bals}+Tl#qgVq!FeT!I@*G zQ+_lr;Xu0{UM0bY==q%N@ zO4cLl_BpgjxaXyw3zYF7r>5mUqq`WJ)vhq~+~YJnpYSQ>84B#Jay;GWKh%{L)BpYP zZkzs;X|9;vPWV%;_r#QT*6b|5b>}u9`Sy+xmq)xY2=|2@K5wTZ$E#$DnD>Tj7@GA3 zZJgOFOEx;@DL%&98!Cb>1F4*$kCj4qD!mXHXD?8$$w_Jih@SXHE&n%oP`M3j*vt1K zEVHXU&QVo+_PvPL&Td#x8rw=Gcz=>kWxuNNVX2k=m0B-^w6PYPCxC7DT6Ce-Gk8wJAA* zM&FgqLXgzkaoWx{C2OY#%%6l@KJdA41RQGN>hRCD9_&1wZrYgxyOeIc)JuHZX|g(O zl`|(|3;J6FS4h1O_}sG1!sNrJJ3Aqm2_}>YR&3Z2W3hhj&`)6DgNQjctns#tbjs53 zYrg~cuxfUSK8FSRw4PZ1*luGsC_WMu*r_ipuQhgVH$Ek;<|+K>yK~lHTjR5o<;(4Z zZEJN)=06czEcOeA7y7jkjV}*u#K#zGHXV6!yEHgDL567%6Citz@%s96di=UYh}zLw z$aMW1$u`CuWSqZpwll0vS$^6ANibYF0meq5F-dp#^74cTr z-@Hr)U|NOCpjk-DAy74X0zU>nU%k+UiS$l$J8GmYb;-8&ivtxZPZ z0JOpnT5wc0y^VnR*9jy8C^}VcSn=P}xwMa09+0wp&O>u=>M^freMB9u+@W%$1Gec~ z3c%OXyxoKBzF?LC$8g|6p-63P@a5r&d`ZrlKos!iyFS^7!=>2d@X$=rFLn=BK{%u@ zt?zMq#r9hG8O3keywBF6X}MEetsdB&X~k(UcL4Rei<^;KB_6>r?*3`DA+HPSsDgyl z{CRBn$be1gI_(7=Fl&k2l3+5#ni(Gy)(umOtLgic>3y&cwg)K7rS4T&p?j-`<=MDD zw+mV8qi_iu0^TKoVX%|UudTFICv7RA3|Hf2PNn<4%tc`h)A+Xj(c-#lFE&ZY7!p2G zT(_Mw#ewjqr1z4;pVPW_`vXdg&bw0pYouD5vZaENLIcNbtR0Ljz?y!N#GjgAW+=*~ zP98+wF&80(75#G%`=cb1cIn1AYIP1|ysZMKG*2zQB!KVW-? zwb1}D`K8{aLf5FDcyo{Qo#Dt-`Pds>skOnsJu`plEnAEJENjU&7-MD@DfZF7D`>>C z|CpY9Q9NHBu882&Cl?{+uq9`xF!-27PeC9OeGr&gC7Mp|M7f(2Dj6o2zgi z>5P3I*<2S`VzMmO*rUxffjeZ-!nB9 z;c*jbs5z6f1b~PI@oR&?+KNph2GD=8I@OTKJ5_>t^nk(~YCN2H0_zq@{;=ovDI?2B zP=~X@m6S3R(Wc(rrm^hiJHEV9qf((mrwf9KZ}~6BhxF8Jg3UA}8-v&e!o5wXHej3^ zoSXGm1^4-BHD%UG1kVTkSh?W@1Lt5f2z`HIbtCklt3r5)wZCsjHb#hCCHbA&nnT~(>dIS znz7m2+?>_scP6CjjFN6CH}Ku=QS1dWeT{9qv~u+qqP^yuT~3s-D%Fx~vO`>`onoc# z3;3#R2b~*9I)A0FG5(?#HAS~+kjTBwExR6p?SIU=GQy`;Es$>zLpB69sNGhB$9*i{ zA`5};W|m}FW^nwDcyz%;{n=+oIwnnVbu>P^UhahfZX`9nn0WC|MsLN=Cq>B*iiA;$ zq0=PeF@2R`dE&kB1R#v`;PXXNwSKd0T- zq_xulcLWng7CkyXO?_h;N{Ub~+i=dE&m^3roILGQPG&%0N!mxd^AhdEGRm+)AacX7CqGjITse-Z|tGjpqca#zZu=KkUjV_7fk#bNL%>+zU zkY|jd6N5sX$)NN5fFHPVGyOP7X|tyaIV&HxWP#XhL>7vK-{45hx^HqAA)2l+v~Unc zOea^V8F_nY4=Y$w;S#)1Cj+s_oIxWB=P_H-E_{e6#;hR%InxposTza`6MT!T@&hmf zZ}DBGWaaUjD|b}rk0Il+o&3iIL`?YBYPfU#&_%8+8ZDi}QZMRqyU!Z9O3TlQ(T+p2 z4Z<>}w!)k>YZ^*JT=cDw$u3VJqqti#-$CVch-8S)m$n@o1ipgqjMSH2wZ{x1<}Y zgy9j@g#tS5+L?wJ<%SlN&{d3?brirQY$Fct`2S;j7-$Bn$+Kvrc%Cc!?_!XcKy;w7 zASm^UUNF@nL0JS&B9+U6=4Zj@Et4l|-8-M!J;kZPQ7qHH9>v(d;j!31#_4F8SVYyR-;wUask##1K$K(NA(as~VB@cKT_J)SL@cPa{ zjy~Nt@fS0r69BO94uC40|ILWN$GZk>0QzfhR)jrJ2!#j;${kz1$Y}C~RqLL-aVTr~ z#sNQ1zZoz)Z?k#pmz^&DQiSPw^D&~Upz1H40pj-;2tn8WkE(_7(hMf zIBqrg3YO_KIw>T5otkBo9E2wq=Dbv=Sz$H3@XKu6siFm*q*F)ko28xQ9gi(dXuvr$ zfM6LaFwZD+C+^afxfz%4hxt{;0Y??*DbtR?#{O4n7#P|8owz)&VGvKtm}uB2%6}*g zR_W%+raY;1Kfp;*(i4zvO$Sa3h%}lBeE3So-nC<_y3kg47bLA}X(J|ajda<)~wVlCvv8GTljZjw@8f#1g{6kq^QAFIbiP@N|!b)5Q9e$?3V`DU?B zdTsE$S-FwVI023e>U`h&sh5o*k`UoUA+uHi66kN}uQG88a&5YoW}<98H;a@6(FHKM zQA>AxTR1uEVtogJoFLYyq*GQq@zgPX^iP(j4A$c+c1*o30l<0B3&Hm2c*H{;EF{us z5IkE=HwiFb0Q;BT714>L#;>0wo|YHX?SaI!jlbrV8rcAA3f?)ij#E6}=Bvc8lhDSf zY50g6TiX);s0;Xl%_=(BZoa)13GZzZ-gOwczG}lI-U@@ZTMlBrTiI~ADsWw_fx|RL}^`qanvV!=2}vMG*q#KZ)NLl1ID+! zSKf!j zqr@Fc?4pk*7d(zc?iy9Q1JZ85u9*KE7{CO0`FaB7HY3udKIr*KQ;zjtt}n8tV{8(d4`EAK!yr@Mv5yGtaw5gVKLv)o=B_D3#96S&M_^ z_4uZM&Nia^E_P~|7a>0D+;uiGAskdz?J((Yr$ru86;rI5a^+9w=M=`f{(4mW9fn7N zTsIual|9euE{xu0H_`jV=BJ=WnhAD*M-@^pQ?VlH>n$2(%K*{t^$!$q9F2Y0vi#bmiVo%pC?Eiv&=I^R*}bw^%d* zhW5(2ix=Zb#C(zAzz*aQY3=r=#z%>)iqc}@xb-bSaT+ulyf=54h#WP>=!Jak@{p^z zfKt{hfoJC&OkX1b{!Gh5RkEQb^Qnul6^0Coj6}tQ=2ur$nk`@P8U2AtH+mlGswE9{ zcV-L`2`E2rbFHBezL7-5Z+oOWb=MQ*p5OR_brC!{#=262WOcL(&DR*sBnqI73%kK< zZ3l8KID^8Ln#2lgTnN+Th?6e*VGHm#7A2ntDeq_SE&itb9fqOGy z$Ca5uD%8z@c6{_fe#{6`iRSKiqK>a}DI}zgT5Y&pR;H2YByGrJFD_2zv{Qohlc=`J zk+uuZW+`Ix6_H>wx(`u<1EWfH{QY{Iuq27#$ifd7_iQmO%u9;`%ErX}`L`yZ4nKNC zFu_9`!H_2UMMCY}bohABiS|5%wB$lrBG09mM$Ym6N25q_Gm8%T{B1QX z-O^2iac8S;qGZ7d9=PbYkfz&-PFnSNRHSFls9vC*BaXePjXOD(-GBX2~mCq;qynK^eBMeb|V(MPti!-p-=>%nClnTB|HC};@m_RyQGIr9h4yW$B8r7QDbq0$!&R)kR*URJ@F)3NQas-;A1=r8v|4nzA!XhZni!GA zCv;8e;ZlM8W--|&W<~LYei{o+yijAoiJ5drqALT5?k&CI1+zB*>s09TAox6{y9Q^5 zITfUMKh*)CrFp)L`BCX&w@?6tBONbc{0vO;rBiG+=TS6~2#stFu}>IkF!Yl43r0ob z@OudiTkouNWY^xEtqP`=Ap{}$&u|aVN|Z+CX?;#&_3!7`aBV@+^XBW6R!WI_49I!V|`B;R}wYs!K>-$3e{ zBLR{AH`qtd@|OmpSU9%(+Ug6m(NS@2RRc$EdJufXMx0Q8^~l&JW;rO*N%SjP&Vm@r znuKBBx4Hu9)-Bp+e64C^s3jGEhh744M~Bkkc~;G{j{!ZkLBG$P*WJb8SAWj#E}1=(}!S zime64;axdKqy))_21@NpHKVHUP!fkne-z}rX}v{%jU#oAd6Wntt3IIVo59Z%*X+c< zFPF1IjGi9qWxamaGL;KhwuWEs2o9{?ZdT||Kj%fumwlFrdGp;L8JLBwaJ#QW1yy$w zJO2XIJodFO9b(5mk0O{ha>PnJ{t2tAGWN+Hkg##Cm5q(JiG)$0?VTwWsWKuv7l?l7 zudv#%;M4J=(yMk$Ay>i7L8UlZH1LG{x3wF(jj_t&a`uO3V@7L&&4YFHe<__r0!L1> z_YaE}>xfNqsGEg!AbPJK@w`d~m?!B>KQUGU#b{VZo0O{Dq}V5C(}9B()l02Xw(B}*eWd(O;tA|z(Oht)sK&wW_! zhSV#*=L(n%Yz87Kkz$BdYt}8oCypHl4w`F*@Fbi=O!Lqp>nhzODqw^O$l)4cj79J$ z0hKco0(wMM=Z|+KK%tW{KQTWeBihS6oxBs(^C1}RbOL-D_N!w5z zx$c%BT%Zm>8>>hlNT>d$%uR94p*+j2gT2H$<)V?#UxQr9hnRC{89`weVRCKqyzx(iqxQf24;L3zCm7iBC> zEz8Pl<*Z!U(nod*Q4RiAnQY1xmuKq)l{UcB^Rt&PQ@DFf!gyhs-LY6le zy}(oC5@**QO&^FptC=~9uVk!$IKmU9JfoIh~kUt7nEFctwjV@mQc~UU>C%lIr6kcydPrPfGGfWwFC{hfXvL8 zvM}}3e`4KG5^q^Rl44V`f2tp|B6M}31B`ENHj%l9>2rX$XxUcP+mRV)492EW4#&WJ z?6rDOD70ue-Le0Uh>8=7Sf~0--xn?|Qp+|_7_Qh1Njd|jCoj4`gu(^=NZO6-d_8di zEb{*VTSGmWAPyuB@?IstNGFO+tWV}Yb#*xsZVRk9BY>8uw*F8QgcY@k=tJdKE!17w zBfN8fyrf~7YS_~BvFC`ML3bO;ZV-gVtl<;+loRcR_S0w$nS59z!04=4(iy1Mcdx9A z*JZka&3=JvBB^Ued2It#vhgHk8=PAQ*Q?ZQVjM)v*D%YUZpUidKa>wv*8~`&)Yg#w zVHa7X?mjwo0)2w?@ZR0q!$`}2I?f~*276mh<-aunDjdxq$-YT^&uuOHbdrgi$X3*} zt=#QS#gV1yg>cN^RYm)rXv;a3PHB|kaFWQX8YtW%J=7B0gcUP^f--;C#3n?SftoCP z6B%_Ro@xho^tn^wZg_-`RBM^bWUk#4o{K7v#b_ad3#M|}jT+ZJfn(pY9PB?M;&j5z zrG;fC0*VkMk!-#Lu4K+RoR$sVl3nk_>6O!n%c?A+?~WumIN1#&xn16SKQ}TGfOUVZ zcObNt8EdeT2Ya2fWc_9^A|jUI_d*6NDc6YJ80nxBY6VdsFAG+qY`t3y-cuK%sg6o= z4wIDWqgjkH>>7VKXRY8z*?L#82GnE#7&gexjmY?LoQhYhB~?-}u{VG09YMD^_pOFAR#XT8p%OX%c3`_1v;+5_ze`qVi!SIN31AQ-s8KHFIyRFIT;AG_56L z-Aa*(a$kd5%pfi)Sv!X}4&D@Litd}!&fZvoZ`OX!`imLLu(W$%f26oMEic|F-W&Ie zWQR)erJ?4G>A6V7E}8F&4@tN(79GsA*q9RPhc&=sRSA8^QMVzM+{v>)doLO7o4Y)? zn6cl~CU9vA%^!kybWlDd(I{P6H9$lJS&sYsR$o&!xdE|`;Win5Eqo)4uJ*3d7DSSNQ68B5)U;+x&;agUa%II5I zGRX#ZvuCM6=G(x#aq#IR*flyJ$(Vq4T><07-{w#2&zC+xphiYa8^CcINk#Bf$8;ls z%$n^+z&7#cHKp-$!ki!MrSowWgJSIJJMv!f&*V50(TxRweS0AcggTq*?Ox(Na(>-D z>Gd6bK;s8RuY>|*inwTq;!)K<3JsR+0{VJ~6JJB3 zTlP$ew^>2k|75-NO2_Y z)f%M_Zlwmk+V0DAz8aR4eo(4%f|g)#MY38wpC;^-evz~kO(MD9j?jFuEvT*u zS&c)!oU-Ry9yFQ=`EcINvLYQo!3B>vyysJwKqw|EoZLkM!=gM-8SGl0ix$V0JNmJI z4TW5zoL&pDPsNlGRF^BIM$h6lzHcxKQewsHs)V&Jqqn$1F=uqi_lmP1X6)+MmD}d z`!Hi13{a*KA^B-*8FSMFWH7zA=}EAuCST(+6;TVn6_~-=C2!ejhE&y$T8+^cwSlv} zFUaIBRtjm-gz!G#96{Lpf=vJ|$Xxzlc`-z$w`3G6KG#b=~kQf7Bf|&)l z1@1dM-F&%n_Td3;1L8knuoy?eX-XBT`Y_O9KyMScdFKBsjH)(pzZMM^ksb(eQ66w!I=a;2iMgDJ;|OUttiyeP|t9G?9T! zpT1>1*jP+5n0RPyAQY<8)pEX(%;&4MJ6H7$WmMN2Gge83k@5x z(kEWs$>$?HV^FMzrnZK8q8iVh79}SxUB_##nqaiv^5|%J8jizl)2Z%sjkwN%u~INe zOJZ|LE-q6+9*3_xnUPRa@s5q4M)T`FVts=pS|vEjRlebj3JF>@>P^0M>?nB zpOUNXyEPrE=0+TgLhy0mCUHjFD}4iaRFYvV-q(HH#N;5e-8OX1qN*vyTk9jvM(LTL zf#{L$T!Ylf==m=dfx}{SddT83~WmQdA09{XBdhKmU+ z#%z@e@qedIj%4FbJp79J7UphuucM}-lIJXB0z|969l5@hV0zs&D<1u9^d@;#q^5*A)!Rmb=UGlp zzv4MGOV4s=ZMRRy()d~#3IuJliY^f8X;F5n$9L($2WZPFOIzX>BQ^pB?M@ znpYBn1qT(uot!}fjix{{Q(eLo+y>SCP}1${z?Co;|J=^GEInmad>NIc-1T|zL z%J;-Xm{vdAYM@|vJ)*u~4y%~_0DpcgD4VPhc`4!fH-atH6_6dnz+5%6(Gpq`^cM)J z2;g!82lNAQe%u#(`{#Wa1az!9+4%i675=>|PF1wEvNRAryO5XFjNr?+#lqqt#=cUc zBRcA&PSXbULpjKgW`i9?Rb@_}!InE2748oWcN(AmSFev6Z!%mWRBKXKCG`~;Rogcp z|4;jW2`<86!B1WbxrNE=!M0@Dl`_$1Bva426COdwo zs_jB%=)ma#JNs)h{ zg!zXzQYIRocCHTX9%tq;>Z_4wjUjpEaa;~>Ux?-0_11WN9vbo~NYz29p_nu_lv(j1 zl!Cs1K!7^y!>{NCdo3uV;`*Vx%2RLd7^CxIU4S~r?lrLQXehFpqrXny;e#w{P#_^{58~^nBYDyNIW#yb$%u40C!y;P1Pe{Fq-SGSG&nBMu`0g-d~$~5)8f|hWN=? zigKESF#>n-Y&Wpn#kHP&@w=XiN9EX8kFCJ!~c%z?yu5L=<(FDqMCS#6W=lq;wPz60qH)!frMTB(JsbU)5;eHC0w4#Z%6qLGjqj!BWym0X;$y)Urw7 z3X?S%+{l^n5N*H{%oK8+Vvv3cDA)zJt1Rg~fUT|&<t{Cd)E&{tP?GYnLBW?zY#8V*6UZi6!6?4>SHgfhG6nNdaV2Ofk;2Z6$NnZg%PpU#z0mG_UWd$`lPvfqx!728F-$|Zf z^Zl4@Bu+txEJr0!p^EZ!SGPJ2VYxE+Svj`tT&DKR8SYJug~AURblvLZKL>sTX%qt-Gcj}-TkDz} zilER}NXmuzYz%pQ{wd3_qOW@$;9ZemYgi9EBToUMndyHo6Z8{&7~z~d@K*WtEklJ9 zVrC&z@B{I<7~P{5hDOw{HU5j9)xj*oJiCdqB$!qvba?6#uEJtZcH=W@u`nOxV1!*J`VWap^@#61pIOd_6^bXx zqrDZNlq4E1wJO-+PTJQTo2{^Ru=Wh&PTz(2s_531U+TRF$b>{5!SPvz4U(1hf?8mL zEfN_^Jt~7UAvMd~)}o)w5Fbtkqh*?5gvJpYy=*V;X(6zNM1a3gO)6q7BwF6EUvv29gmxj^-_ zY1{HM?^iQ!rJ*#BD%p=${ptEufw$6j+s_?|G9)8F9JB)6#_SIsllSHlx6P^RHL;%l?= z5s@6lf#eDS36j0NyQXPbV&V+_&dG~X9(*w%gs6!C_L5-Lm}!I@%{twB`s7LRgEnT} z;VV|hs$msAiSGu{x(n(!Gg2GQcG;%Kv>S|ROlVhk zWoc*)r*dO6jQ!L>5Cj zT>g?!*IvpcjCA?ffM#PK3B%d>SH&KW@htTFxnpY$V$^XU+7>YW*2``kTU1+{t+hHm zQEO)>?T201j(LQ9$OkF0##ntW5Xx<1TRJz#f;7tS{%h^MtdVs)v19Anm_A=c@n7gO zW(aX`E5F!(!JW5)bJH&z3>~Tk&pRRX9eR)t0N??wK>+EO)dn&LG}!BO5#4mE$lAsg z3g0{%5qfwmDymtYCNZ?Srs;4tK%!SIHb61VSYcIOb6S1(3$miP6u>$x@k}(+W~$wX z%6Hpr+=5BQy)1UtPQpqKGszPVh13G z3W+TVqmSvl>?}>R+%#kqmL39jDN(C98`{Z#(osJ}D@LL&3~B`+LBw#{P9ck-G<*3d|~D z2(8A#I>}zwc zh1Hw0Sxt9xPr()ad12brj6dNrO?yf&&m;}xtkt)Uaw2W2*aUpLpc{U*hf6`yWacl9 zHeiK?+-A&z$oGxrG!c4)33I7Z9J2pK$TG4tttcDhYUm@&NPgAX1vMU;m<1^8UC#k_ z3U*%W@*xjHaprRj=xz;fQ^=Hrv{cG zYJ=u4QOg5={bysDudl-MivR*Z{l8!-S|&SQB@gyy$LVxOkDKCS22Nu6u8W`wT0d3v z{$;}R3A$;m@4qC>NfQ!k4g&$clmm2lIhVlD)|U<>E`xa2E2ss3D2mY!I41s$OWZ8= zaS!5#bGq;W9Y?AvmNIwGS5hR6mCVsM{(bK;ou4LzuMRjhG(q4D{w`RgJ6#C4#z@bx zu)(FRgT#LLS)s3v^a?K{>Tvlj*E{n;JD|LI2Vwh%a;K5zkIWC1D&vxRE0s`RS4AMq$8~(ee3Za%NdKyn8gECYnC9bjhc{VncW>G5RO4PsS7|=+y*3q_!&}eF%Q%zAH5D2x zipuc%W*OUy+bv5CfN>yyJ;`6Tr5Sa2H)XXvd${p<;Y(Nely|5iYmp+RVu@5~{^?}%Gd?Xlc;5gtLh+yut2}yT4%6l@JL&mw z{JPWZZfMokeXS)842i^*-+d|8bTupXZAF6gz+ZYUW_7km4j{0SSV4zdl>4|-wusHF zXe61ktiw~zX|g=Q`#6lV6A?H1iHhR{)ug0nc@09o%Pap)Z~17Td|whfUr)9ia>#az zr|s*GJoj6V5LxXk_op%~NA6K?F3mFP$H{Pld_VkuHDTK6dDC>Z8lG)GXl0ZmVEKDt z4`grrbzM|FeNvK|iTcUood`gKdQ4b`O^LUO#)IUz;_(URw%l!HKZn$DByJlf7HTo! zeZUP290lD5b~=pZI<<|w5)EiMASL@w!!7gJn&P9oU7wYG{yKX)v(+|92rCn0;mrre4-5)48=!^#{&{wIF<+`*?9djZKo3|7v&(pc9;#2HusVoSC01I+kW^%V*qOm-s$Yg(Ef~J(YIieVW!ew)$VWGie0ONy_|czmWVJQ z+1i-0R`qoT#Y?WuZvAJL7ehoWB?+j&k_RU2v2Bu>uBNmOJkISM=aGW`P5P)3{V9 zV%{j>h9&Cq(vrbJV>U3nB#RGbmn5&oG?66uv8yFm{oEr^lxqQCxMj0y#qgsF6ty37 zniC1#%fEZ2$Tl^;7Dz($?_Ffya5hoNy}7O zp6t34uAlBpr6g`3>w=6SqZ>DBht1DB6|O00XZ&hFQvC9`e<#<<16x|Zj-8sSBYCWe zCyo-j`NZh$z|na69;0nBurb$0@fXU5+Bqj6x8S#6MJrxTQBi02$uD-i^nqyH$k_n{ zhBcNEI$R0b8;3of8u4i{ay)JXP}JRCH9h_STDNfekyuS*^vk4nPdf%^__g7`>EgxH zoB0Ft23HR+0LD{6R&Zhm;Gt_Un_Kuo9Z^`T~&>Av|3uulkfqBRH0VDAv#<&XZ6!KCXxKxJ^gC>zoZ zT`O$pw{9+q*qnbx2ShA_wMsL)?yWvN#ygI-2_llYPs?!fKa(g2Ew_0D`Fb*Fq2wyE zm8-CvD{=|nXlBagN6zH-9SfTOBzbFPn0`>d=VQLv<7A}x-~Glwvem=cvak}oAj61t zI@RSYh7u9r8JQJ}W+s>@^JeAB9Ccw;8RTAb|x_ zmhOLF>|n6jL{oCjR<)@u{XRLTYC;y@FUT26{$RR2p{-JO@1L!K2mAv*`$~I~aCSfF z{-NM5kyBBZryI0BQ8qv%Bkq=}_N4A-cFB12BMi2!H_v#O$F$Z>#_{n+fY1a;`6Fn< zR@(feuid>oQ$rWJH)qm#^gX2)NQT>6$rNEk+l|jB9{g zF#(A+2sDBEn7xdivV4d*x03I(ak<>z?c4V!xb@S0T|M$ToiFbkXk20%FWi}pe4mO? zA1jO@WJy!CYrcC-d~{$~$x=K?@AZX>#76~J&T*{z z|J!MxhTI3Rnh8QyL(%gm>A%J3`$bDyPRh4Li8FI5%n{FOz<;#^ywsMraWHqHH)e5@ zQRag+8h?QeRzyB#X7+;hO`HZ**1H4?R-CJ=(2ookMDbq&gXT(zvG=B7z#Rh|3qYQkvh#E|i#0!{1Amp*&hQPr>Oc1ENUYe)YPKKD9C@xR6d9t=S zOJ4uH+P*}<_oK=o;#)s?>V1u@Q#Dc)m&&|O{!{`0Xwb?_Mjo|J##|%wpfo=F@=Nm@ z2+^wso5yQA$Ow6^nfy*|j1y*A&pO8RdF_<}jv=+#J2{j~S%&hjx$GmO_1j5wEFBjA zf$sNmK-ID9zm2vRS3u|J_lYy2AUNjCGF{n{)D6G7>tECTbC#a5Q|`(v zwrqGT*!6j@f9?OTs|a`SNHeLpQ>$H7lTYn-Zt-o*m4C^BL5@W1^nYF@|2}h#S=GR3 z+8$S+bvSn-d6LA`PJ98EING!k93x%u;PTurV`w)Rp+Z&(aF4HPTiy#1|4O^e&m(_! z-QmxiBz#lSYQSM;9TwnhvU>8n6B{lMI$6{YWZPt3Yn(SMOVw%&s_a3F8&XdgV~IDi zCLShwBxln!xfU>cVIzxd^)aEYgrdJWz< zrs=TPUi?rqK611-q5Qj^4c5W~MpW@!7hu2AEAucwW@EkMO7i3pb~!G8RYo6l(Ov-Z zhZ_V{TlN_hNq`FrMIaN*=X%rx1EZNl^<83YV=Ty=xBGA4h*C2BqG(%|6XRsV2%m0;9gNhk0a*t5oc*Xw zo++&2GfB3sclT^1F&q6ujz0p6`z+S>VM4L%5bd+l{#V8{EQI1#wxBXEYRXTjGr~_M61^P zVWM9<{{~f?8e@@$s4(K>YVT-OWyNv~)$5>{&owMSk}|qH?0)Q0&lexdDf_g_pXEM}66v9# z_`Q^Sc54&tm2YKm-sp|(o5bI8nMMCz23uS@7Ne}i4Z^>j40mvMCpmWK_b_mmhm8!5oJrxN(% z_#jl&DpULKxQ01gEMl$->q4(Yl@0S_>~wj@9$DYlY$u8J-1Kx(UWEpYPLRyd=}Hv% zmd@m~hID@GU<*A>GdA}G z>$rS-D!dL=Zy{60XWsOAR)HGE`DLZhXeJkUc^2eJSr&`huwwtWa`WS;@ReeFOTHno zR-kFL{obKut;Y-rm`{C>;QtwC-T<0fs50@uOnbo1(PXk|c}YYN8R)`eWatlPk(P%d z1+7F;^1L1@p95wB6@hXuZ$i@Dm_g9ab_R${j76iNRX?IZ*HcG$&^1f&h+JM|;X#rZ z-vaHYHI8&0X3T83WM6I$1b0utFV#fqI8U>M3{*TY34f-=l}Lg-{#Crq7cmKsil4BY5JOy7|~6a&Rg? zyHFAvcC?Vv6t3;q1xsLf72`B=z7$Ylm!A3fKE>R_J|V&<80Ho+5M_*ZPUWWM+;Mo# zDKqU_0{9^4K4CO3=W;En={2nb^&c0421P`^Rr8@5w7#J|PR)^e791o}9nr|J`BSdd z_G^Dkt`o6;b#<#7WmOSg6=6cFrFE&9Ql^LClRK)i{I{W?`F z8Cst{-LAJN3vpOg@d;$}7F9R0Vv^h4=3<48B#Qg3XemFk&ZKuX1|5lu*mxZKNcUuw zRT)27fLLN(fl;l9N9^#TeqrbQuXC-zjHuWr!)E=}6y8crQOzej=4L3MfF7}Oz^1aj z%+W<{oXXRt8abt`?XSZb5M+WlEhZ^FnHA=|y%rJ3+|uI%SeENn#!fl3VJiS%ck9#+ zIRl{QTs>ZNW1jL8t8#LBiH0iSee<-<#4}zAX$E!N}W^5 zmVfL?)u#drf77_13SE+8aC|cnY3sWqrETYFX@|ST`4}^PB6Vtoc%M%Tz{Wf#aXrSg zUqyjOIjnR*AmklHL8yW#UrlL}O&==Hz_xke*%3WC`Q{t))wHhaq-z7ar${EZnzcIq z2vYQT3w+qDRRT(d`eW1>9MTj`X3`ecWc?!{-gC37kTHe8DD%ermBtGg7EbYBjWxrJ z`1zlfCq5D5qU^NnxvyXU&lA%_X6`Nn-^!G_xo;^q+JD4AC&t+OtYmskVLt4gpq|Jy zip*PDJ2)v;Tt?+a40R+vk?4i@y8?SHoz32!ZpN6<7S=yJd4dO{Zna7Eaw|dtv4qSe z;t;V+k06^^7Av=GJ*cDw=_cKAr9YG4tmt~8t*#dMkHxpG+gF_GQ%VPU7c<-PsqJ}t zm_0zIMZD_|W6wtXQ>ME&Vzl)}62h|h;<==_2!-$bRt1y|CmjVP(0y52%Pfl$_|{&| zyViP3^;cdr(7ViPvRx)qKhuJ?EIBTkRmfHQUVTpfP+ZFgN496}bPQCfiU(rm{7?7X zO>X|7H(zm6uC2XHGiNy8XPbfqL}!%-3{hd^K&B*2OwoojN>uK~cIyyd(EfB9p66q( zjMMKIIbB?+Fg_KK^59<`-%A!Xd4S=Y;V|F&E}nRzS27mR5yd_0M?`lRM3Iq4G3av` z%BaY~*(cm*n}1YE1t`CgGoN?y=aPJfr@_cab|D?1CtD5yfOCSVkH_7Jm19%MN)WEc z!?_W6l5fC!-7**htJkW;X!t?y&tR0fVIa*%=8lM;UUO(w_Deh6@A<@V0v`QU;SF)- zI`gtPMWkl>s*Cj2tfiI`d#^K&DOEhu*pJnYTsuO%5JOx&vaM`F z@cX8n=@uyo4aU9S6bCvh|G$RKxSc|2W?{&VxUtAMqsZT4j3I2|`z_xQ@g`k1EqO*{ zZE>s}kYam2K%+e3;m;a<_rOaczVEGTR_jgKEu^ULP2uF?htnf3un zJ<3!gK`w^2O9XRaehF;Z@*RTr|8NavY&5Y8l`B-Y0fCu|v@WdP3~XYn!is0IeJ~>% zst%a)IC}i>xnIcR6^*dsP=NZP3g=rluCHb5$j(2P-q=;iXql~}*gO%tdu+~F@%GJJ z>lR(7aRT|~5W%0hJE?_C^;%D6!<{ydJq0brRp*`%6RX<>L?0(fybdEmez|c+hY?Hp zEaUHskUiEKgG>;B(xtiLFr&tNyRYFh2%OY+*=(OhwzuAxM4_0s=m9QVCSR=n z$tr3;aJ-xWS93Q&l-utbgfT%Qri)^xH5|hVksk1`%85uDvPVC=%z^qFC5ZnBTR$ny zRNzhjDhMv|_(d-yR>DU}Mujp-5&6bf3^%9JA8ELKuS9is72eahZ<+H--ufNA8FPW0 z*%*F%Sx$Y2&HsLofvWF&OWA68jY^l$HE%U|9|OB!@7f9i?&jxEEOktMy&|+bZnhk} z<(!704){UQ6zmi9W!KxYaWu1KCe^FZ*CEOLg0HFC@2Q-qW17q0ihxk!qwVxgtCCO( z`L$XfSHgvx0;oD}RCsZz9K#~hGSk!Re646YFE;LbZTvt;P`qU+E3YzsP2!M=By}3yd z85=~bmz=OTlxUlWZwH%hk3^f4?`oK)gPL!7m!zR}MM;eA+0dvXGVJspC9uF7|2?Z3v+%auu+uLX$6%(kFPxUc8|@u4~5g!=W}A zo8A;aQ2n4*4(G$7{^~+LCKFM8+M@!Hot~VoqO}zF@!Qw#ZPUsl;z3*+srAzc+2ecv zPE4eYuN5_P?Z{9)mvm%UybRc#MdZ}L>^h6dm@nmFne%v5i*+M$M29)c+7gg;K{nFP}?cyN5k8*>6;l;j@pz#XH z9<9azhtK^1s*e|@3BUWSCLPH!erCz(EHr_KwoB!uEj!)8YGo9M!uzp37-)%(+tVv` z44C)Au#Tk6U;2=k>(;`5R`(9c$eLev$vQ9S=r3<+982T;Q=t&wVh#e$x)dj7+dV!zVX%zk(Nsnl^#|vu$y{)gvxcW zU-s6`fw1}I3>jWcwMJ=v)y=~lRO-o;z9p;%(-yq2->Tq%eI9DYI;tPZfhcy`{+AUN z?oIlcyPl4#Cwh5!BFg#c9)rBiM8BcUGBOS18u;#oon6;ZFERTa1%kC#6@Cb&8|T3h zz)>Uys>7@^2s%wdBH2fMW73f{Q@1?W@5iicqeWFepoHc$OFp`$ezLTRa^$tlT z^x%W46P6Fwb~R;Tg4eLOpM-w#KxzEHgao_B2mTaCX^xQovHpobqp4==^vWXJo8Jjr zC7jm|d($xE!54jEhidl>VXx@wFnEqjo7f8OY97HkbIIvutZW@AeHm#ApxJb!xz$d6 zVSAR1p11LCKZ0-_91Xg|ijGTSDAyiilvVW@$f{A_|9$yH5j~yjYm5Wd13f zsDjpPp5}M4{dbk2&PaxVUJz}sViMAjuJ+duL_9ZQ#-@lR9Jif=*9T@IA~Ts8VbH$2 zHF1p>n3=E)3)=G(TZEZK6b#E%n9qhkk$X0|pj{f52$!#iyw>%a2BB_K4vZmawIGtg z$wSwjkrrMr8xYuau&rl}^I24&&m-tM>&ZPZX5(S_Z%1KyqVs+5(k1g`v>HEMoufW` zaB3x4R_kB-bh)SP38c11&ZjI!Nl^(ul<5U(=9i(poZ3en*N=yy*;?m5)XIOEM=Bdd z4L;4={CIJ=i>tAt0a$(f7$HLqWqYNZqVG+y8>I+dg3K*G+!8r!hM2@M!SO*}ZIry$tVT$0@o1|8_2Shpej5lxW#ubp{-& z&+abpQl;rZ(^tQu@-*&`pEuG}*`yg(hs0Bpg_5~FJ)?Rk zv7i^2Tu=B65H&9=T;h zE-q2yU5qk5X>VyCn~J2`P%ruB9d7&5y)TcHXG%3ON#opJzvl}E(Vnd0O~Bg<7nr`i zgzt;m4pEwh79EV{d$vij&( zkvI6Wt*qT(%*>$&mBZ_Eqm0XW61Wd>*bLI305Kv(VwSRn${*)_g1Uyc9rq%?`)Qdm zjg}wLAJo3awjq)D{j8l(Zh$AVfXR-VdhP+rKCp=ISEe zbh8}42XchKWf^~z)=j3{l?m!)Oc`_jdHkTKDAuHJ9n#u z=QH8$DIz%oknl~dCM+pQqptVr2BCf?0v3#n!o-}-8yMwntAfCYIt5*z zu~Xc3MQ2=TlFLlj(Qf>jMjKgH5SGQW?rkn6N+8P3Z_G;2l3N-LBG@E-FKBR~qu^zQ zRQ~64?47!Qi0um&6A?nt!(&c9aHx84vBt|66~T3djnH{ys>>7~7gS?Er{>gF$s`16 z4Ow>2^+s8dginYPqf3fm{7b19Qme?Acl;W0UG<(_^LRj*``*aH)h7t3o(z?7%RI|=R(r=Q%P-= zkvXVPELWv_wj))6U%M!@E^-FL6AZ?it0HrV(Fc3=%5YfOF?Uk_67YU!OUi69y@-3tA%cvgtXB9?>k zj<10(v2J88S@JH$I!iwIgpp4JnXDNmGgg%a5#hpI<<2XZ3JCJe(KICGS#?yBrmTiX zpyq9qxmz{bBO^n*$VzQIvq6N3B81hxl54;e&sOZ>iX>V~EAAy7tR1@=zlY#xXM0dS z*5psFgED z_dFxTI3UtEwm?1uNFAP_^lGIxcuoXyW_Ih5kaijZkk)$)^&lMRcGp)GoMXe@nG>&5 z6@JIt9~muDji%)#I?@@-IC}gMHKcf-&aVvg8JIysRCladQ4t!+trWVJcRCUtp^~(k z1$jfKY+v1+))nw3%$9m;T*_$EOi2w{;~jq%Sy_+Jq&qQCJ3m9D-FMlVsNT~NB!^1t z$zDyZz~F)z;61;B>+GTrf(aQ5H)KAu$=!~3C;S1{2FWSKh@$Zk9f?xjjr^UdrSct0 zB}qnfWu5t5Mk36`8%e|9obY-6)gSH!5`c9Trki}O#f}!qLQRby&Z?u!E<*c3l70-d zd;Vw6+G-}e#*DyddkHSgZ4ENO%nz|KT4)Ek6<()(E4GeGCnLcYJ8h@e>O^=dpF&rz@x^e@5!n&Nn48<< z#I%^|F1^ypfCM=#!%?u=F-G8m=xW=6q1wg563l)A=&H}LTXjT%FQAW3wH1W?1JCIB zY9arXX+DGMgBckIXj5G?@_cEK*9X_PK>P^UM#LtQ7=~?O!kbGRiq=DRFMugyq7ZYmp*u4jh&8J_r4xuTwlX*& zJAFniTm*P$X@-1FTM4wl+u;;xrE6c+8`Bhv2YPw0FK|5x9W2-8TZ|NtRH-2?OH^5$T{X$K?Q! zV3imtc#_;b!|69`gl5!Q)99On2me@S8Ym`&4rrqyi@#%$h{1O7ZfVO9SdlKQaCtGm z(zgS@A#qCQNN&p(!9;BwHijm5Dx> zBELLhN!IBRVj`X;o@Ym9RF{G8ccUCe+Oom)_Sg+G5a4-=oOvNMX(~em*GMTiZ*iJs zcrC57W0DjPNZ>ceF3JQgDpf6pY-vlmze0$%p`t?dd|`_jG#ipQ!o9E?q@nN{B|CFL zSS15TxYs2G$N-)|iX?L);hvtN1f>LO&JamE+;CinC8>dVfJO1?&nn}z`7$@beUX_M zpbwJ0pz-id;3L4zBharI_}Q`Y1iL#<0?SU(siJ;&)xb6OoT|vVXZ}Oj@)FunAHo>86aPAQ4*@QzG zvZK%6&q=GVOz~trS-jQt>H)!s{5%10nveSbQMfRTtLg_rwI zet`$=@UkNzj*`wC?%;s$Y8E?<9<1K;x9$u#loTW^u^4K~1*!`2vmJJojvpq82zj)4 zXHvltv}E^#}LkAWZ9AKblrPfVz}#B)0zSK|(cbO~S% zR%ziKG<>Pi_`lcc?I1eW`QyNH>K0+lhBOOIm$p`~R6%Hg4T4e=&dOo2%KN=?5!Irm zn&0&CT1U;FQFT186_c|S5~)~o&+g9q8w~K&3>lH`ss>u(k2x(0ws_L`0Ym6i!a7Aj z@zLl%F;Zaf~#_F_xi)7OB#-bg0XS7Q<0t6u~PDf(`?k5Cq(BK3X z_QLl>zoT(yLSTk1##XnglO!E~`FZp?o-gqe^e%fG_%6qKB%oYlJ3=cZy{ogKCR~j+Q;?!#Kq{TFfNf-$y20^# zTgRaCdRX-7Tu~VCiZK}H&HEJRtuyVX^ZM{vU&F`kSPYP%doW{o*<5?O>q>2R?Ny`7 ze>o9}bSdQ!pP{lm5RdYn@lb6jP&&$xH~-AbGUAvYcfu@aK#h*6eA%;nuUWD?D)HMP zqv!Uqm5WMVN^{8vGj0gNEBzcSnyiMKozNo>-d8*8aP|9}@4b&VV&sHl#a?gqzXN9` z-@mPg5dnpUx?D{L%z*rnL6vh8ZFJ1>egaNBrH}59O8D8rHyN{I_Wb_pnw2q#M8?~a zg|+KC(xcunSX%z(picKtQEP*b<4AjCzQ-6RlqJnzj&aNNbl)x-Na+o^Dt{670i)0AlA&;!h!x{efw z&`}B4GKr~?Y)J_wvzqI|Nhst)vp^B8TD&0K9O?n(!l7@r&4fNC_?;@CR_F*=>Ov=( zF{6BSa70QI_>;&mS_1A`5rg!-gvXgZn?E&&3KLXB1pJS9`*N}4E8S07uDTF^-H%Eo z4W=+g(XUa)jJ{G{d-HcR&bv9}J2>1q-;c%IR~DE#-z2ORg#1O!FlIdG9E4EucI1>V z9O^(Ridv!HUX50{Bv0&=0xlg6l?i!bTrDt5aH#D{x@(bT}YCqOP5 zx892}okuZ6-yDlCP99hLdj|>3gSR;^5*my5y#%}YvbQ|axhTIe&TWASLC2g&piO$E zp}?{EG{W|x_{uWEY9(@up<#{pQ)Jmi^5BrqM!3VQSV&E{?cAyS4y`Ty(Q%3oTvLWu zvqe)6Y4aGi;=l?Is}l5GVt4N+t+-fI19|&xrSY+0hR2eoA=-sp%nmF$t}0JT6X;4= z0Kf1A3Mh9GWpa=_YVkL#D7MhhUZaz8VDjK$um%=7J}e=i42mKH6p#j?+EY~05i&|i z&$xx4OtvUY^|-~TcH7P0+U;8g_x8G5*$EXSVDWxENkDK8RnI#8!1EMANlI-+4zicE zt?^dsXdih83~n(oy~rjB-9pQrgKE&{?|U=m^scQ4jg0Cq@V1#iHYL3_`{;Thc0_?Jhf?G8}oRtF&!|6do*CGXc_EJ{ck z#nV0nixvrpts;{a(iW<_PiwO{7(KO-zb5XUid>F4%m0op2~>wIGZN#!&e%X~2M#4X zIoK}go)pbg=X#U_pp^dDQkpou-*U{XoMIc1*Hh#`ZtJ(2bs+2^xE%`6;2cYJ&etpI z`>kuTSwvrUsIueu_u}QvXGsdTo0eAKWkfMksx_FxeX4dGmpv>oPY3Q@23c}#d7;PO z@vi}YC|k=t0!L1B9(;;rzrM7ZaKia$fvb|ytC=(Q|HP}*GbPxis`whCrL)Fb3F*GG z!O{gZ-Kp?6Zx>3I>so!hYn2y?islb5Tfy=qD<;Ay^N7pLyfi_5`fHO>zF@~hdp91a zTcEU|=S7dhEYRcvhXmqngqw`9^R6b9X=E}o`Vizxz?0rc$_~ka9&(^C1~7+s`@2sE zpFV3+E_ze;C+=)~HzX9J-r*$H93Vb$x7!I)>UjV458{BOx0`0Yxyr{2yUd7r)R%QGv=(A;$vz8ADiXxBnpsp4 z7^Pm*WXW$I%dwz%I>Zk9#Smx{#f4Kd501Hn-z}KY8v%%5{xEnXnhs~|w-p-^e^B2W z<9~zYLPNk*QPL!tQ2AFb=rn@2_Lk5QAWQHsT^WD{K!hKu?z%WzY^%q1#;*=CavI6v z__x}P)JasIK);)|J zl>qt)A8G37E9WczzR@P1hXt9ckrtiZ6HN|=MsD(uH0R5>q zmaR2&ilI*6igB^-BQn+rywk(eO?!Z=9*NS>676V(YKjq~J)`Cp>gE^xoWV7n>wXx{ zUl(7*QQC+uRj-d|Fidfd|6~ zzV(o|{JUqaPK18j)K>ftV^oCkcI*CH%+HQh_=|&+gABxmKMi>@dZwKV^J4K?Ou`Yz zWzY#^h0`dr{+XPzzK6SSY(h%RpU-j%r|7!Xp;$=G=2GrJ^L3w?xF3M!9ff6eMu12h^df=+k2I4$wnji0!wWu z$SaAkvD9N?D#%LEXm+bnR_MNpYiHLcLRR9y!E#@oV%V_K>ev$=@6cuO0Ux{#L+@4! z9G25F3UHWXWsTlR5w!n#M3EO9hrmf$Nkw8PMq`B^?0x^zS!=bx{COq#odcoA z{EOp5>){4dt`5}fWfh8g~bE|M(-*mfE{q>#cvG7 zw(eA{Tkq$}QpTFXHiRNgM9M?Wd%w-!bfLE;g z$7&XzE>3Ei7l@1nEI*POm!8dhE*QK62hI`|qv@TDGnCH?c#TEvUrCQ}sYPzl?1_Xp zUYxGjJ-3!ru4x=-c&6Me^12G4zm)N!lQOJLtv&xsspE>ebm#`nd{K0Im1iJ;a zM!yP|f{Bq7Sko<{K<8AbHTllv?I4Vaj#z9>6#il0y;AxNIcby|cr0;SbR{SNI^>boMkekkh8KT?)KIr>%*)V1-yL6~PwRFfbcG@x&BN`&%J`HSKk zqoVgr;7I480kUvsG<+Gp@lN0+&%|%Nif5N*)(jQqDSfcg!+xK#GynDsv@}E|did9k zmZ4tNAG*9$tD!tr|0wdOxLBupUj8Esda1ZvM9XlR9RS$-7p6A-9LVql0|+-ce!B`- zc!tZ8TEy2IiFWG1A`RA*0?A1gXbbMBI=*S{JLyugG`bnl!d#a7LLIrf(D+PE=st1l zOcO)knJDi2zjRq8-Hi3{y^b6VLd1U(e?T6c;!Cq`ZD%)9Y+ zyp%;Y8K7|o5@kDz1L!Qs%ibf+yXmI|vu2GpZ#}@2_FfpH1o{9d~G5B)VA-|rwm->G5t0?LQcy$G{Yksv~`y0xRsAqND3X_kyj| zzaaBGY{~Zv4J;PI$jL*ILU#4iB>Jttjl#jE<0C{b^C<(&*{TOxl`VsBDC#k;m{aR{ zDA|J!d;B)d{*WV6>LZsX6R62~jKR zBt*{or`i?PUe>!}9P+#CRAgu>>SUuRyBS7nTX;V*xp67FFV!Tqe8dm-W#hl)U8R+K zi04X0?K4&ATUCW!jPZGzm%PMQ&@w_=b3CYdIJ6A*SoGE6+pVB$l_Ei zV=~;>--GNT{87@7RY6#yZ)F<*vyyPS_aNFm!SS^3Sc2D_Kb<;W>a@ls5&DWM{zmvX5TvpjFP58}T>os1h1X`6t+|nX5jF$L2E8PiMCk*DLWg4# zxs|-;3>MdiYcuS>gI|e#icZftzg8L_tEpE_@HcpxzkD|TzHxG?jO8J2IiI*ky3*0& z0-P-|Bm^;<^zUpq0)O>OrL9_jYT_A^33gl)?$5VBvLcUu1}!)B%`iMY?tSxM9|_3+ zw`!6e<>+Wy?ZWG)l9TOd!9!ibLaGdK6oytjo@sU44xKW}$YZ7_?~ukbENEOH!x)%z zjzDO%tbs05R8%~S>bc$hOna9pTF*8f5wL^dhyl1_sUP6KXJOLT5zYyz>^nS}QvWk< zq|MfOmu&-9M-eF$>YPw<4d>~jg;2$GbWj*oP`KS(_h1}l^NSNmAxlHwcEHb(ncS71 zgTVa$UN(hkt+)lsqP(_L^ks-2t_V2yVGaH3)~=RZ<>$!>M=?34Edc=OX)Vf-Qx&pB zXDNiiB#*asWawdKyAc4lzj6(ylr&|)!6@M{my+bM z4ai!zE!6@7;EMQfy(5i=4NQ6Qn!M=3a>5baSF4O3I;E-p7_vN(&dcb_EbJD~JV1EoXD|mx@ znYG5pVf$oC<^ttU{gGR1#b?uy9Y8i(mbpbO1$2m((f8>Cush2+e+L`a?Rp}*r zPA3q+KE@XHUt=|fgJs-?q2>@12D&J(Y&zLnU7O@JbseF09GJ}*(m?xIB#v7P$(@A3xgl8RT?VhoNqlcjz<#{DN-2c<|? z8m_RodVZnPgN!L!aZ&dxWMDr~kV$QHZhk4B7Hy4?O`cBz0q6xzvA4UabeAB!HhuH& zb3E2#RSW{FjqMm|`XEsa48d%0O1%kQLcTJNcH)(qj>M4#@$|=`LwlRg;@~8ZXcEN7 zDq?3_-RdZ6X?O!piEE*}fq^u7t=RQlz*t8^T8=6?#L1l@>{Z~Z(C@E4`Kg?C23zwJ z2uV~;NCfd*^(&aY-9;VsYAvB4Bquz8M9iW*(Z-}(yvxk!+ea-dDWT9#Hf_Fi$EF0< zO2pwCIT_B%Si8OQ*TPHofm+ZUgXzd=M=~s(2sL&Tep!EkPaf*>QEpGrA5D1?Ikd6^G+&Teu23Cmtx$Yy3}st&+Ce zNx&vl4k!(!!)J>__eq&8zeVuNca*|f94wrf7vqF6Sp(}5)2uO*Qp6T%T?Awga@e@hI;~|EDU?*&GhQ>oIw)EseWNS~BO@%CDl9+^WI+`%a)T$q^l-J`2K;OT~ z`s^>dSvNz;X!Peom>tZiKw*bgu?pYH3TH)v$UbjlgK&IKq0EPTkiPiNu||2_uBFX-)AbQlNjbSTUEkuv;J zX~9^j1Mz?5rcUxFBk65O)+aP@hjoc;yEHKg@eU-4`!#@Rt`yk@FQw2AzLCe}o$=bG znihC8z4*P>Q2ltWe*wyBQVbQc)pqrWhZ*+vhkiX++u=9vjG`3Y^=$EbRD2=U`vt}* z`R@SW67@vX z;EiQ7URg8x&+>%n$WzaWK%1nWe%%$vHBBPc&>Q)AeX*m?!6TwEIzOO|xC&I%gE0PS zd+jRo^JmMDhbqDP*8tNC<7w!P8Hm*wma9F6d|65YoUSiTf3M-Mt2r>_=m(@4g&u^# zC>1TmeAb)cAz%<-;~v}T?&;;*9$t{PaLc~-CtTn${})=3q3{&gvl~4)eyx;;UXZ_Y zAcuirlF{DIza|r1m>z-^u%{bqsj~)kcqu#f0ew82m{PHE!j4{3CQj0Vz>z&0pNwAE z(5=v5A1dA1KCG?l^;`IZg*8Nd~U!Jl~6BCsAc5`ijGg&7q<4_Ez;`{X9vcqANDwGj9*$njkX_J zz2w5M5q)oIJKZhlrqXH&Nlaxfy73)V+i1>R&Yq0=Aqd+RJs?0b)kizsjZCxVY2A1m zZ9|Ie{K;bHo=y+}al=0M6nkH-;4?jCQ4g&v6F|`N0!Nq*Lpzu}lCF<|xC4A$b9S z&ZkaRRaSF85s(lmWC-Pk0AR}cAfW{?N=N;9CTB*b^edRMK=CI21m?1=Xqm{6Zaa zdsJ$6j%X?Ym^EZtXj9~`ymdiEAuUhH4`-Ul)@?bF(uy;`XD;+RBxMrv1}1tkSA|8t zU&=e0>uE%fo8>4Z62@`v_noPr9NEZtNeG`*#`5%DCuur%mu|}I&dfap+Rq-k8`h{O zI=4Ac4`(twBgBobIth~A%Tfw2x|`EMG|-PxVt?WBswku;GTZvBhGsDsd@wfvVAEEb zW=W6H2)ho!)96gW7NI{)j1QZ}03r&-imJj(b~Rjamxtb-yQ;{Niodag6)A5VBpq1C z3PT1u6_fQ~6p)@QEa91s;Z+kU8UR)n*|&fd1%_+Qe@)R|1Nqd#>0%=?^Dn>vzHN~R zv8hz7unZgJ3(tGGwxeO^gW3^Yx^4&T{SNGLCncFR1wE1*v$R!lUnN$kQdgo(qMx~k zD&nL4mXCp@{9D*EZ>sE1tw>)SA`hOkbcU}LXDaYi^!p!CvmB6f0`fhC2{TG?Wmj!g z`vu4q^tBGM1NHYPS6}t;kM|>H(CW286p?IMnJfBMFbCqG*Kv@J(UIvMJ9q(@PX&7# zxmFd;9*D$6w}SaZatov%yT%B>^7Rd#s%_dmDHjhRo$_b*V23(9KTe_vt4Lu3LxAgx-6{RjHab_&Z_086Gb_dEKK1s;gIc0&csL5y`{yTqN9MsB!? z2X87G+NPQgKQhv!aVCLdh{>@ZEUh?!ZVL&mRQ@o`@hX?+!$pP)UnlXOZ*TodJMSW3;J{FHwZGiu0AV7-$CdF)q zF5F>Xlt>O`E^TKe@}YSWyxnsAv=T6u*s1A>$UcYm%Jj$}V-06MCTcP>M*PiNOT0 z8MJ2TmgYm9V}eWO1tYntwLS8! z;9>}owtdNG*>&pnjp+s7uXrYqqQBvK6W)T&8)KP*R9UBh#zC(cO-rfFbIF;+<1kCj z-AeiVzuOrG&x)`s=Zl`tmYu{c^y(6x7n0w)2P;>ST^OYN;z3jpQqhe1Az`W+7R?W; z-4R+KDccvEG!vx;kgiITI;~id6Td1uN6C;QD<>Z^a?mixkICD(dADGi%Z`xCwJt<+ zwsQ05ZQm+uupf(=pn3K>E2-%Utfieq zC;_R4yw0@A0TE?OB9mHmIxCO2kZ%^75GuFN_6HwY$*m$4acRbz1ceL+Pxlqo7ZLp_U5GSX5aA-8GLtMd6WD9TY9&jI&41j z55IKFA16=RqUz9&(D zk={7F>U6nuH52{V!tN}-!exV9Dd1%=z50?ChNs@kj5f@NAaSyoBfC`E#S`qIbGPne z#XyM~OBXUnG7pGkVxn}Rf|ve{pcJ@;@YeR^+XZvBj;%x)m$tat)V+mQg2N+c-LCTa z%9oDuTR`k)sI!($7}xK=a&xoGRn z#$1MQ#c&auz2`-qN4--G;uYWuq*c(WD{4yZYGbRPnRky&%_dEffS0Bp)!?i#xmP5j z!|s3kk&|`v+~iN(-s;`Eo)wV`27)m5m$SG{Oka(`FkZIcwEe1cTXwostH6&ACdxNi z?in62H++%i6|aNF6tOKEu?7vnGFr}q6!#2$TDDNf3z$98fUQ}A>L*lCsHSwP0(_5d z=Ow+y(jZfixB$`LL;e})i6-6aD^xyxt8yLHFXSfxGjT+IFGsM_+g~NbF%+ds{9&a@ zD2+r-(=mpS180AY=`vmW=0|vj7Mvv^%xMef+j>2;PPJCfaSpmx%nxApdQaJ5FtCUu zMRIw^36W5J)c?@ZIFPI>AspX^7aE7&4a=}(TpRPn5K1RNnaf*A@hkQkyO?}TjXzVH zei#sy;DyH|xE_yrI0-Elb~3+q;hA!-413KNLps-xy}ckU@oLc?Ww`77yJYZMrh+2C zj)UJM1h8)pE29Y><*|k0Wov>d=}R+6~K66YLed)6kG$0@-j%6g^j~OLK=f#T}9#0g52m39Rbdb zzz6XT-7`_eG_Fm#S9@>5q2;mE&FF|~6|ZtYO$)}Rk3L^l%3JQev5i3cS3x9Z%Vwk5 zfLwU$=93zi_>Gpr4-H6+zNy8@#S9ypiS zLjx+xe6XQuA| z;(n67cXzDg7>iNZmIxFC;VyZi+F$s+gL1ye!f1zY^qvUSsOfD|{8?Jx3sVy5TzR(7 zKEaOZfDQf}^*yGTfWmw<5oj~ea?~hZF=n?_V(2RCR$6#XGczQ4rvd;k~tKn$1yRKyDfvyBMa@u z|4yu>6aeTOlTDj^vZyMzLMlhq&j*c&&C=JF9%7o@8UAX?k&|Q zD|!rGg0leZLw`-Npw8Y!gRXVYk6VsDr9 zhY}0vr19VOXFI87h`-F+5NSSjj0Y664ZnoIGuVoEdDxRN!@(CkoAl$Z)&9luy(#Dt zG)oTE?J0Qr%?DI|ZGtQ5xESb6Td6#PhbX2o_nCH$hmj>M22qM!ozDkxlz1&ulrBT; zA?(`khOVw-tSR6WG!9E9OX|jRb&3V6AktD+ya6Mw*qPpZ--LbYW9oAKgd+}Sxi75J zyrR-7pwBJe>O`R)FkyiJc~+Y2aD4x^=$@_ZmtPL8V1MG&7ZOe0aAs%qJ(0jxn_IG+Xn%QRK2r7LJ}8L#n^mePO>1n2tBea{|9HUG7s~0Y|Y|9NopKEqxIsq+*uj6#itngic}YY42G4I3{?nE+dZkqWhv;{TR2ZxGiw zv}o{;#V%YA%E}*z0>}gta#6j|#5u}Cfb4euiySOF#h2Ikn#XY}$m1j%lRiY~UtFGw zdwdU29JQWWe7g=T7Q)yHnOeK%dd(rb!~Xa`AHvcUxCF*$6fSI6%3e9jB6>b8;AGHZ zk{#MvMp!pfSs^|FmwCU0m9jJk6iH)4jE!ALbmdde+cwqqcd^4_qI?})S0cm<&419C zj*e4f9qHne(A+}eK_SK#^Lqt%r}r{x_fOi`3p1ca-(<U%I}BbmvM$7meg7f-5UHXg|ojQJuk;w2|#{TA&j{PN8OGW8uM13 z)0#=Rjpnh&5)!%zC|~}Vcs%#bm^U_)u7s~!82orEFAiiz6K!=9MOuG+11o+BYhD*B z8uAg*d~g&HdZejRAzZS&$#bxQN4 z_IMV|9lTv*^rOdF?-m3(%yk(Ou|!qL#~!1j^z7WCS)&3rE14hT%w+)xd5a2rJ)7ZqP*vy>-d7o0~7LU9IjEn z>-8E3?luj-bHx(c8OvyEK}frv)CAEH;s2xdd|sAK(1Hsd_Tt?F1`J0OndSzu%hbgEbJ#UEVr{}e1GBn zCpWsE9s#ZY4Xz;Qsy&_wb@0_Cf+xgytWcW;(>;79!mBWI-r07rY!&$c2IwZTy^tde zf{6sPxgDXkkMzQ=NiDn$qBEPXU)|~ocJ&hp3Manpb2*Tk6%hel8;e<%Nb^qnZH;!3 z#qtDB(f9=Ne925*rv$Xrc%GR@^@5pAaB`oQ5z4;9PMwKjk1|SE(1F;qN?7eH2t!pn zYO!Wx>UpimDgZB~=UGvi|9QeakD$k<)SXnkK`a3qv4@0&6$!ekoiTk;0x~vbeHq^d z%npHh(VR90uV29JAd`V+S*Wck4$mfw%Jq?qt5(dIgqd+|^jnDbzA$r&Eqai|?|1C; zW2L(~HtgWqrX>CV@u~!U%GmoD4xiXt)OlKw{IoqOzG*>sG=}tSae5s#3jyg1w23ov@L@)CI^3;oWKpBJcld|pc5&X9#>(%EId@B9tdJ>pEHQM>E_M?jJj~aZ}UZ?c>^*v{jdjp4n#^!PC>h`BjY;mE} z=$AK#Xs~%CpF#0oyuu#jAzHevS)x#&^0!Ad*vC%#lB7KQNUH z5STQiFIxS8JYF&=H%(kG#!A`n%_h|_y)GiH*b7377u1xurS7tv1zIbB9U(;DyXTUM zz=|Sx)C~DzUEa$eZRq7A|5vGSc)ZU#UQEHc7>kVSRxBs#@#dic?rojQ?8{-%#-ql5 z4`2eJVcSWXXBPn2wzXoe@ZN!9e~2^Jc_Q`NvGAVO)VGcw5%*im3Y2;|iLWsm&TG;8 zBLHhIKfj{bD!%YBQK2xI*rLez=q?8R3w@sbh$~9*jF|=oDf5-^x4QHI@i$C$02;lW_{->_lDFIe8t2L8 zQx)apqCy~@If>_IOSyl{BNxZ)NsrDt1jYSydznY$@m$k@E}>68oY}-qp;Y5lqVSiiPn^Kc_9@3(@ zqctecb4~+b)sEu*BV76`M`>;Y?oGs$VCA) z(rVf@H})HzCtj3^*o{nWkNu42 z6GnR~NB71-<)&}~E~#T~LpngM)Pmn0d76<>8cePhO3YsL97=Dp`xTsH_ zB%r#nozUm;WZ+gk=)}Cj_ky8`OTVI-52R8tG_-xJfqABlVYMgyU_6gUV_6w89NYR1 z-l^@Cm2$8?65tX1DU&RAR4v_>$3W04L`jlkG+wNaD}@kVgM88995NOr}}AhgH(D)&OZ>`F)k(L86-KMN*2 z91tSPy{fZtXj~=UV1H8f*Ep;`8843%+D=)l$U31>2)YAQq@JXnjS_Z@JEl}Dm6}|; z82=g>xZY^T*?7;$1*dvHcQ`@Z_|8RTG5ABKQNsRz@tOKfa5*rXu4W|m)DmTZxkc7Y znKAg0DYK^~(f&C1-uSnec)AI-eZpX|rP2f_qms@mH5@@wE=IxQLIVZ3{a}4MbMZW3 z(JMFT=I%WaIa8J9x8Up6p`5Axl|1;~j4O*)R#<@P`e9X# zKmB*r)Mvl1JXwo}L1Y#`_)IX&hLk%K-V-Js{-U(T=Us=Yq(e=oXVlBe)yni`W% zR|YU1I?@jhGW`?QlaPe#Ipikf^Y?Uq`}jY6eX7wB6H;P_ z*<}2#Xs32(yIP0=)^|!2MMkI+ywRr%;0RJ&L3$&!%E25HL`(ND8INh>m=58D18@{91;d) zdFUuM-Zls$^7*eD*)}X?qoU_jo;Pix&H+Ex?*9AQG^TvfU`(A#eveY7evYQ?3aV!i zG+0Vde?+%(3i7G??d-&<1kSB=u@+@#g3ezhR8IVXRE)N^&h>VYyrjg)Yo&Jms^ZZO;EvJ+Uo2n=cYcNcZcf%ET= z1DBPcS|d1!bm71 zo{7DsL;|Qh%+At_`zo#}?Xh0RGUnC_4g!1=J+Q;o z1m~-3?i{L-${q5d0~YbbVCK|9?a$a^j{wG1M&}S0PRR4`0OM}r4Yrfp!fLW|+CBB8 zoa1;hbtG8l=G)0oG_?W;Z#n{G+IDp;L(TQ|7<@$@pc+u?6uL04N4xnj?>aGAG@}Ns zC&TF?40EZe`Sc1};>4X)^@|xIyjor#)hNS(w8Crw%)e6WG zBdE4Jm4`%^|Fv5sVsbp`{P#aTLtlWPvDIOy6UBbNrE{tWK1t%mpPO?!$0pmA3h$4O zK!&(T4xrTcJ=fPwF-AA@@Dy=c$?{qz0l5*mPh` z4CE$tY*Br1yLKz+sQ*kCT@`7o3Ykm))6ZWc20CxH8y=Z4Xirna`v>QKCkmIn6c1*f zn0+-frA9aFj)0UoiK%(TIo&&r&LVbo5TF~vZE1JObJ6B|>Y5z|rt`YnNUVLuo-O99 z#E4;{o>mFZV|z0(t>1|FaYo?QdW}y5E2Hy?YVVGXm$%v5Woz9vXQNueE%2eX)n_Pu z-Ajh=s){m-YR*`mw=&%G_x#EXnYWEX12g8m&BAT`r;8}eI&s^qqU7IxZ56RcP2F`$ zjxyZOH<_i?7y5eTu36N)vo#Dt%uq`;cA!0xuvbEWDn+-7)u{_2pW)iK)w2ax0Vk$2 zAP`U&)`r0-LnNx8Jy+bnCAIuzzMCXoFppY6drDBsW{j+xEFR@Cez5sen6_(5vU$IJ z1&Bc&|8#)KAEA1y?=&o#x-G!?N!Upen6w>{PtW9vnlx95Mq~}hBmqFlMt2R2a}}sz z7YAx2pt}Q4zu~2)=YY(H;Q_t=$C)=75($2RfQBEAe7SvqI3|<|+P*mb*Pt8Ied#D^ zq^t!jB@k-*HxPd-?(pgkp86d^qc+5^cHv^%cdQq0UD?bBfJf;^?%5MfDtT=6pEfFG zQnkkh({xu2FV3tsY~893gj8zwt8EVoLvl|^3R63qBcKec%}A1cT-A=UCLqx$23Iq- zhq-P-7a|$+bW~AEo@y&CoZlrZB&&0mu|0f=OKY-L&MnPL9Ec0H3~Cr*#iV{$3$)VT z^4&W(C7E&562)zU0R;b32_59=m&7iT(}LnAKpqRKVI92Oy@n;{Qb8!Y? z^jRm)3v52k{dfl)$+dL1n_cDq{17U)i&K(q6UOMDJO8vUA>UoCqT7iI&w19^gg`C#O zS4{y#a84ot7O*QEm)I9C$6aEO0uUWZXT)LTa)Jx(o{}$5$|osjQAG03J%P6ka7MJLD5#t5dtL}$W!&fco`lE{lc>Nz<{qRPPiIbdBCmh z5*>bh4PM89H1>{Xcg^un(ed_F2kX!h;w_mx%_V=4m4~7 z^-eO3+o61b^iKVGJLgT-3S;^AwBexFN%>MpWRedY8kp2{UVbU{Z7e!)Kz27>9XGzJ zXoojbmLR#D5<7gyN`jls4ykmBj>wiYlHn1PfRg5mOvQ$UBLl%O#yM_kFXd{@^7oPA z$9DHnMxOj|05c+<9!t9NY4sS!ur+U$0uMb2( zI+c|vIRKTAaevpHXr6q|-K5NObQyUFfjR>ro6C{aUA2f8Gy!4%Tb)1hW=&L7H5TK5 z-c$oXRvtuJdnlbbs~wl_`#dz^Fy_}YKk>Q|_zKM92{AZ4hny|Hsahx}xp#u_GKt*# z&rpIy=zo#4&^1iUqVQn9W*xgrtU-uV-UnVzcr)dXUAp+0&BL=Ob|ROy#wy=w?K~dR zfFnV4^sJNm(lj2z&sAd72aS&DVeM-x=gs&{^1a=vhcMY7EhB+|l;ie+n5a`}7kwr5 zRzCb0aGO>SJdZ@(i(2S9QD2}~GiC>;i_O72-plLUVV$!}Z7cZU$u1REFH3KIu%nJk ztCQuI|JX-k*q9hex8)q!v~LC7BmRWJ*^-qQq0x+XPKVB+z5`3%)diDX6yrDikBo+t ziYnfoZ`pOu>B;G3U~Y;ZQ$7sf|A>)Gz8C=LaX}y5frd_{*j1w-ikJ%k&2GHTM_B&@ZB?-U5!lq*iMR*}e2(+Ovry$y*K%k`wUq0i2 zS(!c#SMYK7zr_7K5PAZ?)aoTS|3=nis-j}XpB-*p6NXYp-u@+Quyf6BqA)NH2`PKy z@R8XE{Vk8sd4(ei} zB$48ZEu1du7x4dtz%25(?iu-j2p1jsPonB#@lSQuj-1;W@*Yh9$9nR>zLovneh6aU zMWp~mQvs+{9`iNcmeMsCct>m^o5hOh?wnOq5cI&c$;My<5u6wPGpvCIrL#u{{GJB) zaQi9pBrfL3a|e|Qck({3C+dFfjfUvGvh7Lv%^S#C@+tgfjj z$-~O?^5g&Pd6F}FS5dr*(&+;s=<`M@tz>X|6j7)KkdB%Lp8Oi*$}7h{CJ7MZZ%@t0 zZVQ26c)CIox`Gd(P4Qyu%xF5_CLrtQEbrcw@dB*2hBL#a7 z`See-R;xU)z&-zTi=cxEv19(OdRZlTmKxOP`J}NVm*Bw0V-fQU{`UA>Gx}+i?6kt_ zXb(D@k?xto%wDmlC7<2bwIz1(Le|=f!Tp2XtnV_6hA>F=c^7DB_(gI}@qr^*BzZZT zA5^Zjc2|vC2loN{K3peGD8*wLrvyh3v9bNiLPS^v3u_k{ zZwFwE-+hW&!QOAS+tc8mZDZS`jrTlqgHZ}WFE5>#Wi{o*G&jBc97$Joec3Dk)TG4^ z4E$wI);790yKvdTT@;~2urMl-gJ>0;ZB$)%;8ljDH#CaypWUShe97sC^B@KSiC*Sh_32n&sb^o9|KgUE;#)TWI%&Q+N(scDd;AWb$wf^Lx`iS-U3rkz=Wj2Yd4+%RT zf=I|s_YxVY)i)5cmwRA5p-)b4^>Nztx~BfjiV;;Mw2%$tqb2NT(?=~gd!7!AYK{Lj zn?oyqwNgd=*)S3S^?9#)mUz+O(2BXeby_ug#sK(hcE!rGxl!G-qAMlvfUV&xiHt^l z3jBL<;u+DnaV*)?#xk_uCGC_j6g0_W%Oeq-#Bk zAIEt&eXuP6pr7(<1N1hwq$MM@7)G#o&rc(PySG^dM;FD9exL*L~+SSYZI)M z0_Kr?HPTW+-CgTC%z4or-z~?ZDwIi{qv(o0IQrt4*b>nT_b^uLn0>2VyGbn0A=uGK zaSyUE0K4n|H-ula(7>npAz;5XT8?0RTHs1xdnlDgg43kWZ)8C867n%fAqHh|^kMbm zWy8*5#w%wzAYFYV@r98Gli(Lvqo3glEDJMlBnayAh13YIyl3)_Q527(fh+kmALaQzk##uuehgev>i6 zvoc-y-Wqv@{4y6bAzq+zHS$ckq>cKCJ3Ub&3wEJH7u@BUz7PvtvN;hvEXbozS%QKhW?Uu_P8INZ-=5kJfq~bm}2aOwqXU6~<1E zo!YAVm_C#Rcc}aqX@cJkK)LuhB5~)K9}5m_bAP|v*egMH(xE( za5V$JEpp1I?+tb)oClfxBzMSm!nPuTOTl2DT)B@|L&yX5r6?{Xcge;=VsR8R3EtOQ zce$pWYFO@10HkX)O9!Szqp_eNy7aHJr@?j4{l#aQr;f8M-Hb@ml59f2fN4cl<`@WQ z*!g_qy3F|Om0gV1jpH5o880z^(3fRKmKXXMo9mlVTv%YEl2MVd*VeQQfEZXnB4{xx zX2~T~0Ph{`untN$xv2HvR|W&ay0rLwB>YY++95#~v~gI-*}ix`X#QqAwY{wKA;fJZ z(j_aO_!e1H+qBa?U=g%IO^N;xVnN{+k%^_7x8Tr`MN)DH)!fs`-SGs;yI{A;*{{ed zN;RZ6AvZdfKHk4AER`$t;TXeCawRj!aS2z2muXZQ|BW-@rjG~FHn0{%KaugR2@YNh`O2B3gJ<PDWS}LKST30>)JnxS(Ql9?f^#)wIz8W8Jts{uThYu?# zN-T#0jxxrWzI)TuSZb%3yhe1+n8_yMG@E*_vLz1_{h~;&kH&ta2lrNB6o2S|dD;6F z0AW+U%cCfwZI&Be}tm@eS4f`TF4<>&6O;g~Q#sfu9F)jsSOy>=KYwz~E^VX&TA zhfpr%l1{XXDyY(;y67=7hW>(JV38yQxR6JHo~-D{e`P_4A~0i9^G3`CMMZdjy?vBB z28s0zN{z9_-ud#(LvTiQ7B=g6Et_aG>m+5})(CI8{K``4V2GPkroWh+LPXsmBGWTJlW z!1&79dxBl8(pTz`>Ah^z*=r~U-zr+-Hk+oD#0BV>1)O-dG21RxY9+vu&qHgh=-6wa zBUrYDB`5o9JRLrYtsbGkDo53lt3W{=9=7LPtBB6U?cKUQ`C?U*L#qW=B@8mcgHuhQ zZf&3LeYy-`8t@E~hOrEGbqwwZ3|(sIO2t;Xh-q_b>XMKo2K!=AgjkCtThxq2sFF?E z5lhO>nJeM!PUbep7=feuHT?r7u_5MHlyBw2reP%vdu8s2549X;mOI4;vWD_jYN2-R z-lIEegHWKY3hu@X`PMi>JCbUM6T@r>Fg=(Y|CNe2zhbErZ=5Y4;=}ku=~LHrX6m0# z>Q@uL&hKM%yNF3gCSB074f)^D3O1N#n7QYL9opS5zy3h2*SP6R{A9#`{5#p)94NfGuxapd!iSkxpt&Xny)4Q*Y3dT;&`>3NQZt?~W03i`0 z3T8|^8=5HG=zWkM6kqr2FnaQ<-k?1J^<#b#LsD`tPx%x0NwhgKIjY;~8DlcSZlB45 zl!=AAC}Hg?-l#jikV<+axZrm!PKCz|My3JAf}?KHVm6&VAtKR7t9I=y<#tZ%A*PLK zpM^NRYlZL&pUr+1g0LUfbg#(Y-$o^cNOTEONQVRrn=VUR5G|^{$D2H*68QJ5PRl}E z=cQ^t^Ar2#JpgL&?hH_r<+zPk5zh1w5JNd}fWXT9BZMyL03}vMsk&{Wgy)5)iB)g7 zI7o)kqh(x%tQ}QqkBY#bZ*r$=!|KJ_r~Hd4 z(OiW!UI1q0eK(7jrH@MBRG}VW5mXg ziEJ7~OdLJVm1(0dbHW~Oe!*4Ph^zT1Kd%U^JupAWQ4 z>LE>b=&+^M^ViFpm1nk4f9K)CX^Gsr_0YgWwI&SV?Cjva5BAZFGE`JT!K`vxE3-sz`fMPYCZS1zas%1e|t!rQ>Fpk2SEy-KLqN+oEu2x z(!h^#TAQ?UhbNEsGTPkQnI5055h}vxr1=01I zLtBl?rFCrhV{MG}V#Fjg<}V~G2eyK$f$2NnlB;MspVB0Enh}W>Xff+9a4y=ddDo9m z&_;(1{@2EhzafJXPvUCqe)Z(nn%!`H5L4iY?iCV$K69IlL zsT?e60)BVumtX=10zzPjcqx6ndo2>xHIs!PqdT75=I5ka|JH{Q=hd|ip>$@HnKqe2 zx$j)%0?)n5*4uq^+BAn*r45?*1!EnTjgCIf+`-kwQ2{Z3 z9H0-94eF0+W?Xmpg;^F|7!97m@bU8Hs5*}^iv1-e;>L9f)Wz(=pL71-@{MkhKI7Y9 zTpaLaZAZM%j642P?#43ro881FJuW{8=`8&?=W~H@%8+rO7m?@Y*Us2Q9OmLllJ*ew zoSd)oIlW-~gb_7Wt+EoF8?ra??l9V7!Wg}Fl@EgS! zF5b@(=%Qyf5*p|AVhi@Pts-#b6zM{{Ylm)vT&Zo?8GN_ZKovnn)_$1tcQf zH+#YkYw=>@JLu6~iAZ$GhqycK$3t&Bytm@$b)Qyf>vO2;JrLve2q~deV6MtET@?Nl zW<64#=wh)UKw&>^63Lw<_HTXi`LSq+P0Q(r9+aRqVCnsoaSk07G&uA|2+A2m?YaNW zAM&xD&(=sCTud&J`f}Ed4t-yHU`VZMz*`5@`2Y%U9(HC*Y8N}lgxd~bB*K&~QQz+a z?LXRU8Lh-esgTQ2D)=_r*HESotDfEpe&AI12;Od*lB(2LStYPL$=+<-h6jUCL6kMc z%xG7|?Z7xor2A;f`DE`u-r$CMXX(yJd#NN!mg^jhu0G=33GCWZdd zF*56DRmNTT1sdln=8a?8IaLL+i~WmkxQ0?BVop6NeF)pXRC;jSuo@{McA9(W}P zG^|!ewBQie2Oz*6o+B@}Q-e7t^!U4T$Xa6HydBpveFjdAU~;Six~1pcI+R1Tu^ky# zwVIxW*IX}?GZ8YDUkEBFasqSSdrw|^6IR)ni#CvGq}z2JFXCr{5k%4u=}tSH7up!o zq=d;z-i~Zvll3faI*OuU$UW*0x?4^y;mttehUfvuFAtBvYwNRx!rWf7Bu_EitT&*9 z?K_#>jgbS?^7$Lzzb8!coo>kD?*MtnAP6hFCg&P$%pS@%h>6k>(tx|mrhx56odsNi zO6}0qOhZe}xi%WoaMJ`uZ($SZbQlDTz^4AS&koK}zHEN&Q*w~<)bqKmyp+m`F@!R3 zDLc7#VXg#uU4j*2+Q=Gho}Ss3|J&k^f|~G^c2P`yEw_pY044}w$Z>~_qhP=P##l%m zhtByFUMP8kB*WgelsnOT5@DZ}za*3VgKpulVde>MyQI;zW^TrG3VghPy>fN z;@q#}m?oesVYMa9&|V9)N#3U`U?-JC>d-nIphn z@;#Jj_uhmMx{73|c5sVTqI7TLqX(;Y{Om86ma2fnF%oev32vSKy>Lz@MA?r2kO(T* z&Z}Bs>jBnf#v$v?j%5N%%sGnTc%R64o4~Pz45+MzD}y;mc7ThV_Jj-Td<^Q|!o|%g zg!iryf@t=HXVXc(w*2qTO-pHUNcSmR%;2b?0LyLqNPOP&K9CWC%_4^hc100VvMYbS zd)B~yTn$}&dFlB@W<&tS19;&=N{F89;bR77j<-6V}VLNrr;Y;6*310JQ!kJ`y}ySb2Zpl-LWTK^RWl zgQ}Tq_vs7k0tcXbO(FG`VorOTHT}aFZNdHT*4ohgVNt?-v`<;!=X!G0cZE)|-$z2f zqyoI~ov7#@4iUU?DlRvbekuv9{=Q|X-Rz}kByG#lE{)#1;eDzp-S!5=YKSBbH3z{# zph&QVpfHtZw{*1)-}wI}N+JG<+~?FAY{9;6(X%0d9OT@E?ZZ|mVdu#nV`1s5U;UuF z&qeSUNI*l~odUuIhfdVb4%kwrHYxu{@-{;Uwj2B~UqeW6h2kCKhoe7A?gtsMi&52C zazNgT(`4)=+&FTcJ z5yyTGMAi}58~WeyV9o_kRTh&G3b`a?e=1m_5w;P1pl}k(0RKM#z%LdtYhhLavNwm* zZQ}FRjgVMYX5uq<_O4}ZsBwf*S`5|j?tha)G|xjpgcr>;C*p z#6z8HgVe$-6)@VJ_56+hO2&L4tIB&UXVTjbIHe-f8lIFH)6ux>#BsC~&8#$Q5Ft5D zubj>(tXAQ0M;l&W?*7Y-b6`qxble86J7-?90TW>&sOfK&rrZMKYI%RAi=h0?gK+Ze zzM{=Y8bsus&eRx?qosONcSuc+Wz5d)3E=Ht(CEdRalIbEL8J-TtIaR_6_Ke?$6+>|p9;_Kt1!3k7EH7!nX%B~lWju{GxGx@_vt zxHh~(g$G|PCIF|MW77*hNJJ;kiVX-`5fA1UE}X+Tz?B5dw+4&q-x`C#`~BhK`6L|I zi?WWF;umn{P&M)VeE^P(!kww6(_9jE>RU&EF<#;j5& z<2#M%fmnjd^7!wcyGy($K(YKPFO&LedFU6vks%UPhV@%N)o*a_8Xf9IdZP>L)4(Lx zyOSoAD-kM}s|TxMm3(cx$P>`9SZacS+i0<{ZW-^osd%_&kKj3~v#IU>?hD3?P-{C7 z+hJ-H<{HVzp28?nroDxQVpZ?r(1bZJ(Ck(ZWQ2^Gpr3EhDo#Dh2S9ippCG*&bOv}e!<3i&753+Id6x{Y;3eqA}(oC{B?;mr#B9IO*rm|j`~O$k037~XQ-Py?aEL{iy2#&CEzG!%L6cfe2z zccbn{r;=ku!uAcIlIXD&Ip_Am%y;@G-YwOEE)iy*Q8t5b?DE8>XWebHje;F3SdC&J zB|Ru^^aCVxxsjw#f;mpC0tY-vq7|_Fvhi?p0KMfO1!b0594GMC#a3xiZ@0FqdK(;%ew(gO7Ry#t|5DoPJxuhDL{K+{3MIJW) zL$uhSADkg8URI)H2$&c$Up34ROZYep{SEU=iQ9uIUP^XzWczmc{SoCFN5Q(ka z{Lrp^)rG`^qcm<#uDbiWKraloKJz0oY;5Xc5KBm(ZgQ~LoBoome;{-fWQgpO6*I`k z#lx4UCQHBrk80?=r}jxq2Wgw{t@;=^fU` ztvqae7z-D|m|I;`V%?Ol`InvPjJ{HLG59lE)HsGwqW=~QVYIu};0u$y0~1STPNgvB zR%YM%Q+XG+Qwb88Y5$UGb7;_82jWExB%R5TB+L z|G*CE0+Hq!0)*b_h?Q^KJM%lJnY9g{;Ajby9t6evRIJkJ({>7O^QwK+mA9mEbC~6 zDg>JodcA6=NPR*0T%p+(>bgReTy;Zm@cH1NQF?_`;mg47UW3vr#g%zxEZsDmf(q#s zZDW~392n-oQXOqM|5Eh;dYAd~tBfPxOYg@(1rlV%QBa?3i`CRnBa>VsABm2NGN=9e zVQEe`<4}`1m3|TXPEm0A#Z}U_d^oV$Jq%!C9M^h|bOr&yfWbEb(Rcftbx*{q5RF`# zvvvZvGK!C-Y%7oiMOC}p*xG+^&V`Bbs{cwYIlKOg=^Gk<>{Q*$eY-M^kU>o9Iy@9i zAssAkMgyJI>e0XUrStzGgMkU7gE(7_7~Gby#xqX&y*CM{xl-XYD7FC~lBac*+nWjd zLemWy7y#bpNV5Qo6INR>bng$b)sK1V)QW*O(JG-VIri@{LSA}M?KWVWQi;Fxk z_)tjyaw~Qo{Rx7bbF@=$ZJw2|Nq=_soyRp}>LYL}YXV-ZIu4Js}&K z{ijrytxreBmBdOR7bEPL8YL{mkoaJ@Oo=g|KvaODgTdh?~(+U8lWMgetHX^#( z+*PH@21}L$CFX`rG!?0fqzob-IeW2)A91@l*vs%!A>IpE{g0277F40+J>&948 zMsf4U#JhG)y5^^CeuH{W9b|6S8R0PSraO``NOA0nHpaZ-n+DiL5K_A2^3qlhJAYP3 zfixhe2drrho$Ad=|6@yeG3n+=P#sL%73fL-@Nxg<82CvihutS;9@!!5Vv)A$32>06 zrXiT?q1WWaeALMB?_9h*a{M7CD;roS9Bsq}4ahfTQ;p~QF3hUGJoBMqg`V$_NE3TM zd5y@hVJkS9k}d*+ZX=q4*l*Uyh6}c-5CD5*+BHsLosAM8Is{sYr|0UciuA@x2rtw5nbAF1Cc)0QM==aIB8X)xW-D8O?8 zD|!mspW@x1F+RMmi_J&2pOyvF^nmt@vFf*6oRe>ko%kuPgRGt4f0Jyr2)xlJoaIu^ za`zoI2ab;ii4iri5~CtfaeN7qfUr)r0)s` zzt9E_-CEc3hQDofa-&=vkWCcQ2Ky7yEdVFCV!U{b6>6az)30;Ai2rK9eGSb5%lh~6 z5YgG+Rrqcf>FuAm9&_Ly!jE*cF2A<=izC;mL7(LLQEWV|hO*zOqGt+|Owt6{b$7nR zQV){`U;$(9b&0rB97p*^xrpB{)Y-G&PSs!0yT~*01^p`e3+49E4^YO$7D?S0wd8;@ zB3Ddn%Kg5^k_>qF!@r+pL4E80g(Kb#WHX>a>u(h@mbYjk&ef%2PDeELAunDR>Sz&Q z1#mUPj-#YN&!8sCja6mw(cI1stT`gw(<_Lf#oIx&2nYwzV+mq;eT z?{{Pmii>Du_UH$6;(!}wU_u(NkNE;!DV__BWH9LX^0{nIN2;C~=c5#uf`=>FXSGe} z6dZtDW!uG1D}5AcKDy_p@(6~OS~L#YHlaL;+yGSYaLX!r9l`8RXxAig%b2?zkrwoo zN&O~R^@REJ60%HPY3Uj0I3*ul;!DB|ED2;xnh}oNsjp;+{dyhsH&+V^G>RxU(*nB~k1AZ**%!HZ09yq2E)K zK~Uf7#k90X>*Vi2=Xu~NuVdA9L&kk?~Wxlc^{EFeB*={SUb>FDsd$_-pUNE zRVG<+?|MxO%@7dTBn?Bj-hI^a%r{0-5?3-rIt)5r-Ssf-%aN51d)&YT52g$Y&k4<7 zkzF4Rn#a`Ss`HH{({X{6V53gkksIM8Q90zuQ^=xH42bn|FQsfMwS{Q~!A_Q0$~}>& zZZI2Dx4Iz3dkQu1SqDzDhi#R?gx%4h5G^JO{b!-B+^!byEVz$dvQE_qD^(CU%Ni7r z7G5?pR@=DGfyo9~^T(D)+OxVIN1gkpJMe`OkLY1YR;V9*evFuvO{e(S>f?LbhvpFd zU(m_fJPA2{i0K!ZZ38_4az|>i>0~$yIJv<1r3ylaG=PO90i zROv5-P)8D6Oq+;NX;nm&MZsj9Pi`I;0RI^9L*uG8WGk{jpEy&N@&~JS1GwO7->AIE9Y>{62uU9pj9f!zxED# zf3^4XrBkqke<@6PgPIsh1{d<-4@|vqpro7v7x5N-d~U9VJCC~+e%JpI?^>v1KKcik z-M)mt^lT;2!(>l8FtDxFq>y!fASTq<-O2wlw76IR=YP-MOp_J$DV$7@FY4=E6M8rEghpEFT zzOvrliZ<0rM<^vf*EIh$LTlS zYbCejKe?&*(nxX6d8hpCI5_vs_t?sy<4bdM_rW-_#X0B`Q_gLkP-;t^rpG%VBXkI9GpYRr9&&Q5pxpGM5@HwYv^HR zh&P$J#QO{Q^D;+d|DWG!;cLZ8DWUC^yi_Jq z8SmB4Um!Iws|IN!VaR3r$3wP`sf}A#)%27VRBJET(vXi3L_2%V=&ZND+U8gAatMm0 zFd@**8~dobzN0x{j|W_{Bu>tw*fmp5j=$>GoC%5;f~jUi2oSp85a|`eFc(Y~Sa;D{ zV_-9Z0(+Otd^*1+2w&@XpNAKEqexug`m9>@zG1zGjG~-jqHmwWR-KeWwr-QP+zK`( z{9@X49%LC-N?INUrl!F_G#eTKW)D{QXiMHPt^+Qt>L3O}6!XF?gA; ziNc7!%WFDowg)ip*X3)up8tmq#2pTZwSjvt0_8pW`?+%d2&mdA-}?c_iRYo!vY+lB z!N4;!0!}9#tKj9aN~k zrkl%G?mo$Bekg4PDDnE&J9uLM^kY%fhXz0v5u*KA(G{dxia(OhFlR}+k~%js2m@Ov zcW;iruRdRdV|AlW6c)kFBf@dZ7WHGbmt>2Ug%7f=6bPkHGz?8ape6h_NYiu9`R-;J z=j|5RmN@{~+Fy-<4?pfZCv#z*g!R)lD|y4J&Yj^4*u2et>S8A?cFFJ;i-8Gu;+McZ zE-}*1X7sd-#2S_oo=id#aoQ@HikK^y>+bCcEWG_#RQI#@b<4~bD1LO+)7*}(4o4}H zw*+e3GqB(V3j#oNmHc1LnY6`VCQ0enX5ffC#xl$>q)b;!Ot2{)k=Y%k&5Hm|yB)e7@hUYw0p2MJ z%VS&sPko^-w&Zr@)nTG~+2>-*Q81Ua;%Gut@WIOC%Z7e~tzo@5L;i;@2mIySPB(1b z3dhP-&&r8HkSuO2BsTEf7%j|Vld8tA{{T0yX>(YfW_^pKXh48#9fIZ&@uWVM9n1@) zKJ>!Z%T&xjrIufv+jZ+pj%UA^Ky?8DXv#tXdD^23x;=rJ-;F!JZrV|QLEOssrHx3` zio23h$_bzywb$2CQ>?P)ZH5|go6EA~{u40W)h_)%sO)tp>2p0|y_}ZUS zle}iG9|6?z-}5S`8VUj-6~O?8H+5~XUnR|f#3@sq768>BC3$ll-b zo|DFe4`0GXL9aQlQ*p9UFepIy5F)MX?2%QMaW}{?p~gVJ;51PSqV@%wP42|I`F>SX z0{lFAqEGM8bcCIfg^To7<~9H&c}54>xH>tBSoJxlAz=j@4{c`1j_Vm0<}V+|rrlZ3 zcB_61Qi@`A4Y*~NUlG7@q-}}X6q*sFZbQ()>WhkeoF+1%>szM>r+Z2=*Qpp4rrwOY zIn_cFod(iath+CV)Cp^Zs)o*)D+2dgH8;k@%aer567KAa=?E)jHtXG4bHsdYgIUk8 zY2BXg-u5NX#O&a4fV{OSL zfJ1&pof~=xzVZj5ABuS3l|LL~FZu@UlVy=}!^A4o7io`K&#Da#h=#$8Fb$1rs)
xT89v;Dq$CE%A0@>>rEIL58{crg2rA5m~I=#fyeeCk&qz^-W|-!>s41XyS*9 zN9=S4248=B7TJep5`x)bBFImku8F2!zB&)CUsB8h-6*b^Wc;&3MFl9#DGI9rqO3}M zvMT9cc)bCLf>?>Ca>NV-oeuO`3h2B%?SwwY0*}TOrzt`8MY(_jZ=Zueb@-Re|LjlZ zF=qtx(%Y#s(=KfEBi=G7^fHLi=}?2f7=A(B(4k%EGejQU#wZ`R!s|m0#j+_maw@K8 z^>he2rx7xp3SKC9HcMo;s3JEa0FLy=&{ycwDTxK)7G|@Ux4J-A?*`Jlwx-CY55AyD zARBd3e^`e_`5<5I8sNqZIkjs}zT;9TG5mDRVs#JOs@(RDCB=q*psw~mGa}6S3WG@} za7F8s2dTVk-FC_g=b@s(4!pz-89SKX!jW92-%5Mmq>fnenE;>Dc1-pt0p^7iW`>d% zS+>Jr5$aFvA_DD3#W%7OAvZn#;#|L;;#H5UeA;^3#u+ekWx&U;2|YjL+L81E`C=3A zo`|6MG`9?{Ka1LP4f(4{wd1<$1j{gb?#r8m1A613C1}DMkx$|ssMtq#fjoE4+6v_Q z?XiaP7K(lOO`5JSeTvP-;sKZi+>|@k!jy*A@lyy>g~sPSa|SMY9P+tf*%vb=j{+*; zT2&=MIG>RK>*kj(ce*i8L8YT^afr6m=r5?-wYCobTUib_v6eeVxv zdLBT9ZyN&(BRy|f`!LbooiPv|wgs~7kRct5qX+}T4GGWmH?~Gv$6cgvI$@%On*wG? zq8kjMNHL1NSkqFzrad{vw4iNXY4Kgkj|>Luf;J*OdS) zHELlJDYIeS01a6~dbc!#d>C_5QH@qE9pCsI#oA!RbCn(31lfvnTDz9v>Xk2wbw`Zh2;gX^eS^v z`|{a>h!PLM0Xem^0UioF^+?^AVzl6ivcMOi%LugyFcT)*!~LOb3+sh~Bkj%ij0S zN)WqE<)vV{U@;OJF8|ZBf4-zGD>2FlES1LkGg6Kb_eFE6m$oGOZ4tz(b>1 zg5lFUl{xVhfzuOh3b|qRDt?Kyxl)x)M!_&;w=jaB+uh|m&Z+IzD~5bD&mLcbp#G!6 zL{24ehcLEJglVEuk5RMxIqV_f16yJ%Z47tRWTq6);0SYWqj0&KC5Cn|f*0BF@n2Y8 zig;$N<5-6)bt)>m)<4cdg2LR!ETlLMQ-UY^(Z-s0=$4{;$N9@Q?|6Or4AQFdqxt}b z&J&gGbNTA3Zljj3+!7`LDPNQy*U&p#*3$9AKJ@TQ_6=^Lt*J-JI@hx>p6P_WzqlcD zm`!%;m}8I(6uoG)%N1-G>98;rC#${W@mqQ}4}1Vbyj=bL2IWnLw1fb@v8Mv$7U3Mg z0PelkjvVIbw}F8x&&+AVmIc|*Dnq#2$DLTss~9v$dcPs^EzIiyy=D4PK5#m}*r;W&pf>v*qP}UefysMFc#yK0nXL80M-OwPWjA!BmU;GqT5w;8l8d zyblW>Tn_dHHbwRLWYnjaDn^*xY}RPWA>AIJeEN$j3#Lv;rTQAHZl#6LLFn||)jQJU z$y_gp9-TeYvS$n~rPO>o;^8c}U?h(1$d;|48>hW&(4NcA)ktOrJ{9En*%NqI`sspD zlGu^>-?Air1R}(C_(9#=dRq=)(+g^@>tab5%Jqhj*!)0^4G2%kUfgELM?BBuN;H%N zZG4BBc4XvSLG_N!0Jja$Zw-lCnk4;TY_v?BqxqTwK|wq2s!(w~58$=x8@tV_snmqH zx5jTw*urY70aWDh>NGd5dDU$wD(xO_;=8_dMzmqR>ZQni% z1CZ((a|fx;md}ULZzay{}6;7uPV z?Yp=HHUw73rgmvVaZj#B@dviqnU3k1^lk=@iy5#oKOJLAE&S8`tTO?O6wV5m6EX0; zm`}YiwI@&}Y$(k4fX7{VI)mC=DadhxT@2gz)Enjtr@0Lgft0o{20QmwYP(yFLs0os zM{H3Ed{^$rVSn-on{MqQs#^xzz(toD)}CHhc(SqMeL}kT2W)QRfHT5O5N1;$993=5;v^ z5%_^PPvZVj+-`-3E*v3Yc5QnEHn4gmYas?Dgy{-_mE3Uqs{ySsAnP%A#gjsqd63do zjMufFNuALA4@#wV`H9#G?rc~LCb30nP<1*Z45CpgU)DSb(D)nGphsTjiGunO1`nsg z^9G05+Bgqy3_03QtXMFx`wm=k(y7KB?vLr!%Z|4BBNwf`&VOENNz42`z zr?u}y*N>ovagqYBxB?;?KXcd7@3bL35F5sVLTgDgb(!k1r6geSWJ$Iq*5qf5nG? z{t6y>{TN&_+73Bo65tTrYpq6kkU=`Y?!_$2GaJ<E6Itj(`%xTe&@UC+L63Q)>pd?%L!rva%-}!rtqLgDLjk7nG9o>cK&bKbhO~rzIpTm3SYigL^4< zUb%(vXU-x67q*P`!ZcaRZu`XzCZEWAXvX1au`Mt{$qg@4ANXBTaEP?_lWEqd+v)9; zZ>dcfnz5lR1_(~{YzZeRHohgTi$RrNXE{vBg5G7=#-WuvZ8K5A3!EFW#+iU569#dk z*;SIIj!)oH!0Hzp5V8CcMCA#g+B8|?HrU>k7`!M1TehV(Y!)BJ2%eAN`)g^B{l)vY zDwS4M?e-l^!#SZ_fLG|uBrf$*$nH6;w}yiS0q!{9nx*+=SQ3V3OZyi8e94gW-k05@ z+tG*{>oEOH0Zk!(nlD)Pnm8JRRVoP<-Jz?#VKXdz6+UU@#7f7Yhx`>uZx!))qyS+gV8OzW2!EOO;PCtl z)eHG+=jJS>PHuS;+a>E40|8?P#auVU4=|}%1{uus`}c2BXR2}WgLz@I2%qr+lehO6 zrFyLGxsnifqeg?f@AS6ow&dw{6q@8tx9mBkWb_<3vYqR=5r$AO+a!6z_9|pKKd`AJ(5@>9KxO&Kf64FirlEU6wK$f1WCJhPGM=n%IULg zaGv3%M7tW_sH3h(DVK3s8+mZ$SL_tg=Av&qF?lL86%`U;_!0c-5zYc`+c;G^9yVSe z84#k6ARjRHAf%Eiz>3YM_4b*p^13oB_+3QGpbOa}S4LD!#9US$K3Mq5Av#12@ zVyjrOVzhF-MibGyNnP??Pp002;Yp)9xK6$+_&;wJWIwaion*mf*ngsjqx9sFQkf@8j^i!#7E_CTxpezr)sSgQgz6qv z7=Z9PJbJ5Iu)&wuzCh14I|%Ovm7mZ7E** zlPGe^(>afLGwt1ppV+|vLTkfCd<+@%!Mq^|l=#-~Z3P81J=%CNKek`NQ@J>__AE{* zpu>--YyJ)fEPdNJ%(!*~5e_oXx{^}IG$&=XN6fj+oT+%ZY>?Y)3Op(=36%<(MMezV zIP8;tZs3*^9x`>NC!-2pUd4&Y$bDhya#+avQN}8cK+5BK@g7$o7<~!DC7rQLE2ud! zBhJ=Y%IJ)qpg_8CsJh~|{dA*(e=qPHc*afApgoG5@|%PyQ}mKy3>pmX<0ilX2Hc}o$wZtA4FxEoeIIt@N!DTmRaeKHEb^WASwo^L-HoP%mm-7hN+DUr17fo3fEhx2Qqh=n&)5n!C*jSViNPo7ihhpH!dMkMAe z_*T3GzO%sSFs$wt-B=@xBcvJhbW1(b>so)cq2^VsSn(SQzg^=mUz_*4E#+ z5=N)rlY9%6W`gt4>rT@}ZJ3P_!h|piQ#)AVw#;>Fx>7i62I?MDtQ?c{{*-GA_*7oq zZrAkau)Z+qpAJbwWRvEvyM4?96vHL05;j3qev?Rp%)D+pL=8p|tvOyn4B%Knsd5(^ zEGKpRTMF?g89$UgOz}uy7mBIx39cW~UclDH6NPv-<52T!8MYD0Y|Yb&TmrVTFs-Ak zuceO4%xqLwIwMu-_m`v9aW!yAUhW0r9^u4nrEqw+$DcY&ngU0gYV@gwKGoo^77I(L zQCN7mYfn+)ru;Zslj`S=bb?d{_q7nw@E^RhK&W`QV0k;#PD9Z6<)ojyz{X0KqbSfs zpOFVR=)mqlJ<}K@x zju*wFF3xm06)xc3So>(kFfcU#ssaxvKro}Xmw>KyV6XNnf;<6)gE@fK5H_SkN>>Zz z4CeILC-d!4LPsOK^{iTc^jV-@X>aV{!39vqpx{%jc$W+aK~3*$2#rgO&|kc4r#7`O z{$98jr++c^v_Qy0+>ii50*(a+x>_VQbB`%6ky6J zYOL@z<^F?J$%_`D5HX4Pfjaw%{C5(cGc+ge3XjAO-sM5CfBT^OXX79(gkxUC%6?Cu zX_9oK5{PfL-{V>vU5gY@C-vw>ur+q{C!ZPzER`u_?wBM$6$~jrKLsZk8kGhV*U#XE z@Bc(fxm<6sjcynKJf9iuv$2`T|Bl;b+A?%=K{Veua?nN#Ty4YHyvlWDa-AJE#zUty zUXW!uEA@LSzUO@ogp_T7b4o*27(W#LL2X}_Hr+$)&(JJGrF>_{GcvgSxo8Kw8m5re z7J3R%dabZgS1uJLFY&^Hc^5iL2$7=VP-#j;w?0YG(Onh00s}&tCAZ-Wy<1&RFy0X= zen4KhRJvsQ1_i;6QlDN(CJKH(Hb~>2nTEXql)5I&=SvwfP)c+L39mZ>D&OCD)#WN^=hrxouj-iMr_{_^##wW6 zn3?i{2^ymmK=AON!Bd6y3^eB}tXccAxaYC@QGHsAjv^0a@{BHU5o49t;j9UyMp0g6 zwP}>iCD?6jpNs+xt_KLIV{sNOZ%1DGgNQ+1jB2n;0)J56#!GEk?5R%)aTJ}#uc{fW zq`-)8MbePR;g*@`WPcox?W-54w%NVQ6tMK+8ZosHklv zad{zz8yNRvh0pQ0Usbz$dO0@#AuQG@qh2r%GB)AmX^wB_#7rz_ZjJjtM>TZ1Iz*@s z)yW+el|e$IrvIlEF4qY#+EAAhrMM={9@#@X(WRb&dC`~;_L8}-hq16;Ya2gqP%E$<6Q%dD5hQgM_sCpfdVB^$Di&#j*g7W$^M@!K+9`s85weAG^p z;JR((@NXcvPpOU(T5LTME;Wf%i=5OHdwu%q@kuFLYSESkjAgH{Lzme07GF2JVHPNTUTuNyO=O*<#5o+oql+f&8AobcTbT^&&H zHEZwsHnL+CfCg#}QTxYP9I1IEPzKH_*LGYuVVj0ct!BNbzguq9s7Tt;&Y>Yv>U?>V zR9RE7R}D^SjAa3EAAe{j6@Q_AG5D6l#UW)^nQN{qb34TQW^NfA zVyXsUn<6B8X7~i1pcfSO{0?>ycZJ%oyYi^=R;%RpN`}v&70YDP4eKxR?0>Hm(!vY~ zdD-7~jt3f3i)QB;D$<_7Ynr`TXv>~n+2FT=xgLD=g(~YIORK~faumwII5KI0;6%k+ zP5$f!=74u=&~_3y;EZNJOO=iM1

VZ6G|!An;y$Ap6nTIJXP#iPv7{pniZ@*=j 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 %*kY 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\"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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes 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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 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=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-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 +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" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260508/20260508142002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508142002-Diff-Config.rsc new file mode 100644 index 0000000..5f511f2 --- /dev/null +++ b/MikroMaster/history/20260508/20260508142002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0