From 3e09c33a276f8e847cd29bf2736f002bd474d45a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 13:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 13:20:19. --- .../20260512/20260512132002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512132002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512132002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512132002-Binary.backup create mode 100644 MikroMaster/20260512/20260512132002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512132002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512132002-Binary.backup b/MikroMaster/20260512/20260512132002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ed055b8450b1e5847331ce3487353f889f6a1bde GIT binary patch literal 302653 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

J1qM?=vg;3n~G zAhl@=wtGD(uHS4%W^L`yp7`Ty+-juVtM%qwzD+8lp2*OZErDPwRZ}j>{}Q4)aM$@^ zIIl(%{>BN(q)yuxFl4^cGo1&z!-59fJ6Xfh2wk*q-BoKXJf16>9BcbGWxU?u1l#1A z#3-P8U{qBe<(-PABtbF;Zq2~p&^mjQ$VahfrI*dO!)b+_hwZMwN(b!i&e`+!cx?oK z+~L$wlE$`miiJ#vLY=WfMwp_#D~L1bV8HL@_em{mSCGl8mM?U_E>iUSMoWhwMQMIi zQTUucR7$X?Hu;A4Pi71A=TCd+z!`A=dcTDxc(~(8;AtyfD%$E=fZ!3G7=7m_6Xf{Z zVO~{!t+J>`eqHC2MH(~nxcfZYe8@sn#9;MR7Fbto8obVVT`oaXNlaBQ-?u3SFQ8kEBO+I|{)yma7J8Lta$fL1zb4h$fSv<4OqgwL9^J`j^kT6HrCk)#PVM_1 zV^{U4?ep1izUbj8FK{>h_C(}$GwXbdv%F``bFX)v+&yc>k>Ei)jlWQ2Ra5UQ-)Cb^ zY#rZP7mKbdA)0|_Jb+CuH__rV`}dJYs`u9j0`e}jb6iaben8By{XLoQmAQ zQa1^kUOsgKP?Hk8)+H*6O!79sToj*_-N$LD`72o$`p-b8`6M>#?Cx2Vd@xHt6ql_B z0(q5@(+I?CXwr>0a$TC)RvazDhq2U>~wW6cQC01#QOP+fUd-br#M*W67D!4NGvZY?I{oh;Ks-P1#CHN?mMna#E3# zc9H^Yk5{yPNDRYV$?}OE1Ym!Jjh?VC184$vT7D_@A>ldEWwkOhrabD&XS`qPFlRX4 z6obeh#xRq?i7cENig!YGEApiBNdY0>UUU%|n-ten`Ffp!MJB^JuTe^3)q;Y~_hNE4 z(;N*OV>A;!J3AcE3t8Fg27YD_Ul*<)JaI#i9-tcqB+a_7ID{7+?UnT~8%Ig*5N`?4 zUr zRz}u;xa`LI!w12(@66^#%h+|9BbqoTxGk%ds|9|zuPG&dLB?p?f`aNW{o1XO?fmW@ zmeK5sOyZTSYi~I%|GPlP8nAzNLO+tbU4SihOtF1lwq0;*X8-MK^NZV(I# z4o^Gr@F=|cKOMW5^82HAMeC#A{KB0}Ui4b*Is%c{sao*wmcS}M)=j6ASC?`jqFx@3UU@$p<8wt;;;&`-MFt>6U^v z&cNzTLy1Sq@43c!$z9lPAp0iaEqvu#5A(^MO9#xPnqA`~MdD2lQ&(oCCD?WwY~uqR z!`zl*)_(}C%gMUg7*=cSIK^AdU?&UZf^;_^CGB34ZvmK5E8W8SU!mti8O!Gt@=Ya4 zujng|;}1+A;V~UvuHqu@g)|cZUqvtDir`Fy1=Cc))ZHQMDnV?;A1eD3J{~_em#zs` zw)=NKOSOVTdvl%pGO%b(ojsV#dMmwAWZg8y?zrHsQuT+-rK7z~jv_b>g%-kQ;VxioN-Rh>?DM^pIH{w8uYxGX)#KI(%LQEHfX zZ1t0zcZM>R!F(3qhu0v7ks}mblr8}&WuYosIE9`It%KjL-&(^-JwZ(%qetdp0<3d& zqdwYO6_}=91=CcSc;VGe1Qzt6Ov;A>3{&zLxO_UrDNHR)qEBJv|cw${-2V=7GMy(jG%|1&eGL~z8g#6h%JY+=uaMVtM z%qS;E&L6Yx?%;D%LvV3z-kMAG0ybADU=bQ7xHPB1=R72LpvWH~it#U9+FZWOt#p%> z?2e4U)LA6xS~qcdXAC`k{A&ml0uOP0NDyLaxq>4to1IQ&wA*>Uyzcz)*;OB6#(4!% z=l^{wyi~K`sV8*X;Z|4`-(_C>PyE?y?<^lQfBYdn_@sk5*Jhfoa2P~s8qXQy2Nk9f zrN}Q)^6G<~h~#|l@^ku|P89V-rjYD1^ze6%=8=M2zG!LHv2hBy#^7MbpqqnT&dtIL z)$MZ~S$Pli*<$I>Zc+*oZKm65N*A5k_@-yw30-iN~2%H>@b=?3tAU$qlU!WwnLBugl$bbkRW|cY<(}j+mU6Eu-@884MK>ND6KuuY^RVkn*)2!)5*zQe> zJx-(tb4?wz<9Y2!h59;|q5*`KROWcO^gO|t2UX!Hb- zm8OJqrxu2Enn=>+(-(YT>mos|h*a?ib)hMMjr|39Pni9dY|dY}&A`*zUA>(4SOLx? zq>#A!!mIq*Ndp>5rz zz>?$_A9JumQ#HBPj~W#IIT0+F0QXs62ahM^;k}`ysUOO(m{J)P@r+;iT3Es3oXYvM z>n3HbM|1F&B@LUQD!RSxTAN(bUKh;~H}vt~4>6RYUA5pJ9Iq7gI>o3M+VoC9Y8w-ico{Xy&YFJaK;tW?^eckoJp|jDb3hf6^}d z#Z9XSYH^2YfVi6o{oRg%P1E2!0O7auF_{f77jR?OD016pue3MRtVx~pr=st$7RC83 zh^Z*ir@m77q^*EGs1V#55;@#q^ue*_UcZe7skXNpHRnB|2;C~}xeie+MwI5DPNq^1 zUVh)bGWWVi$dMy=FlFMb%`PSSFxLF~xe8vzTe2u#G_+wqfu^X&xYC5=I%RjSdYBqly`CcM;;B5nHnhj|1!qLSz-X9Mb zHk&$~e%jOa$D|A_@RBlyNpbrrAoZ8Z5&(hAp+oEf+%FxGFQ|l`Rl^Mry(SLin{+1P z{R?WEBa#e|yrX3$GzeWi@LEtB4rGKakR{GIcCamC;sof|!sbo6U*{Pr21ny#Zy{uX zpsep_^RmNDIqqtLIgy;)7n=9Xc`9~~o?a#dP|29GT!I#wvLLyC-@|cAryIBx{y4Ts zh~qJISzt1Qt5dCBCtJw$aX5LeQWMXWFN|xGjuCDX+uVO7&zO0VfbUDqUrlZm$}E^l zz_SH<4~ z-|LUQ_`rCuNgGm)+nEZ8Bo-|55mc?58k=-!G68zC%u)u})Ote#K&P(T$8w}I9g@bE z1I(F@VE-i=CC1I|T)xL)^_W@p0bj)qR*Az2xBB9uC97z4erAv2rqNT2xA_ z=Z2$HwDXDvuzXzm_$wd}8lPr3hoP}1D;hG#u`#-(rrt)6op2+lAR1(*Y)eX*+bVdp ztvhmw36bSg!YoA zUsazaM$m&c!0XnoUTl{Qv7K0Rr80k;!y$Gz)8PF!BR*krHJkFShGmfXwPE_m(o@!5 zc!${iVNHB5kPpvZBRW%(r1>f2o1p=9!+m6X(&JGrV0hP>H3ZDrd=YpE!_W^xYIkAg zKKjlTKiyy#f}-ac>s@;9nX&an+jMnAx8upxf0}#?Dj>jxA2fZf^|~(nY6z})1Bn`4 zidk79yB%a)mms;Uo2EZQobdA*QjaXyj!Kk2Et-6Z|8n)b2b3xy z?84`+M`o^*D}mn8HvpV3z*f=V|!|Ac|*Q9mLigiJP;w+VH{1JGDg829hMa+mTIn^ z82ttzE72(I`_deE$c2HDw$jwHIL zFkR2(_TNP=e=gWY-}mGS*pr540*!?xZpl{I!}I?_>hIBR<5RVa_Vjnc^AIgGOZF6N z(uU55AOXfHGJV;%p%VT{J4NtT&5*3oy~I;shVe^J$w$TIW@~|HQXW8poPuc5ib3ag@zoV_rQJVnVW$4m3wegLDBxhw%^kGKuFbi45$Y(=rEg zJ3>Jju;mm_O#1KlvRN)Itx#M5I0Emq1~4uf3;0!Y!6!VXCfLkaKs9e)bmdcPYKL#X zj1=Z7?}0xMgoVCfOxbho5@ znC``6Nufp3k?w|5z%F(@9l%1+R2*s9;&xX@wuw{{q{)7(bNdOZMYSv9WO{uEbhSBw%`-ltv4tXCmP ztk^jd%UnL+XBd8O{we?#6^;0jigg#7!SqGt&toz^^^#G13I*j*N`wu!^Whfk>ApfO zAeuep2=wV89J+L_#BZ-ZbXLj_vXyPvCeC&=_yGkPZ|{ze$Ry-;73zn{qmus{^hwj~ zRRfEIm+Fw@U) zgyCfps05$+g_fvcJ?HpSut$MY*&Jtc2C=+5WoKFxs16a|vDK3opsgFCK2N8jc@$UG zylIiLLyS^U@I$I&pXtArrY3sz2*ROXkDuz@G~3R-CylPxfomT%^=mf z@Y{{&uptkMBtFNdubB-lCai;{Nvhia2~O~$gKFuaTS`nCF6MQq!go%Z`x{Op=3s*4 zdutg(cFV{p-wHl{0&UpZ&L)&FwSrOtZB>#a&V9axr&>4hf(~9Z9k5Lws6M3G^ z0q{Puit!JU=t!sb0pUukTwPE9rF*R3iO3@T-G#-B!%w)<$zq=Dn)wQ-I-%ZQe#A&D z9}lFfri!{~)0d!f;D><;NmO|`s9~*_2Sa@f`nC~EjBmxPUNKudt4j_@;qKF@BaHuenc<>AjtYU$Z(;Eh9}F{UFU+;D?S6Qweud`t}tk!6H%Oi4SuS& z3^I+<5Et%c|7F9#cYs?qzroNPoRUJ3E8lqbdmN@lYbG`2-YskQ40u)7dHB4x28e>e z3u8B+jRPwPb%c3UJ0X~bY@=V&Drp~KmOm5{DbnKo3ygBv29AjEZU?EU@!pkmM{VG7Dh3^X1YCj8Yte%#kC*TNna-_p_9oSZcpA&=cXs9KH8z zB=YXy^Z-I>{E8i1hIk~qz{D<65dP)J@#aPQO`fBku>6t*LFA+Z0h1?dT7!6OOWmi- z#nM~<8yxY0=soVEYmXc(aH&xFlw`-m1bPwglFNY;s){%M_gfNFX6l`nPW&x})I6B( zZFfe?yrrW3s2({=p1s7HOMeq0!R50bPp^ErW0i@jeO~o3ekNCaUnDrz%6DDjh)gbK zCanJ|$StjGMz*Y%>mbtFPO~?{8}Z-tpvOmV*-i6HP<}?E0<~)R@5+E@;=|xpn6+tL zwL@}zF()m#x0ii7oVg^attwWh=g$7=^!*MwoX)kc(kSmpso~dcGMi1syVb+Tgzyx} zw)huW@@efxzTg%MnW0rjRi1I9f}5+Gq?(5|z-5p4^^Yi8tXzlv3vH&ZuJ%6&?>_-^ zs({pr(lsskyZloH!HMsGCeL#bapIE#UaV>W%I)(z#2>yvqwHp;h<%U^zDd=$)&_sm zaMq%uXXJrZmlH+h7kmVr1kOlhMVE8cx*kU}Y0urF;Z$SG-eG}}ki!3_${~WZ$1(v~ z`;kLi7LfV)bOOtoylPRe1Lqegy z@d`tYUWw6MNOrFjx{~t;AK1Xgw8VsM*(250RtgHPD9yNg zkke|&{|lzvF+%3kkS8@gV0f&LjEkELaH?AUUBbJie?$d)2+-wF`rKL$^IBY0uOiI1 zJJ7r>-K#qn7;q3nS8S?U;P!Z#m4QZYdj9eh-m)ziJsEgGm|9X*X|W%9v!C zkmQV4i`u&^Ps{ps(F6#4odIqAxnn(8c>%@St)gc1x~$h$+-wY7UTbpV2)q#4h-j8@ z29BSaAFQhs@BgG_-nfRMTkH(+v$arL4h26(@Ee_qz<8+O*Kf`@N#q^{ZX5D`aS`93 z%{X)i!D$HVDr;E{u*4R{N^B@8<8VZ`>fNWh=;jNlb7>2$9vPqndYv3y&ZkV5~^hfcknZQY?LE=;QR9!=A05m=KjwDbx1ahQe(OtCyDl~rQFXi60PvA#W#Z@hN zxs)7CSkKs8barV*%tN%0^x>cZppMjB9*rBBwu3@6_%cpG?LRgc3k z^G{V!kj$hg?tiOzFwy-W-Cw zjc)B|47FH2vqN*9G~)s^+h6W7Z8UXlJ|Xj!^-)d!x6bDMVBHApogchAVtWC#&L24r z0iGx+`1?it8fuZ0F-+eOwy)YnspENRIh8BQ-%*pK98hd^H^8D2#?(?EQ-cg>2(Bsc z!?We8=*AY@CwWDvDmV-Pj_zR_(_$=oMr@InDrf_X>ukZtQ^z1`Ozs84*ARDN{-=OY zKx@%!hx{qw49d1ei}7~N+D!@>$)qA@M@zk+*2$q6kxLb;~sT&{vL8G zbA1QgKqCw;bRam-SO_y1W2>a%s^CQv4FQ0kQX4TFnFf?vd3vp6xWYqBtq8(cPXvE+ zmE7%3PEB&V#qddPH!*yO0ur%ucW3Si%=3ao7Ei-mO$q5SY`d~P;H5CwOmzHar-Y$3 zo+SO}bkO{_*er>?RSl`O0|A|1gexi$ise8q=)GO2s8_FXb+2*#1RL}xfr1(ZMf%Me zMrBH97yBHs2q81w_%Wg=meAl_(F7I?R?fV*_+!B6hfC4HZT7X9Mns^$$DP$b-jR*E zUdY6|P(YdASFLQ~JU|}#a3C?8Ax}4ab6sNW0(A((2Kd>==g9dGh+X*@Y~)U3D|r2cEV=kb$ST?vln<3H^*RmVGf+1~GLP5dj^h^&Gc@k^ZQ6rhyx zaMQN7sa6X&i-)LS0uHrgY9rU$xbms@?PzXGl-D&;{i#zbJM|A&XlzI^EyBvV!2PF! z)`^BNA7HMjLZ4bkv2{B!ejs3)&buhb+4^lYua$@@Pi%AR;@PdLO6gL9x}ZK_UaREH|et^m^{sQm6@!K`qo59M9R(RS~_1xu42 zO6+VUjrsc|+$(#yh?LP731uMBjHij$km3ierpyz-1af%!F-an$EC`c})-CpXR3TyW z`mfcTW}oqR9d8z&0ZO36ki`Atj}JFt3rEJ0B`Q>zB85kzL2_Bf!UrWJ^Q%|+#raCA z*xqNTfr42(>4!-sa$KhMu*~`L^lTCHF1oxqrc3eMK=W2OV-cVRLR6pPQvTDW`S|n_ zWr%LfZc?nD233(|LeojEhI@T(zUP0%JTN7@f62^Pq@Vub7J^?EzVtHf`vByo147XxT`G!H)+}sh9N4;x_+=5!qA>AxkxkdQ*&%u3@_!;|G8> z>s|1lmvVgH@^-JyD1id$A?mvq z5;7&$`|wj-<%Wg0Mnd8W{2paKtknQOX)RA|qbF@ZH~^!STJxfhm)w?G!F7irre3Mt z0;A6u+$V|y+W2b+4i!f{8vK$J-~;1s_e(^q zQp!zziLKGZInKgAG!I$&#?NO*aE%#OS`By$ zt@LDOj@KBI;9~e2BW6Mz$)aX_*U<{DmpEScDBnnY$@-U1w>eRwyam)Cwlc}ZW#bL0 zaC>~R#iNyzO7*#z{@PwP28%o zT;5oD?nv1zykNKXcJka2uQr^L`pLSG9V4Q!Sz3jY8);}l zyTNf2-Stqu-*W2whyDsH$4;gcx1Biysq6b9?vI{$bPGco=Xa%(zMT-mn6u1@H7Jm~ za5QTb!&mlI(kfi7{1w6;#7|62sIhJ{ zvC1g#W4;K6Z>kP=wo0=SnO5LP&ip1We+?yQxOHS^+jpuYR zvD&yGO@>Jzq`0s*B0a0WX?dr&_m{Da<;DTi}-)2J$V@N7GGrWQt-jyoLc7?Rj>7-jF4xgOe zuYB#<+G-&?ptC5Z{B&o=RF_CVaH2H{98F}eK6%el)1Qq)s9Q@?9R(K`a8?JVD2P2@ zQ9S1CsD(S4mZ)%B&eb*`P{T|WJ8gXh#+_Y5B_w*n-dgOu9(0T3hpOy>Ejivai+cw; zi?VVIStk<@Wf1nJ+wRH?+@Z3*{#^DHp91c{!*_)Y*huh^>|1fRp8)bDQdwZJAKprv)xHbz@BQUE!!sakJMX)~RpgHE2} zXlT))!c)3E@v9~HX91nJuQu;fQM zk2?9o=duIa3bU&%@la~bn3MhSfwgX#hu1x|pc4>a!hcM&rB9qP6K(_Zwo`%rd}Z?i zGp?S-en-yUB?xG^FeM>d;ApcTrO_zrWf!(O0_+m}rX{qQNw?$EOVgG}#)VMg#RM{yHM`J-=~~Z5RQBHc};yt!<@5#-0W4$Oq1IJ^n$77ccOS z##bw{Tg_vBx+Gh*ajW$2tUs!A49BsDOlDI@&8U{l!KuqlMqnE+6izk0ZnO+7sA@FF z0$|>0Ugke@ADFPpvviX3=KJ+A$@)e-KnVA>^1y}@gS21t1%*;^;<$|OizS=v-oj-n z;#@AfOYu*%w?v{?U6CaOC_t75{M3|KWL2s}SviHkweY8JV$oy|WCNEs!uOb&eJe~$gsbYc#OG7mIEuC%ZZsecQ* zd`R3DT-4K4Mga*lElv&8!7JHDv$QI%d!mvAv>_&_@jLy8COC8Gvd)<=U4YzUmSK;A z8w(s7G*hH#En*rbd^K|(@cfzI;U3PlD5*a9|78%Gn)=?CQ|SYhgJ68PyUXNbd`Ur) zhJWiW_Ez?dJ2ui1DCtSJr87G$=Z@w(6f*Ad z8!OQ`prg?l)4m1-nGF2e_~Tk46d$_nM@e9NZIzQw1r=d0w7v1ZNCN(ldBS*)$E2v;azEV}4Pp`^a(z)0VpKYaBLs{KXe=-Yfldgtj17o0#o=#ed# zR?8)G91pSUQMmMmtIN}rU0XM5Mpi{il&}o|a?LOeJne9F?g>LE+4Q#P#Mn`u?U?v2zZEa^%8|Xov;QJ zO^H}8gVHd#V_m9G(F$#Kg>Cy!^`*<)QaSaV#`B!B?<&fxXiM&+*+hFdR9G#tKWb*L zsU(=Sj*Kvy19*V-{q(SA$m(o}TDc8H)S|s?GfJYaVLn55%FQ`LItkJ-viIEhzVWCX z%Fka1u!pO+aL32`x1_hREX`M0C!Zs;;oo@JeW&q0R6J>HyIp4s=F(NYuE-u@gJd}L z`kZZh3u{IwqQA!+fbh3PG7}|<6`~L+*-s4yI-e(aXlz5U3}%o5N!$NNPK>Vx)bT;y`!hYs&B`BqsJLtY;`}W ztvsJf&&3L+?1UWKIjH!v$EVW+0R*KH+3E6#T_0CK+L`GieU`{UfUHwv+^C`^X$AA$ z{^n4x#+AeQ-%}u{4C;up2pwsZl!c*jE6uOGkHLOvj|`_o84(V-M^5WaxG95?z__?t zr+Wkl2xU|n778XjBR2rSl(!c?oADo#iWk2bkqPG-AwhwLlMZ>WRYa#!wvvvezv*cHpA zGq96F5W8@}o_3+38W6fps?uJ*5D3xekZY$3`+mX1$GlU&9pOyCvmffJb<8Gy8#ta57Ghz!0ok1e>MX;TWLSxr@4R~j$2TLR zX07-6=~*%LP|Ao$Cbp=OBt;){O))e&`OFX^NJ4GI!$)&bD+BXxHC}-eDC=tCg<4d- zEhylEB_cj!JcQ~o$0_S~oIbH<^Et6`x( zVX@PFdA0%Q#d70eJJ|CJ3q0e#{b<^FJAvk&Kc+E$P$J_6v^c)tur!Eo*z#@jB_l(~ zzm$DsB`^uqqtKd`gFf~`9Pn=Cyt)T~KdGgaP(F6_2O(-e6UfE5$kg`V%I%*|6_imn z-f%WYFsgFy#c1Xv6BR(eD@BXZ#y&lMwLyH*ZXpmRRT(5hvBGyU-wu+ED^mUTrSVKD zxB8tV^j1QLRegmkQJF+L_4=@ZS%cxm%^c1Ju%m>++FM+&h`T&x`qr0{%E?A#=;h$g zo&#n9&YgGn#4Wv5)j5#97zZFdPj9 z`@09YnR5#U@#~6^jqlB0>np!%TiHEfT_sq_1JQV>XceDfEc$R>O>|yq;eHhEa~Difg$q>(-%&`)!Sq|JV3?ET z(G`Yr3+#%9%e7n667UZ(Nx9hBJl`f@zfccUsc?v}53aE7ORvF>*YKzCh{s6&wSLpv z6fz)Inm2tqJcVAvmW*L=^`4np=Yzx5r7e+a6jQ7S!fcxnDl?jZi}7^@n^ow}3*965 zXWMa9Ur`b3H0rjq!8z1+{v_thpYXYioQCKU)2r3Q}-?~u|Xx<}O&ve;xLnrIwOz!fLOH~(+Ow`4}y zIE&WOdU`TZ*hEqUiV=IeVg{mJqB|K*bKHge_3zlU+?Na ziL4>1lZ#}@yKuwUFw-mAe(!-sxdad?kH`te%tdd9S#FfL!^MHIY}7T~I$nR~0RGsYjL6RF(7;Kj?@^v=}0r-I6N3L~1qWOtzLOM#j zvZfMU*tAVEo~yTN`Raru{8xF;LvY%f&^EFv+%4YnjobpV zhTg-`@2Sz_tBLi7AY_-YKVuZ1Mtd{AqY=0C?C5aVL?+ zT1F>xul8@2I4Lpp5gAQY?l21x zzPIgUFY7?{>Ei(?`%)eUQWrTk*5M0rK8f5L_!ECv+qRn#thfBr6SDz4GCa$KY_181 zf!)h568Tdjq;wk)G6os^^zR9{5jXT=rMg%op5jbXa~G0Fzh`kwLmsXn-w+!N#Q2sfFd@kjkfTq za0Zl$No0Iy`=9twXyR^h4`T6;W43@b`reT=9CRoX$L84?d8eLEXxYJYN0$%Uc9BEZ z@jY}lHGH+uX@ZmfQS`zq@t(^BAi&~5;>+_QPOXS*;((6yf<5MdOk!y%s0Ao>;c-DGexiz(*D`I`idNu2JjJ?pxk}?; zh|Co7t!sMR?H$Q;jkLH)6l1X59x)a!Z3J>@q}XXupCgPh?iUptP^^vEVItBT=YFui zBWPYoU~(D_RZ`TBe`P;tLQ4mM!ky?(ojQeLYpz>uJJ!Y?688qwF$mP;+R#V+2Q1wR zzd;XF9fiqx`KTfEdXbQ6+}lO9aq+x(6@tpw%{+k%a*Joqk&1BVdlEhA-QFxgflyjC z-6~m-faNx^6gO6VeTMggpquG5vAjY>6?Tffxbh`MFr;fuJ!1fubB=O>J*sSk)3T)= z=7*N0{N)6KHbry-6l_diTx70@qRo{h0#ECkIrstbMMJ>hC!7JGp8c_y=bBBUB8Sct z#{lV!zN!&6gq4GNmbBvzd%xTSi0tY)O4r9~tf=p=HB)k4cp(x|XA zRc{)*W;>qsnXW+O-=k60)C6zOST+J+Wo%Ob)FT~fD>gUmpD`e!i&PRagKywu;R0%s zKatvSdW9k4d~2Q_SE)0%H33Eq2K!4b>uD=8G)Jn4a1olWel>e$R#g>8$C0Hb9-&dB zzq_p{9-JCb!u00iA1>md1%tH~bTSn(>wgM5krNnaLozapm#Zz1zs<~SRNowOyGRkm z0|jSRJfW8P+=k@p+3*a!na&qc5UMMcF$rk+AJyO$#7f$vmtZ~3eF?`LuUqp>?1?a2qG;o zrNt^(NG_DxX5uTiY@*b{I+3M=cM*e(7%oZ;AKNu3280NI0%n+{&XsY6lqo7gLxLPc z9sI*C>A$E`;kq7;!hSyL>XAV6wy2cr z;jfBZS~4%lq9#0CW+TGz0~H7roznt~f3MjY{elJG@tV^6zgI~eVAeovGldcGpQ1B! z;1sN1*q;&<05FA8Se)KZ7eI#np9OZZ@Du(7r2V{M0i%9fRB{0n?mO&Sil*i4j4Xo5 zyS8RU?XrPS2Q}8bF>K_VqdX!BMORdqtP8cRx!a9zsJ3fc83&;srae9vj|$x&f2#{; z%BrmI9dW9gm(HBCP?`jtI(i6pu|j(g;6Xzyo3wxWpeMFF2X@;RZk!Sf|J`R2{1fm~lGV5Jsio=^;xWeZo2GN4uX=2a6wBa?VeI$kmXI3Z69p}fUbok-HZKOq@Z9Pw zx()wiBqj{MCeLWh0aD({B&B_N<&Uz;@>*C=TnLnGO$6s^e{guyK_^vmBWa~}+lrB@WyI&T$JT@H;b64=2w5>ul9XIpmqCQ81gp66D7AAB-MBQGL9o^)cpr&Gq?OR10CSrhQL3DK`)0X* znl4YSWe*;4Qv^%BXew{^Nh#L1C**mZqBTcP=|xE~HSnzTc7*aALTLg3OH>l(chqxg?-)J1n8jSWN=J2U|2q`^25elBilHoR~7C_v(1gfW}5pm zjM=$k=-Rk6l^ZPjSp@Sh#flG!-LupIuD*+O^wpGSio=dddezY|u?+>KJG=J_`r6-c z;1g20isW$T$E;)}yLQNwO)2)sKz%P2?6z%Vo7~p62shE2VK2s66ih&_#)Fw@sOxP} zL^1A{B_p|Ddih17EFh>79eO`O(Cnoq&BzkbC2Ef7jEc?s!R7kOPrkEQLdO9LS%vf* zvm7L#{FyuLs0_-H>lC(GKdTRwQ*2fUMNLpc3UQi-U(|R5zIw4)n4z6);9l{Q&MR0V zUVDg4c7oZ7Ek>9tBBKknx`G`rOV+Yal$bK!@e@Xm&j}P3)#iRb$*ZS zCX;(_lcKJy-4dPF)xCdes3|DyWGDNJrBEYYj|vmv?1!pUZ-<$(!ZGFTdn~=JPsGY8 zP~_OSz&l;^+zm>CGQYBJyb^c7+!T1*cC~oCfL^nwAC_J?A2}ZU(n`IV579C7U4$Q{yK6xQ++^s%xDRR{)&wUEzOz z5s7tuT;zyedeOSuj!F-LC}81CP3WnhF>Cg|Y6=Wi|NpQ6>z4b=vqenS9U?65HVBpx zzK-85GG$L>k?8|EBKdU`IeRqyZAUDCSO6E|v8U1sJY5q|A1LDltu1aR2vB6D%|l3} z2K)*l7VE*2wQyr1=?vI5qo~-)r)h+I%m0B4AyYjWqYWh?5#d%?+I&^JudHz5lGwc*1j2KOg52g!m(mX_WU*nL;5^TM&zyT$upnyFFLuw7oVO1wC{I!w z00Ssaw;!l`iNdaNGV_@a8xvF8luWsLW!c0cz|l+-bep;2DFl~{AG^Bk!64l2ST_ly zE@Mt+xP2UL=_kp-c4P92>WY8_mh zDt0jBbaf5s(0m42UQKm8jsS0fL@g|fKQen#9UEuO4RCW$&*N_;>E|#UPat9=(~2> zWo(!E6d}un99apkw^4MS?wv{lX-+R>`*=&^;DbU1xqTdhVzDJUdyQw=Z79hZ#^ z7tpwbARP@?P5=Kl3uCMSygBXuIRQ{kf~>ScO@3xVe*=2MCv*LzOQXUnbK=d%N#dLd zZav2vq9)arPK`3Aam)Bvx4De}9W5on3Xd}VWGd8{-{Z)Va0j9$B5hOlIsBRg{s#8SXl` zy~sMM7>2H0*|8RF9P}K&84eH9Jql){`Fr|lEKbwX-(!}u0)x*@yg03 zB3Il`^cG3F0_f3I4MY{fNqVvZd&^8^o{TIp=t=_N@~<=*YvVA8;S$5@UZ}16d5ZS1*U&-tUp8QQgL2O5a-8 zSSM~v)FXos2JlbiUk0Ifv2C=lJjYXdB1B33d7%FvsMcM(tu*)Y@gMy=nT2Wf0I$v1 z1evqP`uUgi$58*J8uLx+YJv;#F#GSxDMjE#-eA$93bV+WG8{DV`5{7@r>M)oA_KR2 zjaiu5|0Oa%Nl-PClMKK)`rb$lGk@_thQ3_vcDE&w_yWG~t-08==`k0jx;CcG4 z5YNyg`puwy<&gjE|if?z~d^R)(;WFjIi%Z`K-OK3_ zX|lyMdc)Q>3qKUUmA82i*8D%t$PohqcSBlQgDyb!XbC^nys{P#wbV;xexqbsNWe86 z(s$p54G)5y0|!|v5txgVyIWklnX3?1miJF)4o&5rP?Vn*Z+mV8qiy)Qk%KAoVv8yR zr+pO+LjdO!%*_QsPtEH?O7G*zUfFj|h|s;Mm5fu9!%5|%)D^8Fbrq4PVaGLSH9KJ& z7omgv{_s3iH@@cP^|67r5|NGa2%r*}iQs&K*GeYnX_ChS+o6aJ!dJsw?#QgqkIjWb z2>vHy_zAQ61_Qub1E$e=eeASb?7WIy#|f4V&v*)OMOX{YRLkj~fWX@64oUFdS%w=b zVxtymtxDq+(AQ%6sAhej;!A~tjuAYaMvR<%gJ8_vZ?2+Z(F~a*DFgQ!A-#AH)QTPf z5*&hc&#OS=gs9pJ4HHXbv1|F=_a^~nn7iP*TA*D} zsHZGz!A0ScdaDP_Oow?YN!-_V6NZ;*r7`mVCoHLU7kNL5nL#qGo{diG&>MADDtaoH z*HwXmkhAPl>NQ!7jnBY2zFujO^9=eVsJW&KF$dtY>M(f=uoL!eubEEJ)k&f7fF?~w z+*gpWCW{S|xV9$SlGpUOjp>NTy7M-Br}*NO zN8x;}L=+~RQkJBGQMDm~;M7llQN^ECoEQnTE<572B z2snB`B&Zx)yr*IzZH zD7_Sd!kD;@N28OY(EoTS+GGeX_Nl-upLudB5EGNtw%;&wtNTbRsIm*`9A47TNJo@r zN*0joCTJj=N>y+7edwE?zfkNbRhIfhD4x$O5M79eJV$EwiOww~hJcWAuqHVKtV+#R zMSp#32JsiIG^Fxd%0c_goW9_Q05|Y|8HYgO^+;KmuJ{xdK$(0O7bJGj5I)hZI8>#k zu-$W{yq07QH)lyedkkvCCY=Kauwwh~jVd>hjspDWVLj7R=&Q+61HYQafjUMMAO;;HGs(PS6%Bh%lY zSLXZ0EVNxo1umOmI__P zv`uS&o}6Rq|Eqwd%=-SuoC@VpaMGET)0*^o2SwSET{HFI&)rYpZULOF-7@M)X2I9SW7HqhIp$TItkZDWb(f6%!8fP7F`a?{~lk=5j0&O7s zlKXvGD|A@7GdUP%0`LRmefem(-|l9=*dCLH>0CQ#^|^FB!XWZ#(_n9mRDoRm#+(x_ zR9$sW*XC(+RnvRegUBkmt_c+fnoBp1*i1`jTg_n9aaY@DS=}J|{~i+oxqR+?bf)1} zhADO+*YUsiB_mS->dh5(!-dJU3&-`=GIx8c5pL5>g1{sy0vn) zbI)*^PC-<&csbNxe6-tvrpq{;8rKC2Otip#04Ok*fOXztFiCNa;hB%tnMDTH)3^)6 zQ^D54CEh}V@g8&fsdL0ViF0oLN#8aP6BZzGnN_by83bfd!K3FR*+6pHtBPz#+Se4~ z2q(3OGhPT0~aA+h4b7V;bC%4o!k63UxOLW0KwCbZ*=kvboSQnHKFJT|@ zYo=!-$>P=%k&w|ndDDFIraV^{0EM4)(FzlJwaU)5REOw(A}s9}*nb1=Q3|}EN9hfY zK>gLtK>iw>X!0w<(Ai=qeXk@TIIPf+?V4}U=HJ#DE@F?*eRlNuXC_rF!slrKPC_u z{@5x!F|r$3tTw_1(4MG%F8{{t}>X+knZ}k?B}baoZ7YmmdLw#A!;oGG=NwiMcXkci!KM z!OJSY5(svaqGxQ%yDkMv-(No^?Zk)k;Sf;!Gd#SIWH1B8Q?rq9L zAO>#ys!_h`-KLxk0d)yN+?A7}2yGR6i*!8UvO_2LlvW!e8`)Mvt*|glml@IU?>qbD z$we*VRO8Mx!uSP+OUinw-0^!xLpzuGqWVagNg4pc^)FSC<2%}>3FJEni0x<*b)hR^@F1amgT)Q$f3vU=3TM^UyffX&Qm}6z_;$xmmVj-)mNF~otsbU-=+@+bU)3W-UxqD8dR zY8xl92sOWnQ&Ll@!P6-azY;5h?k@?02-K_*PTIhRc@U}L@k#i2WG&)0G6)nPhukf` zVYA4R7j|U1$0+rM)%c12G{6rZwWDbssksP%yHyCZP$ol6t6G18 zfckaoxpkNmW+(Jw%jBXL%8_#vKQ}KzVnoA!>4G@u;c|B##tp@c>89ILZaAcSAN1k_ zMTQ`@0_$TsMLS08JE5?p?HGH6F-JEb{Ph4HKaZq~t}hp+{x;!0FlXwSK%yg(ndkj2wglSbqqk5C7sB;7h< zR9LUi@g7Rl$&nsOq}=S~Rc0{W))baa9CN1NKEXQ=x-_#x*&Q*j`P1hohk&nzborYw zVB4jr)9b+A$+Uc_73dHumN4=lP|fY(l$#T_*){t7#Uv6i8~K5a1i4L~`;X5~e=*QE zZILbHKk_Tkui-3I=I2Q=$GPhJm9C8fzA|caKf1JTh|8NykB)r4zQA1Cs=O`$nDwS} z`4!F52#MtoUYOY9ciQ%j8r^1KS?S$}%`LmQwNNF9~JJI8> zE4st%I$SxxhyrRF1WqqIUPc4XKtOrY_2d&|> zB(XMNwKVbGPe+G9hzE%02(K`}TmRj0RuvWND!jHx)=nMPs`%>=)~YSlqEhw?lD@XV zreMdZ4n)!L6nkjDbDEO=&}ks6T9=MaHEBK!SuG|8sufms73|ZV?4BBB&eXbQM)B9? zMHt2{bB`YPEup#~e1Ts4!}LSUpp!Xm7r4bwkWz=Rw-G{1W+Qu?iz9E3mrK^PWTiS) z)8emU(`A$Xi6iJx=HctSOfr0CAmy~SF3AWx4AdQWc$aPrN!uNl;H{7b6%m+ku2#!O zr!$av{9KvGWQDV2?q4Ts8W2C25WS8iDt>e!2e`m%90{nx75<-2CU?DN9JZ1d_>UF! zj&ohgV;#eoqeLNos-%>Z$=2Z|arDG85h|L6Eaj19a&L_#oCX$QmmEO@*E1x%-l&Gabtvyrp zRllq;6kfXET&k+nhP;eTbe>`VI6COm^(Irh)C!jSTe=ybF$f`K2(0&EoP!hUjH|WJ-C>{}VWg zHTZTge zc~E>oV*n&%--)t!;OsH88W=Hp{g?u8H-92KK;de5>|UlV7qAK_VkSOF8%68%VX-I}OmvVT@P5LC)zFAWm?}@Oq?F3B4 zL`R$R*pJ~e)~wJI`@0k355=fo)T7qxGHKvRJdysZB!OKlBIWSsY9!`cj~!rjCvukp z$cI$@sj*7YI=sR8-BH(g$_rXv8jTBw;YvnQD8Ff|(jIOUsXzm?UZYGFdb^;Yg>lM9 zR6~^x=lsNu^bm*>JX}`xH=87?fJS98MM349u*3|&Mzo&T+?fjrt$SPRa9Nuame1zd zGoeHg(T;xTl@7a(>7&K-R;0u2?a(T>RjkpOh z(iOhO98sYLBO|O%f8#5oVIPsQak%u2MYFUpiB083&P|*Ap}PC*c$)1&ll91aWDx)X zlkH(ZO)?PE@$m#DHuY8cf4KGHOJ!_<@@-&}b!E~zUnk82uvpl!c9ZBoCKn*1jGz_M zvRap1U7G!Z*QfjXwjsqsk+f7%FNx)1Oh$u-&3ogF^mxo?CO<)=&ZY0E%xt_ayoh`+ zHS?$13mOm4rjM7buN_N(0{l4S@-^`E>$*9j*h-(Lh*C407b!sJ?@wwFnFU{b-+y!^ zRZ8MAt|AM7iss6r&I*smdm27&4~kj|VH|gFwGc5RCsi;NGhA4KHV$Pr=vwSozs`C{ zk9OHt^gnw`SUg!FLzQbF?9*_F9lVojvUvlLlEH%Os|E-YuT`lwS++&Y9y9U9@=1o7 z07SooeYy{u>aZ3{@@mf%QdHzPh70BdsEPMI4SH$Ekk|qTE71keFc1@NGYCZTD$A~F z+c)Z8(n`7_9(lcCFve_H(0KIDnURdq)CH-|6m%|>Euq#PeLh_xja-dap^#{Gxqf9S z-ja~L0D94Ac7%hiK&A9?ukf;WkSD%cU%QmYIDyE~v1I-fuqK0wtvB`?Zf%g# zyO=wgaiRxTpcYs|3eYB=ioCk{;0>!tpAh!0%q2~Rlcor@gzrg$)KWfvU%Kfi1|iyC zUjFu_GV}%~#cq^c(Nkbvp^xb;N7tiJ)!{Yy?{7`C%92r_4Xt825PbI@UPGHtl34>4 z_F!rYG8>UF&PUPh{eB)lNLMV`60KG-*e^w->F2-9L8p_fH`m0djY_qIcSU*!7H_d& zcNMpp9#n+I zvg30y5p&5?KhgBs%EIrigS7Y|MD2u6I;@f0qSKZGF&e5Z5d6*zt@5x4PTHQDX4KQB z^9j9g73Ms?(fn<5lUi;ppKU zEAoJSbGU8N80lzdej~bH*$&jzN}j2uUyq8b`wE=w8qOd|lX%DwU4D%WrmGTpf8G(O3CQ%)6?{tF?5B4=mB==zF86B0 z;^yW5o;!>HRz?3~TWqoVuE|=J9=1(|VLGFU-OoRZ zrdRd7g^fzP$2MoEr^`_rsN zPiW7h$HxxU0$PwdQi|>*N5?0o)N_ImurOKyer0V;=DT{Tg#TK0lNtiyaV9}&k5fz@ z0*j+Ex~_L*;r73Tu?9hh6!M51*8jjwDLe%5JRn?_7`6bi`sx5R5i%Mm6X=p4F2Zn_ zHBG7Dq83^;M(+dBxyex_?=E1Vz>sc9lO=V$dhbKq^qzCbO|E9m`$H(ei( z2cfc-`nVkRSu!umML7jsiW(B5(hfa{>J4u11k^Ce-KR1qOuXEOvXMtd+)a$_LXQcDc0*!IqJKvlURkO1d>|~f#^RBK$7-Td% zhO`qOwzydNfHm2wK&vPN~r@%q@>?`VW2Z< z=vqnq=C!I`ILXy``^|MQYoFIlOm-Qb4gHFbRNJxFqWt@J-c^O@@qKGrrFIoL{u^mg@U5#JoO)T8NR0qh2IuZHaVLBIG-!^+6za#bitmQkBZ8>iGz! z#*c6E@y~8i5$kU<8l+eS@P5zAyeAqVesF{WL1GB)96FCG;ia;J^d0^TAU%0IPhlb) z;kvS{%x_aK3||MCpwiEs>wbiRoX@yDpn;d%06lUuEwF4^M|4nAhDb#3fE9o%+}bS2 zGForCehUOxakZ;oCYOW_^5`!9w;# zmyfC-6a!OrZiR1Uy&4QF4-U2+!7$-vg)8d1;a)5{$hVI8(eCFsTy1zXdy=rpl~;zDV)JfRH;j~l%ZiP{ z6+Oe8;^0-!;^;PIbjn10F7wupzQD&-Yg+7fv~xo|V7+u87sqcTr2sk5T|9z=lUM7; z6~c`}JClHHPdCz7=gsBxWwvl8!SeSoOd%8k3aUq*^8ljFW@6DF8_PW#rTf-Dsl39FdCC`-6Ix(v<%i zI7)hy6PKEF!jA5h;6ERRN>C@hgsCZ)uuMW%3e2=u1yN3laIKCQaXarv1$yEbtOX%y zlWShz8s2+@-K~_zx3R{7l(G4TZdIXRh<&;%k`Da#Op^kcFR#-R7tr_@^Q%yg^xA1E zpJ{?!d+)6nu1!UdTcL>1JO)JLMd6Y0Sckf4_pAuq_zzVT4!j`4WyyG893fh_&Xm87 zH_JPQhaBL2seviqxZ5%R-F4`a9Z^rrTqbFL<+^dDL@`cUz=Ms-v|L~Dg9-zvBl^Eg zS_!@?Z7Wqz`gHUDrn#lwzADvhhr2s`D6T8dzkG!F5j!Fxzc>5A%L+EEs3kA^sQzBxSyPazBsIV-XH~1g5M^xvt2;cCNqXh8j-?1`+#viPoL2AQsEXd!Sw)31p4=%_m;Xuq8pQ` z3#Xizl?1jY#F5v0Dp)V(Bs}=kgFl(-F*x#2`AIQi%Ai%tB!eCJY~ckcWdgxmJ;nj+ zxLN?(2(aWV83w$;AnmFpZ4aI^$c!3V{w2~K1q(PmCgW3J;m{uT#n~h2S~Wqm1s^|`$Hq)CTu{{yU~9HsuBipCy0Y@SImnXs1i*wz z&KXhEO67qp+OEmq16bm#sO9@~ZjNEuOfBJ*dEi9iI`b;Rgah7`^kRqpwJF7zoPl0r zHoiyvuM{goUjNvgWZxOpt7YTLqOJ9RuZ|$VoS_(RppY#Qg7UZ9$}sSwSs({6V*2n+ z6!D)Z9jM=VEj<|Ar7^3iFq~;ycJDL}-GgP^Ar6TILo$nywJU!f`U!f#%AdFT?HA;3 zWYFPD*&Pt$Kn!C`qNPRHn?tn&0)3{J$TsU-{>MFO&13d70b){OO6LzNH`fl+gTl!a z@yeX}*(h7@YPWq&`D#qOOnU3Gcy~vU87~iN{rU_ju7Vh+Gcr9V0@EkSlAZOY*jvH! zk6fX&v%`_Dmjsmz`}f9Y`TO{$w1Kgj;>CRTqBntJyiRlor3hA-&p?_h*5*(@uR|ki zPLbr;OU)Y`A{{bvRTXkwNqyPhs-D4)!5bpak)8`VF0|qr+e}5G&JEGqQHTk=r=4K$ z8VqW*(&|`%QU2NWrsr#TvyE;MB5esfD=?o^uX!_)8^{L*-wY$kNPvPJ$c+LdD?^^+ z;o6)BqO)b(x$2s5hGk|%e?vGpx zL)Uhro83ok@4t^qFywgq&c^$m+Z)ABseP`i2n2r7L0clw(Z)S=eMoF_#pFx#WbIp~ zB%ITkxxta!8)IgIa+(KfRpZ-Q#s>2K2FgkW^!z`GzRf30Q&40Lf0fd@~0;5j+S(DOmd ztYQKdTiOq`xTQQ8o5|qgD=Q$!+y&bp;@V?a9&*hff~UDQcxdk6RS?@Koh~mZ9(&(y zFb1KL#~{m%Bh-|SDQ{BH`D1nRR7UDQZg3M?nK5LA(nZX9Rq$K!2W-Yx&vQrM$v0VQ zALl0mj$zR?1xUQPdCg=OnNin29}tD7Ns({v^|E7Yq3`yY6_{H$JPobQZ7B|@go%_b zj|unIA#mI>1kgzc)iK!LT*rsky3#~=!fewEo`&T5YGqB9RY6yFNuM3%GsgVM8>f0X z_+Pa(IW_?0nroj)FXJb}_Z)Yyx_)x`3HmFF*aI9l5(f%OKCbJE7s)wNNazthEYUv0!lUvw_)7&t$49f} z&;S`KW}drLI~?BLYo}(&4Z(c|uJ;32kk2!TBv; zQ9mn>={F8S0Bq2{?clgmfU7<4KabW`a!Xnqb*p07qw*8Fz~8hoy!--fD7H0jW*`h* zwv~SMIO9I=QNka60_h|qVvd$_$$0@FL~GUlnF?S?TB4E6i9I4l_=fR6j-TYC@jQL3 zaWV5@ad_&Ibk3D|fiiSXX-cA$PDmpG0X_BZiVlu-pjZ?-i))#c(9f)m&dD9pRVjaLoa7y#jOS&UP?Alp5(-TZ zypKpbVl&rY2A01#kDaLfkzAC>=Km zODYOcWJ7FCNNF~ofPJBC>^qx69su|y3!$+HhpWjGV%RdBDl~;hFXJ-=QPF?s0I92- zlza7{uo9{F@tYk`rHQUbSsAI5kCgzC00rYxQHd>U5V^~Q{lHl~r_KX(2W~3>-lhS< z<(C-vB?wcC*g}5O_~d7F)W8M zJOmeefM9JY=BJiVCuFsR?Efliqn{?0ZHt$kMpRd)G+y6g2v?=tictz1n zqOV4LR-pbrBLZRYQn>zNhE3f`4})##X}%+{fZFSvmMAjTE8I?3?agJ4%eMP zY|hG)B;tNKIgLn)(CxTb)HC*m!t!lulh&+xSU_gAFWoqD2T$J{up5L}34X(L(M@D{ z%}xNGCFDQ!P&}KgbTfrHR2VfmI&y(YEplqt|K6)KAgTnBiVv^!2`qT-K9L{%(tO?i zgv>y8!;O!xfI)1>_8#QARnMUpU;wr2F3r!(3lBO+>rZ;mpCD8=uGskX78gQ^q>nbS zv=G8%>rIlWyG2~lyn6vtKQ{_#eT2HW5QJ7tnN*&`Eo1g-+Zi!E9BHGGb@YRKNYqoX zi6%0p{%Gnf%Cu$-=rW{SGNv|(HZd}O=mj?U>YG4dsMrY7n=d}OpcDNaH`~$X_V9NC zB&ws&HX6t~GPi%Lg=w_P>Fm`oN>=)GxXC{#zS&mkezh4Y74)hkMEr|IS4YTXrV`>D zCy+wQI0AcP47IIJ%J~5ALi=Gax?1mOF3b)cA^d{BoiU#}ZEmbZfkCeVcPtH!;8el~ zYA^As3N*=}l`O(?l>AoxZev)E1*Tl_Oe6Nxlk15wBfk)1Z|E296KuotA{jHsLdD() z3kz{i$;tc_6mJtjGHljC;!@)lFdwjxem5Fd8P}t+tp;iRJnE0H)HSp3(#lUF>yNX* z1j?=)9N_1%(22vdDrn&afyn9XZo4j^Lb1n&n{^sDX&)0$mJ8?glDGUVd^WR=!G&%- zyo4nRy&YS$M}S-wg+H3~53`d)((uWLcRn~2obXkX6VhLkBDOh#$R}x}?2wS$j0=c- znWC)iUt{u77(sbUv}1q48QLEMh%=qTc?^CUmWg|%xl$-N=tLO3Hd)Xeu2N`kHdPui z%{(m%WRw28AvER7hdb^hg=&mcEMzmFmVh-KLkoyq8VGWSRzS&$2K*(M zHxKzWgL==XJ}}(=1;N4ALOf5hqY3snjQO>kDXH4BR`Vz7lrDH0az6Am`}|bOX{i4n zCCvH#Yi}(*RAnS?XWf z1vB{q)=GfT7_Ii9jrO@tt2^AFG07&TiO9L)e5C=%mFH^m)T+wU>BWCGC2O4u?J5y! z(Lgc?RfNw}vxYkRg8yj?%}K3!s3O(-+jAGMtq~3BxS;iqZj9$seCsEi{-9_Ot%g&n zQyEczq`+S)yg_nG{V)V=LqffqDW;O5+Df+84&l0iS>^YrPte}MsgRb ze@Jg`M_}l>7Qz7^$&CIr_UspPAtB&=XOpL&Qo!-*o|XwX6m6O?dtA60bd0a^pH5x^=kCtKw_654;cRyi5hqSs}1^o2-*Z&eVU$0 zg>`H}I%kxN@ga-^tRGV8qIm_!TIZn>+4-l7)gHr6sMRPh)eZ!4O;l&(yX0ZPSa@`* zZ5i||p_xuW>-eA2r7kUnX=w2{=f-BRA!w5BeujEZ-Cnzfb)8B;0vpE2uaoR?R_9@|S$>rYDK|Bo6lkwuAw6|Wtm+{9<^)E; z8GN zA?86qOh>AH3tererqS-T+kG)kEa5N3Ai5oYq}YJ0I{vkdZT2CUyMX~9ZKzmW@>m!b=R+qPr%aM;QL0uCVhp@`f!L! z3vgm-a!!P?2+~nP!bRLR@ zrv5obsn+rhpT&{X7J* zKN7_Evj9bF#UI$N6^A?*s1Sl_5_GKoY)zAjKtJZ9zc9P|oB1Qmpa%Yy^p-oJ>4A#C zNXk71ap3W>|H0MQzTHsDD3u13bztGSh^LlJcwlI;c>|2bezi)9e}VtNH>&FG3R#9n z%$ryCb~#Xc95@wj{r_3jYfH0u*T4p;0Ped(K0gzzC_D=fYH-mnn=d-oQ%zB~y2t0; z@f_)IsuLPRv8X}Ssd9ZTd>tiw(`LzomGi0*Ke{i1d8ypfZ!3uCZB6V! z;3mXfHfcvx>-nsU(+008>4CCqUhbjuy9sF#wR&PKCL(w2fLHbm2$@6mN`Y!5gMw1* zM_i~~YG7(CF>~G65&*+TY6{|?Kifwy3bxN}Dr@I1nI^5xrOw$|g;VW(qXc0+U1rc3 z5nnqK`GQ%$vZh5x$SQIp2_-Q_-s4n+x&-%U0}-Z0DDcZse5~U2-!~hgFUfhhvHP)1EzpCR*rW^VLZ*a<6UiKqyT3og+#lH6v7jCq#Bbj}>~0IGgE;UY zEn~%UJTtMNQ+Xh0(SDNH7A!mINi^bv{$Ne#{_}~UFGKzW>I#ZzUYgVR?OtFSFI*lq znY**B97C4a+?LQ<%&*R$8g>bCmgieU*F1H({4|XDGFvU^&f1h}=osIBR!py}6?onH zF9J*Y@$KiFKUdzANI8pX3_~TOxv`n`vF9nqD(v^sU;3;})70QL)+XV9k{+g4kj>}BYi)ogaM!C^Qy3YgawXh2Au-j8u4OOp3zh-%_8JUk zz+N~5Fn#A`h(uBKI>wTBCvguU+41}8Rs8Y>&c8XZiPJFcMY}pBR51gGZCppaA$4aK zqDFmurvp|iyYF`AJCxN4u74;p)@C%4#559Xv47F>mX--4RL#YJD1IT!P2aPXd8<+b zqW)l!^~$JG|@|o?pp*I@0G)>6D-%s!y33$UNo3ewVS=<>m>=i`J$xi|L)Bc zNX*y_WT^S0i{XL{Z01YMX!vZXp-M6;#z-T`i9nrg6jK2(C*;?48o=M8x<*e5vNgxv z9Yq5R)gLzmwgOmNezSsB2^<24!QF?Bc1M$4a&j*TXV%k{oMV9mL&|hCC_+A(6BIz9 zg&IVknuxE6?5c->z1+*?=urPPJ@Ef&&oP)EilhBS)09!}w0ho+bps>ej#t&SybREC z%p@OTqgi^{sYDCp!&i-bv&p+UB}?N{`&b*1!_U)zqlN-0MDsjLctwqKMC^}#j6j$| zVKO=KuNgk`{&Dz8rv7eTP({kqj}%5`fdYFrV6X;1rbN)_hl~XP5C_x@J~zhzo#W&~ zJD&hL4%=pncHWE(I1oN4?v8h}!VYAQ+{$dXk4s1ZPM}VBK(D8_!M^})Dt-<0y6}XX zPuWLsw7>NxJaV!EJ0zx}1zFT!{sJkg&y-GycJ(dF#5$18{KVr<9nAI6`;q40btaNM zgYA6>=~0g}7nB8hfhn6%!Y=$r#Qg21E18zQh1WG`QQrv8h3bAdEKNBZwc13&>wxDQLd#o-FA#Km_-Z#3Gr$7x~QEFE9o*e zg_uk^?>G_dR9arW5=~S=)$T+~#MeHuMC(L$=V~(CU8g`fUN#lCv6f2sWf!?I1)so! zv&RaPmMRRYar`43fie8b;uI!W4bCmpyh>&qtKNvr!k|4cv87hyOnkN=#`bC^xrEb@ z$|kMF46K0x76|7m8;mnadZt*+n?KyYnS_;P-ctCgKgRmg`Q=COGkE3aIso#X`RXiB z3UB;fIdn50(Y#MOKYvDF^bIH~y_F==9f2w3%C*$!VeXKX$dt@#jShUqb8p?!`ZXd< z*VqDtB0i|j|H`G1xO~5?;b9|Qjt^|qFH7|H8MSg1=~L2hT!4j>AarBQw}$Yl68a93jnNFvTl$s_+B#w3^m{rj7o zAo_$lYf=o?Prmg&uhh5Peibwh8+zMS1?d+<_xr^M7DGrkTEdC z^ay8$oxsTs0duO2)KXwcpg#8o)RorWwUxGm*{d#_u)imzpjP1%^zh4{pJVqHz_{fj z4(k45KWolkN=e|+psutiRvb=>QjyOP&Vyr$XB5I9j8vny{Ino!P&+W? z+h3||`Q|T+I-qF`p~R)o!C)$xu*ac@xwHjUYun<9n_=wec{QrkeDh6t#0y2%BKK$| zm||bgtcA)>XzjU!9Frk-oJ~61<}buVS9rX|AO>}<(m#IQolHpP#WZo>1ed~)*LMMr zrEQa|^kGI&Jo2Ile}LUJ*X=bdyP(MjdxGU81qOnrhPkBvw0>hhP$03I^#ftB8f`b(@OhW6 zR9z6)cEP%81|H*>W&;vnG`QC-WBq?}>b<=}?p~!JZG(B2ih%9?jo@ap?ZUgUZK;V2 z!nY0f%i^KiB14o+^JXlF*P*9wV60%f;clghNJw6&;qcgLkmZNTP-}Pcu-+Wi@PV=L z!pCdha&U+~}DNvos73#51;QLH@@ z@@z`XPpDIcpN%Oa@&vuiHti=(r@Uz9S!gf-wrjA$#8__6PfhRP-E?@hfYxuTM6 zFiW1tqY+5n#?e+nD~x|L)DRc}`}diakrLuiITDgXpP4ZTbIFBjFyGY1>IbY-DIk5n z>!0#<6xGaV)=IIdh<2PifvJZzTLz|nlz`&Fl1M8)1jV{VYq-fI|M}_k#ik|4tQEz# zSJko5f%t_-(FDY#$UrSa%+^(>pO14(lG_i7f2dE&x7#SweI?2Mf-DFE`k3Gqa3pmA zxJkLm4Juk%Gz(6Urr_ijikrJ^lv-(gNqvnyD^nsx1XT+=uE-9ra?Er7qyzIT<#Ckm z9;{IVLG!{vFTDX^q^U>ms8RtJe{gAt%+_AUaUJTNC$yvQQoW2Ar7t*WD$<{_DvPc; zYPghfJc;Ud!y45c4lb<1R+22*lT3ghypV6zC-W+X*qa#X-kJ$6I`g?tw~$AO@6SVV zd$>K97Y%e*?qVwf2TXSBe#JTz**V1Bl4A#CnPeAAyxL;eu3~YX;Qwc{hR*A+J^f+K@++m>9 z9qwKkTZ7w8>C^P4pDu`r@5!2*xA&mK8Of_sV*18=rpgk9WymbUY~O)!I$`}=bNTqX zxTU1oS(8!KT>6>$dkb-&SqLxj+IviRuk&}rCE2XgY@GF5vNuoiU!rl~FrM$Uf2aX? zm|8Z5oj}g%;+||83Dp){qzj|ZaFs=NLqJ#}Yb}$+C7`InqSMaR(G)^lacF%ke;(Zw z1*M(1nxf0>I9cBvj=Kz_^=a0mx$&NCr)Y-&1hY(JJj}#gevMFig~b3ba~%wQ6a(QA zcxwE!n6F!D*mt=EJkctASQhP6$EIH+XhBBvl_y9>mzp$h-2pIf{x8i1pCaYZr!Zuc z2V5BUL&XZL)K_>dMOGu+P~~3oxT<^UkSJLTUMn-y)99U1I6u)TeI_d`{G{cmZS<1_ zs4)jb6(7{_uKIATJq6!p3QDp`(l%iaGdEC5L!&`je{qUJl)+lEPgF z)f9pXa6a~IEFlDDqP%9kbrtkMsVC2EcBqhy0;T_#qzJ8%-1t!76j_NCG34T%A4VFZ zIZ(VmArgb1nWb!((*_v-gE32%p@{2`xc^5FK+K3>{iQmjG>TFW*sJ0UofY(!GincQ z-^utRXx^i zQ3JNzXmA~pP&Gi)%H}<_^QkOxSC;^yAgX9oA&^GJeQu`cOsBw5Ha;?Z`(H)&s5+bL z0g`t{$FQkMY6zJxG<*UMI^#~{5jxpKZZE0E=dmo2!xKHz&3V0J1pG}H*^y1OUP{6Sy@Ah09X6CXEBp7$T&(cJ|GOsr-E^_MGVRlrMnAK zMyD`@9{E+OVi`-Vra8l=9Q|=%>N1h(sc-cm~13D6G;<#Bf8GjY#vR_8$9SzB7D4!c1>-$YEi& z!L#-{C!&CeBl>v%+frVw6!_pRRDlB2%{t)N0aXvODvIvTj6HV^X2nIVmTFFb#UXI2 zb$Z|j91_cYJtcq*4lC4|h*NwCv|L2oc^ExN#LFcweWFwQ!|IwL$+q5tgX<{7QsD_PWa)9s?7;lpLfV7cAXq*Ul~v zl<38Zzn}R(hZ9?urbm2 zy=B56-p9gy7H;BdeWD&%ZT`aooAp(TY#J-Bv}`-VmnYg*+H72_9I?QO188S5EwINS zSVSs)G*(rE9*EoKe*GX{L|Pq6x=0+T_x`xQU!BT%FZidhu9RKw_vZ0kLGPY$0N(lR`w#e1XB+Wn%aKQHIfLT{Jfo64~H$|v;z+&6?R=_fwk#H?6 zZFtxzB$YNHvD`&iN2$s*k(&n@RTNN4e#+whh(#xUY4~51N^)aR;namebyGyL?EZW#}Wd0|oqV!nK9*PwRjN+*86O~@*5vo!8eUQkn@q!&R_rvKXTWA5k`P|!$jRac3WA;S z+tp2<$ra262WeA#zy`F+K}=t-VF)U4ArTxHb;vl%LK=_KnMC?8f{vjl4a>XCE&E?v z61vjHrey%sbYJ0}SYR;QQf_u7ZL%6vf(-1!sn#P9H+ zKP!dA$?y-h9+sqeAOZH(JU5}1wnNV;LmAcx?|6Gr&v0iagHKk%qDyx5V_Pv(oOs;* z39o48_-CyKMkvl&uLtd62Qmp^{ugco>636O;hY+ADTzZfVFrm$@yUhr#Lcivp=Skcgbd?++r4Ff)k0iaKRS`p(GSGNL5 zP!zlnXQ4K%4T^OUf_(ZNk3n1EGK4YfP7QShYQq8{!z? zOCGH)^E&2EgVLVqA?9OFZy&Z=sT=9{)5^av*J@F^;CL*WDTR%8W7b`erm01MAv)`g z%9!WFP}ckww+)%)g#VvA+0@DkAYKn2~VA96r2XrK^a@Va(%(oKE<$Ai-M1 z1i-i66Ul=njypyMHa;1dv6S0`7N6tTWvCejHP0G~ulNPEu17Bi;=W^=N6{lM*0VXE zS8&UT#|*v}(di0XpP=K}txaC%eO8^%YKi<`RVWs2Gl^v}+bIjospdwmo%`_lVBbwPwK5Z8rWsJ-NX;hrG(FGE2QPehVOAPW+% zM3M9rRv5^K;>PjR9&D+zu;Ty!;V$T`xB6}Y!VsX@TcVysa0Fg(Rg|3D#29`XNNLRW z2;Su!vl;MM)q}uZrL{-e&z?0clmNFIo{*>!2DXjhmqeb^@Sv2)d`10XaAswN`RtQz{i{5KvFZ zK*7mZ=1YKa3KM1X%vuM|lutdPSDvsqIBLt0*D*`Ab{ZKXqlWML0v>jNaPH5TkfB;d ziDNWvns!o@lCwCd1x`K3ni@7eL$vrTmpYvp!D`A3aBr@j`=M?g?jL;-%mcqc#wP4( zTCZP7N(BBsFe?IltIUAVcXx$Z=kBDB5-yV{e5n)W!Av>mnt9O=OL+fa{3o5^JJw&E zo^OVIv~tdKK|4)GZ$lgCD{{|~ti(mIvKwvD)i!#w9>xQG`lg<4a9eU5CRlBK^sOc~ zcl_1$PVs|~dl3fD+Ab85ei6fI&+R20wya@^JFdb`^BEH}T1~J1p7c(@;Y^w%l4P}L z82ZqRELv^uDKm*C9u$(`MdOB>tQzCTq@pC61DwXQuW^put#$e=$g%;*ngE6m+rcOUxmu=%j(&h9)#Ld4%Tv~wAyI`Dmm!ykkIpBz2 zT^1<2^@fP%92>!70C?=#`JCT_dyqVONieFHfD^N}Uxu_{I* zq&*F5!a16NJMdGcGmXN0)%8~L^ycn|z06@`uCEWj5H(1|9Tx3@N2M!AHiNwo|HQ;I zidcA(B*FQge;QL9qAhlyvMsXJdI_{vsr!VU{Po3e*qt!C!qTT+tFtCNZs;QjiY-!+ zLMLu>z%BaV=Ddh?$qolQ1MzCyKu`E8nG!D0P0r))xEIs!ULw!)h74n(kSL$=&F}`A z&Y)|ArJR@22g4yc+YA6x1?o$&JiC1d!5HQbvUInttA+)Yy@zzKGQ=*mqFleNX?vnxE2i7L zZ@2vN;(99L<{^_SS;UOcUUZ4Zqr98+1mX{Xz;m(1vRf`O>=V~~St2IhXqoIzlA{XZ zHe9q8{=q(fo@83?k^e=d@*I=`e$MXkp#Po`6Msrt%(E>@CNMes!Y&*qZ>>a;6u{z9zt$r*0ki72T%ZLbFiYzI8v*Jd4Pw2Ul= z5K)Rraf5MZEO+2lENAaN93Z2{HKD{h~Df{^IQ3+5R@l9PO2$Zn1)eov=i0f#3 zhqb6)2wv5Xtx}KT@`Qs}!~lJJy9fZ7F>YX**d8!T&>#11mRuLt0;Y_}WUEu5H2N_6 zc_{nAZ6)NQVWYe>ob?~cXZ(*P2OT`_Yccjh9F40poG7&jsKpbKUkKMaHkRhM&$w0P ziCfW?I14<=BmL>i;cj(=+&Hir82h=HYXyTo`ayi*1UtVVE|zkDbQ2Rm>s5@94fY#L z`o73A7NkQcTUd5dUgb44ptV`?TZF9H|Ae_`$ehIWm^Ldj)6@N6*D6e0Lv%;{BC7=h zwXB7DZMkNt#cW`h{Qru7JB9jPB>C+v6wlFTqje7Q6miock*T%3rh@!YAr>9vMqqIn zI{iEv=jJ;NkYjm8nj>?YEa7~lTEem(RDnXkOJ~hY@de+4XQF|VbCM?0K-x7dGd?0J zIieierT1ScL0IY8E7WkjmGCvE?I=P~e*g8c#?y-1*qk(t zw6O9vfx%(lR@(=$XKU6`5T;vDh`79aq6U-h#i_v2Z<-5$w^gn14;QT6+^k3(3HtlQ z{b`_&l8{I@-`OAiP5t3`bDPbG=@pT!XKZ-3X^a+37-~&-74Kse%Q3nbo3<0997Iki(2nVLhKl}A zN-}2MEy$e$20f2O&=~gDyHO{&q7c+@?wV(he8y|3oWF#TVUamRtf2lI?Ztx;d}y(2 z&LUa&+)3TcH)iiy3cuz$XV!(Yx#MZiZ%e(U2|2N2J3eEtmJd-;dsJD^0uCV+LygHe znH)`hE=Xm#DnqnR1FVEe?XpXy$A{1%CaebueBkK=i*W+1hqt5nqK4@-EKTJC_aK0T z7_!pvJGh&$+=-jls%gBW?V?8hiaTI?5YViIR-Narqe0&8ks606=erii=`FvnJBW#Sue~U}<|JxGBA(wm~G|y(=V)f@j?H@H4_L$O&AgU*6 zTSRuO1| zi(AwOW)@60%?ik=l}R*9Dfxj9JOTNyU~Z?PV0@5sHnnC}fQN`g_f1236=9n-4NrTv zTk*#Q)6mu0y4-Q%(fjzVi;Gna4Kzb`^V0vn-iyssZs@hHB&ZIH?-=%i?1~DJ&YWG< z$d<^KH-SV5Ui+)7n$-Wv@psM5ZECG9^??Y1oUp5mNd7o>4yjirQV^Y(16fMHwTs}u z2u`PAY8;A_{%o(1ozV_QxfD*e^KJAjj)0#GjGLNQZz79=PXgH|m zd3LBr)At~zFjAC4T{!u5{D1l^}P?*)JZa%b#!rngke)I_%HlpA38Z_aj()x!Y@2O*1kBs*aB zypX)YjK&Wx?3?w<3p2s3)weL!z%_ykP~nePtmeKf@ScL(wG?99$>d=ZMm0cye*#^{ zo8EavikZYgZOf>0CKrqxFI{K(`hUX_<^C3-+PC z4`s{}LmUpc&GHThKS1^1^Srzj{p=&MC_(_Nr^fNUS#rc8h68f^0L0!CUsXz z`@T3|FLWuk)ZTXPyn^EfaH9o~6Bjcx*eL4_)5f#E($m_MKY63O2Ju0+NXB&WDC=!D&EpPY41k$IHMq@TVy+QIz8b2~@K!+J6`4?JZX z9oSJP3-U#2MTqn10j|5>;bWTOy4`KtifpagNDjWOW(O8dI9|-xq7Ys11NWP zY|@HEU3)-LO~lxxT&60t4%IDDK98^LG}-jQYu^F{`@GC-e$7OV>i@+E%TajJyK(l- z0O0Y16{sliiflD3MC2E@1wgT-?y6^u|XtW1|<;?{mDCNU_p#zVNruo@#BI4GO+ApULF6|CrunG;|c0x2mMZ)frzI;Tkt9v%%3UKHW8(%n}DERIz z!N{5EhlDO{ESpH=pRI=l#U{=aaW=Tkjsq4T0OqB~Guml)qfMgOkA`4vjKdE^4y#P) z;|zAHHRb_4*15Cv1_R4sfP87I@60k@W6ss5~A>-dDZ(w18%V# zd?PM9a@T+hlo}gQKtTG9M(&PnB(?)xVkqTY11#CpiWP~@;&OwvUFn?K%zt9Z?e8J= z2(8Py*GSTe8YkTNBir9R*G1w-nzWhnk$@YA{`2(56ksv122P4(5*tw%3a2QhMuVTw zT@EOKr_y0E72I3QIvp?CrGNrMn}y|a&$nz% zCTEH)XL2^{6sSGU#Z8H4omJF)-ewJr=+E6S`SatmJSRETE)<%xrMP@Kp1^#ZF645X{=^7;Vv;DV}5Q=SlpHiy{_f; z%llTvxrxp-$6_l9ngmFC0(y5UlbWMzin(*!yojzebj=~1*?7YRW?p3AYDVUpoX4;W#0)hRB+TAL!dG|l7zQnq3<4KI zyaxRGld#&74+qHkG>9n|;U>X15p27W6P=qqHAt#iBJxaH5 zh@gUbUVX#bTn0a=dhXuM+Y@);nF3k|Y*_rem%D2xMEitH3rro;h$Vh^T)0>Q-vx6N z_!b>G5Fb>=Q^{XK24WkW3bp{U1?nch_}RV}dtktYiW$m6!|H}*+%%R{h=8R{CNa&& z17=Xrq-6TBp+&4Uzatpv9Mx7}v@I1~g_Xq(_DYRAgmN#tPTcVbC$* z)A>G+Ti0tB5h))G#P+<5azE%Zca$|X%h9zaCOJDzjzCCd-pmb)?`0Xw7TchRbfy4^ zas42x=|;CVKLv%9Tgv$wbluOqFu&WG5gdnD*zMXn&^%nF2|h8*N)Gyj#S%c;n|vH+ z)6)_0$sHRu$RGX>kvq-pU`i#bb(u@lL<>_8t}QUHhpKd29>)fM&KtoK!s{`qv})L= z03BA2$1?iPSk2}5eo4RN06m>Qb9VUCi+-`UB}W*(s4y7qxZHu9OeS$#iZn7BVBdQA z066!UkI9q=FKi#I4YJ+N07vj?5om4TRo;E?^|g=2ZindM3b|I6O@QE)hxh{i2XNYo zai9Q9NnNWl+8r!Ujy+Rl_dDv!NqmG9F#ry-geKMw&2~?E`=OOXs~8FKfvayFYdQlS zKcxh=|Kf3K8Gx>^ftXXL75uwuc9?Viun+NTp05%Xs3~&{T4%UMa!_gVpIOsna~%L! z51QBqMQ3-J=ky_?Yh1Eknu9^oOn6GsT*@}gl92VM0^<@$?&hvcg}a~OR-FamCF^Q! za(-QiH;tI+vHsue}qW1_DdduwEuzllnO{s3J;1A(Yf{ViO zNC?QYCIOw?upJv2gNBNbLZ5$5QrLzO?4=jiRt{*}50d@OlZ~W0EFU|MyLD`p$IU^1 zQ3u>}|L$8$tF84hy`GnQ_SEB<=FDB&Io-{=`mI`I*pkSp@hHM#dek46X%+*}B)ND?wPX){?BeJN{<4DalU_gM@oZJkz-w-3GMmPP*w^>a* zvaXwV4hweyc~V^lyD;=Svut)kMXUG#!kpyFPZjA+Jmm0o`d8V~TeurQq`Du%ugt>b{N9ly# zc_DV#&nGGiB4e7Oj;Rw=R2^?Rr=gdH4?sVEb(6J{Fg1Qv!f?X~suO>;M`d+X5o-CW z{(a{lW$qZrm)i=oie>m@ZL;VNUdg2BXB!5Lj67lN?&Gw7e^Qs1Zr}tkXsZV{ z0E}!lTA8~^sYkA{c`}4>0Yy&`6oVhk6V;oPWIdT8;kiZ1N#e5VLPT4v;o^)qRc=&c za8Le0e?tH#YERXY>MbyBYJh}{Nd|J}$PIYfc~^791&pQ?XK0LrR&A-5wAT$56S_ioSp6TP?yZGAA5ihqg< zC!3v^s-ekNQB$!nwE`du@QUolIp;vVcO?5WRgu}L_o^A;*d7^d1=iOcvrzPk(+5@? z=oi&8ZwD%ztPze#)tU&|NN|DJ0c@okiKQZE7R2r~oA@T3x)V!kc&oiyZZ&Bf!DV&s z(V^zdHuqV%xCRmcW5+l(sBxC4z)Ow}r!96HOz0}tHn*Q;u(zkT=9lCpn$1y(O8zuG zfwQ#G*uva<$MbeM8w)+-99-`~+*R)YcCxd8P9_dT_OsD>JsNP5-hu82)A8E0 z&{DLc@t-%wr*VK!U)ZTvF$rl1cb~~b;LU;d{%>~1gvfN_7a}klj;r(;#a2-k{OU}`FWI?Z)ZlF%JdAS01umm4SU6!g4EQt1p$Nm4vXQjf~((-5wh@z)B<4d#pULznpZ_; zz+~T1)ZNiI_vJv?8~PNIqX?TvoR+-D{nIsLAm$P>op;xf>m=j`fPVkuFN=x?1M`iY zaZ)65B)K_rgWmkyG%b&t_#c&y$CpXZD2%-D?Scj{8JTMYxyBauiFyJ{p9w%>B>-1@ zMzUxWg03BNL`iSR^>rehidSj?ipy-Le!dDDIvPHo*5-9nL^JAPTW(zNBKy`d#=>7e z8F4L`L?$8QsxQuY+T5iFaDfVHO0~0Rp@M6)?dKq>!Tf-~e8iF84mH*@V5VK-T)I&# zbzGA{+*`{!*CQ}~pTgM%rjgPrAqT1FbtMxUdH>&w$VBAO?FqwP9ceR_*^AROenJ@9Hz#CiHE0%LP_aMNUdY)>TtJwC9I z$6ULJ{~6@eFKIcMc~d2kl{qqMCcD@keNz2yIPZGM2c%671L`aP*p7oA+{i9?y-kjkhh-N3_zadhac@J*_ zhGF^VU!!ex0Sdz6M?SRk)uSzIXfdq#^EO}>1L39(yrL2<*p=Qt(TAxdgwz&TRr#h+ zc01BA8FC*ELUay!%5r|^FI<%`i2(c#fndc^(ZblLTBb9zuaYk@vq&%E=CxK59^Y$;n{S!VW;ex%odIE zIf!BaEGQ;&ExtN}uV(wIC4Nff6KiSIyfCD^WKT&`!^Yq1D490U;rTe+Z090_Oguge zldR2jg$%HRAy40avi-HbqP+LnW;w$lS1LOT?%?t2k8Wev?gR8?;};`AHJZwMN0Ii5 z+VFxjZ1*u93P3QDH^a@mc{sP*`}fOBCV*ns+E+*#m^KXRYN~Ka)&bI@S%>mJ3&=tD zBJSlS%c|bhSrCoq^I$qRyGKkZA2)|6TKPJ@ns~1evht8%=5k5jy)=3IBk6l85mW9) z>bG0R&^NheSfuQ&`#=DEUrjM)y-kJifwtUO@TrxqZ1?x6ezNL^AZubmo_I|c)*;ZW zPX0$wkkHgo--NjK1ENyiVW`xWA*+m)gWHZzFb42?9318On9jSrWe(9Xlpn?W5a|l9 zPJh=Wo0J1z`4mk|28&OFLPHB~(%c|GPhgwm(>9XoS_*vg$>oO>w*_ty! zW~_Kq*3;#kbmvl4JRkwdzdmq<&z<+|@IlYdrS=sZ3pa7&0uot&ZP5Ynf8r|MyWhlv z$LVgjJg|}K0j6Yg0yu>GLUlEgqP5?#;h=nYeE*(LVGWbGN5kspk?EAv{S$I4Xp1yj z4jj*8BZBH$uC)t0ka#uOKMZxPq5+C{6s5-yWPw~-sjAF+S?nl2tW2nH8`pi*%2W0b zE)WIbAHMRU)pT~(RI&`lwg@4N$pj!gtyJwi1E{8jBy9M{!io1{*h-W5wjHiaj`yl> zg85^+IGP}3-NB_4XR5b<7rTj!4AfH7*2hUtgE1#}NuP)OzUKYk0AHdfCL9l}ARFSE zb@(D3&c<|@`L-yaxLJx_ydunZBBRCY*k-4s5itm)UMzn9XZXn|TlQ$V4{Z=368!hJ z_w=y7@X>Q9jiAj*edC!%{XaU1;vREG<)3b(43uyL8wsKY^Q)mC6{)V}}F*ti+;v~I9 z01uP`fx!!NC9qvS!L433HPjxIEH5Ry{DIBdZPz(aG%tlF6f`^Fh1evS?*J-7hj$RJ zR)yiE^HR))R5pe!THHNXa4X4h@pyaF{5IYi*WyU9p#ZV5i@6>E+v*3b-RlsAEj~aH zXFS#JNA9O1er_{k8o+%svA`Wq2(bPmY|n3=)IPGErG^`P^<`&B!i%$}@b{dUPMu*& za?}C991K9h}*2&G1-XN<1Db^Ji z$tq|9leP@FDQ%>IaPMnQly z7LugX05)AS3a7(X5XBkV)^zmt6*u{zaq5o!&>kfX33o8%`vA0>olHcWUO0cx+%QN< znGhHOgC+#$i#BhQN-}6(ws}B^PQU@0z8&mUL@vt#1g977?C|`qOn}r%F>O`V8)}$F+D0M>Ymmu8Wuh1fu*K{jM8}*6lT5TW?xJr5@a;2gqYwrn9c3k% zu;dmTFD+Jo1lmoSoK}{cp#h(VZsIMwx#}uuf3n{iq;0> zav>maQirLr?s1RuaonTgch?N=xzML33Lr@oC5y@-qA_#Gjb$C@^|r+MC1bQ$l_2Ts zCwHCa2;d`Wg~bVxgoo?_M8Sh-;K`qqaNt`Kd1K02>c<-xfcNzqRSg-N-AEjj_CZkU zU}yhSF`T-+UmWb}cKlpYNm@4PZ!g-kfC*Utifrvb=xKcLU#>l>4v5XklcYoVoq@09 zSZ$5|fyzS&9wq})bKD1O%EYEi6^AF6yV`x0ZX)AB0QOJA$+5QwUc6?SS!GFNh#Q^_50KjZ_Bz4L_xHu0}ZuhMiZH92YzkuKELrY+r{C7@BD`@V} zvGV;WK&RB&S|y_dOy!S#r=YjBr1Q-2|}^Kp{H>1#%&*$m;DqEA}1q%0(|c3iSL9 z@v)M^p?yh$%5l{C_Qy79*v&FdW(LCvkItCf!p{LmuZ=~BVdpg7+Zk(QGZ%8t)|Puw z^N`w}&3}6du%C+}+;|>Sr79y!#@1AOXm?TQ%Pbl!Q$HBcjbV%)YHfZ_Ljgl3&UM9) z^7VgDjCcx!^8Vc?_pzYYdSgIo}CbE?H z4tnP>&_~LkxuH8neHn_t(r#CUR@}$+`ss4dCS2x@#Gom=)+HgSVLz(p#tAUbev>N09?C}XpA{PiPwS00=^@z z502$UUO2$Wz%OXKE+yh=XI~&!V?bMfrV|j!r+O7+lf>zW(y3;eB*!01#Ybjze0@Te zAb#t31n=Z}Eyu9n4sk!g25ExDTA1ZYl*$EiF*y~cQn z6_T?g9%733sZQ}@jGv*4*hLB>N3LorrA{?oic?k2Hbd;O4Viy7kM4@?Qpg9wZJfy^t=x-3HRfSE?W+V>@EyE+Rd^}`U90y@7&sfSm3Im`+w$=5BS7C z?mgxS-Ms(SFA}}`Zi{$F{OZQe4rQ2=gy7ypt}!j7D~9t}OhNH?BppN1z3W7i%YG2q zl;2xIGXz+uW5DI|C4hVc5%ktCw(CnS#<9H>0jv4|PUd~Tw06HatqcDw7YZ#4*_PH+ z|20&L!a^Uez>*KCGp{qnpKHcbKegHt6q_pse#o(VhKhuuE6LVUwDra&M}`}h0GzKk zu(BhrQM*mdU||v)i@WhC!6bvs8VX^?MrohknX$u0Q#PLsaYcvR)%88XuFbWxl-qjJ z{Vhot>voWAQ5yOIrvh1TS%!4uO-5XvN$^E0&)CwJmnDnJhezy87hpyh*LkyFmSC00 zxkTs4X7JQ0B~~(Te)yMJmK0yG5coQNwcY0tJ@hTe*tlgpIY+`icYaXsmtY(z{Ek!P zxlVNW-@pzZ1i&g?tA^o<^}SGrWsBIw-v6y6{7k}HiR;CK?(bY=Wh`dMk`RMWaqhl>a0;Y_D3e@M`?9CR4FChC6L~^g6 z2uNFx9Sg)oI3byuA>k#^aSX6+vwTso7nD)A&6HPhI8tnft^h<&G?_0R^22d}8vfV; zI~a?t--h;Kmu*dW;$AU9pxhmZK|#NK(u%+Y|7b)an)i|`X=|!SD=d17n-4qE;wM8g z#z%r5wbRiA8AN}iZ*)lMe8+>p;WGBr=-Fl94Z!rS`4Hq4Ba+4W2qG-}&?@^F1u|_|jOa z>An5VWF0kw>Z++!4Qi=U$S@GPTS|~<4h_5@c*w-e;u^_d;%Ee~gC&l^L3swbFpDj`sQ27NHr#s#m#YfcG9%%AQf~RTrEV z?wu1BSTFSJK4X;;gs~SJ2*4~c%J(kCdmvK@3G&QSUtxz8`b={>a$A2h!Mt%*?eKC< zCS&nuEYm~;%@+<&OG;@X+r~GSLl}D%A@aVtTrn64S1;FsOo4AR6PR?_Tb-xi>E;`=Xh85-z6#75Ue+$TYM{xvQR;HQ zVtIH;;bvmpe|{^RukPz9oxv<%PilL_GYui&6+`M?)tF_m>b^)5@+}LQi74Jwdy0nP z)_5b97mZcP9~T^?AGBJD0~TA+#VnGB(n<5S1By}M%NWG8CQ8o*MM~app&L$I5pyAv7 zYdExn`={0P3-9=;mv(x5*Pt3oEzBxzrhl<46et!3LTefSaNwJ z6As7fyUb|cbn~4*=kqnl-oA7XLCqJg;0);M$#QK*oGUH3S>lmnF*mA1)4riaH4NT3 zSX>1(CABF{S1lCDd15O?Dy-A3{=7e}@t_i+WOD|=+XsOv$7331#C!ZQ08UQPQoX+lT7i3x7>>jJR%Wk~blk90yer0#2o5(h!+hv$-EJRU?NAjX zZny?X4L74Dn(Lc(wW>ANa$43)JCPdaIboUa&%yOw`~d~%+pI34!my+F?1+nhDJB`G zbY#hrUCKH>CjWMJ;C}rImDq0}luqFl0)z=JWX4e#vxdo;s*VHXE9f4BJz(0LxatT$ zVkI^k{XI)U%E(JJ+4tNl=0|z2)Ym7tt}iy`W>#;#}kDB6hHW8C29 zjL~D5@X4uNjkUivf({Vv+#0P_O5?fU0P?peG;82DD03<`Yw!bqSiA9_lTdJRa}gjh z{P*iiMgL>wiL`i;bqRAUB8Ch}E5_`qX{1UA7%k+MH)L0{(Wi7e0%r`S<@z6v75;tD z5LkhQo)od);tON|7z8iffOv-!0Q)kc7R{ph2QWNrCy9=y9IbkEJb5a_7u25LWw5Z- zS21t8D!7pV0`O#}*l|#Nv7@-aK4so^L{#H1G|rZU`6sXmtR(Jn`;(Vg0nu9Mr>hJ} z-*3tcA5=7hhOh@pY$*Ir|N z4LFJqL2$q;$B=8}%}vR+EK3Cqb>{Bpk2BAWLC@dNBZ@No)kT#~f})JC@g=x^pHu%|@^(XGnvsHi=31w)YlGuE8VB9|IHpSr_ zwUwpG#Kdzw(E@D+qU@jFd*JW|p$<8lDc}-@6_D<*OaxgchgpJ!l!+$1D3+6W5@MkG zb{Ngh@qZ2Hc8D_AlF)cy!nFg|-u}e6#d#8BnMB5uCI+y=y=dF*>GHMpNkv_CmpiEQ z;Qf?GpwTWKW#;(Ga&eoew7izd)CkCz61OV!V|Yz;JAa_zNDiBZWo6-XXg2WnT^*bk z-R5#};F`9;TQi6|Iz~{QhtS;&JTm>D##IyI){jXCy5bM3jE_FF9WU<4u&S&<6~R~B zW=b}9%@xBfD4GtK!zaZ%dCDQHZv-Lo_CX!W=w^bmZ}XCQbff5K)fiZ0b^Xhs+q znWPRBN0&!BjVX_-B}c-XQ`;*GZ5}W>l?8u>VOSjDCoWQtnF+NUmSiJWIKw#%zDbvI zau+03gKB8el}b7SE+&C~a&+NN-w;ihhdsO#Q|;WLkFBeQ79h7h?>CaFC-HD$kGjEk z?&rk%sLz$uc8F(}RMm-}Oz}R%!d8h8<@3GyaW#JU@NyVTB_hIX$JViv5}?YCDq)J5 zK7ivgdbR;9lF!u`?*4yGN!p)sv#@V}Tn&fzA7E*@)YMkOJRzP#lZ{dP*3>AGG?v{qGGZ zoa%-}xU>c#)Jij>*EQmq3mHUk3DjOeiMysK%VLYG{`HUp?zyr9HO`N5(#4??*+GGP zzCm;xHiwt@&}C0{flAM)7AYcuk7JDYD=rH?lBQs3YdmCh8!ZaQg;gVtut|~t2PP10 z>cJas#F30gA~=t>@2&=WR(-A!Gy3t9_+0zrqRu9RY*7a`X;T#;Rp;E3E?{+%&egWV+tjrn!L0zV-t8FMY6vY>iQ0>W6u>@@4I#y)e1Sn z<+*9S@iKU^cYniE@PIUMKW~(ge~R%wDf0l41%kY+EwUc5uWYA%+^fyyogz^s&8#jm zy?Q%8*G`ouI~!G|j1uUQI5+~sB{Q=gI9n9SoR&T_~7hTBemot{i<&l3~d4YHzj3LXTTAD6bQT{0QV z=YB4v4T?a_y#D4hf?1@DKt&*uB)VE07O|E75P6IU8U}_ke}ARfhQ}zc1kBen)9Jt4 z)e6~PSIXxe`RYlJhU~xZR`-3pO3PEDcD`Z4%FeYCkC@#d+g?6b|0Bd1Y*tw zu0r&XwFq9Uf`(DK&&;1nZ>y0E>ug3tjZptLRbYKw6+k?q6uoH{fzKhDZ_S74A^|x? zUjYoVgbVqvTRH|4gboZurNb}*Hi{Db!FS+zQ+1VxyFw>EXS4_~(6j%5I@1Ubdy;XD zEByWA7yIma6Awj2BX8h+~-xM+_{}9sDyX{28`mU=j66JFxvLYs& z3>76FF2>Zh|2_n4BS1yhm~SVO+=N!`Atj_mB&7zwEcJobd@ieh^By|pMBxP`2ama- z5eMgQ+DE^Mk59p1TP9s87!DrYQHxo;7!W+8NvY=2)`*T&r-hT^ivl4<3$Xp!P zz{@1=c4jo6%gnR=5Le@L3?ogwoBpm^SFK90^QM+y7n-DkO#!e*7qf# zb(&DRp_rlsSkrdJ5)Ig7h8Z?>qG!!nzuIB90;D0sNdkNYwc56cHEWx;RiS_eX{6l$ z*Y}-f=&TuT?wi@7$eVD8=f&S~pyftJBDZWw;wnHlh#S^(@4a;Op|b^W^swBEfhNnY zomZC-HI+$3d3E@eDDqs(#(lbocI7Mdr;6&t1nH9{W-fzNx#4Ci;3>Rja~xKqhM9`hJ0gNslGuN*?%f<1t{4K!$DW}jGps+zTgu5i zj%I8{s(e3_0JOT{Td7X+ZFbp!maF$6yT=1Zw;8tj?|?#-yQ31i^1lWn2wymu+;UGa zcA!ZB)k8LjkNdpzVA08v(914OoVrky=fkkWj=W2fG>UIh(akBn?3=@OpXwHGU zS}F!hSSE-aTYPFpISgUsx9KLm!Y0$yl+1(iRdG`Q^Ho z&u4%(Efrv+uM{#{Fc*g=qd>UcO1*0T8fG2}=$rHx(N|KlB4{-$eKk|{aMMbX3Y3l)Ka?N@4B zJSEg52oi428Gq7l?js2XjS4>8G}hIdeW`toSj_oSkj-GflN8m#Lan)W9QWv)HpS|? z{9Az2b&+Chs4xl!J~)$J-p=gV4>J!9G=%lx;3kkv*(X%7pP_i*3CEdlQ8KgR0GVAt zhz0k3p&x{}bJ$a2z4SH)+Xw=HR)=Fl)mG}C?~jLJff>vJApLDVl$ukQ`%lE&x+GG2~A^E z4=~oKzq?6bK_=!u&z;;R$f{qo;UDdvezoD)(s~IKk+6Jy$}om4>*|N{dJD?IP{v-X za|+=?DtB0~Z9CieCxwMiC7Lq}FW%$7{5GxL?s$MF%=H4=e1VgN*UemDw*zqgU&^w()s8@1G?f#Brq zjAyHS#D39U5sGXTZ46O`ds75!O$vd;$dO8_fTbqbO2KBU+mO%dq`igdeiSeu z6Bz4420VZvS+3()ctNtBb$&_Dn2HoYv!9?!J6mB}tq;4gBw998!D@<{wBccKGWLZW z0ksG6XlStmYMdg&lz?lHc~2^bW;qPZ!boi6rc5CyX7XM5EXtTO&bmE~C@k0HC>T%4 z>kCP4d~Iu_8%p7p;FR8OAH$v;-AHG}9+GB2ry zd+DHV*bz4Q#}}pamzQP}JzNu5x%N&m^R6I1;X=q>W0(;L85^_@Lx&^HY>=0gDOB_5 zyENV>J2tAW7VjH8;n=l6!8ovP*tP~@JWWZJtv~gm{$Ahku3#S z;4CAh+Mm1xP5n&IrzCcm^Ao5CS~&61Cd1*|sQyKrj&+>{I$iCOe0fJfbr=V#k9iNXNLg(y`-`&W z*gTn<;;Rmd?D-5EfeMnxT~^PG0b(EvY#OlBAGnXXAHsdP7&69oO{&DUrjn0F6Ec0 zX$K_aJQ;N?-~i|j)HZIhICh3yPj7Y%YfqJ^d@s>1HPl3_LYm;v7P-C#%Rpyhhkdo$ zxe)5;g5jymN2;X<*XY*uI0lRJy1&DPNs>;sw75-G<&jY^1C+w_I3y*H@K1Y7P_rgX zMDp4AchPgpy*Kc^_|K3v0n(#Crk=+;q0IE-Bl`&DYFf9k%^IfyPgMQAfXzCIPB~|{ zWJsXtFn7{`hSfVXj#hEUYc2PrE3!PsdlmNAQ{c^)X-e2rnJ?6~kKx7x9*qXLl5C7T zB%*fH1rVnqThyCg%elZwLmX;aPo(IqUk~R5un1;62@8W8OhVB}4v~^MW|P+TgF@_W z&+_Pdm+e?an;we`;zu95qbGxK9l3Y5ph3Bb___cvcfE+FQzCSHIgr*|94xsQB|Q$> zZpdjs?6nb}kgFJzf8kzGFFcJq5nZ9+pY*1v)KoCqC z6WSF2sV2N;c}hCxPC+rNN$Z9Z3=Fi1v^-w6w0b{Rf60nS(w5Xx;sB@a!_=#*&Bf*h z)-G3_sptg`-Ij;)NI<_)sv8`i3xeLO;!O0!(9XZNy@6$r$TqL9BD*|tSeW&7JYfRV zZIh@YBr!BcXzJy1!4dN?WNscU=fH&XOIhAOnMGfP2C>ns?&~0qJbI=gVJ|eybr)a|*o1XMSx3Hb z$kB~~{rCGB8hZS>gpYA(jR(CRC0j)>VV&PWxEN@cp+Emz_A3bsQrM*p4_9Yfz>CY= zSFocpeU2dA1iN=-k4cH#zL^F$38}o?>f@d*==LOK0Rsc?d**2_{UjdtOpxnfgzd_K z@7JkkUJm+hCTa^%7D>;@kCO&w>5+j0S3y-#F$J zFc^KH4^0IjKDewW_Ah4Bf76O4AO63=3D$o;_mgkgY6m5QiGjR_U$V|yFT(XD7WlMS zEAsw)TaV73)QYFdT2oDv$ei5BRy&6Ilp&OhpL}GfP+wf zq-+izsioDCLlcgPU`<;1iMB+#<0m)!ois;>I6eHOvHXVV>D}8xO;lG*#(Arv!d)?u zY_Mc7Ymh-E+Bj;-1jB(y*UG8LezsWXs;8f(Ehw&=Zxk6?wa7=k%wUWZ8k>9D=QCDOJTGFJk;Yv&bmv#NEwF--=bc0H;y zr&3;&8p-`<$ddwNN(LJ6+{`#}7;+=W91wjoZAYJR<;zn6WVbRh_Jb;zh-tSZPi@AH z2x*mTn9`}ySU!&30Y=PkE~L8&iaCV(z&0P?_B)|ufqM)CN}~Sou}#AhQa)iWX(RF$ zN(wfSB=ftc`ndpbZy5F{`iEM_*Ok?75$=KPkC|nCwJI<#KXr?V0m|RwbQ*+IB@?u{ zYIzAaynPj18!yh+70KZ*KzRIHIBp?Wd0?CiXivyWBnlE_HkieSsSr&Z6l&+o_SQ+x zY)3q0jNPqhCKQeLPhXku>bIcd;16ne@l&i4F?hi$-yMh`CVy5&A?>J8b2W3QAF-O0 z->G}5&X+o?R#%Y|>HdeIUXfzVk_1Q>KA+=odiOoVIJe8`PRWALxye$l83GLXimy`+m^%vOLk6bZ&RG`3}}3u8XktC`j~t8Pc0KOr}R4 z{U`=1mv&EXTv#6Gs6}=>Yd!-dFD5iOi(X5ZpEc>DN`;HSgt_D8Eq+K&S?(|Q7IL^a z(T?oSg!nbT72Yuvo+1l>n`a1_LM;m##cl*9?4ZN-%^O^i!?|J3#zySxUJ3llYK3QL zP*XDz0ya}L8AHyp8o2Ol*$Sk;rOXx9xnsyZP-ClOC38tJjSqJrc)XG zS9Fh=0p{9YG%o$JuHVuICjfClA`Ot2PXEG|pxVK$lqb`9YDFMhZ2H?o{1hFgvsjvC zpUeJa{LFz`QPgm5;H+XQAHP3Ddyj9gU=&5V^So`~%@ilB850z2EJIF$40k_vkudrf zDMNd6NR$?*Hn`V(G;0~Erbkb)fz9RKzUCf-iSQs#)F==wx5?y;nMp1`n#{^$O5L-kgye3G;md|4q*HYdc&~?SkYC(@s`F! z;*Fxs;`-Fo(t8p zzhTxt!peXjjI7#lRQAZkCb`tnIh}dR^Oju;(?MUj+pBk%4Bs%0&bhD zL+=wO5s+PwK}K9&bGQ0PR%86&xqZNWgq6(-aUe$GZjJ3@{L#Fm`z9$FY+X?SQt#8wF((n zF4ai3vp2GET*ID(5g57dT=LVT0=~my86Bm9bRoCppDU7TbTuF`Q-508igME$@egAQ zGqRWj+4cPxh&CO@T%{u^e@czy&5k?FMmK4G^PZj&MG1S!#axUtJdi7e)yA#koUxyU z_KB3p&)!lB1qu8%dLsWAmV(RIv|!^it!W{^(zjRBYBSul&)Z{P%BY!{%Q2|?#$wmx zF(>YaZttCcDsA*+wy|bYILZ*_dp-4aQNVj|JBj28e}KX@)h4TfEPn*|$%n^kZ*XIR z?1C=_Z2BSM2JL5XJ?z68$lgI5-Vf!wWPmJa8Yac_P*;=XEv=N$(LBP|4?6xb8~iZe z4#t_;5&jE!>*9E)fw5l+hN;$I3sC|@Vg?$xx|pd)zlT=lnYeGuKNAW+ARHne#3uY& z^m~*0q+iI-*#!~3sIoPnO-HMDEH^7ED$1@?LD#slb3&712r#k3Kf0QtetCGnAC%({ z9lK{v1cXRVQUOC{!k&2OA% zjNAO?rOp>EbMfm`EUdhgymjml|CP^zr@0h3dNCLsN;*MpbUPQ=Y$(}n_YBR|b=9_^ zLBDq`;HgvtFTiqyKPF;*>*aqhV|t{l{ZtgQaCb6tn5?lRN}wUV{ecJT@OCUhx$bao z;bW+~`A_wo62MN8b>Htop}SXOestg(38AL(|L=ibm8f;i@RsFeHo29Op&>3r+HP~k zZv*|OcK)KmgKDjBT)M-H&z9CTiIx~^ZVDe=aj6hLViuC{qu{yFj_FXiz0M zym@Y;?Y?37-IJpkA5p`o5Y7H$a0d+V-XB)!=_r&^?)Xc2O)pOwMSFSipOa)qH1QfJ z`3iDxhHpfna`?qKkk!uvyytSMY$9!%fwvhtUnSI|JmlBZA%O@-(_%j6t`6%JIHv}W zZ4`MtVT`V^ueEgP1J~=+p=l|bcJ2qrGMf2W`+Lpzw|n<`K{IRe zHpO}#yI#Xe6%|7PwqcC3qK}G{;m*W!%Jhvz==%2KnW^;i#)KJlc~@o3d5|M_7e_Kf zhe8e50rQa{OlrB`!$fa`6I8sIgDc<^euzJ0*kt5av%-z7p4j7kwHMzV%o4E#*s^8D z$`Q-`^bgvWzpHu9N-u&R{Hmx1O5lqKVxWz0Og3`_*><8%S3g2?5-uN-8b3S!$dzPUZ&@-NXY87Cn!t^IV0IB*ycE3ib z!-$MnXmNDzZ)6JfyB8I9Q0^n!Pm}oQZfKsLMLOII@hHPYOnVj}6r3x*Syd(YDAWR| z0Unvu{H82Hrxu&iPCq6ymwP-R@V`Cq0ZRM=!PqPw-{W?l`6Ph^U)IlOg$NqJ>_Fv{ z!z@hClRj=T09(rNl%(wqv>PFHfKFK=cM9eJ#=XigaNg;;G}>tN`C}0#GVC>AC@f%^ zp@fUXU`F_wfN88I6?P=GLcJbT3(RiA*{NEf9JoeeAA$jzgAi`bBOqz;0NvG>NaLz- zMZ9vx{gH#tav9YJSrzdi__+ug?aLKl?>S~?Y(Qog1v+G{<yjygpL0(jiZXnVeUB?X&2TBi-q7{>v0t?fuPQ7&IfhT9J=BRr zP7v>5fH196&dNI2&nk>CtVvkO&tQ5b-VskUEbU#!0e%l8Wm%@OY?R}-CT%LIh9YZ(Jp~!QvNHxz}8FZcVgV)+O(Q+R=c#aN#pi za{P66ITK7w`e&lH!^BcuP|&5CdKWBJx|{Mx2)2*6eNkq%dOvt1MgTF7amD$`Lhm@p z73=hM7Ru5M3;Paz+>~zhXUhg{#ue|kePiL?fasN-Rfw8CO2$q%*3*ailB%`63I_@Un36E=2O+#e4UD=7IY#DBn7>%QYv3C611|MJdI5|f zo8OT@1lW&z$iB#cIkecV^{xf!4g#Im!`Hhbc-Gpxc^_G&i&WBsu%v_eV3Bh%0=U4K zJ=MFiE$DtV@K1>Tcnc*~c(H82L&b{rSn8hWKFHA2Ne2l;Ia=t-)+HN7fjh3r@ic6t z&K$Y`(pY^Yr^tTjg@OM4qZ)n3u<~SQWGG{~LmvnuiqlPWN)@4oa*$y6CNSjP*CsHM zt&HLxkcPIgE2T+rsuX)@`ij!!|BR#K3QM!b#t(gVK;qU>SBWm3hMfprxcrl7xDr3& z++<1>csP**tw;AGhOC{%^aM4iceM=|*SYlpl)v-G2;WE9W8=`4oMf-&5l8P9qywKke>;%t|FYd=0;zBT(Wxxwfk7I zEKP(W(>}CxI3YM-V2a2N8g4WcEQ0j%1kl$l56gxHNy%~vR+(FNYe0AlPGg5`GRIVDW#T>Pw`)uS0s{M-ydC%uCPT~sT6|S=o-QARLF5X^ zW?Vf+BwFK$&3uP{>2aVnQaXH3Sf0i!i((PDqAs{39m@tO_CUishY-H}LLU9v#t$wq zeFbnqM8aF8?DlNcgf4!$S$uO{RzfLfo6APy2)v|c=?SV-z0T&DJ=z4a>*AtaqGeoA zk2eHo8{|_ZWC89Duy^t?bkAXQ*xlZmOH6b#0=*r+B+EP^3jAa1jS9+8<{`jX?(cVE z`v`c(g-@jUVtjrfZ2@H*gHP@WWxu?H__TLkzDiZP+&B#40K~K#())sGu7`XT#!6D9 zpHFV+<}z$|L8Xatn8GquLN|T?inJBlV_CsvI7iv>mhftnuOxMWgQD_*7<(Fggs1@v zg}ltk_jHXB`w3db5&JU)Bo!S*3r1zoGGxmKm3(-zgN$vM#<{LoAYON5q6~v0D2|C5 z`m})7^Gp|U)24DCEB;mqvcR4e2{?r2JvR(6M@b@uAc<)h?Gd3%T{EMr8xHsY3iNcc z6M;C%OUD}j?5R+9Qq*=&t-5x@AsQUe2Y_wk_&znCiG4??Re#(q89`Db%#eczqtgB0 z`j(jSTu(_O`f-<`$lQ7Frb1#bbcqMlDOIfAKU})!R%onNB5yD+J70}7;v8B$=l(yw zwt%oDzJj8LPN1jD06- zLPL9NaU;Meq+q3|9+=X~3Y&Vu@pyot$V%<1j3Szq9D+Lx?;)zqO-f{_fbacP1BV0< zhnIWhm#X3-mk1%CZJ>u_h2~JUy&~rkfjN|Y)#uSH82rg+4jCT)RXAXv9#I0alFsn6 z*n3sf#d|L-s^z+2^>5H#ju=^8e%+KHrE&?{HvT={C=Z7ZDjqiaF7x(={73$*5r?L6^JYlO7~(U6y5B!27E9uw`i&`i`yN zKrR3U-PMJDSpJ(t)w5ifkpnr+V_D?V%DGYHJJ=w?2}+oOoYF)XdI z1Jg$sk;n}+co@;t&>Ho=jAF9}>Ph9|Z%;0J0@y}RIvekIYh4N!b@KSphfxxRmB@(? z8oUrY4R4QxYn7pb!a70nkBJ2Gi@Lu3xx0bupGhP?C@mruIwiilpO7i9tsA=Y2D~qc zz*~VM@=S$C^vBarEQ%H}HDA*g|FD7;N6}iCjVBDKAA=435|#ZfEg*xh;Gxsq(O2_# z%?-dmt7%k#C1yW-hwsv~3>FPB$#j%UACtE8JXi$K;Wyc@2DoQoL(U&#MNs^--3vvX zexEeCxtd+I!(BT^`M|xQkcV>xoDA0y!_xrQMOozyIzci3O5XIm6qqF=?G3SSlcG>i zNEBn=V&g+7d^&2#?g8DSUxY<5!aS#RisB1{mwfHe^9(X$Vq~d#cpsA7^{tAmP_%-3bq@etBduftE#GHVF(Fubu6r^Hwv9$dx&O;mKG`u?= zCoJm?c!F!k852r~_J#8VZ{8=s0f>|WA=~ZP%|+C;n;`_0_W6BN3|tka1d7`d)Ekj4 zN}D3`sD*!hQB|*q1ExOA2d4yNdir2xV zy&ob`D5E^E?3%3PfOnV7@Kwm4c|iTaz?SI@2_>bWROW30sC8vLS8K0)DR8#95W8sc z5ckDcwB%8GL*gw7VN>S!fK#7;RiW?=3-9lkvjD^84m|#D#wiM{2<_%k;bZo+Z}g|f zbkNHqp|PvHx^~)M5w{Wq^n(6|R&u7V5QhGaMKnuS7d|G2ur)g5GK1w;K5S9ibP5fgag0 z6{Z4QmGc0ltE|m8wH$b5qJXj%QOUOCN@ZLc*ZxB*b5o(ufMq=)>=YGqorHJ^ zQ8DgS*%7~ID#|s{4K^69Q_G2Q>_vx&M*6Y34G0c`+1 z<=TjBJ4&HJBe*FV1mzHKRyD1}G-@#sP#(&lCzt?KX7}D03}W|=C}z`Ly)1ooS=ftx zg_sNf!o=Pc>9-rblba$uBU;vcEf#Wvh#?M~kmGSFu${vv1}rJ%V}h=lUwyz05SN0@ zk1G^S8NAE__ka^HCYf7RW&Jyuil)0(hS`)z_d6i|Jy2v!dqBYUX zu!Ic0yiZVQv>AL~Odz~cG8H#AHa$X&vD2g?55t_$a-ZNF4=w%;Yp$l$;;U2GryGngz8Al~O~j znM)A|@vx14(8Pp6%4aIv<}vIiL;Zf8;Jdaq*TZ$TtiAf*?(mXeLy@0#4*a#k{63a4 zo=@t7L8gXBDHHd)2T{I2BFJz_x#;#eO0@f9H((>vfUP!Z0_VTuMl!!K61?V|00`NH zg!^U)gWNQ>ELvR-0KwhSb9_QG`IDEa*){x-1pHOG8i$e2lUP|hGa)&9x*xtcJP-0y z|E-UP*iW^t?qEOLnR|TZ*iM>x8^T2DaGsKS3^iv-M^3G(CR|Kzf4<=dmZ!X6?TB7788abu6=w_V+J%HNQcA0X4B-?-LU+f*dby2X4# zUP7)r*~lB$U-H#|Tmw>#?{E*upSxB|9jDv)VwmdPApax)9%o}VxjsCpn&Ckw z6bm={!nB}K#!9NH6U~gK(~)lU*^P|{VgZFA2;RPr_o6)Y>F!x4rfp;%1pDLV`rG|e zJat%m-|3`soxAvQmsy**76;9QYY*~{8aj=XeO)t6WDuB0Z#aPS@f|UhT;3*7Mn+)I zi^pqliIU_I9gLH9tbeuWd4O~@$lJTT`0M{} zhSEiRbK?{wW?l0~zqXcFC+6tq(Xa1&Gv{gF9d1|=>C=kf7o2+0 zv6*N8FfXV3O9;@RS2cp84cWs|n*;bZr|gvAA~UFRyX6L1EA@1ThbO64f8$+_PCVqv zRnkKcS7W)=wTJ*=dx`44)w@}F(K;Cc>?j4W{Kl{k2cHxvoZ=N3w&DRT9bv_W?vsru zj{gSfSbJs5$2TW zrSeT0!H_U?0ALTB#m00+%szlijqr&&Vz1K{cBR--CNLpngN#tIx{+kX5WY)Pk*I>AFSs z*Nr}Tk0J!s^zKiM53!bEaRpU{o7CPzD~T2PM)!Zg|1@e9=@6b8i(-!l+G!k?epL-* z@o9GY;t7_|^I~l7!yh(-{PT7HodEwo0KlX@>3izt;hiU{Q%!hG)ceuJowVOhLBhhW zW19A=6kg_9lFVQI0bOM2*eHZ!#JNS*oL`Nfa~I2Ot+t2)>k0g13!(%M^HK9+*scr7 zUvR-%S5fvdE>RPt)Mf@nw;>(HVW7EhCb@YrDY$Xs;C*u ze8~|U9JL93fE00KX2Y3zcjKulNys#{54npWlCbk%q89oAP?vQqTo>1v^ez;L>Y{>4 zMsVsgj+H*?P!>3XbZ-Pq%+6+Q&(Bw(P~OdLHf|&b)04IOaRI4&<`x-cvVzV%3dk!def~JP1#V7`FUgyGN`ST}xcDsN zLj7%Q@;DlvifFl4q z^m&3a7tqW-(wDQMJ-8;JR6C55bZti$3qTq5hdRLc==LVkrUS$0l1vVjM|<#i9lHH< zRi(ybeH$6RrswVg*9(4v)%8{$pzH`QM4S2X+Z9g9t^mcbR9|E5SS#AJ7t*k>bE$Ew z#dcy}7m@+?>zX{^a2q9%0wOW@wHpRCP;+?li1T5G?u1^{)HSP3v%9%B^*QMU=m#{4 z3M*7B3YxU1bj=T{T|YG})P2B-l#iNAU|wXN-{n4qQ@a4^aTn#q?N0$Z=n^<(JMBZ< zrW14Y5Qee)!-Fg8kN+UY$S+g)*|$F0o13teMs`vEMJm1~z+iVyJ3jfHl&7daxjC#T z=q75r?AYp$_sHA~rpHN`YoBrglE&3Sk9VPmC9G4jyY~LpvOOb!QF!_rM;orp8ZtBz zdc1Djh@+G57d7&fV758d+Y5k=`f1*zNw>zfhKs3CpB)URm(yLlv`x_$UC6Og0J65! zpB2V^`VMhFK(pta3w%768>bjvLpFB;Ek%(Pjuq;cTZws_cNgw8dz;4Y_jcKT~4?w;L3lxlAQAMiR6Lx*9Vgt1W2gdFr%ajP1FK z@+)%YZiUPm%-e_??C9K+IRMjwpGutXX4zh8L~*)yzSh_0FI7a({Mz#~J~qojO)Let zFuLra_*SD=vogRu6n~FJKO95yUx5HEosD!$mn1og)r_Q_x@@W(B6Zit04$7>7dE`$ z(c5udqN}{4;LhxWKsk)LW0(LadorVc zPY<7(e=NuS!<25F37l_VM85<^+#2GR=ix`*2TgVYf-_hAzFaOi{59YT^=C?#xs-f5 z5CO7<*aIRo&lr$vXcxEt`-gX9fv08j8UfvU+?8^GV9~zztt6YLXy+uV=+#Wr)#!#h za1JvCnBWg`t!EZP#2o~)J_`f(ej0SkG(YRMPp)7xuujw$3luum4UPXsDRt+a2B!t* zsz-orsQNFT8iCz=BHSuh6^=tI=i=lDx)7u4WoIm~g`@2qQdHhc}fH9IecP_lV}-4pUq@ObcP>xuy_O1|-R^dXW> zSO`v1I8#QI_Be~l&Trt=i}ki0D46~c?biG&q#uh2S^!TFk#D(0r-6XfGe$g@>J8$$StXnzB#+!?-m^o*A4eeR`c zF461nyC3#N>8IJD?7q87(D88wMB}IOBOa2@J!ZdPE;f_h8W`^uXg<-@4KcDSf(#!B zIgp=Ps@gmAhPi0Bf@jdka-Bh-iB6DVYW|n7gq&4e93%)~4o*6e-IT#4JaafqFcR9+ zdRMZPf!ZGus3aH=vI`9 z#lVH0&(8jhhGJncKEu5xB0z4$JDmUQjk9Rcu#a#BOni z0>70!>o|`_s365ix46?peTfxt$n0l(jA(dnap6w%Qw~fTWSlxd^^G#|K=6>(Y?8Z8 zj^TSVA>=L+Jjep_>G6Q(nu1BUXdXhQu}ToxW3e~3>ln3JbGCUfirT_{{dQaCKnmMW z*YfEbGyAbDSX4UA48ZhygU@bA&Jeosb`X~0)-iytO^`w3+6pag)`@Sa>+$MWQd6Fn zK0sKYtsnTGB!QdeF4!#7HN)(4)Bp(GF;CJSb{%9h3$L?b0e4&|dMVQvdxsb~<7lxO z{ji!6?*yV&P@)-CG}?%vPB8Zk0^1E49Z~+p6+IY35{NTNemszUaK9MD+^iLut#em1 z&qCC)~%%UL(vB@*wE|2@K z9YsLnT8%-dd*LKlytcb~*3mS+Ew7QI1i=BxJH8PJN0Lmx1H2V7$=jlHjD!K`rM(Xp zi{M}K40iM4K0yXv_z}Cb6?s{(oR``j>QEGaG<315^K@-0`+9gsR>80bN?ZqTppt-L z$h#a4ayDkfka>#0Yav@-i`w2Jjf0&z!~I0feT(b@)KqiqDHZNY8N1?Vp^&;;7Ml9a zqe-e*rS82W=`lJ*bx#7Y`-pfX*4n#kiAhK2a;m+Q`Hfpm(lF;c%i1pKS}U2-ip>$L zU*x>-s4e?qsEqn71`M=v29(l{4xJuDk^$y^if7r!TcOP7`KK1iCb0vWHT+faw%~R^ zrQ{(33v=joIXt2Dlac*^nsO~zQ@qoXa^iiY0Ic2Vd9JKK$sDytPegSF?Qi}s>Xu!k zb;;0C>4KTGrWb}XA^hwXA3yJWZSPNmR0;^Qf?qd0;=S7#`ytTHpQjHId%;YsB#@WohI5>@tR=bAe# zj2G4Dqv`^;6~)y+Bbe}6L%|#z(PVMt8SJc!7_mNTwpQ*KZKS<^?^^P815xZ8L3j$0 z&C+w>-AKjJn>Ur3k$u7Zo1L#Mq|WrU@2s0NrgL9D%f4kvhPuQp9)pKGZ+cu!FIv1o zK+Q}`-GY;!cRkndNPqN z$7zl6;-FLaa`LyS8rqO?=IQPGV!p&D=PzBax_w}9BqbuQV#4w7J1_#nT36|y1s#z8 zEa)IK)ZIhV>E^9l^h#d1Te{&q4&1JEJsAF zyWv2u=xlvv(c z-ej*0uA)7A^c_DUNnw`ni24qYRP~_i+%mknyYoNXmErG~O%wEBHnMAi#xjX@Q0dym z*5}wP=vL)?g=Q=Oi-RJ4SB&`2aAV-tM`fyAmzlWk@HlD;_YS%@71fE7Oh8EFO`z*K z*$-PSBlKx3pVzJwKEQOwi-H$wLBmuyDy(pgCZ+}3>Gcs z-m>Z12X!-d6e21hP_Hs#%;D-dX{D{YWbV4mE&aHCVRK^7-;COUhnH$(G1=bYI(65F zh5U_`pNL)59>NvyK&gP0v%ieTvu>Z9C`zKE%`IjC#F0dg4LJJ^q#H_F+LCj>!goP& z7}9!48E)+KoFQ5-jPP4-G`9^;3ubs8nE??DoklO$?-a-nNK|uyYOL&)ro5V`5@BSM zivY-QjX9=@ZoCZ!ccTl0wOR^8c9l~h6WzMMoxbPQTNW!w#o;a`(`79aY*k3UWuH=@ z`n$n7j^n~K4O~|lFK+Abn)pbbjeh$beoze*{R4tYzOx>=@S#e%-_*b{T$gS&X2%BM ztgl=KODhB;0B=C4+F2^yd*t_Tjy+f9NR#0LxdG?X#3QV$_nKa#hwxn$kg`Kd==@-f z84!qPmg?QI1&M2b`n}uSkOFEeP0M(;fbteIDAd&J*nCY)5~Xh-*M!xjj^TI%#C-CysR%4}X{ znv37=WrK!m9mGmCzdv-jpkcgJ?;9mcb z3x$j279iV(8BU#_@B(cv{R0y$&HimyQocLWW{OkBabXKF6G|2@vq$uGR1JuK)R<;U zoM~u^YUSP^9Sfa5CwY@9IpYBdwqVz~i|&=V`jF~^SMWJ32uwp_Uq0*s)IH$uHq}^L zH`_hh_2O8J*xW`wH1aH$g+k*xf;mZ(B+*StsMy^Pn*zMEz){tCXrj;v{rs*d9lAJ^%p zq61tW0ib~5Dq=;K`bB!>z(QL4`B?=^Gj|az4oljje90pG^?J`zHO?}#yH^Yl0tdA{ zBH}$10U;;ep5?93;v2k~7mD#~4#8U&?cvD{jfhMRMb>uk$UDr=!qZQ&35h(jkIfxj z;)E|wZ@H&ZW1;o02t$xPBJ;U&Px#4}cP_rWVTwTM-?Qu}iHd?18L^96&a|M-6YCT0 zNBgaRR{y_Zu6pDb@D&3lNpMh;+DZ^OwL zukcN_wJk0CB?}t1B`?$u6`Ag)7;(@uhHfV)WiR@1Fj7q1SN-R#Xs4(gZLl16VU5eR z6M8_is8Qmw@RZCwKlUp#(;fJWR5b&AS~$K-9pd^$z72QfsE4A`vL3#9`m+Z#t!mqe zZ*bB(o)i6Ov*kvZBE1DP*M7V3W!h!*0knN_i-C3jQm`pyeOfF+Su=>reUx3uhCJD4 zCn>{86KCO93;*h0id_d1&fBRCME!8kaeL}VG085@#vT3nY=}5uv*~TiPW`m3cGhNy z*k)@`@>6+{@FZ%0W!`WG>x{f*d}T58xH~VB>$xgVwAJg`ghBuZ5c2&A<=s>V4u}?J z(Bm4R9hgb8jFfv~Fc@X98&ucWoiL|f9Nk{_hScu`uEmVMaZ~V7lP^cLcALe_`Q|sb zaV}}`ksTSePVg}k6rmdc0U-KGe^VeB^DXhRB|ein*yBQ_(+i_XjVUrmnySB*kehlpW`!0BUdNKTvV6-J` zQL(>PfwU{5l|wY%aBTj*p$&k291&i>sJeh*{Mro0v%!);8NtETTB#@9Bj(_D{m{$! zF;i-WfBR?k5aFJ-hC3}Ya5jb76C1{B>XM|0!eue1{LF*g2eZ`8x(&SyIa|E~iqoGu zThcVzBI&Fr5*3|mX^oHrwSMl$TH{Y@Cq}LHm*$m2FIn0v&-bS3;-jIqs zKYA+~tC0Vv4dgCgzJQIy2adZ9_|=60Degbl%;0g#5Y}PcCzwoRqgJ`#hPFBj1tlYE9Szf7l$skV`tK>gX|yn)AiU+Juq7~-bCwJjnTZ}$_%i8ZXk~UY z5vQjyn?;~lc$#~D#b<&Dn9fwGf4~5aq%1wfR{onCA3*_DTm=}eJ&y;BKN5(oc6RLw z^f|2o<3h#6x#M;%crQ_P?FbWRLJtf=uo~qdg^zp@dUoF*{z;*C+|3^hs|>jtS(FV= zB22LBq7THQPHdBlP-~BeZ=+3;at=7;}zrCBn*wIuY!~E&0DH4?- z(fp@EpPOA4Cltj{Yu=BK@O4eS7+A66UxC{NQl#>3T8cbT{L>=FXluE2jmB7+Pa>hTVkn#03#Cb8%lz=xYdA+>N8w zfCF~BNdiQbf;&K8-%Wyn+1b7a$98A-#HDG$(kz-eq3N)&W8WYZ2s?k5mzy$?RqiDB zYJ)+_vHSiW=Y;zg_>-;c_7Cn35?%gI=uYv>1O=<=i4*z;SaF8x;jH&Bot1Mm=OC$8 zV;;p&?@J2VMadW-uVpS|#h_p$ucq;Vv24Hk8k##&znm-+R*a(s%{^!kL4 z<2Wo@dcX^3WXdE@Bx&QB=SSq{4U?j0$xwYMB8VLeHrJEebAXv3B6+sAx`;j0=keWD zg_jx`9^{UX=E(OTt+h1wG0j(|8ck6kO@!Jv?O!dX5g3k4(kj9Iv{`?pjZb`?FK}&bvE@Bm1w2MZl!Da=M61vFMiZx!@Qd`7nQL zsCJmed3%JC=3)Tb+Q=gH!7MLuk^#5X6eFh;>X01&YRB2p2&R-W$opTdn&5l7tlqe~ zG#WXix@M&!O{dXcfCGgZ8b6kyeV4jcSr->DMUVFM{!j^tXD2YPo%2hk*?_6-Ju+x< z@Cw@WpopEmxDp;mtG6*QB3V!vx7D$Y54k7INMU;z8md8h&Les9>Cjij&gie&ewpGS ze+CI639ACT0n79k*}olo#a?`wO(IH6P`@R{&ivD+le6M@pkjut?*Ac90P;k`C%?pMd-+ zwOXwtH>6u6!Z^4Bo+Vin=~;K7KB$?SK`^iwtJm7BQ)d4k z=v%uq9c*F?bNhh$1Za>k(;68RcPK=BXHW)%L*8RIwryDU$~OsYzH$Y?E}8)5c=KGg zN8VT)M!n!AFnDiQE0(e}Uh!J>KuvlW;;zvW86ZIKFsEyOC*UVF=o37+KpY5gWb>Vj zSFA7(CZVb6d$^Hf)rlLZCA99-OL(o0DNJ~-&-Su&tUmvU$3xpDqy<wBVTo(GW2VZWe>#&_7^do$ z;6qBIv5AC>TtrDX14aVJ#*h#McnquQ*iX*;T(I5hd2(SlMXm`$MCf9+4I zo~Y&J?UVur7N_>PX%mVo5McO0b6}1tKM`%?C80n!LT+ARH;`z1W%3^X=va#MOfIrd z*rrEXCf`QEl|v-g4PCOSKjG&2-pVy+W}dizhE-=zfArE@1PC4t%E{>A0DGRIF8pZ_ zl~mIb>NctBfZ%q1;SJK#6w+iV%<0LTO{YY?b{h)`u%ThZMD~XEBCP;87W`2)rPH>E z<@oKlv9r(pa3~C0?w1kB?z)_-PV&G+hlUdR+B3+&?G;y>^ zB-}bu9~(w4=m??W&#vYtLqB!5aslcU5^)ehF`302;Tbzi!1LHkW%;cn6A=6~G*O=_ z3bgL}lKh(XXOP!B6?MkpFkw7#lDzTn@tA0h?&dUf&|vNBg24CnuiBRjf3YGLE6U6{ zLlC{jy$|3L7@!$1`=^q7 zoRkj#ws(-M5u`ayPul#I|CBZD#v5OH0CSzt!}H_1%gd9=`sb%t_D~P<*&?Ae*8<(S zqIso6UD+2!I^q=_0F|xSPL;VtULWY$@YLCF-?kAN$cLUB2YEP+o$?PFtmMWfAz@R^ zXEyDd=|9lenk|5XSzaF2S3n4ov&RJP9Zs#tp#I@QQF0X4-OV_!8f3f9LAkVq2CUIj zr2)H`fM^k7(a+OW+gOl9r6w2of62m~PPX^VACS4$bTY-OB@&)npis8!vqQ)8 z6$H%K5h+{>Qo{ZR@tqs1xDX1v>wRK8_1KFpuPxscC#Y_Hd{5 z$6-SA$Cc&ipm%$aC_~_`p-Slzr1^}m=~9J{Sc_2O$e*Y=#u+R)kuTGcEKO8byRkf| zp$85K^F#edM&WvuD#L`*_YC`9>Yx6quM`!&X4{~fcUOgP6a+pH?7c25Pby9Uxv(~Iy(bV?f``ZciRaWJ3OB7~AsKpcx= z+W^ZK9^Z8cM5M1H0}jkJ*>%)#^!^y=bAp_f)X|l53+`@ZDq3KF4Z`FWZEJ&%koBLl zl??xp=YBZ081?<6sNkTY84+O{@h7w*#Ext5IXQ>d+UY`wfb%Zo`Nxs;Kof*op9zn? zj?lAsklbRA+XJr=G;@Ur?3 zz0^~YDz(iGVpV&xF-LsS_LD~y@jq|Kx0Cs+o^eIg&h_q7uefqgEDVGM)a6Z+q?iWL=!LyUy2V^vYa5{=$&Hl-2aBI~O7NF6$o=7! zWgs%R7B+%LE-unBC^d^IpTECFE zVj3bUck(`XU}md(4(*@cB>G9UDE8`^;2+<%x{v>aepqt88{O042bdwQkycBs=cpW$y5yI!$b3V{KmTbi+Zz*NYuii$i%WV8!>+l$tIfmspouCVR|^?I;@I2{_+0?B6Kt^A0^ zvevF|0A0Q%HPPs~u@o3_$Kbo5#@|H+L7vv@28~+mmSfM)+@2Xj{h3b^lmdn*UF|sZ z6G#4v5C!V7R^#!$-F>Xa`>XT1c&KBs=ROb|bk(92*LKWYA39-2KKc0`)~%UDjjI)L zNMl5!j+H8{yV7hOooRqZYw$`-5nZ3BAnK?04>sb%=ckMwu%1Ha1_sB;!(6@Yw9ps5 zCl4`}P$MK@*)Dr=yB{DB&`gQGjrDA8@n`GUFmPMOD!hsVjJ6*r)IW!lhYr*XkjXH`Y2chEwJ!AHQ1rDmcJ`wpb!p>XdT z5nh9Is!@Qmr-iEe*_2&HAY+}*=L!#U$HZphYA!szoMj0QTn7|b4`?*F>^&%-C+lyX zf_B~g0B6R~?qn5xS8&!~xyxl0jwPEZqj!TToSg_*2s>{2nudPovW~@jKuWSfvN)}y zhA1J?K|n9E>?sLE`jGO&aL4IclkiR?4wLv14l7L@TJ8iYm+bx#-y5h-p`&;S{ply6 zdAoW}BDt8N0fOZJB-(uxCapKFtYp#38p2ZZqnrK;BB{!eu!OPRFTbh?MykrjbcK#$ znS(BeBEYzkmUoneWkM2cl#Xgu-@QWp0^mt6QRCB(M-7n|SBY#6vDd1f9yAQ1iz{?atLo{|s+z+i%IBJ7Uw}H;-aU2r~K&H_%CoP-am z!Kff1V2X0%XGd;Tk^2?<{x9gK4J=W;MqhN6_?WbVxLi!6cIRwwTf^~Afpwg|0jS5w zpT#&f{3YXtj!YBnH2&%~eTTJgiuGgXh<^DDGmX)e1Anah`Y*lg_3fW*{#=?^LrJRn&&^?U6dk^0J)?z0dO{YWiIUm znQNuK9Zpmf25#e@cVgf&Y_s0b4)2+NO2~80=*|UjfY9ph6@H$;v*Ab@QT78^Po&dUve^aKuXrpFUP6kr0z5^pc7{qDCa z=QW&RxLO<|Z!NZEd);bAS`#{de#3WN{CY89a=DAxhP34Z1oTAQ`Mvg;>iGjH2q(J~ zU~LsDHM%Tf_qsmn1-3Li=y62|f*1siCfD90a>*T*w@3SWEX=t2H*#U26&#}3;3eE+WmTc6y&JQjNBERDd{ zBQ;e~2lc!t9<^(sUCg98^1>7}05cfP@JVrJ7bGPg{sUTh7WR+1k11l%r$)CGfQRIL zeZ&fV3Ixc6KJB*igbGuS(=w^~nWyywq+q6ETXnz;Se1DryRUka=DELdQJw9QjjVO< z^)>{fO~SRHKz$rO)b7%4vf59EN1nbEqA7(sP_u^`DWcCP0?krA6dfObtdx8yKaK-K z2OXEa2v-dXYdb{vTigFD-l*f_l*h+?gzX#1B9l15q^25?e37bl$brVKJI{I-)IwKd zW=rOfx_H}mt~4S-C8^Y99Gi(LII*-8m}I(2Qhx1IqZTS!vpD6wANRWDM_O1{+)aE! zd80#LA}6jh?eAUV_Q0ju8$YE@2h#G}XRJe9GkZBN>xaXm%eG~|Zb^63k#1Exi{Sl3 z@q!UFl6eT@=vI{B4qV1`>O;s8DxsEI0o!`Pj_Ix%u@Z%tnkB)*<~<&sB=T-q#4yrt znr3gR)dUIKaz_6{y9Cs^^-3fmks1te@&{j~Wi5|V}KlRl$#>kh3Fb-y`x(@w#q z33z}wL^jN00H^{#TMJB>W=4k|ko8dc!YVuFl0~agdUamxYHZ!jn`2M-bqvkOG>$c8 zCZKe|hR2NdF;BV^2LR)?w=A#t;$c;#g_yIGUgFLbiVFUTwN=9e1WSPUbOwt&o!F$V zjY3tUE7~lYBj)yK#sj5&--zPnvWQZQZm-hfz1xo8>7{A=HK-^^;_lPY7O_uidz8Lo>q(CE<&hA%v2$^yL!_I%9B-yx>#^rcX!{fF($P=U`K z|0{oWRFSA_;v~*MGQB|R*;Ak>rkOt5Q;1}V^XlV%E`da|r{a*j925^9L~ye8y>X(4_JW9a}(L83GQp*oGw zYvjFW`^hxVK|J<*dVJ8PrMZ8 zxA*Bwy=4vRMYW6e;QqnZiN#J7lylwwGUyyPhgLo_7NJ0jAE-XaFl%nZuk;HQK4fXm z-d}`N-A)Tl?lkFajPL{Bug+-k_sVO(S*SBRED*3#M^i#iC7Go*|*sm_rV9+bO`bEvxs&i>I3!}!EXS(PCM zx}zT7s6sAXN>8)wP3;gKCt(@9fp^#~bR-^Zq`j6+!r#?fVQm!u=+gA*0MpO@KER~y zhmcD|!qAaCDdTB|#pfA?v}K~S-ti=1R%cbUxp=+`OYo4BG?Z|Wuu|a;tq|W2IMs_TOgbd$n!o*?A$dd zPdhDxp_7Tpcg?B3e*%;1TD#g+rYwxGK|wV5VENxkiVSqnCp-OOZbL%_d}0+KKyY3y z^tLI#flZ?x26p~S9>REq&;1(KWR7`8!WzuS%>myCe#WJar9eb~JoXIIIqFS39MJ1- zAI!|6hk~UzsjOGbrrXR*iYY;0&vnoC) z+l{<6xd(l-6m#?1l(_4qN0{p`_|Cgq4GKkGUFfL9!UGce=m5a}{|vzE$IW-1N!Hr) zmdqh3QCGdhbuMAxNIX5+B-ZTTk3blH#SwGNt57=?va>2MjyX9wD1gquh}_2OsEX74 z(=8hJhh!=deT(^=TT7M6p| zB%_FNw1RloIK47-Sl2|$O>W`n9vKk4IAFenLqQ-$b_B!gsjw9G>i3ORMe5d57uar( z<*A7P+S?WJcVjM9)Zm9U$q(gq_T%4>(TF~XBF0QOa%?VKrrXS!S&Hnrw{BJ5*7iL6 z0*DapbQU3Gm!t7J zuFWDXZhJHIK-==F)=?W8EXxIl@1})-Qn&k*DPP8T*II8|Tw0EJI`>Sd(g`VG!XML; znm$x{PEo1v&EPqQfX-`orF=39h=#I|^UngF0aEc{vA+xL`})x>j0^bl5QJ2=hHvT~nhFhQr(@+E8Oec0azxZO%S`Add9XN@og>^fA3Q94?VeEUf_+F}A?1 zh6nCVT?MH4`0oWxz#Fl&y->39pu*VZ5TYy*8=!sgwO9Il8#~!sE1rM7={LwF(%9b% z1Q-*>mugf$G$}>Nw=Uq^<^W$FalZU4e7v>drC$y4x5!O4&yqKDMt!d#!Ib$qFQ0{S z`#-?U(P8|l90>PWBtB0apno;k#H8o_g~i& zBfu9lJ8F$PyBwce42;02$~d;AAW7iYRGPlK`%~HI8axF>ZAP!K>yRYPQ%JSr6bWbP$N2#P?Sp8?1C`?eo2op z9qNd+5iDYT)zKW9HfQ9o89ISo%wYpISgT|BXi571DpxDLFJUaMh{ySbOImA-HTIwD zM(V0Vp-*i8I~#ibGyxSD0?1m2LvWr9?B+5l^nFarkTdb!x>65`Hi7VTM`ER_>*I2c zdHvk!;IV^3tn^$^Be*0mph4^+FBHlMncW==A z+C|a%@d#m>M3L~TjpbU_TrORDMfe&$@+YQaQS|PMD7JojxYA_?A~)Jt{O@VgIx)gh zL|QCEO5fqzd4!rh7|d(eO2p$i!TYL5cw%$HNFK7G)So`v zZ0qqhUO+1k3JZ69m>hj%m6-o+y9x z*%&r*IU+5!eIxN^O(4RZL9C?aMce?{#FL&-k?yc@l7TxKTuPyztU{=O@k1nsamz%4 zh$01F<|>mzj8E6dbuh@^{REtv33=o4+BAp^%_qkvzSV=RU|QD6Uyk`8=y6OQZY9)E zj)=jaWgfjR2ZKEh0p*<;L$7PVZcZWC$@S zzOK&jf-}B}h~Fo@@S^=Tcq0_Y`_M zThF&{Z>g_+e_%UO7|?nM1$E<)suxBkIDcSo>JipGF_@FtKe|}!KlQ@`t$bVL_`@dQ z`%R%xuarm`5F$TUN@Hsq6|ENlN2E$v=JoK}krhLSr=_~}8v2=YZhm&{&W-6MpsU?8 zRMk>3PWbo}$NLSiaNDMhy=}#FV96Zw1!_|0+=OtQh!nqS9!j1We-USSHol6YIE8^D zvc4y+fyyz+HG!^DXIVMFHTpM zKjvn7h1nwV(R&sYjXH=7SRB5T6`sxT45)~!ob{J_$s7y<>_k_#(2&kSUjS$ROtKzD zW57`_|Mv>Ht@FQdglEIwoi)1J@^h60=~v4}BS2yuxGGi?mgc`2}~7(_H+ z=7ZF^^1a5ct47CZ!*aKQd?gUVm$W?8T8@2yZOcD{5!~LwaM8EV1ZcKNAq`3vQL$Jo zM(ld6CgyAFmgy;PNfA9OtnHywz*_%-g6Fiken1a3S62+QvB*G;|{V@Lc&d0nUF{ae(F@=hnK#txntJTA(X3i9;)K>hR<*S%`H(A*GmQh{!d0 zPgj|$OTXM9>7T)qq{PUoE_2(j#t0~ezTXF4HHBf~+wSHP74b;(fSl~OlTOgwvnX{_ z;ZNMc3lpJpcat`inA&q1Lq!rbnzRk)ezMB52IA$`Vves#`*mdUQ}Vds`;C6Cl@~y{ z+mRlF@gZ7-BtyXvQgWL2kvrDT6e6&YxCZ>QOPJL7Ae69Xkpy}wJ~*1r!tMDDJ4nkd&KBLK@9{R-seL{ zM351Vq6ShEQQ58Hs%UDSip?GtXsDyUM9<-VQ>1yShhLf)5omC(#`$n9jZw+^&`szL z3^9$V$%RQ++gkWr8GY{GtaLV=2Pq)LoH)efv0D0z4l#VT213}kfdQ&zyF-Wm!a)4F zVzaKK1DE}0+{}?3D(90-GN3W?U)Ej>`HWQiLn=JHT3X{B4UfimF=}=!&gL< zVE_lM3G{E55*YC7@85{N(=15Xo21bi6Dl>W+Gt>W>kx@(V$?}V2Ok$=mX>@0nMxhW z>%J`w;Qf;-e+#8M%>6&{Fa_69gHMWDMk#Cd*k3USYB>z%B^`t7I|<{j?lKxh`4472 z&{Qwria1%{LI&tM%EMXMe@EEOL?yYtehMly2Ukk9$IwGZOaUWFeG7+IN$7v}EAeqc z*7mbjjeCe4*K*|v$yr^5u)~7Gn&FPd>MmrjfZ_vMuxgjtIjCHHcp^vrLB!m?N&=w9 zogHnURuYTzrtVi$Rn{bCfivz)6FAB<>#Fj2U?(lO{UEmE^ge38z`B!;P z)^pRXy_J48TVYB)bRt0o<`s-`nuIA`P8Qd=X>jnrxN}RU+mfq^Gb?{#8AnF=&zO~b zQiXCD-gUf`w0YPaUrx z1&>-ep~0T1c?`|b5dq6RD?Oz`C zRtBXFt-n%%U5$SH8P&r<4DB^!7#dFg5$SdDDD1-<3BoBCSU;OGV~nd$M;y=AYs-ZJ z@h?~FWFBsG2MsZNfZMna0uv1)Pj~q!3RQ#$cj(j0ROg5;PghOoTX-*feP-8$tn%K6 z8hi`2)SYP?9guJccjPJJhk{oZz@(cdekj<-$Jdb0iA-C8Z?&0Zv}#4G6BCck=?iyw z!W(X2m_oeX_&;a6fvh()Ff2`LLM{4_pl|!xX2-AY|4f{kWDI-yEi2XWk_0Fe-HT5CIZG(Mi43K@zbv|7Y9eXp&+;>^(vdEAca0qH-+^p zQz-kYL}0xP6`jXApmD0l6Px=NOEF&}7M{J#gxXTNYa+Yrr5B-9RawV9>6oQR-rFY- z9;e0|sk`O9BWvtl1-CUQ<3on+ODGtMVB?S6%#)v>X*B#W|ujM=;>%Ckyi9FVGOG{2`(#bneHS>P1miAf{e#vWb7aU>#X@hUvr#(l8_O!? z;P}7b<7~7q0T|a}zwaiAhBFDlT4>HBSon4-X{AKee&*B$0srYvV7^CV-6OyhPpD~v zJY>9vzQv{aiU;)+EC7$;MNxM-**aZDHxb_UmC(WPY0Bxen%@_B;qd&;`3kk$-E=Ch zVaHJa`n<*6TQQqS5?$q5%VcgbnS8W*!le)28Y80|5P#i6V~WzOe&%P7reJ26x5$hL zuvOH><{$ZrCbk}LerRKm3cR>t3#G$F3nZ>S%Ln_8 z24U66S%b`(nkhs3uT-5E##hW$I&s}Cu;G{p;&{3{@3Gy>gZa-ENgPv5xzlpvp+G!^6-G7kc8R@`YQVaBOZz|98C7!dIo2 zR^c5|&I4*@4nU$0x+*apyoJfNK{sY^y-<2M^2T=C|IF*YmG+k;JeC~?8!Pz@E4$z> zYYQzOIF@n>+J+0D>O*vpmzf!&zdbWWjN=B_bZ{qpk>9;IOP&KCx7^OS03iidRhYCE z@RJzrjuq9nV}q-V2{n*Z$Cs?9OI|-IX=u~S<^cac0Kf*)eeGrW&@S#`pJ%f=WpO%I z$BE>GUGK~fv{Gv-&Ha3wYXQ$?>r0@6R{h}Kg4A*R2ebvqh?nW1Au|5k&~tzORosM5 zR;(9EpfCDG5zSNQl6k@3oDTHrEpN{GSx+V${blgwW`;e~Hj^Q_H~RIId4||| z5b-r+{!*;YYQ9&V1-y`%%_FJbR)%7TzB+>^MfZ=O_z3U=51-81rjY(r&=2c1-Wx}e zz=V-Y^m03cyRuZnnGJ4NHr3TBy0Hcb5Nw)gymUMk>U)9BI9%zh$E)1>d9`Gwx7+Yr zNt{$^8I=+50k`r(9WX1(?c5H7g7Bs~+x(>bSLTUq{1qVnj1}4H__MQky`{}M(6ke8 z#@yT#0F1BdA;cw}rbN~(Yn!~BjwzvvcqJVQldl{=_oo(O_sE##uH$9hT^wTF)P_$V zqcvic*1hZahzER*^uTUDK0g9EssB>ttqf5$`m^1NF!`rUvXu&SHz;QEIX(%otCfp* zGns)E>g-Im+RhKW4PWIG(_@zJg$+}~UV730Qz1}02LRz;HY+Y6FmLfO;!1rvJl2ts z0yayYUo|bao6ckKVxE)lRVT147I2=nzfWd3T>whTDtOz`d?ID(c+KT?HE>ouwL0E% zg7XAd>qEf!Gj;y^Q4ehQ5d_QWjdR>1goE_h?WNhNPV&`rzqsdw2F-PTbfJsLIvcv* zg?815H24(QDk&oAp`pgET#`-D)P%8MTr%|}7XJ3kb6oN!Ut7q^#b=@seKJ^NCgH;Bf&G8Xx2}z( zzfAxa>=%_nRKVIU_$UnL*Me5}n8&)p#a1l1nxuamytFj~n-M__^HEHNzmBx#+J8HB zG&*)kUMmd{mM70|+K0&$;^&nl6$cZtsT@c-9ENJU)L-+61Y1GMu_007tz6uqn>;F{li@}GaPn-Q+xUWhlzZ`NWY(Quo0^=AhZ4@t?}oBb)|r_6 z$LVjZpXuGZYrb$3TGQQZ8Gxt?A}CMR+F(}2EU3m)nw71qa@} zsP`cBM_3nYS9S02p;wIA0PRE_{=YXC5)2!p)@ZRx^d@AHjKIo4FU^2w^zK)O_kA)T zM~m7=AjU&62^*Ty^sBoS7S@uj=zMoL&ZD1t7P`T3mcxT;YVTq#*L1xTjC==ra{WAYQDS0*;CRs%wvW2F z`xdq(cL}l$I*1;BfdnkOptoP>3?BM(f^G;qyP7ju40vA|mVA+}EQ4L>dMlZLIy1J~Rm#Ty;*hR?v*2~nKM!1g6 zWk%$!=h=83r?d-IGP?P})=<>h?ki0$cW_(#NuO8+UFQtqhrvnJ2FUwTwJFMpMH0`d zi51Gk(h(l|IUa>kbYNOlS=OJs$YY31u<4?GXCRVBz}8sPM6kZPO-~zbfZURO^{IK6 zLF}sarOBH8-5+VTWQ0$AfjvrSC+&yp>I*)(MJ@+y--8boJ|q!-w$v~%{io4>xI?-J z>0hqrh*MA3vXLw;trFCh&|5s!r7qAZ!0TvingGcaf4WD#2-{biA8A7rQ#Ih6d66yG znKR8DGdlU&Z0)*$!Hqf;#p8`(hf%7Ne?kH>t>pYxI_LE-;L(d(A16@jj2 zjTpKg0bynhoO2LhvO1b%PA>qAeOF|U?!oBT;S$+-Ns93l4sMXy^ZTmAQss+0UOnCC z)5Enn`nz64%W9}U@&v`BAW;vgrBMeP1-G-6n|1gM`RMc~CVGNhCvghw3o!%?G{mk> zZPs&#_X<@aovJ?yjD;puAl(x$Cgay57++sx{R5W@VbuY4(C8fhTP;zfaIHRBb@=uJ zs40FxY(GzZna2p7u^k%R9qBN=H~0 zS^2om#wRp29L(k(o$#%I+5~6BN-{ZZ%;e8gYJ_J|{KZO1x(;A44#WP<0psNt^vF$0 zgqRV_0$izD;1KC{iv6eGJgW=r~u)^HTc-m}u$t4WpQxsT!f8Km?h)b##al-waMoHA2YB9%`~?4uRC zf@e>l-RFT%FQR?N2v}IjXP^*YZ1Tdb81pi8@uZ1sy^Hw)eK4GNh8b(i>BC#=LpQGz zV7Eoy#JdM?Z)OgA*}StdH!`X@b~zs_6hqMzStHL-JYyt()E&y}l!od}Fp0FDNL1A* zt8W;-+Z*(1^<)IfXD9k$Tx>Iqh94!xCdVkIg; zlZ%N}qkv)I$`hT99F=H_+UjHuLib3!3YS;+^FQUVI=OnVPv0)J*-r#^mgB;A|6_V3suOw4c5&s|?b={vzrx0dsJc(Vv z^pGv3PqFzgSR$Tmwjb?{j*?q`OULqHkn}NtMQvsvyE?88{=;(~j1wHbYTV9f2D|4O zhGuB~!yv;XA8G`I@b@%?{8|H&6+BM@lIk(p`xAiv-6?1`J*+HOY7V}bp4Ca`q)b)(Vmwkf6Wf?5bTU3-FZf{0y2 zL?<#tNI!(5pr6Z8>mwqU)=<9jm5*)ZK%>&*=_KpsH{ywJv&MiA^WlqxolvBf?=fK; zsgPr4h?KgLC$YZ^I5y&&db*p~`}e~(v(g1q(z(L$)9FVT(@9IK4`5<@4=ybty1*mx zVXjYT$G{}svMCZGES6W0)@A=4YmWA?tfJhf1reis+Hu*cSox;@rM^Vq=2rRLvJWk@ zlA&=|;yUe#*IPg>(J<|uVH3PgC0&JT`de--;$}DwH(WDK-Jq{>_59fLvE10+a-*Y% z%k0r3RjzhVh@K_QlajlK?cGxbJ5}S}ZH=ZD20~7jnXlw6dmGAe?qByqiBYYN{eK*isR2;TGYSI%wfiKRn^v+0pqgd?V&}(fTW2JihhEHZ?f}>mmHjk&A>!nKS^)3QK zNbPu`z*&@GV;j;)(|sZUxxNpIM4r^;)MbOCO)O3I<$@wZwV~&71f12WQOi;SD3%m> ze0@q2_BQdpb_;w~Ly{|meuY}$WZLa#A~<-2qik6@dL0Q(v20PYAe>Lr#ZGghU{gAB zzo7JZ?YgJlfC&7|J`@0K&EguaZRu>yYeT@Jp!C)Fdx9CSdob)wlC}cND#0@mFXWw? zXiOcnvKEwfj_K=SlPtc`mc{9|GbuoRTITLTne#KBYfx|rke+7MM%FOB=*(4tV)#M+ zuoh@Ts&ADltZ#enHB>M{{1eRT5^MzA>37}X!?<%$$$*J@`{NYE-@{ss6l<##w z0(fq;^6Q1X>J_)r*D47py-|`mY!}X)x+mASsMW2Z1(NI{VCVB&`Zz2E9}kqj&4S(r znNBiHdcNL0U+k@GV}MhR4mSai6cWzhGC$(vIg;nIdonZK67n&Lcd3wcF}Hj50RPV2W7F<-CeWphUi=&t04pCR$6>*}0(^uCBjzBf$j z;QVXg(K)3LphWK;ycvTW@+|3JyzwkLU;0K-=L-gDfS3@sFzzFRGTBalVd)YSK1?L( zMbGDfvw>#((_kjLJi(m8{x3|Fsu$vp+W5kbdn`)=s>|M~(Q5r(|8<4$enX=Om6imw zJTP*O9-Tr%RiUURQS0pRR>i1s(&*=Xk3>4s-4^IUpxyZCT4QmtGZ$yVMX?h68P6$* z6I-l^Tp1hYw_Fb2G6z3$~xP5g`Y2>7%Fl3R`5B#&%fZkE2dUe<_0>?^pS%csPU2 z)|UJaIOc4Win0pED;)~c6}$6dG! zg>P?p>B5ZILlG3dfq>>5W3OkHEH`>d}+O3bX1H;Zjp2d2kQDWJRJ_AngV zMrU@b3cg=merW_9h*5NU7kdPI+*{7r7?0J&*TuhBjWi70BcXFvWs6y z=UxsMtkj@*>w5}wP`+b*1*Wv=9(99Lrj>$A-0}55W^WA8l}(w z$hThpWug3faoLqyX0F*CF)T_rHv09En(Y#s_dHmd9aZhYV5PN(`^vMt=9(iO7@PT;v4M){^d`r|kKl=dD5sgTeEi zZaL+aS*ZM&hC@m^-85kPDL~Id39M!~syi_P!l8dsdE3ZZNm`0ZrIjsw91lAATrZvC zKpnA`^6%NBc(_<2N;k^y^oMb0(}#M)XDa2J*8rkhO)rlcogt#w;Qqe5F#of5m(N&t zXyi%yV&SAum!EjHfVfY5%=sRY=vSl+w;b7D6A82anpLmX?6DbclJ$&XAtPeNDmL0& z+J?GcaUC)3?o&K<8$a$A{m+aK)8iB4Q-Zs3AOqVymP$NRt!_gds&JC_Y3q3tU;5oT zkfeV*2YdiD?2pxmRkWE`kOXG2aXtq3A$UKRv=ZJ`X!I5J$?duJBKBjif1%`>WbM`h z7|DrCp=FBgBFuo1_`ffMsrPs46&aAm4e%iS>Jrln8Ay>`Wzma|MtL=ZPhvasD!#)` z2!XqjPNxEX7=KB3MX`UkRpAK+6;73AxAr8@YBkZ%Gr!XXx@w6nDV2ImW-ZFIMsMvE z9LqHkT4r=%KtB;8m6gw^w6eTe-o*Z0+73h?dU}vMbHP}9H#ahdv*F>bWUhC;1^f$; zxlukAv#9)oF_il$CyzvjA$9cCJZmkxTdZj#Z(th3xJNoSd-Zb0rxz6x9Cf}O1Ppu6 z)7!iryC83S@~(Elo)}x!c%|{%kHaP%O`Dgb(M(JsX(V!g2njuoboK((Y%wH67Bd4F8N#GSbw1U zvmCzrnci%yaA1uWuo7vDeef*jz=Ya?a#2wh$wB9+=b%Byr=3D*ud&35B>*g~LJ>g` zhxZ6uJlo!@6hH@1?;`C^J$Kf0y2@!w(XbomU#n>JhKs{O{K#IL6teH@&(EjyQ*U1CWd3o@30g z7^>aFpYcm)gkc1|mTO3g?f1`=hs5`fK2*r6M0W$nD3S%(lP*I?2E|vg2R1I11Ji#I zg6A0mSgH1p_gsn%p<5fbDEOB#HX*=Q<9U!gH4Hnfm3g;eo_PIL!V#9pJ*D@LyBuX-5n1TiW{@?RG z2AvFB{3~ozAF+!CXAeX`F#U;x?&5PLmQ-oZ5Gn|bhW_77K9*-1NJFuk&!z4P&tXFp za(2D$Sj(eTZCi%l#)fN$VnjVZ;P^trIP47FyXOUBo-ce{$HQQ!x#ZWACjRT=21OxD zTPu98@YclQ_*)bm>uk7#>Tqir?EB)plpdFT);JRBVt9IOs(TuF`E|K=>V#e%0k#3| z%r9ww!Fk(7qYwpPhKhuJ{R3e$&gC}ym%i|(IrfSx;SU5K-C=3(D$c2lg#zOUXXB9M zIgoUOOKmwZ6ae?JjK5yaWyVk@9Fl@!Y&#Z?|Nezw!i}{ZbZ{VI6&a=V7LYri*K&@4 zDiyGf>M5PNDUjeI7)`+SfjvzL{+;;*r;`|~J;UJy_yOWfV*Tsv4+LWF$&5Q~jPu4x z9vOo!l3`B(0xS9U&k8|59D+vH9%QwC?+REBP-GIo8whe{5p8cxqt{X{d@XJA164!; z_UOjCJHvU^*sROLjRNdLk$DAa`RlI}ZEu!RAO?_mtOf<}SMU>P$x3N4^djd3ihP@n zfNUk|Dk@@HF^r{RM@gfz9yre<`Lm$+(7RMu*dsqE--EAgk*kQ&XI}(=;lYqG-ZCMS zZL5j`hX@7v;DHD7@`)5q%s6-kpLk2qBpa1J)M+RU`vjwCB`MYuW-|YiFG&<+y@i#M z+8C2lAi(n!PJGj!hePp@(B*t|4g&%zhO|26X2{GiVpJrveA|(VIg&hDDf3U=p+JsN zT|thT0n4H*K{|8V+mHLPp3(KEo5p6P=fL9-F2Syl2cXH;WYclU@2pb*zc>+caLn2}0q#Xs7XKcGafhOviHc+fz$dwo- zJKzpd?-mKYxZW&uu{mTD-$WiovS(s=Emh5+9p?v%P4TM;`A2f|1++pkvYCV>B1~oD zY@;7@LVVsPH_^5lxtYW&#nlWpZTy>UH#VxG!H_yUpQhdL^R!}q6#NS%e{B1Z%te!t zu%{enDc45S)?N6{+&aJO{i7$A8ut=i^F4hK_o#-V%GZ zuYb0R)=S`$;gsR|{fV(eswHf5)%CZuwVh|Tb~_6 zHx$u#0V0MGH7q_{bb37O>kAjZw%(K$qJ>y1X?>5coA`g_xPFzXTGclAb^ID@pB+w2 z@@8i~MjJ%d9*Tan@4U%5EsG%Qg>94RYNZKZI1#ZwB?z!%+J>+@;l%Y4!Lba^2%=pF zy_W%ITs3JL@M+YO29!)X0s0`}<#2v-+H3vbHLE)HpNZG%&&mhS&R6T%^QK7OK@s=Y z4i1M#GraJ^Im3IMyFaQkt@=i0Q015@Svi-QdN^xZIRPjRoaz>NXW$$xuQ;?V8T;TG zurv!_D>ZQDu5$`@{i5x_29~Ik*eYwUBq4Fl=XxvT0aU;ufExP-F}RhilZQf~&t}|^ z-5we%seJYBr_h(23im?8!Dd8-6O-+QjFxl`EgAp{({*u$LaFEz$__cg4pb-wOO$PV zG8B}n7s#ueR!$$37W+}5mO?wWe-*(EIjAfKl3Q6fq>9x{0 zV`^_l6VUMn!JH=@^6rv%4pm{SU~0a7=kgwASWK-=p17x)Dnan?0$4liDHVGM{36R5 z%(+s?tr4|CE)LUu<*?ed_JwPpU2m~ouHW`kAN9JV%S#M{}eKT(S!FRj%-*VJc#;V0ZNIZU30A!7VP z_EdNytIQK3=eTnxa<5jY*9w{40(_($WsB4i=L%zq2vlq>I2b47jms{4H##jWD)cTA zOf{2Luw#|Q+s1O;{q3yO?@b#vrreH&xw_vCdv~&qj#XcH3iiR83l%q4 zO>TnWC?00d7?-e+One}0IVwyEXLA=6_Rpo~R$FPrCRM5VnQrbkWYV+FL$b*ULJJ@X zZs8=U?10lCB9?>dVFQ@DA6geQ1I>8J!A`U&5|gvlW$ybSb%`kCU<@r@7goI{S)qH%3=(ZA($S zVpO{%Per6ou%7H-!Z-vvDAVYNR2eE(J7I7P_>P2sLvCpg1f(e~DD1#+z|Is47{)xC zF_6ibgAfQ`#jD@z31*XX1?rJ%o#R1y@GPC2v!IlF1CoTFcc5AJ9FD+KiU#(h7y6<% zT`d{0D@Hq!VsyMPzjGjNZ01Mk+=XU$-pp=K4g-rXu-ajL-?ORI!c6dL^W&!PS1ExH zV1N*EW?Ps7|I?)s-1dPi&<%3gmHJ-qK4F>-y$4-Tct9rQ)w#$Sx72Le*U8Tb-ph4!)#n!=;|K zjpFIRnHFyHt{e}J@nn!a?7&|$I-Mckw`T*Ca|l5%B}v*;c&D@$$5|Eah^h%kE;fzC zn3Zf;0OR8(%`sqhAl_5vGlp;LC3aKjfvxt!Lcg4x8cVSM7PaXGU*Rs0zK_y=+}Z-V zg_GeDj_;T`>@r$vpo=cXd|shbdb^bWP|OQ{dv*bxoWUkG2V?jt{f?0B?9iDImqPRK zAy|3C(PNQ9Yr_3wC~qAfCE5vWKy;W;@KSNq8A+pL651QB#0GuRrIe2SjB3DqK`gWZ zO;g1J+KnvOgPRUXGd&a5*y7mYirw~_{S3B6nH>tV^}z76<+o6Y|? z+o7kK1`EUY$vActoq_Po`i?0pI_sB8*#RbSwXyJpe}qg(?D~&at}R>c4Yu?%+g=yI z>{Hp+DpQ zRjLcEuGyySCfUc}QMN#p<~bKoKjr)G@|Ch-RQKsOmF>LV=bl>X02pVYw&Xrbn)+f+ z?!_XngKAj(!>zUe0SW8)O$}&W`^sVjnA7464aEagwABT zy#ybxgveAx`n2;Xm$-%ux3kZ1Be!9Z_A&H!Pi!>zYo_D z?uko*6KH@>KT^fBg9|6G6#gYX-9+A84WPPK_e%wy5A4qa|u zV_%EwInB$r4xT*DC)4pzzY6_WBdsM9Rzf$}d2{|rF`wcnn7 zD8RQ-y$x))SieF*X(db1q{%$!YcrnS`7J!grNL`!ib3sPiakR@$^;PS#Zm3tK_hFo z8j>#Tqzj4fiY2ciIcMe?VUC=^8WLh~#0J$Cd?~^?{6L)5V77i?pN1Q zt?5uESwMeL?(i}|LzENRj3+H>dXbc=6%wp_ubZsTi-j*DYkZ2Q6g8VMmo+h!P{9WQV_p2@fmidK45lS_Stba;^1OX5m$HgSo! z5-75C#)GQ`nanc+9r+lo^p$+78UN^GxI|l}c3V{a$ezWU^dHSZirT%phB%A?FDsvp zN+53>_)mL!nXpHM_;fqRYFov0d<&9GP}n5J`-ID8Mv6*aK#5TM(<6~5AOTxpkv_ue z$v6rZ@gZr7oHtl$6tG__`+iaOo{7y(gksK9kzOpess%M2fgPJ60$SSc#%%~3-XT>1 z2FRr5lEiUF$N4-A!GHF+%~}JFF5>!!+Y9OrmEqi0=p8$ZLr4opWg>cx-iAq zp^Ftq2!WN=ViCZqPxl#YTET27#K3CkXOG}A!0^qnRWZt_D0MB5}h{}EhpE}1x zPLSUTa7!uiH)6O-^<(InY81AaDp}Ia8vko9K8DB@Q)01XpbGl#n(E4Gh{u(Gn9b1Z zO2K8@#yob0wy8SNjWca7zBr_Eh`g4sjQoUD*N3#(qfs+IMQq|16n9h zE-A8>LQHOfbTE0YeZELPlEueJn5^GwG1jj$5SNpoipe|?KNq8(b07mQv zo)&}+h=fiX-FryS&NY-G#O5@{fLbq|E8S~NBN7dUesda5UOlG*wZrgUm}0A-v`K1O zL#9nsq+tINC$5G&qlAf)Xa*1SrPLBBIjP_=tkd&B%aaj%^duU@8o&#pUMGGBVbVaI z&F`*|p5wjP15f}di3SvTOj6D%vVL!}@VRUCbB%YqnT2obU?sJh~~glL`>$O%R{ zrrXy)NMSIfMDPce)T|?MDoZ93P{kw*3&FbK?qlZgucWcj{^N8iU0}+f@w1iA=RCk? zM>LvTGK%z6Z;!~=kJX11bwejgo5F>RyZ_bIzP25(qNYHWt zM9c5!9luB;D_0{V<}$)65X34+^x2{lQ$m;yyKAG0>-b7RWb!SIG&7|CoLGU|lu{#N zf<@|;)R%#LAZ5lrbvk@;NWC&xc0tVt@V34rFUKGpDVn%%M8F~W0l9|NWFl$-#g0{M zs>ZjD(7hOfBV$ZYQ0$nMBvB&zxp*o)N1s5HOcGOssJZxV6V#q0c`ry5M!=RT9UxQ< z4voYRo!jpvQh&~CqHdXx?K`?K z=F`d-0Za!7^Ae-AjyP+A+3|ZdLIO)qD^RVdBYvY4HdBotTd& zqGlRpJIVFY;2LH9sx-7{1X3j;R0)`+T-}j5V4S&4diI~o)>V=3hlm^Nt0N40fxuJl zr$pLES!DReW=JnZ*{_G#xqeN{HwjjG9Oh}sXR8HXV`S9(FNdEYn076lfSY)snkbNv zrk@ba5ePUSU2twBxhr;MYZo=P#G9Ik@<=SNA_xa9UaMR|xmCF0!|mh?T%Sb01fI%4 zI5gYww;zx%MKZwmNs-(O{}>nlpyt>m&h)ftaqL60WI#uE4%w9lo%@q4D z;?h@ZUP@nHYC&>SWwhgHDRgD+>s5D1*egJQ__4Kgy>(vO3HqdqKDvfZXfL>7f@a$} zn>aHD>>EZ>b8^rHFI`!^OT=KauKySoIbb?*?nkUi7~_sJBCStdslC>i9uE)iVk38p zS|5loyCa)~gcN(<_iLkU|f!A*_jv6qV?g)JC&8$IgB8*&Q)n2&u}Vs@5Vj) zTnIkLC-IYwR0+oicN{C!%N!2AxIG9>&vE2^=EcjH9U`+(!8?}q8v_@Fl2n90XPEo5 zFi&leAB1^R*!3vW-?#a=IeS4jkX*riNGbZrIP6p2Zj5%bW8B*t(-DIB83We{pK0NqyVU{mfrWqQkN8*=t4Ro%34Xg&Rl^}I-rl5pJ^|kha2JZTazaGAc3-Goj;bjupmo_ zcVc}JdF_N3xK1^un@x!#TU=f#8~F56JHr!1yNO!C!0(at^5T_#i|D_!g#pcdO8ft$~*99)lcctC2wKv&dJ6=?Pd2I zK#k);b;f6xC~W!o0jB5FyD4O-GGw1c3%PZ?meg!Pvt(baM+_Vv^BaA-YBW(FJ_+aX zW||{6MKqIAo#M}o=9xJf6irC*&VrX8i^cbVrUnMI$xZ}Vd2e$git)LTD;3Nt);d_h zib{J0sI%+SELFn0*Pr@{r=jC0X$g0PWC4gJ96T4)#$GXwSlbo4v8bI%JdL;pM*_=L zwL82Qp{WUcLxDOJ_2j~It-6*?HVT9O3ok;-FiZU$ZP!6JI@8Iit)=~)5-XW?;cQ6D zZ#99_4A}@z;*XYeNKN|9k-k$YKA;`j1YjJg_0?f^7t72YV){ph{KmVc=n#72vG?g9 zpJJ((E!a_9)x!OkMFk#AUQlb%5jKbadAt2QcdHG>VEg@a&{`1cSxZ>tBOmG^7;(BBymBl4j+;i-W_ zR_HoQwbA9@F&1c@(1Gexz~`bgvCThf__1+LeOEs@6a6;puAg+ zfYlFnMp-*!L;peJ^h?{cJ9Qp_jN+>eOg^IS*Lj*5h)UjBLPLW$<6pFDKUo0>#`1dp zxeNdRVH`QJ-CzhcmAFn_;}mc&?lObbn}DxhQ27^RaanuZM>h0vo=i1;d6n;oYEJ=& zGDmx@j$7i@tx*`ZTzDbH6914+p_36y9mYEGNv*uZVQT(XEFt{+Xq`mrQ$CQ2yIZbb zaQiY#W2R=Vd>42m3p29 zt+JN%5jCuIA;z}qIg@GD!mu#)dK_Dw7x4Pr=EO)Q!HK(=6Za&y<7KqklC$d~DBu&^ z>3g^r#Gwhp0-aZDPUg_RT5JHag;qjb$2J{YICg;HRV;)Rcq@%)kr%*kGTr*v$UO4 z=Xi|>3%l!&4Vdg6h-0xhc<>NUR;C$5l#8c!$JGN7e#${DmElE}!0V+YrXKo!zQe?h zm~5Uc8?1RbKw(h3L8m~{$#SO?B3qC`@J4UTZR)Dku+w(cdi&LO*B%KtaV3633HQhk z(;iT#BQ1XOWX9_@K4YEb^=L(}fOLGp5p~$Vt-URvoEQZ_&mXvZ8f#Z{OsX~ES9h9( zjV2i~rQ4Y|Wb_Ax3dGKwq+IYY>pwI&cBhNGl9yoEgEtxl&3gyHK4$X?wG}V|r>}eV zK9wm=fLk>6Z6`P_qQc+V0)3d^vjn&AhwwI zFyIq(yNOS-Xjf_W>EikxRqP>bbaBO8`S;a9lsvD;k1nW^RkUUOqBLLE)@meAr$7Z@ zohffR%Z`y%!ncD67-EVWfEZd^{^{cY=F>L$BQi@%K`XKM1OziaIfeO*nPqTwbSS+J z!Olhu{<|oWb@vUUrjcm|+pEgY(;QiI(M!`DX1Ym8^8O6@Z$&3!9u+f9tgr?bhrZ}D z2)rH~p9k5ribrqfZ>Q0d!PA)Mh=BE)p#&e61>%d2fuiLuy236H_o{ zCGq(rDw&)*#i+E~B)7%7CL(t%t8}_w#mJv>SMY>*G5K+<#$hmp0RU~b`WhADxd!-D zPAcQ>1|g;mTOGjUfTD7lDZ~o+94VWaOQ|9^C#xDLGtlE8Br=V?Iu;a+sAT~t>7K7& z7;uw#Feh>0jt_<>zkGkl>W8+mTNnfzl0<1@UwnDczkj|2Le@Gb0aP3lR0=fI*FhGw zeG<1Mj#!oCb+y~;01aE)KA{#-t z()7R?V9l)lS%wsS&C*Pk0suSH1dy!wwVCc}Y1w+@ z(K>Lzbrm1ht+B)J=%JIrbvGS@oHbG5lX4RKn7mL}cuah5Tu(XghV+QA4qXronH~=m zzPQfd;e3zODfx|&mzMyq4bNoBf;6P&5;Df&C>^_rr2e?Z6rzS! zo2>)8E2A@YAE-odJn!!{SXR&M6z^9+`PA5f$D~9&90o82m0i1nCVT~L zcBlt}p86v-s&SIywcX}95tZ8A^OsDdf+jTloie+DEn6Q1Je6tB>J?;bIVRysd@!Bz zO(~ULXZ4ZvNL0Lxc5Y#+zqltZ*;6Y?`oKZxxaB%ukjEBcSAqt;VceClT27}mF4i!C zJn*2nTgtIEX}6gF1aY(IaXR)@nMC>|ELnZQOCGoZF?=Zk(vz>mx5OBe`DL8kvdyZ+ zf4`?j{t6UvjFUeSa7_yo!XVP77HS{O=#fvRjN?FX$r9vp!}J>&N}z4$MBKLfdah2AE$XCMcPe>r_6 zQdFICG_)bK0lTUAz9rk&kEy2-7XPPrNBaf}XVLjoKB6#+Ac5etDm z;A;!KteD4NK~FrMmTaW^-NDu0P_I2ulqGYO=+0@eE^S!&VDsCC5A0rK5&UGziXIsQ z1D*xjKuk2E0Qb*ELD|3}qkLWw;v`>4!z4wHDkU5S+l)IJ?Eo@x56j#R)1Ph%uwnC$ zP;*M{{>HL(Yu^od8U-8x9QpcGYl%vIPNK~ZijbF*W`j~P#8XS=T|<`YG$qp6AWSmN=V5T5$H ztf$3LXn!uf3*OcM#UL8weFvZ$I7{Jx?E!m7i&qsSH0S!S9T$O-c%VI^@64313pL>R zzai4t1!vuwn&qriz_J-w_+qx;M^ETNgt5I*ujN9~?~- z)IkGMry+e`o@1xdJBXkcZRA>Wc8{h<@-oxKxFxO|sBU#?^v{47+J#?Jj9Q0@+Xu@w zJV=AT^aK5)LYxSnd+B($v1-^rE1U%EAIbv5gb8Dl(RpeKbqtO=zj(cck;CpDbN$6P zrd}Hf0JB-N!c7b-yxkxd$)9%^7jG?_RsFNffG@lcYAXpbRB<&=v|=g zs2d*dV4B-TErDBM&v96Q{ybPiK|FIi4_=XnIDhIA+k7giS z7=y9Tr3-}x#nYy>Pi2|!J?ZGA2lUhG5xvr1|kWy%KbRxZHak8{*XU9(;b z9{_Rppj4cCPP%jHO^TBCj3Smqnes(o3*90(fHH+0S?zdAs~Q6<+6H{W`7J;dV; zI*MHlUU`__>zb2o5Es32S@U3E$3amF3b(wRY0b!MyQxX=>S7v&tq{{Wv<4-KTyB6C zqd@z!u2uUast1l<4xyuZu;w(C00?B~`~Fa;cpNvP7kXlT-o2`{jQV&4IuD^YmlV$h z7VbV6uRhr`-~~*jD}D+G0ZDpLk#2agBD`P>FwmC{(kpqlc2Td^(n;}6v3ug7)(_q(x%`dW$w1dNb>5P zKvBG1J96urbg*OF98F;t%59ieuWy&2ZZ2)%HcbgK2IP}mPD#>=uES8IYp*e+)GYX? zWjoj~uiP2{G$X1QX3u0nEFX;xE%wr0c_gM!XFXHqFH7;EiGZlPilgJKx3ufeZ|-TI zQP(T%ya%U@2W)e}sOVJWQYTMa>0kYwDspU{qP_Or0B@)f5~#7!cyZ*^G|4=LH0(KS zXo6iUn*~Enag`;sR_#711hH1d-i&hbNk8nbdA+~-8%>ca8H-H^m?#v5rb@b}vwIfgJx z&=e3rIzt?XNxe8xUcqyjLKu3|!?>SZ<}~!`BN89v0IkeaV%mfAj!mo8c4*v=qgR)P z0S-R?6H%dv?lSBpk7*2(1%=ov#Ktg|%m2nd_=TGCg#0GfxmhocY>FxhrFSQX75qSG zSVB^q5R|(K?7E1-{M@aPYq~ID;(t&QMNVGe>D#0t$ecLloxnWimX27*36+dM?n-E( zGqy;>hI}t^$Te3r13I~;y*kIZih@3H>HixSx0G_)dXXrfU0c#kbq)__b;aul$lxgx z2R(|&igX9-a!&1|!&cFg7iF{EV6?qeX^48kNL|m5Zon#ZAeN(@&>-;+&Mgf;*JS=W zGT$|}V(-0cpTB|WT3Eh;T>B!Kl3n6l{AW*&?Vl72;a}8_xdBwA+s*AGgW|Q8H^eur z<%L{8_cY@bI!aK`BMroVx&+$ zw_Y@<|05RjubS3qzTU_$4mE|NV9&S}MN8q}U?aZ@;2j1GENG?SY5N8yb3x6JfZ)$2 zI)($LwH{X}!vADB6Aj0dkJ~BxzJ>wcmi!J{R+dEx_x^@DJX1)_nI;)F*vu=?@q{P3 zMEoKX!NYrq2W1Sduoy&9gr@C8MnvsNGwT&h7?>|m&=Zlq<$-@|LM`#bcVx6~%vbru zww&#=s?%S3%>+;xR6!Dc}qjC8rJ)6y@w~ zW)lVx&QD=oQH``S7CMBX#M_sl=3rTwB}Mo*O)g2LhDxRG#-m}%vshS=s$$;upfYw3 zxdS$Y)@(J!m&InHn9}C;v&^Z3obF+!qN7iB#)Zf+mGnEH{K36d7MC?CCZt-M>TjTwVB?5|xtP~I|>^;;GXkt|o7|n!R5tHz0!jTG5 zTi9_v*nW|n%ez&QP#tPA0%oa5=TboZWeGi`wf`r+M6%6c!4~}6n+G9R=|60%e*4$I z8?&9}g??_Bm-_AU8FPx1jFPOg<|nACO70k8D!qQG!hDxGsJ9QS=fD!|9o_9r1pTuz zoM3`=oaPCXQW_S4S5JhL>y2SzZ$okYEh<)70ar+#m{z82g8&&)GrswAX`pFfv#er+ z>!{w;I3b#wmJxQW-CLPXW$8EapK_P{q3?M*jHDJ% znbD zOGfP3&;^7F`iNzTcB7%qvg@zQ1T=4PZTgB|4Q2M%S2RUr~Ahj3RhebD5bZ<=YQ<@^XFsn|o-pG07gl zO}_w}TFFTKuL-WH64o`&x`RH6_m81Mo>xK5MrxLyh*Cg;IRO7Z0KgF2=f3BMW*Ftw z{JPP(?z(qo$W4L<#N9&5UBKo8D1GZw z0#Qf+AXz^|!3#5?FN4+6qe1CX`P!-0E@h8VCwr3yIWDD}%r=(lC7o8in$PS;%yE9O z-2)%Udh2Kd1{6=gJ0s)@xYz@ru=d^RtNg1*xnD4#dtbCkKv=98eyj3P?*cIVVp%vq zogT|Fp4~LIkggaq$0r;fsu+u&4-}n<2ahOi>msFzM0j8Ns;rTLOV7ieH_v1ZyH3en z=1P3yYuOl+0-rdmfEXP{w0)@G_E_?^v9S{Q^{6his{TqgFW;&zWbx>aPQ4Y|ro6N- z5MDu}wEUQtXNbT))wP>sezh&zi{?O3SeC5gg6Vhb#Z@b=C~M+sCDcJu;Elrej?~>8 z^Oy0^Q-suPd69(Q{ba!NO5jenQDq)CEF(npf{16*Zbh}WFQ)=K5!trtN~-PlEV%Sr z{k9btu;J(HaTp`IO z5}JAFI)8Z(t*W}P8=IuoB^M}6fCd<9`<(0=kzX#`u3TJM>tU^2wo-9?r^#1e#OmAs z9VtSTwQRfX{^HcP79v^hurw%gGvlclYasVMjDTf60wl_bxF{8oKi{)2JI-ZKVTDq3M8p1yRZ8fUjdu(h?4s zs+!D59B%~L7Ysd@e_hL)D1Oa0DR03a%gsjV7+OO}j9Iyuq}AvBQxgRT+8;maifp-N zz*i*PUD&f~?>UMs-FCfP1u*~ual()K%n&&vTOoO50bm;yf^^dRfKIxSks z6^Ee0p0BI%;@f7bk;F6@SgN|Q+G@Ycq>%yD;gi6lQ8kPj_(X?>wzAa!_wuC@=T)gt zcZ0;ntc>Eopk#?MtePV+=$Vnw%v?KzDyeoptRpD!W}|K#ddUvaY1SjKQxC-{LEUP( z?u;yWAO)EjDiYG~io$MIn7#D&>0!<`OtUtQkJOS^nI|nk|7Zq!sdlHgx8zy7x#}Fh zA+8YFC%033m;L?9nh1fdj-9qMqo=vR^eHE;$hy6fp0N8vie;-Ppus_fd5-8z6)>Ma^=yr)3# znr>Vjd1tI3`5^O_nDapYvDHENAwvV_7IRBkv>9Kf<9vpkQ@h_wU-)^P4AiEcoLzi5 z9;bY-O9rzQYOx6+v`3!snFc8J-c>3PK>h0C?5BlHV)QQd*RnQda1SEcp{Pw*ZXyg| zHhRASW$dI@#EwUHXR9Ii7{=$<)i`=fTxVEN_d8%kzC%wXyCCQSQ2m;KM-I08AxFb8 z40VWHlBtHC&HR(rQ&y$R)!HdYv%)s+?CBG`fTtBc7%>bQEd_EnfeA}^0}DAnasI>F z@cjf#r>Idp1zm2Hf}EBnjRXv)QC+*|e?+69UtT`CkkBm|d`4ZXi>U|5j0~SN8@bEO z7xm!h;Jgtm$>64U-)E#H*l%$JZj@C@FM15$J2sb`g^LZh19Tgg{nTNdg6{W1ZtSqX zkq9LdEFddn3}#1%ON2!$%q&cfG36@QGnyiX(-S66a z#7bHYv0eAq2Cf1qEba|{P$oZdcJ)%qugFo%fNuyi+_Gm)H~Qo8LV2IpCv6&^>kmEQRHagN{Recl_J4ao zN`N+ZyrhK1F(ES6#(6As4jQj*-FUr+c5O5J*hrQ-c!G@}PKjO`c%vSdw`u*kn*8!uIj$3SRT%>~&~GgEwYd^d>ss zi^R~fNO;79v^ujy+3GO!LJSuD5*mVboIh$zjjrv-Jm5%b)=rn`)p%ZLJv#TY8fma1 zcw=lkNH&^s>8{DMM%Z}CUrBKx4(_jwqii1o4ksoDjc(EPRPuK|dV@AMUmK?*o&srq zpmhD$(HgeW2H)WW$%dlsyB_LtyE5SB%NK=NX0uOiW5CIXn!^X%2oJFAPNjS+8-rNt z`6uRC!(ic<{gfwsYGgrU1)*@6kZ9Cm-?y<|$fBCIjop)q7wOHS66cv@qzcO!V@g8H z$X~%Mq0Usl!`vURywjpC<`5GIyJ2Qi(dB!Pl+b7Mb$=nJEeQuFUYLN$J<~K9$)Lel z5}%rnSdOc9Z!R;p!}71T#r1JCfVlB!fp#VY8~v!m`2C5yT%$Nd+_#U-&h)nr=#0np zPwy^>tHgM95nX{0){2sexsw zOmR}QRlZ-^32sSzu%`-9(3-!m?r|#V^A70jD|=SW*JxcyG;G6H$+YeSxLfXZa|WQm zB90ZdYzqFeP8uJIacg+cw_(K@XOu!JcsB#8JW1_%*q^vzK>n<}fH^SMCQ6lSXZBpf zRC9U6LfKTPD-h-8Bh7;c+c7BYZJwcyxNz30?#gvxcNgf>% z^({F|S!I0Dtz2HO_6?4RY{xWxL?>Ia6#n^&tUjER%{qeKWQk_A0Y!rDLM8)7x42D1 zu0FI!GzUOakwaz9`B&ZJM|4Bfv@+vBsD^DDJyISyuL8* zTa!1S0fb~*u!rNsfcKC9r6y%E60UB}(Iudhcd6q?`p-m3p8)1>b^hO{_Ps@{Dl6;s|S z`jit$4&X`|*RfkFwMZkuXEEKt_r%qxaE+U)V*g=9-rSj){G29viKp-8h=fvJE)o+x zpi35(t^T0haJWQhTaW-`{MrPaEtE;8u%MlRQLoMVVfuKe@X;--uS<@90BekHjBs-k zTBkLjptzJI{7~I!F7{#HdYw6)z+v(kGvBO!Nyg4U_WVZbmMjyk_>mRnd0rrsl_X1X ztb;MhIL?`0Qj_Iw<5B~W-Qki`kxP^;)j;8DRb^5OSmay^gK;Ka>l|>5zTXG$WI z$LUoTrtGGuXUg8wSyGiffrW6fc!;V_esK9`)KmaIwB+sxIDoptda$&yuiu&1rPe{9 z?AvslQS^})-*e*xF+{| zsV58-hJPINK#R1c(j_@9(;A&HyjTHePUykB3H4g_74+JVJnECiS=qg$aC-I8u2cg> zhD-MBOOL;lRWX2UX<%>ed z6mj-{WwK%Kyy8Ftx9DfB&+|{@DoE1j!Jt`p%OD{_xI3sQYl}ngi5R{xps;8HuIn&; z{o53&Qiydb*^Dtrx13kWv&MP#_iCbo)H1|OTurS(ZnR^KmJ7UtchyrWfHd3EZ-NMo z(t6S$*|t`<+(Mejp|9Spwa#-al4gy#vjW0?r2-?@D~A`!Xa7MuP@!C$>$pB9$04JH zZM|_(>Arm3ug?&g_4_t`cMDbA_ZsA=XGpIwll$jN5w9uMDd^}U2m?lu$aSL%Zz;kN z*K4nCGJl>J2vwVvb220(==guiA_zYKBy;Kh^PReP0_U~o>XGyc-sy9A1%=RmPFq2U zo~Ej)_u9ZoVq*c!MUh!{2WPkIIZA0pV_P&<>-e{Ut=_+!I}QfeaNgkamAhML@ZmtU z-%KoX43|JkKaJ~hG)RW#|4d7ew9JnM_{kLfV1?Wj6{EHC#fLvYrB$1?Rj9KNm;3+> zzqWlhZExdw`btG^p2)Z5vh4M81WA|c)h#)>?xsf8o<=S=N19w-NcpsngpA3^n*hNBY1T9Pc@02>g;?UpWZ*RVg1u1=%?y8WH#L zu3gxl5QZ%B;eM3=TxKasr>g;&rqSLkTq$YDd*TWPaI;$<3N$>J+U+uBrVeD~-xu7d zsSE?WJ2s|77~Ge(HR}T~_~~4fnGD9b5Fl^z1jit(%);ngJ|0U`XT#=%nvh7OUdZj! zfG#wUCet#ALWAH=k@897_0O-4_=7r9oU9lvMaev^XRrz>5~D5f11)RtbZe|!swdUK zE`^-%{7ngTell~%G=sD9E-d?0H|*R-fu5=@SelK9miTn&%GzzGQ@Xa<-oo8nf88C! zQI7!QBwg5P63{Rn!{6BId*1}jMf3U9v=b?rVj0s&O5ay>O$V$JTo2^rHLz%e=#cM{ zjw0_PgCmg`-}56?AuR7V719~T%1~Kdwg_v|L>M^CaJy5P^fRCl$a6v)(qRA=gUKhz zN&dQ5In<*Zr>K4#FQ8KoA_gql@l^eDps_hhP1s^^+Y=xYZxB17X`V1cRnmNCAREH- zezIxV;w7G!K_oPDQ-nEV0UIQQw76AIJ)ue1?yJe@$4?8gzB?$rA3 z$+wS45Z^X^2>3U^`}g3|sft-vO(XI!`PFLapm9;aA1eLJzvu5)l{GX~W?)~{ z;4$3BXZFo6fEecOk4V95WFBiEJzyK>#U+obT^L=9TjNb)l`kJ#UWqi@zApkAI7E`0`pzZW>O zIi!zu3^J#OXMqK9EaE1clJe13@^p=2y^4m`GN+&1X&Lkg+;bTaHCLi+7@=HNnJym7 zD(8l3Gpf9R@E4OWsZAv)mjF@GYi-!GO!WA`s5C*@6?=GKQ;tB35npXpl8=3dK%%O* zN=(ot@xEA%8G8S(KJ1!+#VIH)w3qXQ`)iDkJ2+#TRx6Kn8X<&n_prRqLXHvQofW9z zyrz@l9GRfVh)=bm^^A{Nrr=Kq5m^c5LvnyPH)AIB(6vr7-B=WOnrIS8s{waECZ2xt z{kw~7nobul@0dmh5CA6aDsM{=_6Q?%!~sCx7{R8k#D7moR0IX(y-v7Z3hG^L8^1ZN zUD_I^U`B9ng<^mvd5FS>`uZ(CXK13W49^o>^Y2oVZIQMfv&hMdEISFJ1K6v^D90uo z@v2$wOJSSXsAPWNi8%>1?4A%?+71X1+io-u_@ANs*+IMmcB;DaEG)4YRNtcWozF$e z9^qWd62A_}xr9aAxh`qs+P92DA^ksN`&F5jj)G>sIBGh_gQ!!HG^YRylQNY8n0YsP zL*wcu-t4iiD2mhf*A^Bp2$Pu2M>>pTIKe6b(3)9+nZnMhCuwLg5^bQi-2YQOvwo@t z-C7?&VL;3nneC-7G{XFO;&l|If{7u7w6vxZifp?8NhEQ9<*5a5vG-cm3!=_b%_vau zb{QseU=l<8*npOPfW0`s0HFpDP@L2T9h>?>c;PsUrV+L46MX=6F++ACd>-s{yzLAq z0^7~mt&cIU*I_SaIp&u_B5672=Z*tdeDX7H-jRoC=_rx?dwUDC77c6-LK|qMqE1mD zw3Y*CAeO$yIALOgDHR)oD%xXBn=VK)skS(-+#4Y8r(A!yuyiw85mB&+9u9YyO0;ta z=)DGHR+SecMp*su{*&bBaYw2`|MX#9uKc{GYByuv+VHBKce&lu51*qT1m(Kf2 zEz<9bmB1gH6?DRZ5Sv_?+}T_<8nKzWh$P2Cw2V;s(JxA2DBFo%UnH_Af~qUjwGNJjd1zqgeM+h;qM9AVq0XUazXdTKFt z2)(+b@pERHft9~cGJ~G4ksH{m@7Xj12*mw*p1jC<=bkyqK^pty#iH3Kbr%_wctAi= zD#H7lhi4WRxGJ$A#wb}f4W`^1@_=R?sJ^cNR;fm1p|`Ts36!n}$!H1%Whpn748eLd zHO5ph#^V_3osE^1P3|Q=Yar#!Z6n#MNv2i1KG=qfH=@v`OgttY-(8-t-^fS6XSuHG zFnWx`VE@a}R!rZwfXCf=taFktHX)$7;?XCH@=Ab_nmuUWhwQ*mxN(-n5J5up>KMKR zsk((^ab*-0pcaN6>byaz;bn9yTF%rs3|jxpZaW)Dg)-1e+AS;Gfepe{7RI1(vDg|K zR$e|L(xf@u$f^)JD#WZhT+82xyY(Z$D3`I>G3KEa@bKdREnk?Xcp3TS!FDJn1tXe! z*$Xf_df}hV!;LYXTdumi7BGpAKyxQv9`$-^csa||l7?N#{XNe3(?p^p8&h|gai z-fdua$g`w{`it=&xyb{}n`$R+I4cND^z4r4Ib~V3v?r^K-<1-5cH4opr;Iy}B(3z- zUJl?H(q^pD(qMO+J)R~U0|nkZ8wV5kha4g45QJmN_v-;;vp#3!_9#e|c6UEq^>A{4 zvUf35DBiK*F`3vF$zS4k3=j?N-^WII!}O_=!@lk)B>kEJejisuefUR-8k;-5NCXz@ zh{5p%s#Saubt)Nv=bvRrjev>Yu2w(qBGcCPyBOlYWSY2iQh@lAi@L}L*?4F_Vq`1U zTmJR3J_#53PP_cbK)SQRHB+3>Chl6SUX~$4iA_y(yEmKr|MS$Y5tQ_6FR90hztt2` z?TKZ;aQIeDa%9>3h!U?*UUIFp=0G?N!epbupb(FWCUJ^rI63~=cMy~zKrL3`7<>%e zk+T_=3$!+{U0ecxPI()rt<-jW$Y$Aus0S-kK^_?>RaYxzcr<)DbMGYzFzRG3ro954 z8i@x>YI6zx^{lbE0B@)DNdqh@sA9>=n(HD_Wrm0Oz}z4;yc?ERwTkRhoKY>{+9p_q zq0E%VKY;~p|D0HSn@uygl>6G%xXmv?)}}(Mf%W1mq9hwT=Ni04jFBNa6hQwQ;Ryno z;K22$IV-`eEO(7<317z2cT6?YdDBaOG-;X6^#h(8^FE+fv@-%#t{bSU_>cEvL0#Ol zY4Xi9uovdx%@XKUB!#Q5aN-$At_$U4c-QbE2G%Q*r5yaxT|SVGc~dRV`0;@+@OaXs z;T|0=wB2L%c`TT+lin)-s^ims*zVytE=a@Ll4QTzYDrn5mHR7ml-n+n#%EJi_uL&U zbQI(qFSo%#COY#M4amGICPsp!L~82Z*1~VWDAcsV7De!=(j0H{CkciIeS!tBN2i0N z&+6D>F&}5qd9`VC=L~&bO1qCgI3$(iW8g#~z><94ria2hk*0B}ED0D9Cb@DH>~p<$ z2kwbbI0jgwS2ARkkJtz6^n4~U76@SUv1v&duLre?F}w#}HML3eus3)JYn`D|xo>Yk zjb#CT!Px?rpi2xTBRZkXXgf)0wJ~O1&Pdg$&_4^ep++m?Wi!rEEAUsqktrB{$?={D zbLIQg;nn?36dZiNE^X62iJJqcgsrQHrYK1ocQ%aXPFP=w!8j~x%VkUIPY?cu4!mE8 zaZd4N72!*c2u(9~?~zI_}7*)8ZE-4H2Sn6j&mY?bGs1Zvr`n9XNl}n ze2?vMO}$mx6V!HM6T4M!^fK2jw4WSTpFfSvu7YyHR0B~BzY~m<$<+L{Nw`p>tBw!R z7+1^nDAab1KyCC}u2rawYzcpjIv4%$*KH&2u+|}f?{u?ZW2*-*z%J`6rv;YFfxhmu z47DiypZcj-g2n73PwB3DzrZfx-vLX^a|WQM;@uBvx5I{4U%*Z>??xmp!yf=#+0#KT zm}QuiaI5?@NOl&lGIib{9*aXsSNdMy1{d)2DZ{~#w@xZBQ6zB#<+94&&40H&_)?&E z8*7;Sys%TiUy@WzuA_qh6K22Q4h!CNa_ml0LhidMTpMp`8B|ucF6`kLG0E8V@D8dN zi*?xQ!a6CZ%JSnY@XkHL%I?RnfD`&ct(D6KBx5lR!+yu_e%XU01vZ)D@!=UibQ^~M zWqj5pu~L&DkB63c`^v>_I5JOqU_bwJh}&S$Xyf%wBXn~H4s@L2HVO`6aLUkvi;~p~ z!Px8Sab(B^ggOoP;HfId|Ma1ZRN@%C`%{5YYVZS3H2;ymF~mVq6ecLNWlr(-9ni?3 z--0jAjl{wW>tmdiwIbL1NoA)S?X2j{g{*W84RbfTEQe|uUZ*-3gO)+_ynQ^2Zc1Dv znFQYxdI~-+cP_?)A(5j^lOG)E*h?_s*$VVc7hl1Ho#smnTE|9uDJ}?XD$u5J%!|A3 zHJM+wKxFf7BfKh58x_$4#apX?K0IyZwO`-`SV=@zL`)V#H;IAG4!}?}*aTXfP#sb4 z3qfo=r^HepKb)Q`BkAdk2&l47b&GgMoJRk3nlzFm79TiuV`QEm?7w(Rh2K2vQb?RL zS!WxTGcS-1LcT5SBHlNsX+Y#*KCmriXaQ(W4f$fXRCx%8a*1m?yJO#okRTuLD38i9gt!qPT%`5#t{@`TXo2u=)W{J z_+-?IvNio1zh0M4=(Un=?z+&zK^kTN&Tld>t9gBLge+jRWS{uF2*I=jy#z&ch?Ebx5j{iWlop@g;c3)oWdr}^Hv z(;+iB@Ixq;{#-pN`k}s}qQ4@T?hnS>_R9KVyteU-kLchEU-y5c0aGlLsAh$jH=~2* z+2=C>obV_^E;M28?Dv>-2bWn*i05NPeHouQoGJS>El=wxjUld0I_zit8Jzjo???%t z(i~=tc||rr*fU}Z7yZ#(E0#B_|4Nuc>iq~_$H(%xk<_9^4e7fCslX#`?wnQmw6~o` zCk7zHagR2SFh6z+SFa1MINCfh_BTe>CAvN_@irx+O-LEVnyfn`_U!V)kxJ6n0-fzO z;ojep0m{JkjDPI_h(}fr!%M>2}lOD#3Vnp6I zd!0k6tCd1-Y~{PMA`f$NA?|i_0ei|M3J&01P*ysbM5v)CevZg#6vX|uJPmyo`AO_f*w8N_)oB&LOYFlv*w%^Oc|JwGk(tl)o=b{HIQ zNl1`~9g=B45ULAnoOu-590Gccy?~cpoo+@UQ4X@x2DHW5g!T~Eqbq$|=b5+fukSSQ+J(6(`{8EvDMGE| zyDpQ%m~Jo+ZC--kE-u#Zkq4%cvG?5c#2x>CFOfF|8QWPW@*IQPfPlCl#hQbP;s8^= zs#@;rP<+E9pJb`LlR%*u_8z=&XAi?0VmR1?4u;6ckZGUU6;>2_pT-H>!E5l=HAfFS zgKWl2y(NmV!WVS}YZ%gZJ>ed)j86O68A}kExx7dJSM~UqEG`mQ&IJeEmp);pG}*=P z!#{hpl;v2j=kZcf5GHH{$}@G~;Q;9a+TSaehA=CKH>Q1z`oSYAzaX`k;+}6RGmC>@ z`<=@%W8wUy)fp~hRD(&^Chufz0RnzAui&n{_=~>ucjTfeK0Dos#1Lv^E39A&O$9N7 zg*GUgRQq;a)}qVk+f)D}PC@G2snGdh)E&M-0X==GYYD;=EB4R$Uz}RuEfuHJ$RE@{ zuhFxK%;rCkFm0BKF<4vWs$xf$qQmh?W0!vL>iuX^S&d$gLo0Op-Ik2<-*ZAF^J5(l zOYf_?nJ}T@(}L+)g`Mc;r@{RjVLz$BIMSyr&o#GN_t08=$Et4#8ScY@WyjKJ;X2YGSekd%^)wY{6HpNZOeMI5i8V$vQ)cxPhp!{jrN*n7x?M2Cu zw}3C%R7ewkkBLKSvZd*6dOu4`Bj)yhTR`}2PbDK@51Vkrr08&clU==5`X(nAfICA3 zNiiN`H?4jT20KE~g0FP1VMR$Exbh)a4&9t2Mll89gd|5Wld64tDCUT#rDvnW-m07i6xC{P1ClnY&mU zhddo$C_?|?)xBt2hs0dUE@GSq%t*J1*R%RTY|QecY#lTZkjgcoJ-B)2!s!hkEJWp zeIL&>0?MG03W=H&%@}Vj!f^6}k~HZ1j#8tPnchpTJpcDs-9If4DIB0K$`-=7mu!OB zOumeHx27gYhpj$e{~0fFtAXc0m|G}Py756ILSshG}I_?J?Uiz^Qdi4I8woO-UEij=F^F7 zx&Gq~EMlgP`p^3ZET2~z*l>4hC`bX2sj=jd)3f&(L)Vm>lB9UUVdSPMw4d0&+R$Ee zwn>KmwG^+CMg{29bI$T(3e041FG*3<=l7WcuqM8*fb@?$gYYXyUvUV@*&eG~WgoV_ zvT`%%MDFo((tJy!_LFTO?wXlT9!G?jo+?t#4UOuM?V7Bdv&BgnX^_g{imPF`1*C6mT<7#p=B3-gN@GTqBCsM?1Ioj zj}ZDSsznPilT)vBXVt8u*HX&GLPFJ%(Y)kTr#_3Vs!SzDP1Um8P- zTHM8Ng;-5+bx%LkE8_(c&^T~1SH@Ct-LC00sAdUWf!GT5N7vHf=QW8BUMYL6RZ13; zFJ;BtSSHpbKW$erU)P#>+Yza4zGZpnA)EeBP%|DMH}A-Sn>D)_VR}AIl*HeAH_c=W z*P*cv@Yp7y9JUFhu?lhSgha!oGyL>FnS-Uo3@pYOXTnNg(^3VY17u{XK><-#UV>~;oG`@(uap2PL<(=L-s-nv zLcS#rs(p&AqJ2bZd<2*E@DVIxCTi2(=x|}IUMpb{rwNnsqh%ySr!(6BV%dS+KA>|d zwFD41ENiP5Y&LZF1-DQmBj@8y^qXu>O5{@9xz~W~)`dG`?t;0VGKz>?eNuZmqJ{@G z^z~|nu7M0hu0z%8Pyah)DkjhBn1SEuLvvL&{6Fpzp!S8twW512%1^sb%IfDL9l8Z$@j#57> zwT)fe%w__DdnBKfu`wQ6nYo&Y$!h#6CDg(K9UV%={{}&RGLv z;goa1kd`{r}K?qw~O>aSyUCkccms*)+Hjx%!WkLt^qnA|NqhH!xHk|OilpgKI3+01k%SS-A#-#36H%VoN3Z# zE`wHb!mb-nl}p(`ofHh@)r@invE~%L?j<*Zi_YS#UmBGj`}$5?JrU@X6N1l+Hps_@ zjy60gyj?nyY>qLy+ZHLu9_CkR>T!7Ho5}53h~;f`5Ukxxp24=AyIA`;eD6{<#}64V zp>`Mr5W@8ECyAo~666kyU+vQ8lD9P!WO8EMkBAcw4GkR*kS1n~uvRc2)t^Od^+1h2 z7nt{?l2~x```% z1A@RT9?KT_BLz&xAng0!o9SfyMo#QcqVdT@a8$)+9f&EfgD#U&Q`{4&rl*PW;|JOH z{z4 zI2*!{aaR(|G=*xL9MQW}JIf*II;Yut*hnhdf#hW&Uepnd-~sR&2b18`%iWVu5j2RU zU-W%Vr>T)?6a|I$%Bl(N{+()WbXUt_pgAYaJb-~Gc$nV*VAMc1sbC3!lC0>eHK-5Q93bI!W|yW~ixyf_1tpnMULym>qqAnl<=j^lv!j-I7OJfcM6` zF0x4Ir>Sk@nm+aq!y_1QR{1MBA@AIrH?-XdZowR>8>9{$kDZb0~HZg z>Q}RnC|8r&ntryw>dU9wcC>iix8>%$eWrC7RGx<%Fr0gQ*&Vqclmk>ZB^Bk1YqkeP zPHmj3aKm($RtoMts93y}XCT4b6t{y9Zpnj9=^ng17BJ)H^6Cn_odE5oFzAgxoYgy( ze+A*p@oO|?-0{wxgKPth(q`wR{7}o#Dn<}@64E+|_A}+fc{)#ZsEbS!i((SfH%w;_ zmz$XF5Mn&bSEPgK3G{b$V)P!z8Jo0J!5aT!_*d_iXGYrE-ewH$Yd4|Oe%)l6_<>}v zIjQ_{l6%WymB^sYZ<1RV6OxW>r#~~#SfWuP(wx>?S7Vn2aM=M5^-VhAU=7CK(rNk%B^u)sLaN3imC}vGY2s^ zOutdtn?kcAz!~4;*ELX_5APG)k@a%7CE}j2L&hb2{LoDqsWTxh2Q`N7?w24b398Xzj<9`VOR43Vv=OEaHXZRy>d9slf$;)k4wz0kGFf{-Dlge)YxaS-o59e+d_@ zLqhomA>_@%1IKe=#N_%Hx>K{AbPN59|ojcB^QF^KD-{=!hR|c zvy2p;!`vId*N}$j21-R4+hr+DJIbB$m3!B3)}}B#IcqOwZeVik-2YA-PvxUxPoSnD zjYO_0uJgnoz4{W!u_X4uFeW=?Js10-Y94d{-QDT64TH9nMY4*14*(*i43)V$4;5Uw z2u9HK^Q7xc=T42C%x}Ak&cK!$HJMD&#@O+ZCOftPw-4g`ZF%kpsh&C)R}-3~xGG5b zKL~-ChFh0mb!&yVO}H@jFn^jyh>S<8s-gSn#@Kgx3^1@Rdz#R&=DbtvHSyTY(Ibon6LVl4nK%WUD_LDJEPZ9zoSvq zG=h@tc{fDOT^KAH{QabgAyp(XTfc~hseg}#GYHF00ZDRDMrf`)$I}2)P#L+oNJriG z$5#!;3n4G=%!P(91X{*QFwezHrxx0h>W$HSMsEuWCt~1rKNLKhy&u{SEZ6O%ErgVW z1SIY$v3%-`hpfX1E-`gKCNdw{4j0Hmn~V|V7tA4k8Y=AgcS4HFlDe;P35T~PN0)$4K+h0eN~kkVW;_eh9nVNc&O)0lCwxlVo^Lce$BJS4`;+eR^%KX zMVt*(34B~UX28u_=!*Tzkl;wWeJCw_V8sbcp3ir5f>#;OeN%fqsqmH?S$#1kTqa(n z`$l?MV>NCK8!_J1i0Ish{ORCqATbZ7nl*#}jjoq5y%l3NOqhMYkikASgQs|r0KZ@H z7nQ;<285yN`YPS0K)z#sn3$bjAQklF<|g+BE~VjkGX}K{QR*p18Gr!li1uvw5>vv6 z8jzNxD*0Lw6XNFJ6D3nmE(?dfh2MtqCWWGU6QnqETD7L^Ca7uIlM1(aKOa?~C#L83 zf7bYU`Ok-_CXX0Vrw0N6t|U^Qxgy3>%JkpN_{+cP3BpC9FQoYnB0lS=ah^b8-CCRP zgKCg14P>Q0pm}#pG&-Of+v}J%gM+CuGpun?u38J-Pa!8AaTDcQf@e(gzH(AzoaYPI z;XZ|Xg0AY>sfMeQbJKQG555TVL#yFD=V&@Fd7mIjG#TSO6JLz0E<{~n&)QXmvb#9a z(t71*5u$z&TuBnp^%%_5v{;C1#q$Vd6hHbp%gdzsg8JL}CdF0h)5w*ZICybZZI8%nIj5L{@Qx!6$z%+i2YfY zj-km}hi_<1-T_d$FtgD(D$P3&Qll$aMqAA?5Fh;K>uD|z9OEH z(%V9gsdkjtOX(4jTen$^;>DFD5t&PAzB2r*iCkawL(R7=(Y_P+$3V=jiYx0NbX*)# zrgO3iae2Key1NCB&-lOoWiiPiwS)Rzqn+I!-hXf+bOAkkado?&#|7_Y_2H1jj$jkD zmHnAZEsQ*#McAqs@=@6~hR?pZo{--wydr1J6m1IN@wY=VlSQpIlqe}nu3d&ut{;Tp z(ys!KNxvGSW{1pYtHrkD%0EU8hnKgQ3E7MTd=&`8>wvXnvv*LP%D2qzyC(i~KyKfT z~x(b-IyMmd(1!8+o<8OdXAH+mh8RXD`pZU>vtI z;kl0a;nJ|@uks2_!&s=;%4Q=b1)1hb!Ght=Bvi9Ml^&6G^-<*S42Tk~*Kx%0m+pj} zL?o=p#~M@t`)%7wHv2rcZ?JmVh0EG%o+BQF^Z1kX!^7T!1Jp)-aWi0S9u~VMJ*<-8 z$rs%;Oh?Y(%z@RX?8er!V5{j%fFl znz?$2al`jR$Bfp~$+ty%vti3q>+mnAA|trm?LhWB8K}0|2bPh4PhOJq8CN0h-^dfK zrjN_q)y`Ps(VX!-luEtOHzsjX=qFZHfh9`8JJ#7c*a?aY10DI!QqQNM(;UD2cj{Vs ztk*4`AMp`p=St2;u~Iv%n`^z*T?}o*&dGQmF{{y#q&F9RijRd|5u&@BvekMu^J|Fz zI}lt)P00;x2V4cw5&|A<+0a&&^`}X=;33&djy2c<0;u>8R0m!IA;2T|#s@6*e#>)7 zXEe$KA;-E25MxHnwIc!$(Wm{p+x%iGKClt(M+hBwfp=eNnORHLX2=cxs+xuhJ7Jhv zRBlBfGd496Hr561F5qUE1<+jKXDP4e``1Uw)#&}h<>z92U-`W=49`$;#Q=Q3JMz#` zz6|i7Vp5wV-=ce267f-7m_cHAow=#g0JN^9X$?k#p+EcZsDL9~x85@e)M@$t34||` zN>q`Apeki+CMJbV4O|ED-~OXhAD*a_$dh|zXW)6EN3^e|sbV_n&jV{10ss*C!8^y{ zPKf|YAjZd$NM-t1BDsmB2mAjcHDBa$mBDx?KPCOtU(P{4U`kI8Ci3SgMwol^ProtX zhqQmKql+nl(w}Lv&gFtZS$DO3y2BM=Uz2RkOT|}tk~^yj>Q5|n9%2da!I!!r%5n#T zLTdnpjiY2(JNE~eSxSM9DC8EgMg+?)>7MCi_W^Q^U1Op6DhSk(HhV-uGjyM4gq9ou zYs@gCBb2F-qrH0Oo|JB;bD_WwB2)fosl_7<@@zz{rbrN{${GjU^xIJ-i<}cyU`%WO z*(PNS1K6b*sFnx8+gc+xC$wj7Zk$?SmY!G?9OySB#_@`?r8K&IphQ1%TUvr#J&r_h zK$EWWK9hlFsKm7J`!l-We=~-+oVyB}WCtb%Oo3sycvaShgMu3(lqTg^8>YFqp&ZI< z!U}zmp%saS?n6%yrEq%*2i`Xir0ZzE17nzbRdv_PiVF#jcZ-bhX64sM7KL&DZ4T_XsF$WxgOPLFt@fDH*v)AcA2H$5Cg%}um2ErwGWdgX$|~@DFM`cXu2~K7 z1CAl2slG+JV-!n9%ToO|L)Z0Vm5rB>f43W&&1S43s2!S@2MTBJ3t$L&jzBfg)MNtZ z>Y?S-o8AjBJw!BXeu(cl5KGcD3!M{{I6_`h#WA-o48nxv*=Z6Gvb0W6LIF%3v*9zy z8}Y#mj6f93kN@MWx=Kq&OV)^#B~Tm52^>9NTnQ3iJ2w!U$I(E_%q-O0e!9$%F<6gY z58%!8)rQh=D>(VBXo=K;+yvX*vU)KLN-qL9I>QCRqj^M;oBU0W_PM*${s!g>Y-0&2G6S(u7Pl=Xa@-oltc zF=Spcs0fqsLLHZ`>rRTDW&xnRn&w&|pg78Y_D^7^Jd^pArU5fqXycS{tJ8fOAe~uX zs!9wP!Du4RjGkx>>XBZ2e9w^=cPXlZjvT2R1!y+?KDw2pYEXT#fh3{EH~S7YlHh?f zPQY_&f$xCseF1%b&@wfe79~|4Kco~u3sbS|in{p3kCUzJ@-QUDvt<~$+XM%hAx>UJ ze_szk9Uje1-f#Ax;0ecw*JpOgd=4HlT_*h7K~xwclqUUsc1Q-Tl?Wc}mYU0o+BTlE zwiilM_E`#|wemZ7_XZRSi(c`e-IxsQn%2=v7K?#-IQ#0NTgN5s;lJF0mYcSznYG&{ zTotFa`?O3SOM>dwS8hybmZ;v{eu;b>#K5ISb!`!@jb*Vnd3vD8KR)Lmb&ndI z8&mo~>p37R4S->z(8{S_(~BN^BLMiVKw_;oXL|mZ@mbfxf~eTeDT$OL!lI69Ll1HE z9qvoWOMR%U>S-iK$4A@E->2-`rS_vM`H|pk7kiwabo*??|IMz)o(Ok0ml(PkNB}v) z8Xv^Xl&}p(XPR!14vJsDrl=AYw>=)a$~pnogke9baNY*p9I3daa_iR{jJ<)-w&T&O zTadHCHtlb7b=^_IQzXQr#OI^D9I*1OPO?=g2n4lMmDAJ;ND!pj01w|3kP|sZciX>& zGXBhC*4k+tO=9#GWx2#~FstXyD_1h#IJhK{_V|0v&O11cYEt>N)zinx>E zWt-Qti3(?&L}@ff=ny-~3)vGy3L_w36Yrm9 zpl3tO$TomcGfiQ<+OO*fdYE zir7;LPIhpd#K!WS8=3Zfay_8>@@Rmoaj1$F;qk-7+m zD9B*%=WmbRDdFS_85#7P+Lf$p50}jTWQz0^X{0q%iw(O=ye`7 zL1Pdj1a({5I<OC8=*)Pt z_IKhODYc%=E-U1%7j0R;0LkY9y2o3I@n)GF{hLnuvFA>!#?8RA47xVjF z>h{KL(iW-7;&7GM`RgPnu~EU)ViH|Su#P9n4@L=LTvzCu?^_vr#%+85C_94&GDHsc z10BO=gX&1mx>0A)28`#x{W`r3x8a`j_(%=LPjA+w^Ym|ijt=U z7#5?1=79nGSkvz-pl0R%HtdZvvErVooCt4uo6U)1w=^~CQk+r7K85I*Xpt#E)o3I@ zlbY~mt)F}N0mx@kBEX-kJjziCLR7cEj9GD-oR#lee(iOXAkV4OZ+PMO%Xc_}WoVH? zb|aafA2=E1???0~a-@S9(JQCKNP3W;-{ij?d-(rwLNg%(*|sD_ng>ZP0v|ls)=Ooa zx~BR+Y@f(iLSNdHP`^R!JGycBCND$ScDiMHcMk5;~#?2dO*Q2T!DyB7ECYZ)mP-Yse zUQ{pWJJ2nzMW8e0N$&ce8x!JGF{@zWZp&)~)4tTG7Eddyw2OaCWwNtjK%bNRhFhF$ubY+eh}}mq|C&( zcU8&6p;P}3#Ii~nXJoq{bHEv z86`t^muE-rcxWh^)^%t{i1nFMk5VNR84y#y94tw8*|DLJ4H+25h+JM%V%Y=ngi=<-OH3&+aq;KQT9*R9~S&$Q1BPvc=ayt^V_G8jU4Or|&jSy5DlGiG#0RBaE-Zc5U zpVhrvN56)MXb8arqVw7y${cG6Es(dhdu@@z2@C1e!aDhB@OWI_{WOmNeJP zw*v2;5ly6rmVfj_rl@ymS3I9|_fmFCMKS#H=G=^8$*=NDzKhqaS{$o0#ZvT3P0#2x=fNX6WbI^N&AvLMusQv z4j&HU0{meD^?x_4-l8<=_6cb9s+kZ66u+P389_2GI^NR?_4c9;Tr@jvncp&d+w|eD z7#%9UfS%lwF@kj5Jx!@mpzSqR5Rn?V1I8lX*_y$NZRDavt8ho&?(~<8FO-l5&1*YM zKlkC>Bi?6TLq6XR+Ju&rrx2O7%lQMlZ0tO9ATJnuH0(dXV1V!GgGC`Lq$#VeAJroC zNt}*fK6wZO7-#OM{HADO8&mj%vkqHlZ-&l62bD(k*KiWHrzuxQry@IUi9RT2m7Ga( z9p`MGg>>l^HOfow^yT@dIz7~Dk&SE|+=5%sje5;#XP!3uPu2FODg@<~uy|XFqfl%< zw)Di|=~f`Au@nFqK?vxK6H6)EX7)y_4T4}mw(lJ1S7!L%kE?d6K9_Ws5U*-ht#dpo zBB9x2v{lbJx-`V9-m`#&3FD-b=#^e-8Rz#JFFyF z+;HcqI81LK3dp2S|CXihTUkZX+}nyq zZX(++(2uceMN*Z3o9y1}UK(9T04g$K7A5ZcB?Yi8)u5SlogpN0%M zbox6f*Jp7{wAFF4?czqDNx4t!saC#Z6FMx|m5y5G>utVcaP$4%CtcW&Dl%RT2X1-R z1fcS)<~|etjIfNypZE}-UQ>K=^+=Ixsjz9qyWjhZcQr%m+nX$OVfJLG2M72FG{&N1jRLF1wxP+z1SuJng$ z0dYKx2M%@nOBV8%Nk|bD$8XScCQI4ugM;|)QZfp*j5QraTbN=!GQv6+dJpTY>fl0i zMETHUF|F#&z6moE>r9!aA;R0H|Mo!?B!ctMHdiSvL_LgSWNzbjnX*O{^%gIy-*_fQD=<5)5 zs0gnhf9rDue~RtYSxnerEKbfLSvjP5DOseo<`}snotrPx4l}m#+B7+T6N>l>a^d|M zd?f1JL4G83=y|Y=jPSgwf@-s z4{b_|BhV~x=Yi9RPcBNZyCgrQ+8PL&m4M~P9%}sXxAugI|Jc)*sQBZI*8tZVLv3|H z4Ms{KRU+Qj=WYX?{D4v;n;#&r>g5}y^uRySI z`gKphg0mqKPEMuPyxOy|`XX?uP{c9NnwCae9d^d(Wki*TGZFY033Fpczh{=2Gd#4` zScrHgVigXpAtLIpJ;d8TvByI`LtD-!Y2zN9f}B8}n--4Ep(EYEA*VU{JO)l)OoPZKG0m%ZVn z&v2d6Li``KZ^cgVLG-R;&j=Q02!y_((zgOYS9~y|a)Q>UmZ81*NR`|q?Q2M8xH3|7 z@|2H{MTXNM4RF^q>bLdGHUBx$q~dnhBSh+#-VE|D)NUM3l7h>A>%5>kckgdfsR_RA z=2(l`_rBHA)G~`Q&-ZwNK`Y=R4DLGFyq{aa`39dtnSqeXlkr1jVSCHi0^a3-xW586 zRq9UuRdDyuF%Pua_7EOU^~RIazR*99byyc>LstjtLd{Cz{bZ$6O`t2h(S8eeYp-8admj;snWZoa2pTpcruvK;_EW4 zMLhsJoPIbkN8e$JI#u(eEYEQI&Z|QK;Y0-0esbJGY(>{|3l?_`%DmfmSRt4i@`#41 z+rk5CKR?1KRXd7@Ct~ciiqiFQNIe8GrESkCkI0UA3IQ0XuHM=!dcPcivd?VOw zIeEo#A>q!m^JpNORI$lT7C869+ZQ-sZU{fMAxYhU(IrGv+8}B31oSMqAJQW*d|Q?r z$ycQBoR)3*s-a0^=TE`j#+K&g!q!7*RiMFr1a*?VhSabSw%(1@)sLUkFFuKTxHRLB zE*w3#6lB)}fKB2#)yDfp>0oN&L9!%55JED!QM{`6jlTAA++le-jfW;yO|$mr04enL zxKqVm-daV~g|9695U+K@kD^u3TjpFTG0=z^@UUze}9CwqUrHHyMCFUjHw- zf?tulZ8rUxs7RoVVZgEUc|pyT}AJP`zIhd#Je{stQ# zmc(X!C92D9hKBK<&%hKx=a^%x?`#XEs%U8N%x)J8Oiv7@->i^4eHbAbK0JUR!H0IA zV_2C=BL_3RCw~n`&&DoUf_{erIqBJDA*nS_bkJe{~N3I=r3-> zn8J}(^pbuaI~i3RiB+VP+^&D`7AK&MwOhO9GdYxoXy@>B4Gr~baol5^A@L#$y(JL4LUC#u>xN1q6EP0XjUiXsti~ey%`qU zaDN9|-zxfQnQYkAK^?B(IxgG;#TR_6>e+M#yGXMbO}UoFPSa447>H+XE7pYG7VetM zPH`i;Nf9(FB{UcJR@llkg+G?dqD(vcztE!Bs>*}_ppW}tI9fcAV3b&PVbNoZ^e2}3}X~InP5Ruq_-;~#w6knc->TEOA2rfo}S-RO90gJztW^&YLd>laN5S4|P zs-eA9h9`yb!j1J=sa6lrx`Nn11fc=NR#ekDzBZhJHLO&il<2dLt0bs3SSjv zkP#iBLT9AaIFQTrO(9Z{zc`yB&JD#{qsyaM_K7@F0OUeOb7)N`caMrK>ah_yzml(v zFpGQcWUGz)!t5dW#JfZgJqbu`v;+H#+_ZU|0j*;Ncr#UanHETy>g=2SUZg^A397(m zu4mYoqMgH-4#{ncAl{``&iR`hyhVnbxPx1G2tEY@L|Cg@@iWF-cJKrUrRwTsDkMW-3Q>J=c zRoc>(E{wjYJ-pc^YW0ovk(s>oZcjB#ua}7zi_KF*lZ%!DvdyChMG`dMm$i`$c_&Y> zF=x7iG>B(A*s9f#UXw^xfdz>NDxRlUTV@(#ag|_ugJ_M1$fXYYRc^_?JaFWE?t5!> z1yFtX`bO8O6`|A{Y<)ehnJpNT`U5>FN1o(c0v-(TTo{R*%W!c>n>I$F58g>P8(9*l zx{K>{)|JtU{J5@WeTMRH)-3vWX*S20C(aqs?&KvKc@?_65kI(%4hvGh%0kI$m$G&E zM(hUYL)=5n> z%omt#HwN!e){wK?k_)~#Bm-zqlUQ1^_%f*ouDo-1Y<^PfCeIYD$EfY`&)FUT`pyMy zwKjS)cl79bNK@o;6JCkSF4}By9t^n4CeZ$rVdtqTCMnxJcdKjLoWHRypcIlS8Q8gSEEwDkAy1=Q!QqYHY!f8+E&|~YXL{SzHTGg zyoc_kT0`n)onDFPUci9vy<9E3_&+a7%xKdmyVftLb8TZ!gG!*A^6Z!xBCDcOhXA=|5F zX;KK}k5)$rS%k!Un!)SC!-TRHKol#7*NlC&D9(ZF#1Zn}u$a+837hNUHCjQA?$cm-w6qHi&^VHejHEw;4Up!KBfAh zM)f|v*lC4*YD&X0C4cPU(y~qMlgTn|H)lNI4>FAPr}jGxgYpG0s8fS z(W&ZY{{kf+w=X|_hUFKCLC}fR<88CjUX>zDm*Q?*TfcUtYQ!S<;Gtmc zKcA#tVZCY{fCAOL$s5+HQks{n737H&8J*5xpewS1wcF4@oVrkI^@#E4Bq7D3rkH<5 z@LpLv%o7qF#CoxM^iV^k)%BLCP16KDZ&tZ{B4Wk2&$F%$%F|Ht_AuXHG(S9Kf;!0| z4pt1?Z)NH%K^U;6F0^TxA!b;pK&I!h96?3YOBneRRfmu1OYzWRnCS)B4l~hAL4mV_=*z^3cLz)O~j+Q4Jfa(BEx_hiU`%x@krOHAla=G>rUe zYKYTGcJ-QjXPh?iZx5*NpsKYomCZ-Z`U5agaXSUzn84GeXoM9$J{rAp$aXnlLa~($ zJRg_P8uZh5aGh4Wn%Qy1DL+=J>=h7(3RM#D+7r>&w?VTtDP*Jt;%S`iVQX>3r{?g9zT}FG#YO J3d%IwRDH)-bb$Z> literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512132002-Config.rsc b/MikroMaster/20260512/20260512132002-Config.rsc new file mode 100644 index 0000000..20e54cb --- /dev/null +++ b/MikroMaster/20260512/20260512132002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 13:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512132002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512132002-Diff-Config.rsc new file mode 100644 index 0000000..4bc6a2b --- /dev/null +++ b/MikroMaster/history/20260512/20260512132002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0