From c3f7d2511a3cc9082a3a2f264eb37d458b4daa69 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 06:40:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 06:40:51. --- .../20260508/20260508064001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508064001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508064001-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508064001-Binary.backup create mode 100644 MikroMaster/20260508/20260508064001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508064001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508064001-Binary.backup b/MikroMaster/20260508/20260508064001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e108c7ab1ae631c1c52a3c26459112e67482971c GIT binary patch literal 298264 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
`9 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

}*RJlfT_@fbtnf@5hBTdZnM7hp*?7tlTAqfukG zmCUXWGt7H{`Oa|I!KzwqQ@<8nGoI>#=0_#nakf~Pjp2QMYgcz${pjTioLX(KALgih zwD;?|{TPfXhjzbW$$_Vq*YXKL`41~yu>HjzK_tCUb2uSwybl>6eu#@XS&3-caryL? zQ<_0KrCJNkB}}_Zf#b)u)Ci$wPE@nZJi0`5r)S7|4x>h*@s_b0S~egto5+`B@h2|MZbq=Vc#(!KSd2a1-~V`G|5xys-EmnO5+?{t`(k=MQa9GqDW>kFh`h- z6nq-cFMscG7Ml4|6OtL>Hf$WY>T)xP)13&8ZCNGh&eOy5!dZ$D=if~>HhK9k0T@BT zt~N~??KE{d4%ROSuveXze^{x<+i7Un^vCF4|F{UH))uJXQ4|&xg8lAvJ2)Mf{NG^) zdxhp33*O0Y-wA&0Z&J(Att`MW$(w>m(9HvqYfo#}Aeb;Df+Y3_piF}f;L&Im9}nR+ zQif5&IXFpVX}U4QEc@Xz*@G~OH<5Rh8xld2p z=I}(^^`<7=Hl}?7q;|BVCMps!&e_ zX28KWYm0hKF<~emul6pG{^`j!_uZ;WI!DICfCmzN;wpU7x%n4!=IhynO)ik(w@BLy zy&f6n|Jfv*nrYD-=n2_VZFF-0WE&bsLxH>2Z2ybbi>FBfsUh#{HWq;eNN}HHtZeS3 zZtFp^N&{r27Q>wY3!c5O=rZICCGr3`a-#^3tmkZ@r!T3T5Y&4Vf1jPbP$23hWP zFsYNh3fwi-q63eI?O?{?2W-7PZEe%Q8e%#JFNua(;Hv&hTyDb8s32w0g>mN~6wgS< zJ9pDcc+~8ol{XqYJI(R#?_qA(ltl-)#lC*xa5YBpbopa7zFnIfYe4B0MsQ8YM@9*? zw^nj3nMHDBDvgHWS5e+lW;aVq&{*pna6yE)F1@H|tn`y5jjATJAGj&9j?E^I^*Cju zk4a?$_AS-E{%4zEK;%z$T)`N88F;|3+3TLMIy5*yIeCfBG9|)o$dr{s)Oy?CsSEdA z6_2unAuPNR?aUiwB}xq)G$oS3s2B25SBXeTy%K^9q>ECsSqyw&;m6^S&UL~j%X~Qkm*HvfK0TBh%|^eQ1H$neGC21h;<*8 zfBDi1&%750r)CCxK4`GNh#Q2^y#fIaFIhrZxWiA1_dg>s?}>G?BILC6iX@Xy?#!1p zm7qOu7HS>1XMa!0&!Z1RK2{@3&4LHD1$CtmCH6eReh8#$3D-Ld1N8TX|M85I83teOCI|re4+~Bk_IhxQ z3-`MKQNtwVD7@cs_oCG|heDJsQT`S%dH3wH?(cB*AM(iIM463Q(^%8gI8BCe#Jc36 zQ+T^G-dXPQuQXmJFSe1-LbJ4EbkGIyTdIj$FZ`C^x*ZM$(5J(yi^)-P&{e|UgP7@9 zF+xscM1j^-4>vNVwz{wi+n8;f8saVI0sO(msJ`^}6uaEYIj7<}kRv zzu=HAsdsPxIeOvMlQk{J7|TqZJP=^%WB&4-nqg*`TU@H7N$34l<5vt?RFq=K612Dh z?=jLWNGtXE-c!uJ5OFK}RN7w|#5#je4yUqUFE*w|q8^Q;u+5rF&>|z++0b8cuPF3S zmz8ti{C~K*kU+5kollttd~fn6S~045gw0ojF`IjWm*TnhqmrFNZ|lNyAfK7ftN^7k zu@P?nN;WBgzQKn_Oo@H!H5x03Min@AtSMdIkxnp38lppm6eL+%#)&@DF;UumIKU~f zjC@_(ya!BP5yLiS(ANzijw-)jRN6!)Tg#@G%^E$vxtSfn^2PF>!%{nKml`#ji4~SV z+Fg1fwC8%V*3ZLSR@GA{L@+(x@uD&Ay_!v~;r>qRXZU<~Vrww=ZGag$ZK~ik0YEbA z0VTzDL`tE4TG3`V-D+2)9l@Ff1B~8*r6-z`Novn>_!2qn@_29JxsMxtgRRaXMX@A<;59G|4vfG@kLz(Skv&(^@LQ( z5m@I<5^LWWHtGr*YoU3)2iNbIU%TSww5=6XAk;wfk{3BaP#1p5 zbMmnBwkMh;EoFn(<01T5LK&(Jhhv0kamrD+I?wYK+D+7qBh zT@1)?p>c(U)an^y>qOo}f+kaK|9MYJlw#j6SA{b5lmKpdN`*i<_;q)cRLC#g0hmM$ zs828Bv(R@%Nk}0pwdb&nu3qzuL9$d^(2!xO>i`Lb8O+)-JYe%Y?Um0(y@`e-k4#1% z{gL`1tBWEw&=>g2w7&{$-sMX>TzlQrf9mWC_7^WH{!uI^?A~4|w{5qXop-Z=EEUqq zRUi+0xWy%nyvLLd>2j`bkw5^Rjfr@q%VqsC3Xe0 zZ`4mw0GbiF5For2e*S3Ye3mHmagxxXdifxXdTj3npTg!ARm@LFMr^^Ga~#f~t6C6` zG`g_X|7llIX)T^V@qCE+M6nTF~ZBM=JEcr z_*4b^*2LgBO;pf2;-AuAYjFQ+iB*>S_YM&;8;TGo)iQL5J;|goz$#x8pMG_&c~)_Z z7Si$Iy6^EesR#6)!Ij&{mG6;PafKN-6cojUjRCNST1s{!yfRcKu!Cp|!DL$mvr$I; zuLAQgS@tc-onc7YTPl@V5*`H7vP+px|%`)$du4|{!=7F=l?T4zdAmvU8grQLPKM-GjfwjdqAY1!Jd-x z3t`lcUGrfs<8Lw)OPPuzIM9ox9X5w!fBcXF0c({kZ>?Oho8ckE7lEn?Mf?|X>Nw3* zcs2Dye%5w@8cTclo7e0Jzi-AYK(*LXl=*e;JY9d`kVYUgqW2+N z8B&11v_$A^Vo!(Z;XB%_?s27uI2@kkymqy{0Vg6c(Y>VNo>*-mvm=)uvX+4Y2DS+t zAKGE>C7xQ|i%h2gxYNH~)6Kui@+4~z88^fFsBSdQh#!`DE>;u*+C7gZf2Y2HiekJl z0H5}=E^g_lM##fc(F&I`XQzw|c zQ~4p#M9cKxojWtkEY{F{=*Kc7Nlo{Dtr1h^Dflxe0ueqplK(qc+Cj*Jj!Ka~*{b+P zTqs>H(&HFXCTGoCVLd)2aDJ5`)K`K<3C{Qj@MM@D3?!O?&clBcuxL1m?kxDw=lz%X zYl8vJ!M*%~1ktYMV$4JQRTI#}S>kZVWb+wRt!`P5jpsG;{@V~&Ep_Pck)amZlT0xYfV`l<{xcKcptVfvyYB9SloUyQ)1+FF-u)p;skxtgHl+=! zcHGXa1i&3v)`^zIeVn@1E(3~J<`D9mtct*9Sw zRRcqs6el7~2F3w=>T-cZKvL_YFXbvwre9`P#c+Lu&2I&-R6i~B1>+!eBkf0qFU+bN zuT67B@_kU`OoE;Ma^F6vl_Z{)dH31W!1v*z zzpg0AX4fYLrRu^B_RB0y0_$Re6kIGKO#Zb;&iLzod;|5Vke`q-FVEyT8qV~xpTsdP zxl{xM-b^)FFvK4?5C2wNUFTxJ6`zs;3a?G-i@+S=jC4+JM>k(6Co>uCnEf*(aF}aC zi`^ydU=f24!jj{-7n7neTVxy{@H6S`hDIFgXrscad;N=VCBv#M$IgkunE*oUki0P3 z^5VzD7EYIuz~iZ~$XPR{^UP%=?hh|j?m82AATqG<5L$w;*~Q*-5a@c=4<+NLYD4^y zL7BKY>C&ac(C14NtG$4zU1`kiTAf7#b2gfK8_~HyZg>WMVzv^T}jhu^e5jK1tnIv~7>*P2yz$KBXmJiLDr4nIwdhZu_o) zf`T7(Pc3%^@u9*y3Z7VR^t_8J9pNvO2DDf35Yy_V<}-K)Eqjy*d)<5HgNIUvIr;uY zUE^82j{k&boG#XIWYBhh6r!8K;~$4iIM5xwvKLL)w9~rjX)cOOMYiIy zlEwAz^~bo*(1mpoCYG&IJ&*=;s$!H?EQC!-yvdExSW_EkXI{UmUm+6&sZ**v?B-U< z&cd{uk*XU`93B%sbhCFY#rcXZUwqZ3?(ww!Z!hle;jEm_{5Jy|*_aMJ=W^}dey5=p z?rq%P4+!SMdMnif)$QmKA2z2W3K2}l|4OGsCy)K9ax=~GXxtiEO0s%UYCQ+`3LJ|0 zIWcLwcPxA>XYb-)GVHh7ifgcM&4t->ihC}>vy7&iU10%j0SeCSauHK{Vh#ufb2AN3 zV-&pIlzHVCsswdd#xiVCv~2Lmzf-;v36kypXa;jnn2W5-Gs2<1uVFydlbbir^1CTt zjX5m7&Tyn1b*BUgLsZ&`{VtiyU7_5_4!7i4;tKkp5#{^Y^DFQN1pFxD({!D8wY^aP zdb<8E3y(_I=+Z(6je$jYrbFq!)B&Pi1G;K_u@t>D&EC`YK74FJXO{JAr~{>SSs!s8 zk?<_)@9G23r8$$SUQzCC_hbErG(9{qwbL*nXIbtj#`pB_8np3s+w<~dcc6;(elR){ zlmz3>x35B+(8{~I4H3m%?~S*i_>)1;f|7Eq-=TzV zNRtFhkv!J~0tv&O{r}VYjgkdVr1Y=i`H)7z)*7$tYj+`nr%e_O@R|3$F;xJA&EBCukC7^4 zKK9ojefgyIF8VW-PuDJj;WJ3TpkLrL0w8F@0|VM{R{71>QyA_F^poUpKm#PA=-6F;sS-DEqXQ{SX_{W{55 zymlVeVo_0V>;5u)`B#bU4BdA=0mQ^oDYZ{jNxw3>GPAgYy6_6)N0@t*-B3Id=P*WW(W_L?xKK=-Blb}zF}mJsK#qOYr)h&pQteU@L$QXRlh#+E_0OC zZN0zNCuw91uhegc#-Tr9JK?Ks4`MYY+9I)(0Q_q!rDfta*QalLT zzeOiVn66|UXGOI^VoZ55|4sAiY8~42d;k~?E+}o|{iIN4>z@u3>t-&{>C#48-UHr4 zyf*RQM3zvoMClS0iAY5XL!31w)?!nsZ^?~&1Y?akpa*n@PVBlXdx_xNJ3Pww zGgV&N6qaQYGHtFY?B*)zPp0l~?mL2YuAPqw%M^*DN%H(%u+sxMb|(IG93F{uvf0dFn*|apex^* zyq$!-Q_lq{z&k+-!vZSOPPd1SHH7HnYc00S=_Vg<#>Lb(cLQ($uAy~E3Y)-UA!?;2 zPKnlbI}WT>(OyJ(R??ZN)}7*PAPDp4v=YkgiACCiI#iRI%-m^M;=c9Pd}bdftMIcxcuUv zN+;&$kCJkl$)>DOcfhigp^yj|>x8c;w#~}`=)A`R5#PvyJI`q*K!G$74)3kh;KL=} zGn4M=6lbgb%sn2j$a2#T$Bzk;Vz~JT`i>F;y4`|-fc1RtZclPCcw2VLw6LYIDsq{b4JSA>&;J|l%F()L4NlHhX54|4kTa^^Wb9bMR}%I(U@7nrLw&EqF7O(dld5| zJ_

0eKse%41rFi%YAQ+d*KeHc;nbx@qub86*QND)$8jxp1lRx-(^5#I3Lp59-r` znok4CK$y{Tc&O|VmUSa?j!plF#Jp|#mJkpXo94Xm6%3#0tHMK=l0|R)7lVKZ6%jQEMr}%;m={HVemts0z z@JCQWV;7sakj@ZHmeb(a6eE$P-`%er!+fDSyd)EF5GI+(eOCghU@I7uN{=_Ut@Vyu zDT4_SA!S~v)3zcglzsOoZghLyV%chREc7i+tA;iyIjvtqV$i>IlkGZ3O?tRH5~3iFG~qACnJ%5W@D&tR(P5eX40#cfZQ@7(B)z3di+8_a{ zZOzlZpP_(8VBnJ3D56z3vG*&=`}MjLahE_)l3>1=I?SnR&vU2#A?22Pjjdpw$xOJ! zl`5o9y3`}yY^Tv?QWGGcH`xe_S(!Nl zokoVccRX_7Gv`fM#_(LP%)*|a^-z}B8c8pfO?!NzLue@L={$z?4BZoVUq{cZ-cSa)5djU6_e^H)&Y>sreglD1GM2SpF*iwC(^IXB zb#bgq!k`hJ&E9LxuI!0C!|{{(P6M~d>GFIqQu%0*R5#113Pz^gx(#BikpOHj>G}B) z*a$>UI_oXV4mKS{RcwuWSK3;!gH9OYgUtcwm~OjBTsG|XNbPNbJOn>c6Bde)>HS|h zRU}xKMYp&D#{rZq1@mJz&D`!Ug#J({v1B2;enL$>dE zJ@4E?5RIk~rd?EbzLQnzZ|Cu0Kd;h`SarG=s$^oNKo}hn_zdu-XMhZWy2L=PU$q_! z%MQ^mnn*U@eSO-M=Uv}eAoGxbQx^groY~=NxpPp*cW;%6^#unUfeCcBsDGi(a7c8{ z)(8tO`OU%hbPg^48cm8kCa~-+E*=&5Qad-J*%~@j>&NNI10sOEt(Yv4TG*t^YbN#U ztk$nXy_Ouppy`oIX9TlvOP%3o{_Zu#a6$OB_u`2VM>?{n~ta1Bnt4xhhlf z7e4{>U~B)7AdJu3#TvV~_%7$^gs0f^VXiT1*$e-UQ?^7a$|Cl*Ca)LZwbe=RD(R7wO`#9 zIj!8Yfk~CcVZGqGi_%YuC4~{3H=x89X8>Kv4p2>~P&pJZ5hC;OghBiICdyRo;Isn%Ubg0hx3Q|#zt7cvD3KabeqM7LX}Tyd0j3N7$!_i7 zm%NxeNfBlpg{2?CKN)lvtJyo0RG+T$S=+>!rA4S(VugqptmJY3y0YZwgY+h=H#Rsq z&@W|;xGa+Ekz^nwnRrh&d`nAn)Ow}=MFHG*z}{Gv(5W|sv7}xvXTG~urG0}$06Ny^ zS%fz(STG!qXUIY>yL+E5=-RQT8dld#uwm1exj_|ieRB|@C@l~&QXt%|Y+#erNq(|f zT_(WtbL%KJzspFuf}QO)0&zLBSLmwFd|fkT5-uO1odIf|)+@-0$2U=Qkh03(#Edoh z;(x2&T|@Mo$&PTgZHbtF8jocO4Qa<*ua@(v$6N=-LUpMRBoNTK*pObG-wiGmfT}R( z@FR;1g=~`*eh|-8pjLm`aM2q{+f=^vMa7;wjD(>*HOO+6aW?1*x4lVGM&-TwZV2L? z0??fQQ!~)zf_y|8D9w*1Y;aWrJ@~s2Xvd;B#E5PNcW)O!Zn4ph|r{0h;prK|gEI?R33m z*GL-PvExdm!yM^08k==Z0yF@42d5gYG)UP>#?x0>cGV!hJc27-RvbHlo)6I_C=rBa zmVLm3230pAoU(!4Nl7TeKG;l=PqXfD9R~- z##cob5#mJqa#u>khw#>r7JvLHihTfJda0~#b0L!!3irUs)3)*o!y`~IkKIAjIqSFt zT}Rb1-vd6{g zy^Xgnr{6gKjqT}lOhsS+AOO?HA5y!H<0A8tbFD6?u&$zKb&N&qoWuJPQkgEWng|6v zuFf=6v8E^PaTLWI=bmI2KMpT@m)k<&54_SZSBE-iVC6Z6`k}k5x+iMD9ei@0wg5=U z9SX~v`nW}$04Iu&>u8v9ieR&PYUnG_>%9)AQ{WTLeNNQ6Evzu<+7;|GFPbQ(@-!^y zMRBU~MNrOUspBkoYK`XU-F%^At!uQf1%7s^=7C8O&3`s!Nmv^WU{R^rHqFrbOBey( z`mSHIbIkN3O3>L65!U#lv*kostl${b(>hw?WNH->y6p?sMh`u{H%?s&kCjpaGdxqn zlaYPF#r479*Dw-HIR4h%g0dA}+pmMCtR#u2Ai3~nh?svFMum$TvFgJAd5C)h$QirS zYBa@(f03xH!$PDOS|DrxuUF!3c-5^yGEX%4BBvjO-qmvJ7Z zNZa+}9@i)#zbsGxT z@AU=G9(SIkKr8rrICseIN;^aHg|GRgB$wda zCGW$Jde*f|0NkJ~VdvjH_3p39>T{#v;sWyF&Ok58*2x8s`B#=QFIz?=W;1)EkYO26 zXin%_ERAOtx#}Fd);Dx>F#b{&PaZf-MT3tsLsDgs@fLCAkQr<<*GdVSFygry;|4>b z3vQQF^MRg-y)-X*fJLmrL!TkXRbyV-O~~<4J+4PNe=M_Krm+Xf{vCOcf<^LvKinJQ zF>2j78SHjUHj_KFP1AjRYV`0Nck39gx^S5z!GAPM8g0k`5Mv_(Tfg38x)Hz032Q<( zZrq(AZ4R_#I=xf^2?H-e9lWgfbb+@azhIi506n&?gt^Giz*f80Kcs&Aq!Ca*(CN3; zNQ{H+O^rGVo302C%14CO=_aCh?)uti*2mZbAab{s?CH;gC_tV<3s(7L-r{b@-H}0; z)CN>Ss9sq?>AflT0h2SK(K7I86N{ZRgls%OIwUwUn1}7X z1Zvu^|GLMW@a(8tOng_hPH1wWgI5g3Rah9rfU+#0Wpg3mfT&ekrWRh$=Ot@a3+h@) zt#*WWZ`6|@*Rz9nkFFb&Nrx5Qc|Tq*z_nrW;p)~E8MP*}t5p87)yKl~BFc&K>6$07 ztTD`jg@W)b)2wL`qZ*76WcJrCsdFUw?Pf%CGd<1Jk0M(=>;7!pH(+A~Ca9TdQn+lx zu#;y$zbJ)F8ai;8dNKowwpaq&p0$l>+`GDni2fjsr31!o*XPw^4vz zOOk#aCyI-ayAWx`u`S$J3ZaQhZMRsE`FAaGS{-z6Iexy)V>Y^!o7@z8yCPyK+xq(GMl4BRtnJeJJ3WyCcIv$&p@Rbj?DsM~`!_G2W@?EG$ z=vAnGB~DXN5a-(b_JfLh^*2V({n(gIfA1M*3HjYQA|L@Ym0{#K9hc(z4~% z^q}<|@biYZk;L}x?2o;?EGn%%N6>1KmxmaMYi9iq<#bNkj<{@ZhT1fvI_fi$7Om9$ zQ|IJYu|&gN`VwkKAM|uiB&WnT(#~LM)ybpQSzn)n$C)jO_(JW#+z4s$jHFYdA$<EV&7ndJ>hsX zp5s-?dr7=Ykd5cvL`5&RLF^9X4ZCguIPn+1QtT@6O8HBhKLXHoP&O8} zK;$PE*^MJQmIFVtN{lbW1Z3prBJc?dg#Xiq@ns>+H_F78&0tOJrV|Y}sEFDz#;fF0z z(+~S9fOvB8)hC7`kU?)%0I?m5M40A)$N^V$&Hf8~^~Z3j-AhKoxj|%Of-Jv0vx)M= zq3m?qrCxB!R%d*xND#7UHF#Hqwh1Tr)W`ht-6`lXKhu^hO=ZL$4Ao}>Fcx_F2#Pk{ zajt#ODQd2-vz34%f&GN}dT(ruV3Y)oMqaR(^AnDa5R!%buul|ZB!TgvbavOTLBL&# z4bi5x#B#)D@kj&9i3dcZDf*BZG2SfaOm(g&BL>>&!IdI(h*PNPi<@ z798h!3~a@Ie(s4@jw6%VHnx~aJ;)aVh;_LFP5DF!9QEf?zrU|7DGo&L)Ar1=ec0;x z&*rFqP_GIpbe8;V^bP4EX-a$Ibdc?~Hky$a((~WaeNKwz25Kdo$S4$auX-&kt7O7x z#3#d%DmCLCI=S`5ncX2D%o3V;(W&T-kx>yKe*1x6MOXzSSkSsjBwEX0d3*WQ7PmQu zx>85#x;oJGV%Xim$!-qeeA##|s4Q}%B zPTg$A#n+Zt7~FC1Xz|O11Bc!NlV+0!lz>M3G;?WNAR*L=+5!Pf2vuK6$+>D3^@Vm_ z`iWE@7`hny$C{zB0Nr=A)<0HV?h50N#pezNd7J=TRLOuqv-~1t@zB8X}Q*l!AB5WuYvIAu0(1 z!u%FJRz!MJu}B0P@?s~Wl#m;NN46r5f0l0q=dnz)Q|jZg(C9yiB(^KHMdl*$vPC?; zsy7S=iM}4y%(fbE#(rm&{M$x2=B0$QPwQqT30J!!^ce898MjuMc+n0Ui-E|hM(E{Y z2Z-^YQ=q7+sUp($Zf+L#A0d11-vP3CmK&KYjs9s!hTW&!wq9<<28^rtG;4O`+b}u@ zlfnM3e+AKLV#`tCZs2YKSe8KjQRPf&z;1R=nsv@E3)kfxJ+p9cOMpQ;f=y2X2ujq$ zIy|O2B4ci}rcP7dZLTRC#@JJ(Q_o7*zQgT_Hd8bLv4c2Dn@%5ASm>;*Y+qpiv=8CU zQS(<~3|EwFY3uR&U>THtoEoJx?(Smdhvg93nR19+6NeWg^BA-u>AXkG?T%1pulw9; zidww|9YLwusVtm+{uK&~-RU1TW!|U;gIl`NJalB>ix7wMk9U{lRws@c${j{LMx5k! zSZ!{NUGzT_ji{m8^Iwa-Ad)6kE@CnVtMHQ1^TN1m_f`XCWIOjd9##qSzZ=y(c<@`2 zO7k3x8k5xpfNbPe@z&ZlQc}xu5k4=ew|5B&=y{(O!3-y`AqYQ!8kadEYOP2$3wWu# z(f%+);49R7cHaA$|EwyYXk7!_4%VXEm4nft&@lqh%Iw*8k7O?l(T+uPe|ehY6$i|k zEf{KyxmTu>yO!I@Frgn4ZGGG6O);>De7AE#Pj7%|r1m5~ytfrJpd}#@%z&NX9j#c1 zBH=)p=2o!A$}lpLlRL9S7!zx_C3}2~t(ig(a-}G{ku2G}pu_~ZVKvbH8B6H$sYUKL zy&swUlVRLJfC59*<%Sf2IlkvEyGzQ4)TkHbOc==43tZ))t!>j^TGjFwNwhz4S?(_x zm^WtD5j)i)ff1G5&MvJElq3i-d;+ua{0%Scq@6Tx*cw~*`)Sha9hY*^n`|u@^-%P_ zJpbdIai1C4oLu84I?sv7N??Zm3fc~F5=F|f+dLp}?YC}-ALOEG zlly3zr^?bJU;H|&0hDs2O22V|05#_q!ZiP7pRCy;x0a9!Ub<{r|4dw0gD6aZpt~q! zXyczip(ed5n@^0=aL2`$X2rM?s%V5nJ-9_~W0$0!i_r0@=Sxpt+YW)T#Sn3pZv<_4 z+IV6cBUT~s9Af$O^;ShT7+)p#Eay6X5I%>L_?wjnFK_Ze{z*J??{E8}i3?jz%?Nh} zt^6`!NH=?`!0C0WYLLgHMmR$hi`OjW2Kys#U;`X>J zSrG+aLLrt@Y0$!en&Tv9^!w)n4;Hxq63S9nt58xYD3H@cL)?*k#(vlJ5~DL)vtPq* z6;D9w?ajZU19QK^I@vJ^`KfEm0%Bl(dY$y3Fw(F^9-X!9f0Pz@Y-CfvOmf_S8)4_y zZlKhN_!We3^TU4{gUdK(@e!o2-*n7a4@U&nLOa$kWM~4+>ignWf%!Oz78b#khISAP{QnyLEn=_kUxInDYWI%vIGao6ZV& zO0y5?$aDwXezb-@3A`e@bmU9BaP+@IwDdgc)pntfU3OT1c0>@$2kG`JsbkQhqhmA| zVmB-GjWJ)X%s;)__dPH57bCeVn(?R1Y_DbYjvmgTi_&}X25}U;(l_31@gh_DW=>BB z3pG<3W`L;sqrTx3@NzP-3z)Ic`~Y^Cpqh|K8-H5D{a*n+BcP>cIEnDP+qdZ#&J~TrGV}Nm4B}+-t(&vJruqz+&{$Dm#v7ZEd@QCEARiK7 z=Y%BLQSWna;CXl%w0cT^v~&6D(dkI`kpgBd0t21U{dbW^K#xe+v6omK7XVt~7Dk%P z1*&2nQW$v4EhJhs?XHq>mmurFa=}v!guDhwOFkD>91y7e#ES7`YctBK_@GCiprHLS z`F_v#=f|XwB}=!*R5_Up@Qos zMvDTWgOm3W4>SCo*;%hQX-uT55uv zN_QY8klL_aivL%;13XvSvFS_8!p(UPJbE=Qhb#%y_a4^XprXH^K}Av#(ZGStHaU*E z5zWX#gajzqgC*C+=20Syag!tnF<+1-Aar60v>?M@duf>9hCO_6+Pn&J4}li9 z!(CHR!rjkU3{=Ky2nb41fb!j+Y`>88^+2YKA|G(AfkU#&U6W#cavjY^Ovs4Qpy{-3sEa&zAUz@N!UlAfl08uUz zv@1;{?Pm$XVdeUQipK>1`Kb-ly4+p(XR_Pnp1aQx&)P>9=G#pLVkbDl(=~8T*(TVwhC`8giHmT2j;Tk znhF2kwL5Ky;Wf zhD1R|ym+*lBqv*IM z2GBmtP;3|1AY@b|-Hp+zfg4i{zSdz^Cqz+r{5)Vw6qn0EA(i$`O?xjm9ABxYTfrki zDP>7Q{GeB3gPuFK0G!*`+Br+&a$Ga+Y9P&IOyF<%xqMVN zuXcpbfy(+9$6H@79or<}Q`!(0*~LtWaxn^0NzjOj!C{zhh4ReUtQxz?!84EfSeGuG?_`Z~k=GlihVjVqTiHz#U{c7yK91 zvhLV#QsJP|%;?*&Gx`tD^KJLjZjC+wadn*t7a?6sVSS`lU?lfd==(#%#`ykK zYwNL98Xz%8)RZl}@YX?wGr7uEUOo*q_W}D#`hHy{1d8i4+0q#u&v&Q3524B_>nU$_ z!veb1%`xl1_eWq-7edQB6c`Z`CStaLu~f=#3>THq5)xKXtf*7TybF+ZoY{21_r_V( zff`n297Mv*ga5W4jQq<7jk#Q*q%x(gg#LRFDaNl%y`76Wm1JvRS&$-Y0Xs%DB{SWE zd&|@ypA2jIQjSM1XS~<%iWL9$Z@d()`Da|-_$5|qLMulQQHM^Q4dr*n>4*RL-S%+@ zW<9M-2xF{bvC;24BPL;~2gg3QOO5@aEW4S0d97D(BMxy6G|N?-HZV3L+eM{S)^-kU zZL%sXRuDGymUMJR&?p!qQC450630h>IdV*K6p}037uLg5 zDE<9?hpIKFf&56ckf&4BL}Tt`wgp6WPa?}gOg-3N7o`e3KgCM4^Xxtk3lF<24!?u9 zfF41>`iaM_c#f+n~T)K^|1`SW$JtVl&R3!#rqj!W9S zFb`VEhEIe`}Bl}Me zE#?VjwJz z{+UXF3pHtgnrTe~#$h;NMunsGZFeve8eiV5Mp!g}xq#T!5Qilf_p4ynaYOnYRCp7_ zOrj`#$PE##QsXB}RM$ud8^rdj9+&GsJsue)m(e5F!P}u$HvVMWR{8e!9a%#A)>~dF zA&Ar(;eWAO0a9jk6BgL zx*hFFW>#Wx8*>nXT)jyY5OEn&^5Av_C^&VQ(Lv_FeMlCGLE#6;Z|(*m-FS~q?xt0w zu!b&p_QpPHCSsI1#1c=*6jF4idyGZZfyXBjH2FqCA0pRKTkeQil9zW29v(4S|8}4; zVZ87bCn$IHjGB8tid5Z|nu0;DXwQ4RUb+TzM&YC4TND-*w}h32ZrFD4CiroflDiao z=$&dUSlvxtzOGl0?hd_vRBN)Scc|AmS6yNX_oL$Q~!IkC^s>QBy%LyW3wL9}R(z+tAV zSM0pbJEP=1u&6haxhn!?v9RRkWK)b0;#&5JD9g-pXGXRVjOb^5-D&UMa7Fb2avuS# z8|~JHYy_(uFqC~gYnZo{^q14`q|UM<@)f~hdGK%+b7o1$>t%3lLhR$Mw-E6+w#+@v zBv4fjfE6N2-=98}aK*ALP>JZRNmeo+YMsqZj>)~VSi!0_URT2Z&R%O5RLa98@K4*f zbHcjSXWbclpn1BX=*1O6VfE>?LNkTK1rOlDZiyeRJ}#4uk=O%KXqZ~=0i?uBGPSI(29zPD4~M~wAVw4BpH;Wqea)5q1L>*EZ?>HGWK3-!=-0Yw zMd{!;7g-~J_8q_6O+|%l5r5>i(3-%t@+DLLjHDSiW>$eWV*d?Pd#dIYZEBASXhP4! zzolRNz3XQ@{;5ut9yog;F&+AU_iHzI#4e_32H{e*1wX>ykuBdx@!@*W=9jxaM&jiI#o$ z8qPn~q%w{XGi!L+=E(k|26VmLZIjd$!*e)6xbjiFo>f(X%F~$|W*a~}Zm-VSjFtic ztxmC#Iap}YQ{nOezv(L6V-q1rGS9_Gk*OHt-CvoQGHRm=4qL4<(x&Jme5y7g^>JEk z{mgWdpsx3AzF0vi?%=LUo!@fbjYp-wTS`Ko)4OS17~*md5&tXcQ7OXOPAO*jPupj-wx8P3)_ z*Q=_K1NvCrN66fqQ`~-P8@NnuM{c7Y06;Gfhq&)G`gC4$3g)?s7m8_1})%M{l|y-ABI?f z+V(*+$Sjp4+j(6-fdAEmh^G#-&??`T zvWa+#b5a&KFCN`}zOAd?j@Ks-c#c&7Zax{g$k|x(0H{j0n0NzMzd&M#PukVEk@bS{ zI+K4?;mB6=w4krD;kG~)UMpbIC*9GTea-DL28Qe;YY0>ZKPAbeiUZvxFRuaa6`98= z-Hv&XZ1;Kj`FuCrm)BOecv#IjB1^K0_qvI$b>rTOemUsw$OniCOswmNE-HU`@T@SJ z)eUjs4Q+DvC`&wXVt4>U9Jner8Gr$?VBr@EE3NEn2 zk_H7ugQxnLr3<)EXTWnljnZW`XMF1D`N$x9$2beLTu~R zVD0|1BRiaemuOLK)>x!-2EblKx=F80uiFCM8PTt$&&gSh`7y&$6dqX6Tc9s}oIm>s z^Uptb8-(~FU{*goHDkc|lBQ|Q?>n3n8HYnL2Qa!Kh<^V3Vz@b(#c-X4m6@8^h0uH1 zV&X_e+mJ7e@CqF#T{yQR<*stQ74oBgBz((>5hLgu!g7kVsw~mumW=4gDhW@x3w9Zj z>JKXO3mMht_)z0&$<aWr{`kChm9{TX}trA)rjFC$R&<6IGd)%K%jW-Jix&I5qrLnCX9bU3s|3 zDEfs56?ln%6bUU(q^Ku_G(el?h!6x~+2HP`AM<8rzK#~>Zxkg}MPin%&S%ES#=&yQ>Ise0EFm^c+671s}i7YnuB#HWfz^Go)sk@VrNl39uZfsIFOAC!NgSvOnCB!!%Y2&zFQ$kJY71l=W{0 z2}NZtKZ?)pcU0}yC`1!Vch@(#Ffv;`ih;5P^Sq;N+D7f^#Pl%GBsf@1HPlU+aGFS~ zfMrV^^(l9>XJGUom~38bMkpPq4pCe)u*dwf&dX~i;xOf~Eu%*4HX=DbgohUs`frsf zsX5uL+?n4yrOQ9`x=|BZqY2!Ssq_1=BP(wZx~11N<~^yoMWmz4)vrDX@e_x>*yHvt zS>xnJQz(C@p*Tg#S@>jmbU#z*PmQr+zCJL`FZyjRxW=S38WVWoT}Xhs4| zO)l_ocu)Ie6+id9qFP?N^0#th9o?(5B)D#ryu;_PjI+r!s(qbd**xKPX+UMBi87P0@oi_y%e^c(*HYjYhP6 z4X+rpdIQj7Cj9=cpjYywI)x60$a6=n|0WTXJd+^)g0ryN5-mCXV84V1q6>tc>BlQj z72NSGUTXb0G5PH~$%h6|-*XQ`}eXt*??y}tU72Q0O3nzxqRgf;_L8G~kqybis+ra8UC5p5gt1-< zlTf1S*B0t~4I+V{b1xdp`%tA&ja?m18{?rXv=}dl0khjqKKD>%~$ezTT(NcuP(P5^0X821U^Bp5HKkk5nRB9>@CC5 zvTmZ?XbDNLc|m=-+|ehPgs^jb-*7=VkMiOl?vUu!N9J6o?W@oJPg`qT8glA~ffdE{ z+}1BiAH5=p5D=7AEy=tev&l2o9?gTJ!)JkH!2e(I2?0;v>oei(@=19Sx3)1GRV}Too^ix^i|t%DmhLZa9DfPRqUd=zo(v8zbqQBbv&N|dg5xLzLTtni z6`8eXM$KG@9A-J%u(z6@@bzJly!$Y5n#e`q6o8>o$|I_@yVqx32#{d}-}2KlmI&D! zO}1H8Vym$NJ&*8O#O<5>!L4P8a@=czqq9Vmv%GUG{Zc`euV=ylGeUIBMP6KYwNXd# zKb~4Du6Hh)#ogkSEs*$lHpWp79j+ypqz6RnLP(hv6hoz$zFnIBti)S?-;!2DJ#w^Q zKbEd9HS8=RoVKf`%8a_&sUbe^rR0kzBI^nhcrqS{8hZC1&ohvcRHHwM8@J`vLGE=L z(rrI!Na!95)F!$OW^2M;bMs0_4qB?su9S)ep$v{d5jX-JE>k5oIxwl!Kkq{qV>WOv6ETzqVM4Le`Kvu-=M?KE zG|{C!?;k5vM2BgX&&3~j!I!NLU_m_OYarK(=EEbd!o&nRl7<+R&K+?Uv5si#t6ugA zO%}|KsdrH`9wC1!&JBn!km~AMm_TqxhSbJQ%No_Wocu=FMyTRxJ%!&&7xs968AMd0MHu- z;R|tA(w(xgky!%%>T`SWQWaR?BTt0Tg6L;O(I}mrFUL+!c0l(J z>jQgSIZ!wz8kdACnYFVXHD6@!!l7fajM+*%U=qjo2J|U5w79!}SUapxLPWff$KRp> zSk3mZyI|p=H5ne&44AX$u5IMXy6Dufaiv-KYqe?^NV%qka%LM~fyYR|~OQ z>zrpSGvt@5dG-XJ;vM6;3xLs7oAJ#~fFSiyfL3%6tntz30Rl+#ItL{BskojAIY$cu#ncpR<_gQ{#Geaj$cs0ie&a$bT;pV+458Uc5WEOIAvgGs*AYWD+Oi~;3LXqsg2O5#7)jS23cm>Vi9L|qm9&#}<4n)zD02imP2AT>h&&*>hhnron;zl~* zp8g4V*}X@kmSdZ!NG+bcUvV`%ebqyCt^0H{S!S-l6a~%tQm98T$zAZkEhT8z$-wgA z94W_Yi4)?7vtmU1p!^R3@mF^#D^0wPr;ryzYFVm{yzPC*+`>?IB>^$`uHc@6byhoL zCOjBr-qNf$q+6Td82$r;ZvFrOlh_2HqwD4r9ANc#{oc~EteE9^knGdi_V7nQ7+Y4_ znTT{DMps<0!IgF0SF@mGNK+pJRa4nB)3S8` z^Lq6s&wWH#;9H^$scBt_BWd}ytXVMo2K8K^tMG08FUY~*mR)C7m5@tkXu3D)d`bwJ z79Ne7v)TOYKq_V}c3S)(|L^0Yc%$ziT=pwCG!S%8f4kut1{)1hcq;o?uENl#GOnH` zULKM4cZ5LFX%$s;aD%JD7{T71mAv)Y7eI#!+_Fa~7cr#}(F>V7`wc0ew^k2bEU_kY zB3wxbGZx>Qhjv(|?_&{G`QuoitYhW@UQhB=+AqQ8*xE1|6q3T>TI<)g^!rRTY9 z`hFO6LpR(GdOFmr)3r`OgwF@u^A9;m@d`^|W^9q|r*CyWwZC^4Z*3iM4w-OczQvDk zu%&fPeTl>ge3Xj-@O?69ZLt$lD*7lCfzdI>9Vv{<<%c zJ?r+~tmilv7)xb__ZPp$?aYW0TQev?rv^Ru9JP*5IL?jop;!6pdNK$9HH3U1+R}xD zTOfC36Wp?%ou^d{X7jv7`VU3H6XmlXF5pR7O(ef0Yx7Uqp)no}_BafN&$~KU56TrR zLZ@syH+j?>j*qvBOiprkq>-&VTl*SDKYk|u2cNEM(yN9C+{F(-i*V7Ttd|!Uok=M_ zyo2);e7fN;Pi|w6Vky@JGZ=RXuAWpjFVp(VmCs@pa$})lOA8`Un!Wre5*AkSG!Kh+ zhl}BfTC%K3ci9un!gpyvXaJ1<5-9~VN1OaA)b0pX5&kdd|B>YNi9Oc#7FQE$bKtuC zGl8UJM_#}^nBgp??Xo*3_ zHI~R8a9v|=Q^uZ&-;NHtB{<{n5KtqcQDt^$uA3Peito(cOs=U%@ZEQ3%Uet2DwpRif1Dd?QPiEUtjbbhI&bZe`2F z_AT{0PYfNX^#f|s>Prqycr%aK!h?&j(0H0HI@jjHbM>max%D_tB(tBQL-n+GG_A65 zf&F+#u+v}n5t6TqajOlqPduUA1X#i#Z_ggnB^6#@vC*+TVBDt8DTGvdA&Wy%njlti z0vZ=Ui44HG#7{+Vh~;MwV1CGoDD_$(NNd2oqkBB|7guqCnH-JYtBS7hqP*|U%HE3v zZr7~d&r0+=T;-I*7WJ3PfK{fCPt|SJem-iH- zEnLAqXLWim2YPd6U-i}XLcF{^HzfLBS~N(JA z%3&Q264?c>nn*y>dd=E5Q$h2v@__l(u(+yoBXjzawCrEuz&)M5(Af3~D8Ej1C*1U% zDETQ%ba2?k2uyitM*kkBoM1X8+-ND6PAXyKa4?at)1{q{LHpt75&#}3q!FD+&&wQ<*|l3x zDP ze~Jbxg;q68I4cOK-3U8mfS}J#RvUwI{PKpmxZr8)=WT)E2&EmJe*F?fqu57E;JP1c z#7j!I3>)3^H{ikp%mP-Q=qX8XMamZbR5M5%_1gfsHo95@H_}tHMSJa|K1f#$AqG%@ z#|L-RGFZh6Kp@*A5D|TPX3>#5Q3SLV@ofme~z^eyX+wh4&g5=H`KeVdOPeX-P^Ue$0EG% zD+RE+tME)a@mv z8t(2hCF&yrnWlx7*1LYHW=c}~Q)jjT_V~8QsV$f#%9$SzN=@(3fD4o`ErIH>o2?T! zs>ckH%^6$O9WaK8oG_Lg{h?Bn=seoC0i$+b764AtCI8 zZ9G~wXJVV`dpvpXtGmrVMIOpvB%ky~vQnkwn7_>(`B>Jy!GX2|?h#`I0Owbv15Zn< z->IiY+Os$V-v5_wh=@*R0-l?pUVn~_w#EKF5-UAly$c*6C=1N4wsH6bT04D5t zFocuu3hjzB;1`W;BK_cSq>kk6#-n2(T0;#8NTB;zW2AsP3|CLx7-g7-wK%;39-(KM z!K3*ChjRWqtXlKEo7vzZ4OC8{M4d`+SOkrwEIQW|nrF<7xryBFIki2^1jgP0@x)4)4S~5_)Ml**IL&D4GH7ty{5ZW~eRR?W;sLHVY2n z9hai^a@*-37w&+Tem#O409;kl%Rf_z2tEW%d==i>;5tDVAzDOInx963BG+2b0VNP6 zxDNM}Fc!u8&0wCo{+YK7YU`-2cP^B@dAK$X6AeZ0(XS%R&z?Dp)&+Znu3aWGa%&S( z!goO)?8-~IOQ+w(>&6#53g`((kryC2h~-y!RcMUs+h1&vv_b@nuU#q1!L$K3V)T}y z^JEH)d&n4*_Pub;>6x|tk--ytnf8XbTDiQ&Dov;MoX5;59$PWz_O&PZN(J7VlDxz_ z4pDbZyTgk}X$^9RTjN2HLV=i0p`n^!1_19guEGg(ZJv>$Il3P$axoA;4OHW;>bD%_ zV=C&R4b~LXs>sQzIKFF}rrq*A54-0NvqvF>F|ss2Jz{hzU1T1`!aoVCpZ1dVGGB26 zNmtfuBi*>8f`4UzR9QaM?jqRqcWnzI*ox%>03b*#q)#o*QfULYG>$ ztM@Gthyo0Xx~GlM-0DchuIyjJ2aR=#A}whUK9ibt7?HLc`Td)8wwT7^#MD7E_A0Y{ zPY%PxqEn`ejE6XbeQS;TF)*vpjJ> z-(o{)rJd35!$D8h>)v9JCN2;d_jhz|d;S42Cvk@gNW9nV0?k=OFc(^kN-cSNtKj3# zqH$%})BQ>b45N&@SdRo`BFjx>5Nn8RFqJn{}43j!1Y*a`fkjd-7>Uon5_DAc0&%!L&%-TN2xjF?3EwP#*n0jdc@1+_$t0JhET z^3$#7gE}(gJy#`ZubEdYb>MrbR2(^W{em?5S(h@g{*0!@nZjh;a!@32t1Z6&rLoR6 zoN}u)w-E7uqM)$o>7cTy*1pNLkfoUe{gy7L^l3!?he8G zM5DY9NyPzxJ-F`i0nWrmzZy?k(a3+11j!3p)Sat4G$S5aH%CFV0~)IvpiUBY%5XQe zCPw!gXt)p~G&;F)iu9wLB_*gR6;a9;%p==|TyKlxI!xd~TUK#o5)Z=|Oo0a0njqYAZGf|<`xU7G(uE*T{?dcZEHItAbwz;u{wWUk7td>~`^feP|=ZC10;6YO@Qf z%M>g{)Mk_UwdVFLC5*mjuZOPnAJx#|Don_Z9pQ9V!MjsD)kso!zNN4QOjn`oqMW4S zDTzAj6CY@QhZt$^rwW0&wZkwTd@Ut)!@$zarH`+6>g&?SH_oV}>50yK?OUW8v+O?kh26#*O?;yGK9l((|ohIu-N8r^Xk< z;w+23AK^S=ff&mqxft;=M!T;|?|Xa7H#EsYHJGWqJcQF}h*I8q*A>PLGX1>4 zT(7D9q*X<^jS1!a zRhftcx{y$+Q|vbpd&f!CH~>=ST-N?nD=1k$;NI8{kWT*AC(YMBp{@ZmB#J6;}#=@ z2i4+z|4g`D$XmuH+~_jgJ^s)FB{9hOJeeAl7B8_x)4 z+8JcS+BM&Y8yv+i&vyAid@b=4=w6pHLZGeoP=zp?i3t-3T1Bj?W~ge&cSg#x-v|6D z>?EjilY!D7=1SB(bC6ykKIhE`jVDmJA|N6UC%Oa0=%qh|LZ;^!$ET0xU(N%SJY(%Nkr=tdv%z`ViN|DldrPFiYN=)thuYKb6wKF9&Z5LctCtO@2O)MTT{USKxQNc&@`OVI0YMA*v}z z74Ka0128)z?@7aRVA)9zsushxynxa7%m2=+=W_6DWJiasIJX+g6ate8#O~W zfe-;)CCr6Hcguj*oFAD!O(YAT>{|*cx_UuO=LK8clh%@!6rG&E_zhauLIE5hO5*A} zDvY_m?LoI|pm4AH^bn?5@Dr z+T$}=xQHiEB{}S0Ee@fFG@UK=3qbSywGf#m|1}RIa%YvH!OLos1vP|$`HC`pAy-O} zLyBd<;P^c$3#6N$#Ouf;!-VV%<%;-@4}~i;NY}beQH2SkJ{RpaM8ZyOywiHwn`pF8 zNcuO`wv)0f6%+ed0+>{z2hS>?LOPuF8duQrG(Fm*xDsa^VW@CpKRz{jqdm@i^Y1|z z+}`}3U-1~k8~e!{>EME1gULGdL^By)RYd%G(fqzxev%Dl!X_RhyGvSwhr9*C8zrA` zmqyGRbEboNPHjf*W*PE#fHxXaO*qQt25YiJd=BSK_jhNF24zmqP1uT}e>(o*| zA{um!Tl3L^L3$Ua9$aqGwqk1DfQC$X^}mC@)Q?5;A_@U_7~*dgtt!*IL87l*bPMa9 zhe_=)EO)hyt7=#VT;OtOQ|Vr4QeFBEsiWFv|5Gzm_D2f1&TKo_-rt+>Ps+Y)Y6iVJ zTxa#r6p!1XhkYc~dz}7PR8&S#w=H6HTI4}1PU^F<{u*TEz2Qtbh>zT1J%Y}h4Q`4%g+4$iMDa~q9Wj$dgjk!JE+!D_V`jlG0u04}~T9-*iuRn8D zT`I+rk?Dj$>eCoO$Iy&ptD`>)UV2)(E-|G_pxg*(%YoSqYbyTWLKrLL%9R2GMLFfo z-BVd}@$mzzI9|g+T_qPh3e0{^^x*xk*znDMrSpW(L-k1CKHYah;;D;b$z40Q?4 z4mR`F%IdtE)u!(X4W#KfqKmIl6Y^Tfm1(MIQ6HLa?w^^6V^>J9)TZ_?5jR(&@VeXK zYx45X-ZlRo)5l{)S^L`cj3JdNLbrF75c_kXJ-lK@^gxmOL#~G(S`R41hXS-W=VuPL5dcra&b21jDK2e=*Is9MKbdcxacG z_UCx`$9UgQK{Eiocokff{RYn0Z@?&7XlX;NG!&WPRaBx^Qv4Y(^!%YA!=UHTqSgF! z@Bvwz5Ewq)kwOmCul5npJ}HimY0PsK&D0l&c+y0BfQBOU;O7g$5k(UBq7J3f81NrI zPb|e(p9a1^haDQo5}n%q%6Yl)I$KRd>aO#BumX$TJ=E?i-~Y*6Xjuv;4c;{Qk8OV) zlQSXTrR*J8e2UD7R{?-G%TBkNNWdOsvvX1RlWPTCb)&h%1s&57ut%xwYM8jbu;ME-@-Ix6&(y} zAp+L(5vIrs^6&8VnU-z{$!?=+^*Sc34=@-&Ksv|oR<^qRtnJuhknc#K`SXJew&S|# z^T9rlL~!sE{ICCxX4Th}{=Yt~)eAYCY$oN#(@^Xugl9Lp{BS0MJ$}Tiy@T2w%aKs`v9*PmIZ2Yl{_>7;HUkcRS8;)wzxccv<%kC^BgBP!wGos-yfwy58z$wuuD2$^14 zWdSuDloRkPg|gJ0fZ zq!oJ_&iPmiDKqXw*W%{MT)kLXa@j7%Ys!#FU*%hhk?u&EJi`r)gf}A6{^ZLsw@CfL ztutOq#;?{*6rVE*T93#@;dpYt3LZhcHf?CG=$RI5UA^p#7lsoB%$4rcX1B;_=SLmP z9&#?@q-r%Hc&2J3doJl*7K_s&D~Y5Vdy5o)aN6BR{E;_LN?CXEFfeuT%C$;MI9wD9 zOa<4=P*Kd{4)GU(%L@^>p!qjvbMC>p7SmUP6&oi8b?2$gL}b9Yk1cR@?Eh8-VZ{W|9;5Q{DP ziO1^bUCdxTacuQ@g{#F;t1ptJ+$&YCnGyA74btj)CaG|_S9f#gyQ`^T?%}NeF?Hpk z&$1)W2LsieL#q%(a#*Of^~Iy`08eT+fF_t6nyX-o$~$phGpDQv(lEXEZ8#kND89L6 z+Bwew`|Y0BppGnM`s9%LP6Y(e)*>Yih*rQ?5Qp}Yf9h!fcWJF)_8|=Tn*o_I9}4F7 zMh9ama5tiz-?Zsz3RPW5BSS{w?NZ!M8dIz!S)L)3*m$5*&!5CKSSr2-;sx^=D2M4f z?W)V7W6Yfh4U^%v-R+Q3_j7!BPazh%U6KQphvf;vc13jbDV>zVSsW_ibDSZGLx_i3 zS>I4K;O%Y~DwZ&NC!NiHguZouO0Ut@fQ9&octl0&duWpSIgR`n}QKTyG z4dhS%a>gYt(Yw;DllvMp6kM&k($*6hQhZ+!GVfHze~YT3X6@J`m;aG`+)?lnMYv4F zP-|=7h2UcVov@7Br7<5}M`;gk0nHgCb&02^35fB~<$jp|LkK|GnjLp@YaXw2E!n!G zI^2FU#bkqFQ7xzonmrvFGOwST{i&*4v>}e5d@MnDdk?A7MD^rzdsY~nB)hAScgBq| zR5M%I{JaNGuINwQ2tj^89Vr0!ROU8Pjz~RPq zPX<+z{2!6@fzGSO|6MN21tHB!7Y3)(m#h79LfGm`&Na;g3wHGSqZi?OS7PlY%tR2r zg4+-Z*Vt}T_agi(OCN095g!$sH~>rF#fv)1-KA3_mm0PqSx$ghR2v!c5;ZpxT`ywj zm4p+eID}(yRj>dC2ZL94FU0Z&l(W(}yxOdT$K!g21fSE>MxMwr#+z9eA8$CP{@^j=8F_J1}sc4wxmvKB6a$S3-@ z?K~1d&}aF)w90cEGyxdzGHmi@S)aIc5pi2^l*C8*l7mTW6a%g3;=r69t3eTrq!t3% zVbmtXN}&yzN2@ud?p03L7*$s6#hO0E$}h6Zv#SVFrT}pSFOic=LeMJ-H~Cb0hH>Mh z0E(>75^kP9E)4ByRxy1Eg(x&RU;{#Gf#0uDqRq9!Q#o$Es0*(t&Qap+Qv}$K%C6qG zb1$Crhy0?mnL-x5`!Qh_xf_j%-Ay)7O0&l-k4KD7VRME+E)2!)qnC+5!{7wJrNJsV z20c8wE+8qGd7{0e!t%q?BLcqUBsjrCLKz! zv`N)_tMq_cR~|i4PZqR>|FOgzrmq{< z5~n|E{l(J#u)*8LjKt_h0z{z2fR6(3xbBV+$8_;yS1d+H|65cuVCHEWDtc_?2C>5{ z(-sHbhkS-G?EzZ{xDQj?M<3hathlub!8;wP1H?EaNd01WKrE?GL~hyy%t#~={R;b| z^YZZ(JM2nvd;YWTYZ~drfU2VSu?efQu5qr^0eD3v4>xxg%fx&*PLJqYEEY5XmMw{@>Ze??b7%iY*!xXwu zbz&`UNrMlj?P{OLmf4PTYpu^PgASst6qx1u*U)>wpZPl#d>hMyQEDC+Z9%-IMBg>V z>zS@DkqQq4E&wFKaiJZ~)hQ^0(4!R0Z8$3oLp=kkK=hJJ`&Vs{JV?J8yOE#!^d}${ zydDNXDX8nez0rxATeWorEkB*OKI?MqR=yG-(DM~rVn@fvm*@fon;(Xe4f^L%Q$QG> zMpl1Bu@OF=rj^*f&aqefLnIprAUHmMR`4D$nO8{cP{Fgct!xNo3YPPC1cj!*qv(9} zL){vpK9YeHz}~7};++&Lw`AKDL`boG?=a^Ch63_ZmP_zcR4e>6i`Ry$)9VHM!9uJu zeJaB~z)Zvg>|Jy-atvVXZ(6Y0?*RmdDEyvA#cGz13aN`=WAvwTSHz*{SFbSpluz7y zkLp+i25n=?ba) zK~q!aH<=aN=LYgRW@ODvv-n5;Op>%qY^hmK0N|geRR}Mi&c3b?9gnO@1L&P9Hyl7l z(w0ZsI+tFo{-7e7xqWWYo`TE^5aFHwC+W*SENT3-Cpb7wd2Dm(&%bf9q5Q=ssT+9& zePheB3Z0LHu)}?Lw!u6mc;fc^4X`S@`2^9sD*(j9RG~I?P{G&#=Z&n$@BfWw&3X)A z!LHE}5!5OykK&K1oiQ5jhtb{^O=Y@yVBOra5bBRyqjD z4>`8dVq<#Ndu9P5jy9JAzBj96Gcg%3lfZpw!8LZ1wFDScgUOd|J^$yu5uFVwBpEY_ zs|2LImTJ0HY^Ej>w|~lb(b@syCC1Gk<{ zYu93$Tigy{tSN0B&+Bc%xO^TRd+=SLbI&1hT}N7(=IBrKkM`v-Trp0OzNDKm+{Jl> z8YrSBMvv)*M1%e_I#AUPKo^u*9x9NIg2kn8s@^mSJ_C4Mt zDn2y+RdMH+q(1BL65&k>gZoX@ca#yUcoO~1DPmBsr}iq`Ya2cBQ?)KDJ|gNPEFhiF zP@hJ*f}POvB4lPxU-pU}%I@q8be+nEa0t5c(HuR4co^jLAMxoNm4PMex$8!Aaf1+M z+5lD!uD<w zV1tki%efx#RZok3{+QvPyx|6~9?4M)?RsEcTdJHZ=aCSA`^doy50 z+4!XJic1J0dy7A6fzeCit7mm^x=qH5>?}~bZLth5KMIC+KEi;P(Yu)-F&O!(y4uZ- ziry`41VmP3y;J3VA4yz4&UKUGoDNQ|n6G0W;G;jE_YzN*@1c#Znd~ms6`~{~9Az=L z%k8PjB`$abN%_#pDv6a$f~&zeNZ91fVi14T)Aos~0tz2sn{nM^;}DSetD=alJhH=O zGwJ{lShdT_^6wH%Hz#hb0^lFIc1y94LIR?(ZSyXezvt^jYAz$`2Iw4Pf*}}yp|pEs zt1Tg`yjWNP3e0Ur)yQ3lkR)U(G8w4oC!!eiK=Z{LC(+n6*nL&7Fkc<(<5m??>{alX z>uTt`w-T%VPLz^Jv<=Nvi28ylY3wfo4hafn+uOss3jY*><}6ETN$2#QX#u=^&tdsP zcn;J1i_sX+c;~AzHEBQljjW;slke8Vi)ANFEK1~mRZ z)loiu_^13*!))ygk~wox(K|~P&l`(l8I9+LY-FwH7@4!yRJ&x#_f}t!s50uEhL@Qq zk8l15c7*SKW^fE9sga@MOMLDRjYBQ?D4i0_-&zcA35_4!8eg*dV#pQPZ?VgbGi9(2 z)e?#rD=@mAOVk;&a{0%fr}QxNPnC<-$Gy12Y(!)0JQj`Q-%D#wFra$ZH9+Ra#eDB8 z2RG6dW5=>iby@t~lIoFjON^k5R%hrrx^}d_NkV7BgX1Z;aWt>>J+sVcPzAajGH78f ztFKiKEIlM&hN;c_g0{mjsTu}lkzj!_0-pC=qYMq?bYS=K^1n^vY`Ge?cZ_mmn#UlL z5ft1~W=WNKfcWr?ZJ5Jl&E(rzOulOKA~bWIVA@tOWIYc9k~pU)o`8R?s~(s0oliJ( z1h^g#WNcxkE@wsIKT`e!HI7oRZo?nX21D-;_3zrbGlmpGmQAsX?ARs8jeyBBvTW{gF9_fp{peP?uqce##>PCEB>b0y( zA0`-e2@A72p-cSWBuxXz<{!PBf@beM;rKoUYr$~XECHxNVBv@ERO5s9;f8~9dZady z(Bpfq-4a@5Gg;}>3K774nFS076Hv;XZgF@DAlH{`&gDSg{L`(?geUR4&81v+rUXhL zB5M46WxN0q$6H7y3-qLEw++!bh@W#bu9y|mCsRLlMPq>R{d+-&glN>+ux*?|(ZrAB z9^INwDa>CTO6ntNP&C=|%uX3B*9|1HRa$n$nAugQ?c)AE;gJHDN*z?Vvsyg95S9X) zK~y4wzZBOF-A{l9BrN-)P2J`%j9B>mHl&$#+>};b@Rriiw*T+x6G~?(w53Y`g3D1M7YOzIw8x-@9Su2b9YY5lv`0*#q-xf{_&aPHj?Z==PnIQRcl-yi5SB(6IY{1M}YHu`v{{l}@J$xd+ z)0t5jXwnW4k<^G4Cp(lgtvH+IO+h%td2&5y3>|6zh#Wt^q%n|+>sPz(hKV{RjS;#~ z(vCtifhx-2m_vicAidY8hb8fb?8r%>t~SpY7C?FV=XCW@mm9?+j0%junWcOR7dm$n zr+e4zgGLdK7?xVepw9LOr9$%#MCyWQD~%?7lP)eU{Y4w~^l@U$%a1|y5~6^1s9HUE`G z)G)6XT))^L#Ot_dA?^_N-5Fr^?2X7BRgtSIq>p)7jA`p_o=HSgAUK@#fKoR)*=YlK!;cMX7r>P)~oo=bz*HUXkEpkv?Y_OD@T`#Y0~>SfA*d`@=NlTwomv zeXYf-xCPMQyk0#Xo#+El3ig$WvA*E4(-l4S$<{*Lm>H%>u2WmpL%YlI+FrNf^d)$* zc8m_lsI_iV#xYVqd4C-)yL$EY67K{QvviX%`BNQAs=VuPGC(hhKT?czh($B%<5Ieu zt%H&^+bMoJx8~eoTdp_MImA25e)ca;m*ED72T=f-EwlH+i)VDyhsE+bWF1J6h6gWE z&y^RLK$9w^M03hsaY3|H0rvD__O?m=19>46nkHLP?%Y{QsIsEkjM9;ae)fstT2iu? z&6{A@Dm{=}q>wC|y8zTL3ChEHZ~S@oLumDqKb*^jc9YwH;e3 z+kLu;$7jTu!1W`WmYhRJP`-zI4~XV4#=@Vh>Op*k`|e!ijusG=`~dKMZ`QsnndpT= zOBCP0#K&c)sgU?cIgo5xJa;hCjx=J&hV%^cV38+ydK+#e6^v0Dod@+C>5E)}vZQwK z6Lg6K4__!H}9%sbQQgbw&biU;-Er&aq9 z3n*jChSIuyUyUw|fCNe1tUvfJ1eGGJPj|u#h1Ouy=9bUcHy|AmNgD91Jlt8YCs@Z! zlii&-k0Mct(0(`l{Jh^XB?0#KS6A;Ig0*b&pY$B4UHys2X(*dH3FXEIX#x#AFSrL>kvu&g$%@F+aAMqj#sHiX~nReEu4eKk!IgI zP44u8-ESd00h1{k0msBjVITUkd4YXdpfTYtqnpuyc#T5$SsWNt*fV9C_1Z*^)`9u8 zFjncAv+pPE5a1OVZ6l39-!gI*rkMdE_rNtw?YbCqx^cbU#!a`Tz{v9KST4L_AJt=r zkJd1b(t(xZ1W?YKQ1Te07~$$;=Q^xjuluD!t4_F}?)k2d>A0=6U%=snKlkA}>u4$G}E4ejla}y75(gu*QkCXSfl~zl)4;B`YI}eiEo7VMR{ivpic> z3W-?5T`7!)`rkkfoCn5EtW#9(%lbb zjh1xE)8m5T)0P2PGPJ(6X_@$y>$7wUfZTp#PJLoUS^14s2iOr>vxKDsPX#;o19CPo z0+HqnB^s4#x?+%qWo?bppvR2t&>|S8LIk*i+-&!6l5Zb(b-nQRleJw7IaesM)qxkt zw5kxqN!zAdS{`AH2C5K4KzOlo+wlLUfYun|F0*Jh)ngx8Pi~Z$+%@0{)70QN2IR=| zMV9D$v+r`fHmBGqVur(=SvN4~b#khhsSk*~ggf57Aaq;UHt+;yqan%mUltq!VZ&gT z%3>h3B6`4#TlHSesSMFXWgD+_rH2BiK;F0x0O+lb`H!$0P^A^_ky=Jy#*7TfNU*F% zm{N?+lGdXli6L&FGm|^0t7Cao;kz)gegH)Or`RFU8G}qyZ+FJY7;_%fKFnGW$JYwa zB}9tWOD(mmpy-I*7~-rJ@4SuykA6M1zFOTXzKEA)-?rda=Gpfs+2tVikJg%1P8%eW zm)am{%TVGx1e_|&v&J^afOXYb1{V3hvwcVi`9qz0`?<3*X|I7e#^u*%4edJWe#Vny z^?sZ!g3-uFJbbJ1)W{nEgX?+QLo$$$9vZTwfU8F!==atHl%MNT;q0XTTT?aQ7SUn; zTEm+!@@SDw^0fw|$>u>Os)hNUQgW3n%GuGeD{K)NQ6AWuu66IMXLbHaBAXowo~K0M zx9$_WIT%JG##2*bIn6&SVp_kLm-kLYsDNxerf)>Ti^PnCj%2CvkTLN$7E4h##jYX@ z9Nh((+KEY<_+B{x&5-%X0fejt^G}8Gb3GzvL01`IGb#yPH9)nJeN{BGt{{aDv+)hQ zBV~ZSdXrKs;9_hKyoJ$sTUa+fDk%1(?)p4A9kz~yX|yyE3RcC#arXr zwq~_R1eioFCTQ20j&3FYdyi?U?Eq_i0%KJ|5HExg+BZO%;&{g-18+O=8J_uo<* zs}02zVBt^?FWEwwDnhc2q!3dZBO6n&7%=r?qKTUzP@|Jt*k2{hFvzyXD*-o(nPls3 zhTR)Y+8_RQ&ITqA?bP@#_Trm0=fB3z_x1MiaWJ% z*RnL`b(?AWfg)UeccH&nMs);)>HD)^WxJoS#Bub&r@`pV*ybg|8~X^T{yK_X7JYT- zxi0a9De@;lX_OgA$QTTbsu#udH%a&;#KD zfayRc{^K+9Pb!EQGx^vDs|!Je;ZP38fCt^cLf}ybmGV65EtV@SA#~6?b3JdlJ+{&* z0^z258TF^<3cpeu*>;nk9?{Y-@wiGjQPUiyH{G*WdRfj0XG1`2vLHS6O3l{Vba0R_1Lsu1( zr|Lb`4$Z#TKdTE3t!6r_>gQ}SoJtDi3FPnyM*>4Tiqn{mb2_IesAPvK3CKGMk_=~^;$p|!mi@)VVlnp3$k^z< z32~1yCNB<-cpeG=4Hu%}@nFjEUzVQO0lW1vt}AY7SHz$pGChrpL2k^-^3vy!_k_Cg zi6e2PX4AYU%^9(K$rnp63fh(zY$t>V;b4uQDv_D4KB2y7fEJJwH?B`d;x->iXtoGR z_jv7WKPa#P;!P|qqu@(nyign| zP+_0a5Z*|B)(Xd13Va+P`1k280Y2Bu;rAVc1qq{BN2Xojk3J`0*@z~++wocY2q1E% zzf9U?y_dFOXbIJcJO*sx#p!9Me~0X~pW3>yn4JdQPTy`cQiW}=R5d>riuf3L;AEg; znB9d|CtEb-G8MOZ6RaHRJabY8B+tQMcWAxhvT`LM*m5t|zhx)2!SM_kfmDB%Lt^0{ z`KP2lf+mMavxX}}-LHZQwG6s_LF5Gko0{mm>YmzA+Dm7mUF2mKm`>iob>^!HdJ&|8u@1NRZ-p_be+N2Sk z+BDn2){b3%j6fDJDmndg<~Mt@x8`-u@gVDWPdHe$YaF=tpwkLoVOwSjqm}1LH{WBw z}c)3M>l{>u$rt?@b-)KEkD+Gn%o6sc|_TcnfC}_YglygT^CoY zKQ`q@E71!{00N$Mczcoe+yvs`$=G20K2uVZB~)esJVH1V{guOV`+GO1M9p3w)G9Q0 zg&a7uH!bT{r2&_NshLB>aRrea7apNpclvEubaTCfaF#ePrr5^^M)@XM88-G9EXu|2keXa_8I;g8Qa{M7U zQLBhD($t5iQ8G|^pJ@_q)+#U{y@*5z07q*d`qbuu^wdUOYGLt5! zwwO=^fH;N;$it&h^lS#~P^a*?419pva9AHSmNF{t@Q7PWy`+65P6bnE%U|2KF9D@d zXKy@Z})XoHVJ5m`yA4Q&(9I=gBxNBKXR?PW@5(M#>^pDdt>R zw?glC*M29vofh-rcepAvOM~)2_DAk!^C3+J%^K8DmapKMNk&vR9reD3#9Q}7MMnUZ? zlW4jp3g_Z8#--p@;>EDzhN@npmWXeGazd%1|A_Nw>=YKP|23U8x&`bsACgk?t1i93 zd@Ki-U>Anal7`*0Xoicb2PWZyGC`iDkfP_HjChx+2&{CnH;|=J%VYGNL(0bZWE}izMJ!{6}k;f1%1|<2zrLNn;+Rg z3IJL~iSpVyMCFh!Eo>E^By#)Ju<*C_0aCRl-k0cL0`UX4twL~Z@&e$w*^$FF7Qatx zE!l3y%B^tB-+SLx#%Pa_BH2j}U~1y=9|D}+NOwaP42Y@L9m zSLQ$v=Et1RJiJ*K3jF#v*l5vdnm?upZEf134_jvs);L0@k&_?Dxf0-`uSOm5#DStn zZs@Y)aHDv9g3?@^)MY|G)HDXdOI}w~g_p3**~mh=_zBGqEE3ag7Ng``u`g~eY*m&J z!(ysO?Ns_!Y~jZwyMdo{-~7tMb&%j6iV}SGCua|I@T$N^F4|6yGTuqZjPT=OD7)*| zRSxe0M#qJ26>u;Lj`8e>6rd(Ia^3g8fb5um!k%k$V0K74$zXWZD&(nYV_d_T)L6tl z`BSGG_*LJeLj4h=`Hn-P_NEPnD5ZlL-TL+gCI_r++rh831!6LQ6^W@?4xlNUm0E3< z8Rw1x%lPxJ(RC{Yvl?>EO)M?WtEqAoW3*JgmFy*_6fzjEz(B zjFDertZC_(I0>5!67=Ov0af`;AyMeCZnEcbHcsrUyOTbwl6p-T`U(5X^mN@=pbiv1 zdk^aPC{EhT@KR9dBFR%oh5*X?%FYSRscPSVY+Ug+a5zh2BdrRsL>Gh`9$p-^pHU*+ zb=EO1)1!?AeXJ1~xhB+-YhK+>VaSHhk2UsaQ3sSHhj#?^?oJ!PHtA5O0zy3_=i3=6 zK+p{R`cw@?xm8o<1Q&U!(|&9B1TMz1i%ZSJklTVq=ah+#Q&CjECn+opRIm(Oz?SP_ zBBRxtOp#_KgJ1fe&Ng1Zk0i-rq{52R%}SD(TT_nk4*do^k7s1BHs*>)T^enHRy2Dr z!sf0{OVj^7Zv7?J1$X9ReW9WPF-Q3kSc#@#fp5cGLa;3U^W&#}YTUMIG2Rl6+18zu ziuGf;0YI$|g^MlvB#kTIUo(sXe?B7AU2?8)PA`bM`}LTQR;(?CV+|b`eq7ZENU{2` ztM5gApv+f}qUu4WWYd(A@;hw_K4jnI!%XCD9cfB%WfIeAka+r$(1u2YcZ&I+Ufn$9 zV$aO&F7d6{!z0s_P{fj4_S@Yb5xXj}iGoycE~|Z`-`06)=)~&5Q~xDVXDH^Mb1NR+ z>IS3y6eAD*y%|c|)>vyPfJ@{4Njb*$ zA)`Sg=x&4r?O(%?2NdPyB_Y+8r#uS-=Ud}1`s^&E_3e`ps`*O}T{ZeS5b-+6>vl9UN@#?-H%R!y(`*@|ef1=OU6uMr)`3Eq>`UcrB|(jVV8w$M%(c_{r@? z9LLC1{i2=4G`q@|u-dr+F>JS4XeWAGo-F2O1=x2dXzrQ}ahNC1=}DbF37s8|ka{Z3 zig;2QS%VToX2f_EJqF@0m`$4C)FXv=S@={eh;0_tQcNlpZ?521lWHi(0jd>T^jx?6 z`|M*we3b)^!pfZEQXVkU(e&YqCov800{a~UQ!7vuCTGB@E?QT&(EQtM?%u#6P*oQ4 z&}^CwsDyo5qC^WSMHjP`Ezy_dTU9iG%m3>I+lo7pYV#reGGYk~66NruuXS|pc}$pX zJg@1M>Yk0CD_i&1B8r~a;}P242e(lw@aKtTOC>#H9?^6H7f6Gl*T3#>@nqeKyWqzN znR_|s1sTLR=3biREnJl*Akb|?myaR*KYb67A43EJLIHwL+ssu=9oz|C3U)Cq*({ng z8QAm0coHuuUOAi?{!(nol^zb+x+-du!M-2N2TZt=H})Kq`yvPCi5%1RV3<-=Qfhip z%OFQBn2@sVn!u=EfkbK14Q$We+fM1g*MKRBjBfXr^zMd})9-Q?c^gzT_ecr!qur4p zbTFX0j&VQnhZ#QuI{DLGEw-(uc#ZcgZ+U>$Zz#S+<+!{rcx( z8biiY25zcJt_{L4Sxd=w;_g^C5=>C{E&fiQ5E^6xt^D(me{YH>^*z)TD+miAIz9n1 z<-YqhQ1qKl#;}80pmC>eOuJ%>%Icj{Blwg9icw<*6hsDXyy35<`!Hc* zNX;nMj(w)b;FW|qKIhB0*so^iJ~^C~v4snTSU^d~MEU4Gb-dCP{xFYWsYM?9tg#h)z|dm)Eib#D!9B3;h&pzNF%tqR!Pwe1a23PO|)?9b3Z8 zHji!dE!rU&7Jg%%@nnuoZ@-8`Fm$DvsZ|Y4m|I)yTbxU3pJm>(;9IS@t#~a*gj=Sv z{qFt(j(>9nC6SB{sWn_nl8If{Qff&Si=M};f4kM%w6YjB39@RKo>kEd z!)p&(bna9YVT#PWSjW4g$hU5o!+5ZXYva^N7gabfgEn+#fOTIwsXlhLdJDPHu#Ci7#()n#SCF;idvd#6+F5LYwqVKXo7++Lq zhUfWP1dGN0nGbfFOEHO}&cuD8WtfCW;DA~y7D=6L_YmwpLUQwsNQDiM?{CuA#)mO4 zX{nD`U~;WnBnY70ZwQ_?1&qcfD2>QVM>v}%i|6cv{M1R}I0^+{<#4G7<2s$hL(VdA z9z%KXKz`kum8_$6>`WFqaS^I}@hOjC^kfEjI!FyKFY+2aMEyQ1TZ;t5?yj|yC4PhI z&IPwGu?F69>t83q%5$&uat18@6~`jPaHRyA#jkOYRUV(&?uC<&;?lz`I^HR$Cd6{w zfWp0^qIUA9W@Y2+U^z#a*uCwK#@?)ePF1q73}l^lT{a%IUhWm#?z4kG~0sK^+28l>^u=(k+GXZxda*MF)u3gjF z2UfcMv=}wKwyTeLFL#+-nE|$upyJsobX8rAKVMI2vjdm^ZZqB>y9|ZC?Dm48F~2CE zvCO8E5CY!fyrf7q&8n_NX*Ycx(wLJ#h3R&FSz4~?`_t)Uh=9KF9G0uJWJXT9YL>mZ z)h%I@ltlpQpINjqZ5jW;8{D`?NA<5pBZK2Iv9aL8i)HamB7Gp0L@2G+Zt)`Hi=>CG zYg?gV4w9#&x5+n*rhc`w)Dm9y!VgLg#OuFt0IJhRM`QFnrHNUnB>Rp8UJ07N_$93C z`K^gDFJusG2=jUUvy6PGv+KR3QU&^^#2o9zeX9~=?qNAB^bF(bT6^pwud+&s5tl!T zh+veTJexD99U-wJ%D^6#BRV6N#JB2!7o@uR+=Vh*Rq+!sP^39k*YmPi?)gEGH zHi*1@8{>>T``ow1R-_MbBq@ksy3WJ#FYq8;C_mz*Kwhx5ktI&@mY5_gQ^A?Q_-ulG zyedDN|Iv`4JnatYlsbdfXl|=liHsjeCO8Q$Z0n(HN)ue9QZA%fNGdcbIEe1^e~yuU zbB~^UngDbba#iU7NXQ9})BhEY8;8tf>Ccp|&QMl!9p02ir4(SAh}M8L?kO}tOy>Ej z93TAs)b+4I@9VZgLp~D_A;Yr>KbPtJXp`#Rrylh7GvwbR!r>?~+uuV{q~UXy)oH4e zqjU#02YYIoh2+)bQWuU>P1=8+xi@sVeIbFO-ZMKrp4a{}e(9EO zjD`4d_N;Z^U_EDTflD(R{!Lwu+XKVP&~kXtBb4$Tq*C`${Nkp`=;rD9P7L z-vx;9Wb3UNT2t40^&J~hx}fP_$A;eY%D#>rAQM~DKD_h0<>^pEn6t2Wj|=EQ95mqa z7tz8vZ%n&@l+&t+G*|4}x{#Up_kZvYiW4ocva=68CwO=6(dk5zn}-2~j`_di>Y>3? z?AzZg5Mr$OS|ulfbVM&IEfQX;+$6V}0hP(#=Eg;DcR91Yxx3BO>odZGyMSuo!(PM$ z<+*m7_KNbbc7kCVQgj>IX(%KkCad7Ae~B)8ZSzk`yA+gs$LfiEsP6`tDCMD<;YEK@ z2MTDZCZiYKMVzR z#Wo#EiRC|jQp}jsbft&SVOIjzK6wj?Y9Q-WbL?c0Jy>OMy{$1bmP#6&Z#6#4Xqz72CXs+~VAoAqZBi1O-)v zaF^-~2TMhs#1|XTkYfPu^L5DbNn>Po)86*`wquIlgA=W!1!^#yn^pd}m&~%tXLt!H z+#!BRs)xX%kDaKENU$=Sk>sKk?n$P}RTk!cbx zA#8TYnvUYzKfB7@WE7g+36Qu>An&d`C4ROB(ovwEktq0*BTzr;NgI5n>A@*{j+gor zgBn~&+~&6)nQ1fwJClwp5r%ygH61}*d_H;zJZ7utVe!AQ3eVeMiE>~`k=1pS16?oo zCoZOY?Wl0d_AFBt)lm0n22i;Dxre1?kZ5bOUrT(KzZM>qw6JC87tpSJA6Nr5pbTCzt@j7I-56niF()i$`gVv92i_eOKFH179xO~G zy$UNgs64PtSA7DSYfJ@z18R~4)g)bh9;iynr}t#Z=?lO)Hp&E|7_l%f$9pa1THU2{ zm)xlaj^?gj>gcT?_>dKNE*c^x_FGHL2U2e5gzMz(AT~%NHUnNyUyk=pff^_PHE?Gv zD^;n;b$Z%f{$T-0mI~onO2R!@x``tw{p{`2tzEDQ-c!)p|6B5Xr&7-ISf|VZ0xJjN z_!#8-sOh99&9}%^=oR7iNNaqOy9(cB+&x|tJ(|_s;KtV=y_>g{+DWF1We5(lWbBg| z_!=Tz+N0Y+(eM9A4~V9VtGFk(-GQ$)Eg2Z7atQyfsv&KtjZ_g9%KLjXPrJ_h0B4Ew ztKS0|ZN<0|+y@!`u!2DcA%q(<)jV_TRhp>vpbmnNDri<*P|`Y6;PB-d~cwNbW1Xnd1$GJTUIpk2r|G9J?`cPk4`_ zrg}Sc6M8`^!u*(DAXY(|&Vf<}o3l0kxUx!AlYkZnni72ADJX&IU}l2VR|-O#k6*tR zf4s7_;tAs3(IJQ0{VTic+!2%(Y(Up;v;3u(rE`vO;r@sXf1~oD`=l;t6L7&vp4ZL&N_@>zdGN>^ zvN;zxTx_AF#1uCbG~O|CI6S1i<<_-RpzfcvoM?rQQ$=zX(h1JWYl)eNXTS}jF;vOe zGA044w~ZSnYT}})-``nrSFfnRg+oFqeuNnSI%7FJVe50hwT%WNCr2p>)jC2M!X#aP z1LAVbO7XAVCE5-rpfFEW1NSbFAXsN0>M-@dG6oi~i(!&U%S*il z0jD6qy_=&4y!tKE%Bz?2bpyGQ*LBoEj;eu@{UKaJq%vJpoMS={t8vRWOX*Yk!u&$( z3kz8hFC%=$RLi)61H;XRb~a1IFtI~`gjdtkvGx|$iV<2o_9&;_!rZWPdpE$)DS!g+ zXf~l7WPcJAONk)1qcHnElNGhO~xU}t6$7NQrd z%+;m1&2?r0*TZBm4jNF64*mH`Y#k-=Y9o^>e6eki-N_lZUeZUejbksPan};$LVt|i zTpR&d#QrdTy{m;*87579TT|++>6Ey}QxNik${#>y`Q4XcB;dw*0WHb*!E(W;#dhwC z2v3caW9rPDnhpur2QH*L9n$hTQ4Dsx3a`lWUDNN?PUW_9$%?M+|8>uvZkTmSjkGlT zW3we+4YS7QRC_3!e%Vr%2_J1yHaa;l7y90#9l;fw%YRyLd(RK{VKW|~ne#i(@Z?HF z%qW*~yxB01!jKheU-~{LLj9;*q~UjF8-FgRWm~{|z{MG%V6M(Mg7jHY(naMe%<=(d zAa!L5j84HrA5N9a9R02Jl~M+H7(8ny+m5SMKQyS?U{~GGpVhXG+W-xWt22%GFpUp; zAbH;#Dab?)O4N_(Jb1;m6eIJ&W^VRpXuC2E1(2Ocs3)`47o=)Xs^E7v13;b%a7Th+|CxgArzjM;@?NTTs{!wI|$Yi1_AAXr~ z2Vm{Ilv87Gsyu23hk_jzW7*)5Y+4;ZLSoduQW)m$Eh4f+k9kAE*61IB<{;bRY`bhf zPmuX0A3c+z*GPf(^CR0{I0K2uge$nm7$Ql^GA((e&D$m)t|>bM6w;Net`z*qHqNZ< z(i7iaHUs`RlCr~=VzJS@`p{7)^_^D{cRMg1n~a-^ZMeZjm7j#K%oE;$9z_>fSs1`F>=8Q0$uz|?JI zd8h-JEP@0D_M_~JtkFj6RhMPyURJc-e^?Tq8te-|Lm}i|#;zc50JVZa2?p*~*q1p#uPX4<`x(HdxX}Egs2ZE-YO` z1~MR9k0IS?KD-+(Rikcg6M0mRseHe~zUf&j{i<~!Ms4A*U|YS}Bd|OqmX*nf;0I^4 zu{~&{tXR(6;W7BXOG!GK(rH>}F&6KI^?k}vu8ibgjE#fe+3lrW??CE-sC#4A;&IOx z=6f|x%9|6BuE<1${SWr*?;MF3MWBS@hXhB-_e?~kl$mne9G7Nea`Qa;aV{Ao^jVUQ zQRyh`$J3{r#{t4nq}e@q`cYD;4G3v3E2!#JY{J*70+>KkE52J%iewf(|BC{<-E)(P z#y)Bxfst&PJc>wCJ+S%|ho+jR)tFC6UOdQj&{V}7*)P5%`va;+_DUK5m?a%{_IZVJ z$MO4!qdBMApA=gdWSZP2nWM|aUj3dP#Y9SQxhRo3pYPR!a+2x2C8Pvw(j)18VJI5l zE;L_k^yPzjUA`do;dY8AS_m9XX7O#p7mFYd+Ngk5S=Zp&=j20e8BZjw8vDB&`rZ^4 z3M#NJ*&u&m@c|UZ8i4_B=Unh!7pIj;76b@np`XSSn8Gd3ikw&yAYar0W*5C~n#**T zuOVqznp3j?)=?f*9k$WEl)%*f9DgpXOq`4aJlm*lGj+pn;8j{fF18JMq|D&Dq^MnK24)-p&0YxJ?gDTl0J78}2ZUz1*z; zJL6`ig53zF&^I2SI=7l^e>M-S@c&em^1JazJi4hhWMxokZ1;`WFkSUddbv~gnR(=A z_GW^9nm?+^B!ABR{BfD&84RaE8_#Q(A~?{J6mpStMPP*zeQx8P@p)W=x6D1Hg$^9F zF}zeY3|k!Ulgn#V{JgCf{DWr9mYrZ`h6|SV(5BDVIXnJ+6NDKR>nTlH$xPAtXIhXU zxE}da@c1Aoq#zEVKeV*3UbI^!lu!#6ek7L?TB87nQZoblc^T8Pyo$Nz&(}BDWkV)C z<(r0&1P!M-LvxbgmB0^vro4P3_%q@61=WeTm5%Vei-rH~)R->%u@!1>lgz`CBMHxr7;X}884v2GBR<34mte6m<*my z;XE>vpaglZx_=OPfn-w~<$`nik3|tPF-elY2Of2BA=7w6gu*9u#N04S^i+RH4$<1a zdoB9}1u~rP9?D)~@WVqS4a0AS<3OT8dz`Rvi~*n6Q>22}$A!L)yV&@|V3x`zy$XJg zT@uL@wJ3M;&VJl@j_Sx8^H~g#za!d>3J{7w9HbE70@kF^D?mV z6yr(+=k|lbuJzC`-ZFbGcNQMPW!QB@+M^7$by(UxZdLn|N(7(Gbecz|=_U?T>K;cF zh*aS#11`tE>kj*uOhnKW+Ty$ZM$HJ0yj%kf~bMGH-Tw|0ikzz`wjs8&z;DznTOw2bS=h>1PS9I{SsIjz$~N_=ldrHv7ou>kOp=~d4enD&FM zIZl%09#Rdu&J-v3s6lW6Gmy&aCAAb-;DD641ln9l$J?~&TD#)?RRcG3Jl zIOt0Hg1qfb1ayh~f1s9{DJvM9E;(!bWGX+PqX7LJ0Z5z3zAsD0a2)NryVwCo39mfbKDhXfma)ze^yg{9 zM!q*GCi!l|5V&N%CI0_XkXG>)e0VIgDaZq<45l^;pu$>W)%gg!=HG^J$j|Bh}l#Y3eoB%rx#-VMX(WFL`E z{XpETZXWvN^hnQkU4z1W>t`!kNdOk4TabjCy-`H@BS^AkG3c>f%8YJFms*KLF*;{1 z49~s`y`*pX*`8AuUn{>>-k<3A@@I+|CoGFyoq`g9!icf5cgXXTn6PdJSGxN|doXi}cQE)#_*dwM&#Qz)#aIP_|rWBBuG|uz?V&r z30rbXmaz$$Ies_cYn*!1(u%>Tu4tEeW%R^%Kkt*$Md%cEV@e5M7}g9BnG__8PE(d{z42Sy%@N)fGQNf;G&Ty;k0?#xHXfYzMqgPQV&U#}dK*$7GEp zk8GHsUZEuXt6_%X=yyPR3j$5KYkYH#Ha3_7Qbt)l`2ooNBsBeS|My8Xo*!1=m)yh{ znFat!JBYjz!rm{UpE6UNuV^i2VkF(ek5n0QC(p7_xNGg>7kbd|cX$;@RMaLWt`d;y-;0G|dwFM{LxljqaNH$6qi5)XQyfzcO2vM*IPx33KEJ#KF%AgM!15!%zvF*rdDWl z623-?@3F_Jv#6%u!VgeK5VZb@OyH3&s$tO;fOI&F z<8-52KCoHIT=9+948na$a}Gtf@;z;kzs6u4Yh$PJ(^Q#Q!guJoK9v^hHWTJKBR>O< z#7DI%`Jnz-C%<2o8fuxup8&lcv?qdn*kIq<*sMT0kR(q=ws=qnU=Uu@T?{9ISphvb zFZgL`-xrpHldRU38jJs$mhT)^@osh5aE-y|B2s z1(E{22;LizT&SWDW0tEQPV^>XG$GYE5>NH4({}9+e#UwXJ<15 zerjq`KbG1UNPs_hy;*9(%;eVYFg)fB?iTljUq9ieQBVcx!C&}GyfwhRp5VSrr@S2C z#Czc6Kk1f&+`aDTncJ1hH*_ATa*9>t-n)l539FE`Aps75#>GWZQhK|w%!Yy)_9i)! z7e%Jh;-~o--iqJbW}6lRpOwn6QFOj32wc~X^%*y74d)pD!?}YWQ}r?3dSVAFr57s! zQyXe)kXoFsjD}S2zmb)&J-EAjh<# zOD)P@w&yw^?;QiK<%p%_pYvwz;9EKR1s}T;z}Mfx?|=9D-4Bddh*ZP5dIQk*+@y(I z7NU>g;CpgSRuqsVA8SrbA0a>n+Mk+F`f;eTMS*D9v~+gL9&C&9CJXv4$Np&tUAwZ; zrzx$2xX)0`vJV(H)>n8fiUHhS3B6}@n8QT=KB(^!4Qd1+k#u!)x*2WN!^M1*M(H?| zkQl)4Wn=mI@xSvq;+`@PTS|D`^tct-j5FfBM#mPdpeWhPBT4>Qa1$pp9)v00=Fv>I zDCpXcI*O*r)tSJ?EE|T}n`*NaVJBIP`D!^?#o%T9N%%@F9q4xUCOBX=)X$#y zyj|g|X)hG)XQ-}9&4O#blP8DfZD`(t$QMFBOOsJq=ZG@*TbIWr(5BnUeG+gR28qw_ zCE{xWJ@&5iT3jQ|B%Fn~t%63dY*76$N(fgIt5Rn@(-cYz0d>vd!D%~cFGS+-9tcTtqf`Bco4LF~ z&SOr9`>AB0I8*ql$_ao3g-D4-q4|?wG(rInu5~$f%&1YWwDpo)24krwt!ehT$Z)Np z?z5&rm?&|VnV|raEiNZJu`NCqT=1YdzzM-(lt#`3o4ss2ZWoplQF8Zxh4*3xqyhH> zy>IXFxfnOY@42A<<}4xO3%0gFrzzz4^((BoetU=4^1&yBlB^BMgK@^Tx8xy8jE>)1 zQq1^bH{pPbBuRIWmd?3EN}46C2A!fbalS5XYMbK^R>K+q!()}BPs5AZD{Vew#H=jn zsy@cM589}y??5d0>;D%9Kp;OqLw`^ElZ;3@^{^onPi9OgTuR4;Sak|xwdJ5J+PSkH zGlID+jI^@|#EI()N70l?o`5o)XCu~wDf~k*TEf4S1jTC_wYIiFYEqg}8-@|wibEID zoSBxx4)9*EKOw}G(?!3+sx%WFM78eEo?*e+(Lbbf4Uc=BTByo2Y&aVm7}9B|sQq{+ z$RE{atgK^fB3J7;%r75oM);3H*zg`nB;{i4@Mm+MxVbtsTfnLSeIKSm2rN?=c1cM4 zauJA}Lh?wXP`hNNjCgJ^RvRJM3+g&Y*IF$bPq>PxeZLOA+oNNXz+t(%g#PwqDnx|1%K z^)^mDvz`jmSR5GW(GJX6_9EMV^5K9mi8Q>y&LINd=vm>P{To`D)v1tQ6$2s7bbic^ zh|RKktj!wv+0YSZAZeD2ODf*oUs$(c8EKZ>mbWn2o55cSRZ&^1kPbS=YwVK}{A^RI z$w<=hgG%C>+lswiFo2M>>gb%4xGce+q>I6-vI}6(=jmR(pFq02yvGH&Ef|y4G6H$$nk5Bv9bx$O@LMuRyCqo$!zb}^m)k~wRK5pA)w8{gEsnXtVq@p3l3G@C zf*PWw1HH6{<_!VCo-jjIsAqUS!JvU35b=6IrtG70Fl9~hU}p7 ztJ(jy?jg(R+STw)-UeB0N3%xL_&C%WmB@c!fWL<<2fi;>}BlwT~P|~o@H~g_6a?V z#}xmvb>j?wC9%GLVFkPHRCEIFl3p5_NPAswc#}jgz{58x*T-zkIDpecg8D%8LIavD z6{)2*vXNjlOJxoE`l(qad`&12u6xulYQ`2IXk&bE;eI_~QKojc7K7cQdbV_+&p-Ts z&v9sU!1Btkk^oNep-;1p+7KPpNXN6q3B7daP3zlAM=pvkj-Olyc{+6Fdv4!J!J|=0 zSdn|0Dzk`$U-DpiT{YM64VTDO zp5yYvFdayd;>~&*aU<(-QDhN$BB_(f3Fgd)FxkG#fG-#DUSILS?DH-u(NWiTT@z7- zwAl?(V#;(uS1d-oKlg1A3x1j@4)5eZ@&Uzk8Wez)@6`EtW?qCFpW?dm$Bzsakd4m;ZedZ$~mXm{Wau_IQ4@m<9(qbU(Rxk%A93BRu1rM}893HcEvV zjp#aTgNOa_a`P4nts9xSGdpD)rV)4zDhUjMP^T-X8Fm&{R__To#%GQB7o%8{ot19E zx)CZ~A8zYbN;e{p+)D;YaIv}BwZE%QPHQt&1wML#FROzrbuF~EZ;1fAj3 zEd3_->(5+z^7q5H0UmzUe7K%30FKfo^4L};D-}if`K91k1Df1S$`Ha*-fp%PIM3KU zaHy}7zYTSaWpCh(NXWq+fsODefrxe1hvk*}vOHu6zd!i`m5tv4iT^3z)m0}a023ql zLb3*llW9F`DXp#7fn1{5nQ%sNT7H~qGiv#rhG36hY*y4L&u@? zmm-*Iza`t3 zYEfI9Cqqx|z+5bjni1k;hP@V6M`niNfKj>~xEec1+`Tq#?TQfYom=<~ABwkag$f-O z^V14-=&^KaBefbQjj|RMP47yxPlj7kFA>}86vsPrx;N6s5(QqvgtY7Y?~k1~q-myQ z82J~SrG@KY9SwIc6mwA_jk&9e1GJ)|g9p;-THMbjwqRl?iwTQW|G4an9Jvu)MfN~` zaeYI?y>ql6s3uq)dNTh2iaqA}`Cq^;>e)l@BkUN@_b4{_k302uaUB7&TMw{cw?5P$ zPQL4mVN3Jiv5E5qB2E|d*R+$%8MMi>R^|r3P$^dCXBpkKe)M#O6BW3zvWFd1-?+-Q zB)Noch$KLUt&#Up3lQ@4Nz+~P>Hlw^{A}o8d@OEnUrZU*&{H+6S5z}5qCw{H!GgJf zaZw$~7?4KyiOBlvWZ9A0hZFQvk&M~xkQ~%i^9{afpx5RrWygQWa=`|i{GO2(@H+~4 zjdbQuQDF3tTtvSHcn-Tv5aCNW%s4Xm4zL6Fj&12G<`dgbeK*Ci`N5P0mQNx=af7sV zEUX>t^>OJk6_rw&9Kdlr&o|9nc<0vIj!(obl&7oT{82HIde2NgFwk@bPC$fg3*rT* zf#1?ec{7{BFrw5EQjo%-XVYI>!tv4swuxwW`Ya@9NA7w@;gS+f!m}dDP8YE` zyg@5dn9XTcl09ODAXq2dhIi#KN*_hxLN-J&8hPA%H_E;ZZCACNWFi|DLN@nx(c3OUCY zaXiG02}76R)sp_M(h4F|Vda9?>)x#}ilp~|(OfV0Js2z{yI8uTY0>^t&RLl;%;F2k zrqjRn$?*864D|<9i(d#b+xUhy^4;QIdouiY57zE)coXWlop?pwWwCpzyITJ0(S0?z z9}r;xZZgf_W}L~1qGDuZm3<6jAgq7oq(S814AKo_vVWKLf1lG!ww8f-@+&OoNZ)Gu z*?uVg%1htvQ>d8yfUHHS`U5yYWV`P&VfV7Wg;5t?P` zfC^lUxl^nIK&vXn$~IninDso^Q~(GuC{tq!x0U)#2Q?GMxuL2OR__4>SveBgbT_Jw z^6eLF9EfB)L%f<~VwDhOfAXOOXxu(D)S_1aF2E@+NKQL3u4eYPK0><^`T6ta9vUxp za}l7+9oiz{{>mWbptG?)3s_{Ivz6dc+h>=<6R^I|d~PwN2CIX_&y_pc188*w$VDTW z?&sVN1|HtNF`vjS=#oIUkIpcw&JE*QBwgN3NwH|a#tq_tJ#2SsqnR*r{Z#5ELyQ2i zuYK)my3Fm$<)nTW1l4Tvqj4PopbqDCEn@7?%0*}7w;DscY zdIy+TQY4aHg2w7ASYwBGhi0Q*=5AvS|5=}?eh1*>5>nRMYlmBFdHcdfH7DrGlYdE~ z)1F(Ss$+gHNz`Ps-XJyP2IagJG^P|q_8lAFy$@EbdftFq&)LmdOUA{5@0yYcRUe{a zy%}|-!)uhwNIQ5@1wazqTk?p#dK&~F zom!fL&)m%jJ6Xw<}#RM&AGRfuwY)GLAS|3vGx2?YdGnD@`{;f~f)!M_{ zyxp9#RJmUQkTQV^=r6&uF2v@OhZGpvzrW!XiWy!0~~lb;gl*}$oRfe$Ks6jQx;Ir)l1hO zsupTriBVv{K77ZR;mpdNNY&>PIB#P#2IPC$*E-tiRkSsHQeFi;6cMLoW`e|pEzHG2 z7fATiuL@6}na8WNb(g~q4FFGPr}*tA9JNyCn03oIKxy9#;bdugg9=^q?GxYpom7rk zc?|{9SU#oFWnVe<#1z!0tHrR8A;p0}K&%()SVh;(kAQ?Q$8@^6f6vL5zl7XD+e@2TKBfr8 z$dQ?Y)lA|^S07NFIA#BB#06hK7S$5WOq!>+`zDuiSkYssKV&Zttt77#j$SgE>k0K` zUbTV$^VH?)LsWt8TVmRu(HIGrb_!8)YiNpBI9Sw*rVzkTk2v~6mt5+#)DO#X0w}t& zwv%1@HuXb5_xb0)uQE6>bY$Lw^NpVi{;@p1JtINmubO*`t1p2u#bM zd_N7V@r-9-H0?NBdQ6KAvFw!8xi^95O(Eg#sjdR=`(%8{O;i>}d`?JesJ}V;vQ9m_ ztGL*>PZID06q-}B`r(A70F546DUbj%2QUuP^RD{D8j!b-?j0Qfhg!h^HH|}q#5O4K zU)gp)J4jPi5!QFg1O(EQkaToxMvJJkyApEl43Myc>_Mj~rW){I8c;oo?F)%9!b>_3 zJ=3vEr$t3bZ=m<4llD zpL;L>)Xn6Fab+y>{-ik~35wNXEG2~d9Tf%f7M0kRuQ9iBK9ke_kB_64%CZC1uY9ZM z>Fa}TL`rO7<|Ek^!yvnS{>9(7gKkl!+{*f_s!Ru?aRbKUQAhCr3eeUS)g)GrKYCs{ zYi{d^2?jU_pI5K~#M_g``acGf=n;E7lm1H4!x3D5&wlo-u$D^+#2|0fqLxAbNS+b=G}4^YI6R(JKrVFGnPa8salaFr#n;V#WB=fmUkz4V5B) zCy<@cpyh#Zg?(9!Ek1UTM^wGwDz;0wr!zZRIa69%vR7O;BLnS^ZK&U^(oV%ehcI(K zuzN3mX0+SSHAx5kQPCEAf6^Ucygh83%`m?B2L2j&X(W&=%0Sy-@s;{h?xweuI~gYw zWn0!Cm477sC#WO~<53*uG?l_;>!=c*rS*)D_?7(rn=|(X74#<{^+jmx_*ax;wgsZf zcxu*QhOZ=PLl^w+Or1a_+>^{Xyh3(~qeukuLe zf%PE5x;r;`-lS`LE=jJyo_B&LcD{_uu{$91>03L>Fhn?MfSL;qI?)HgTXCzpIjPbr z-3Xbb;iA}Dxllw@pcm{G_eM*33bGZ2SCkzztKwLb_fo}4!QtQ9Ou@a07DaE%XQC~R zGT!2u*^l_5C=D=6>XuqOiBm>)cT{oOoFRu;$jm%(@!~%M77T}M3*_-@l!#7k)Xb#( z;qOwTKNrN^H2Q7 zpU^Romdwv&scst)MN?AI?C%P-T@}MfF(LXy^VQQ*TYY{E{sfk*jr_r zSOS8gZV0nLkXLZP21=297*f9>Q5V^GMg|hnLTuXl&+!1f%8154u)<_@^-%Wu0P%D8JMUR8{>}yG>FXmIXk-l=77}@W^o9SI-TKoWAxywp;k`uH zg4R)q7+xPFg4?Asm@~1o;&53ZWucT)TDyL>lF+|zqHbYlOkuAQ9s@PJo(kXT4_brd zI@{~&FsizvbfEDJdUsy!P|0y`iyw1yEiLUtZmA47#QmdwkzWp%1^U}%B~CrhI`8&6 zW}MP;_3#YPK~uP|@YK@q~q z!`&PoBr=50C&qeB5+zvGq>V$-2DRVMFP%UCG~COwlOe+7GA3=0hP#Mn-kSG#ff)DE z>MQ5RF{kuv9pQyPrJJ1)+T@MV(C}xSv$VZJlBT<_+caA$TDBrt)E8nGo8_skZ5R8v zF|fsMD>ecs0?+wrz#^udi@n&AYK`Q2kP|-9r78u6c|Ps&oP{{_js^U8Kjd`(rU&RZ z=(-6hwVWEDGSO>%Rkv)-OG-CSFV$`p3woavY@^X0WHTHI7qXCUu(D=hvi?!{QDXJ- zQOCG4Qn=?yZuu91;jq?N?NSm{F5P9?VO9+->Zdg9aegK;-9pY__9blsFQE+hbE_lj z8H$%;_@Csf5X>;{fTzTP>0^u%`Pe5=9cZsZUZd6lg-GX65ZalI&nZ*ngwS z+2&(x>!C|qNUoMODvC^3eS}|(BEcI6^j2gLP;?Isl%YQd{suPPW%tphEY?6pGVs~_Z_I|7nP?s%8ZXLJhiBWFF zS*xpGN|mXHpdOK?%t11q4y}nM(Av_I77_V{&}8#>yVoBsASOh^5($X+Y}tyjA=C>D zYef4`qkm*9D{6v+;Ej@=YPs@Wz;JVvU}I1oE}hjAT>k z!G6=;8!-@vs`-`MQeYuWMn_h0w^h&qQkZ^)MNRC?*e{Tro}F|*%f`B=A1*m3R@gAL zda?PLW_x^t06i}_W0K!zK=c!2ZHdayvVUM!YGGmT(nM5wmwyh zm7yC!dhgQAbjgwaada*o@d)br{?M=&)1X{vFB11F?{BN*Fye4^!w>lYay*&`cI1M{ ze9Tqg(5!PSx!!ee3YZ4p09hI-PG`@7klW?5l1cN+Vh^N_`uiL>LjQ*pBR7 zTc_L*anDxvAXU(dOX_u=*neGDf5Q$)t>BjJMV9q+rx~K$14l~WgR~fzE zPhI}=2!!GokR|z*AdOnm^fLBezCt2h)mhK61ZOF%R;CA(4nKJa`Ttrv^64Mr!{SXg zw)DaKyQHFj!W{BbCBGV{hTxtS+)W+*65!+<%jyY%Q+F-b4} z?+2r(=zh=3M=j=lT017t>BgE6Q!!+enHa~D>NSD|qadZJ2w4|(Vj&R9MB?+pVcOxB zL`$*z(y6N$6;0147?Uq)d?|lbCAK$>kgV%0$r>X0ZyqdGCB91Y7@Y!C5A`@a{3}~o zK< zao-O}@=qjjQ`q+7C$xDpoAkXvG8M#W^oHqM|M5D%w&NjL#9)W6E1p2O8ihq&aY9*w zmFJQy5KOYiVHioxlhB6)B&p1e(zpfxSHhk}ITmYX@dW`1S56_>_hw1teK6=E}9E%B_QP$Wpmozm(jGW6T>ejuATSW}Fpw=E?|h8QZQUDO|{N zZZvTDDERCY+G9h?1DYYvh;e5Ef#j}}V}sH`K=AVVt5vWC?fsId8RHnn9~ z{hB6-a35maZv8)=8BJW;%#hzdb$KrdHKiE8b>>`7r7DhzF@m+LD399~9K{g> z>$wh?E)Y?-{qScF=f10$UaVWLOqTOJ`7hId0GtAi_<{I06va%k zKy}u$fK2~V3at&`|D`n146#eDir;za%P74j+fI{INBEQ`xSLw)?%=}0A0FY)Y^1Eq zQ?9G%!-Dna&e)2!OITD_M$Ohg42-1}acha?iszq|t!qaEYSZAc>?xh}&SEDGCCU(w zo7qChkI$pOkKEq2Z0h7JzWuYD&qVZe(6S5<=4c)!E$1lFP+$g> zbL=%8*5enO6dQmfKUQbyoq-$7H39>O)<_Ng%;c~C(3>dOPfq6Uh4tHtDgkvRdO8W4 z_^XVDw$b?14Htr&fcHQwYfqo_{iS6{Q=sa zLBWfqEJv0tbPBlsGyvmJ&CM($tl_WPomVkm95F!mSU-ZIV{dju{$&Zv*ddN5p5C7h znegfVqOby0KT1$kW7n;I8JP|lXOw$ZUabbzrjjv5T7q9Sn-zuxvBGYzH(^Qv9|Zj`6*LV3kkB4xCEX@@{9fc!m~>*3BUc0UnI#u!46hf2bg#bIXZJ>q+y7e zqj2O+VzVIfV5pw$LV*Jh@m16UtcRSbuQN)h@Z81_Tb?ccU(;osqMF+vXvRxLC05~$ z>;$#v>{mSglZR|i0uLOc7zjL{+AyF@{-Pw=tL9+9V%tKq3DsN0Zm!RG#2?Vf^=b68 zd`@kT!PgtL)L-+1shm4to6P50>G<6<*rmP=&f8fZxhStyXor_2nOC*p#d$prQUf2+ zxj?R~yfB_Z4OtAtII)z&dT?0FOm0KYC=xc3bslBqbgCoMsG)qo8MV`s7ZWf8P8)ov zo~vQOp#ev4S;OV+sNHraOT@C48%ZC63IcSnACJi}vkh2-NBE%aMM9j+aCQX=k&>3! zxFu+Rz+e=?`4e868do2T(KG5JYbGSg8DaFv#E)JU;fsB!(J-B6w!oS8%Vf%aEl?nz zmdlgFZVBNz?F#gGy3q9Il1)l}+0gJ`;)M))`ZIeOKbbRjMjXh}4R7xTr`_tnnb9U< zZ0#ST$OhlllQ43&n&gZLfLWH{s#Qx{^>aBI)E)`rhTuZtzEET%LV(Nnl#!QleeWF! zbf2d(YLl>wLShIE6vOzx9SAPjsGq2U`1&0jkk4C(_k7r^Rq}3MKEOVYjs`hORq#-J zJDOk-R%0$(g6PcIGDBHe3v^8)u;mudaW(~6o`bI+Gu3vV$~nkh=6DThMC<58jY2md zQnl1JCbJ^@N17Y%^%N*==E;k|Q#v`U#P)@;Qq5UUQ!LwMBg;RZqAIXB%$l1G71Udg zh+`fi!zGD!Pfr^11s3De4ju!iB4lTyr2oC2LFZ?-E>dYXk74+)3JJvi@rR15bst0# z*4z?29wKQDJI#XeR;D>rZ1lc>!Q~0j$m;1jWYM{oDsa1b|5A`|kcTv9pm0Vw7R_TA z1sQqcxYr=0-XqP9`G_UDI2e6hLYMv-Rz!IUXIlBogf={cx|qW7th^ zz4{5xf}X~FO3a7+9;eXT=1N}mpW+YjiS=r8dHE;VgDZo(W1w_#ARv=ByB@vPw{!$432xq_pnle-aYuklXH5GoX3D88D0G3t*+g>;61(xGRT97T!aU*=MGe~ z(!0G@myFOyow_!hVh8SJp-FWUArUOB09v||G@VZK= z)7i^LBp{1$*YV*ECfQ~4PkQo0p$}-}a|wavFzUdC>gil{)bd1Aqe$Z&Ec8X!*40Ax zaeMsNZ5bVL5`kMm-RR_j;7usAkEu*bq814%KrA{4{j7LCiFDSL*}NOcp=Vh3Shew3 z=)lAsK9RqFGTB;f?yf=?I!b#QzI04z;pLl*!K19iO25dkaY;fYo}=yT7X9ft|Ka#q zNY`c{D!F5RB){@Qr~%f4_wWT9Ng=wdN&Ks*mz+DYg?H@yxNg52g*sE6B3+GL;n%dkmDhEpj+f71{XJyY!5^+T^*Zk0MC}KIG z%u}fJoo_SXTc1eF2YB*88_r=-QZOp8*AQfh3r}M-^nAklYt`_~3tc}{czdIhKMStsyb{Xv6Mw8Veq<@(uQb#e}|*d*X24ddhS?r-F7p^8Xsor(HM zxv!y`lm7iI#Y$xS_hHOJ4CEQx_5p`K=>F!4Lgm|2U*nAXcVv}@cLDJ+^SJlRFI}bu zq=C(gbprIGiSr&i`9FO35OiIw3II)7 zndjHNWpQo}OMpid57-Q8UgmfI-U=rYe;b-36}SNrq>|8>_VwRwANjkKD*M`DGbpt~ zq#sisR;Q*RnDtFk=pJSnW=|S>xjCci$%hbMn(p;2Wy;g3<2(a&P452~p#oY3?rYR% z!IEHfrc%6kSe^1^{BN*aimQ}s?_LRV^;%T>_luP~pibPq=( zt^s~OeX>ywQg=*Va0;64TBMXhKRd^g2>@mFb3&A8D<-|U!F9mCw{~wKJIdSvFhQ*x zUC2t(eSL1Qc_1(LVYKQg%-zLF1Ho9mn3gSHhY!L_nczU7D^G?aYO#-C59NTK`kK^} zZv?j36O(ES63zWhQI`EV0{sAAu&I)wjT0nQ{OM!Y=TX~f1s>(;yFRkT-jOWy5m@c( zHLCNT3}Bbw^-^=&Iq!-Zlmy>L2_HsS_bFe@1`>eRG~|^Ni$~vcoYnPN8<7_9a@*-j zw8bLulsh#k3Nn~mso65^FVB$GxDVC)lGjLN2&ohr4QZAuBQ#`5v>?bBNpRGqK+H;} zv1%-qtv-4madKZ$FWuRo&oVy_nL~o$6P7UBMKj3nK>t6FS2e%S@HJ(2tSZh4w zj0++2Dr%wsam*b_c7A-B-w+TZ-)@5!S!Nad0b7l4)gEf;>uB`eXkKuRu&_fB!KTOl zL8zR$Br))kqmO!0j~Hu-rHHc{dpEATb>F6qdC~xuprXyJ8$HuZu8cz_L5divM|ia{ z+MAZo%UT?d%^6;_AVr+*CSeK5=WWJ1zwk(ryqs;;{8UWo+JiOuO+9MgRJPCoL`*xsYo){btVQ6BjMW zCpop7&7&N^wOxiUywfq@=uR2f$-WVnO&0)UQqQBg6gOCchn&qpm6p6=dKk9e(M<7N zfYJ=>Vi`wK3(mYt4nTfsX2-xfYx372&*~%irnm&&oZ;X8?Q)K40zKADq}P;pKsME! zs}Nd{(ggSg%uE<1SA21U#@gle(KqRR0Mec-=p6ENUYE_z@arB`KBx{&3PkV6+`0^RgNv@5?FVbh@ltjcWkL7gFo zgudq94I|TX3jlPxgb4Gz@fcjFNcxtqUUVs?X}(Dq-tH-%pvz(XPI%kR>kO=IQ_mp_ zsX-!zm=$4%OobM3-}qay%XS9FTc<>6a)B2@+cA6rNPmcRD`r$sQlI@T2y04+p>j(i z{Vi5Q;)C(Je5huR3^ zTpQR2LDp#t3+1x>>VM6NpZ9hZFp9QT6!F0%5g&;f)pycZgMZLBQ5yb4`nu6D;oG3N znXBvk@edcn=yFMqKlj>OI2bHREKad5q{yT~bSP->hRPoG3}~^fycb7v$@2a!wdpL% zL%l+bXSW{Vl-3+Kq0#AW(fO4*@_S%&SZ9)ix<?`LU^O0=@{#8{K&@&ai{?6{#TZZgz z$|E~rsoj*pdkZ*-T(+=nud}RcApz@BTGKe42?<7)qnbEsq+TE?`hebx^TV*;(~Ffm zXaeqXl-@((*N&g4eC%$)&whk9i;PbM?e0LM3&;K!tQJ)k7zA`+^~FQPPjt)#aL=u% z_fsisSLo4eYzJU`Wr@~|SDYXVP7OzUtOML92TgHbICkn#c9zy!!49YCl(Pds@WGE| zpOLb)kuT5sHX8@9o8o(1a!mJ(Ei%M+kC6$}&o!1YQRzt$(2kZoDJ6Oj zhxb(b)Zu6j7^_z@c~L2)Wk%>7iIO!TOnOeS19m)z+CRbI!12}3EzFB*x(%GC@P%eq ze6CZsoDaAIe_9Sk?48yQYq5qWFV#e$q_U~UcCCJO;29?@)=m~JT8HPz>@VNeE#2R5 zr9NS{75b%n%~+2inf5X~XN9x)=@jd9XwSs7Nnv?MAMe;haU`$yC_Z8O+v29-{IB9i>kk2hzBubV<0lkfSymwLYqbblH=*X=FktY#|1r- zyAnQWIGU5JP)>OfxHe$9=Ud%S1PD<)F3)}Ni*pbMm{}p{jVc^hXFl#a6)}I6hv|o( zb-RYnqX1%5X%2~iFtPKZAq(Nz7s^ci4_hvk`v%zF?~{n=`t)Pt8Fju43^I!JB=^r& z;=r-pF7T8|pstl3{a?wYi9XWp176TMRK}S5KY;-_0pE*`z&tZEWEm?+iTctkYNMGm@Y^=R+4gy%18!g#Z=xi#VjPPw6x> zkw^iw;)E^t$E^6V*zzHy1`oFc!MQGMM5h> z+n<$RRKet8AS`y{oJ?dQ5w#_RdZ1AY_wrW&oTty$?)I;6jo%@$zcFqN(}SE6_%kK< z`6!@WAY|Iu;I5)zhI&?a3iv9BwhHcd%>#3c~~kqxKz)opxdTgeq| zjHKR&kJ+Cs_aX&2d#Yq~sD!NpexqIZSPpR^tlRs2;PfT(>`xX>91P>0*DO7K;h}oG zzv=Nw4Zqyu_9J+ZRAtkoaTKs$Krob*Ds>zI^}U7+d?DlW$SDFSOPehQ$q`R3nW)UP z8VJ|JJXTla5((Z{jj4_PriPW+U7ZD`Wz>E(Ms2YKAVi3~2wA20C|8tEX4-fFw^&m; z6PFr6|A}T1zV;4mHM+@2=o-0d%LKYD1!v$C8W7K=$~Z4&fndoNA)oCcerBBYb&jNa z!mp<^e=cwwEkRIv*=tdzo1Qkbl%{;m7*peG?NQZaJX;Z+JzXRsq+mIRFzDoQV{`Dk zvGzzup3@+0xp__n0Z(sQ(&!n9!w5d=K>S-s0Zv;)-pMkY+;J%cg=MfMoA6F1!#?}$ zJj;(ys7;e7^3HO-hgheY{+q`3mRNkoZMpPR`8(kx0(gNzS%lI4j3UIghAAD~0XdHF z7~OC*#Td;lY>NcWmm}986@6`F>rg;jeQOMi_XU4=bWVGZaxUd2wOTC^aaidSi!(wsT z0eNZc6nfIL)g-Eg=3h}iW4G2sL@iQ*z(&)5-HzADFt2yVjxE25XM=toHUj%#+Q(%T zkHw3H>AN`A@M&}JFf1iJ_i`P3*`}8e=X0qyMY^C}tnSl=43tZgVUE70o#g;Iqakxa z#x7%S;8!0O3Qpas%5r_jE+QdhDt>&-iP!KqGhue&D*E}$iQQ)ZpVQAR$e}YJIV=>Z zfp1Sa9Zm``aMGcHe5%f|-=Pp+Idp$YWlmwVZ(fcd3L(M1pIk#cu&X<|v;iSY0LR5J&+9h%Vc#CWyIJAFIu7 z!!@XV*t*ULx;q!h{g2UdNncjO+Xvl)6&w)9vvdylTa$?RS38ZXa2`iE6sp}LJIAJ^ z<9Ya`2T~zxl^=6pa$Lq)R!pKvd`gYQK2~V+&A2Nt!ww8h!QEdpNmANlQ5;d?83|IETWR|=tu4GdcJ=z zX|MF`mZoe|Y5VK6y|j*eYpxHMl^|BY6iHn=iM4gjo%h-6#0h`2Yh^MBMVR|7A6l66 z6BJ$GMrA&Dj%`m#oUK<`3Co8z>U?|0t4`BgX?$riOG&IrfoU68V#2T5Dn5x2xYOe^ zocBOi|HQxnctRq{(Ecu(`MqF7t0Zb;4XH|(L?$Alzr3{AaW zLtQgil7;@`(74PYiACS^QLqc_ABpWQoU}5)_dCq9(I7Ov@KtpA1`1G2A^LHcEhSOw^9?0cB|j%v$(13mf0&B4mPM6Wz&h+us!OFid3+@?CSON8!-$_4N;rctfm_ zITm*8&a@`%OznqM16!}{>c9kalPCk+6^#|(zS#3W=jLk(;$dqY(d7>`H7z!#BJbHq z@{OMe&5Fn&KH!h-QFYl6Ga=7vyd7ArN7_3{_b_52XjR;XPurxy_7Z9JMY zD`RsADY_o?4RYv&h{DR02@s1X>WP1|WAyu_R!_C7JtBqMnL<8mF^fA(A4OjbP}x+B z9Hno#3c-@^Q!Pe3+BViJU3rf3@a-724J-sTu7i+*V3sRDd&5pESshqbmaNg4jh-_vksV3N5;Q)cqU+y0uSS(B6(YB zvUmODCnHV!t4wPT;z+52GfE&tNnFLqkpyJ3iWP98$q_U%%zQM@cp1suu+gTnlKsEK z|#;YKQ zz1tYeu!pV4U^hsfx(8%QMmL218*y{pJmmN!wW(hcykydVd}RTBM|XGFRoheqU?P~y zf%mRN^+kI@3f%%0{#oLt@m0Rfe!)M(i0d4FetA^)Y^MOSxsRx;I>NQrYYUBW+HlrwA zn_UW+(A!$FZ%J=)LS|c7x(R`I4V0xmVVwpm9au6-Gc&~MfTE0+LH8fR?)9u^RJO_2 z#{zEd^>_;;(Sr9?Zx?t*BWU9df-h}DOa72^;TkWjN9_zB*g_lZa&(x2}q_aouw`Y^`z`P71`Kue|J@qr05xYl_p1L>y=8S<|Tm zyE`Q@s_2Iq3146JP_05Ja8yZrF07>7L!%6J4=o}&WQgkw_5aqkAG&F>!|f=XA6?0( zaP|8oizq%_#wWVw3;e0`Ekscjpw>MZJ-X<+H`D_JF z#(Vwb+6<@V&>jxN^SP{ell6~vyhx#6-j+NJfGw++O__HZpAj}%vom_BK>9k3*(8Z= zHANVv&!Y9%>SEh{y(#Mu>gzOA#zpazMn2i7Dm^jI7u?dNC^0K!{HB@*P1uTu)(jIl zCaJg}{%U{3E57CA2sD?Yh2IY~9O`0f+0#<_=>Uv%zZ>$xJT^&H)U^aDU)j!S0ms37 zqS)+=n)b)TiA5W~u`F@gM=AZCMQqAjVj1Swc7pm_&9n}$Ye*XyfV_OqU53(p}`X`Q}C(?>+8Su{b;p_?mSO?3vF_ z?n&|qpigv3z9R$Tf5b-ZL17c%)-O)HhLZVs+sSoAhhafB1#S})_lrOkcI@M_sLSyTz-Gar)=P&5ug zo)#f+RU|OobSnsGToU?Fm_;|-{E8znKcgH-kV$&oF!NMHEthYshf~}wyE||1IrV0zss{VGi{zZg# zE62M~Gko+|`h@z`c`haxUbDcBRfvDG{9fTq-brT!Qf!elX^E}Y$WV>t{mWixs%5Ty zoeoJ`83d;{*IK9to+>Y^zCA&V>hWPGNQONz8#82A5m-HxRWfnr#gj^%eoy`u1LXM3 zzCM8|#FWsJ0Qk@78pnB?a+19boSU_Zpt7Rjwiq~F>pgx?DG@t9R0697aRk&3d53v4 z|2A@&UxdI~BV4cj+ZapXSDM)yRH5@?zRL*w3!w}J@1Jm#oTlISuO#%qM*{;PTX8Rq ziiUST?5nF#5#z}i#NE5KP652y2=+8pSxN-HR$ z3$pfnfS~s~v!E2~eecz@a>o&qP{Am)b{ho=DJQaE z$O3(Z#w^Ug$6KhDk~|>@CBEdh_(+|6WQ_VhGvKO7vtnh9U1lgb>L5d93R92wfXc~n zkUtC+Q%xJVToBdGIygwH?4x}+U4tK9iropxOfG}=aBejb#gfooOs-y}jyDk_N%7WzCXZ@rq{}nh%7YKaq7*KLAzRyevS|vwFOo!_=g!kevtJ;duB9Li82Wrg?f8N%wJ_vyth4Y6rwfKEy zVT;5ivm@UExe;GSO<}mWn1Vr98Yb6vFSE`+AD}ZKne$HSsI8sD7s)(gY=zzrtX$g>Z*PV9(S`ilJ~S0lmKa>*6#{HpA`C=y zu!cM$r8=gpQRir!t-S*-rpwexR9m^$LdEvaOMRNR<>yYVJaoW`^7Ijg2ZH1D^UF)@ zX(|Ws2@vciXN9S)>icDR7o?r6r?;5p26qb;>Bh*-ru?RnDe6>%q~|Dpfpn4ugxM1( zE{HkLp6cwCu_q&N%#U`&^zxO}%rFNNuPZP?3D};ho|B5Zkuo}we_eL_dgg#Mo$N(f zIUJ94sH>D?zopM$CPpnUpraH`#&ieUJ9S9Q2+ax{!7}paeAf10?>}sb49mNLcin}v z6`38iHGhI}yb{_S+O;AE&Sg?*pu8Y>`6LPt=O(T>+2{^}Kfz~gr8tbOzY2k@W>EKg zBLZ=TOh_G@yyQ!1ggKZ$jHvK421mrJ9UdUf5Ym^xkV=MhJ$M`qj0MI`e;T!Xv-eE( z*~G?#Be>6I^(ljC)o7?tM&1 zwNu*$7nk~bhyb63aEz+?-tC*QPYLQ*!}x#5H|L=jkEzfM3l{1OoCvpXPGKMembBg7 zwHIv?!v=bu1o-kFEwm&{zML$=7HbR3B&dBJ(Dtubad!FIz5HRtWcbaqQq$-NzoM0* zJ3u~{ij`L4I2nA+>22;+FjgIGnkH&z0tNL*Tcu^y^e^8z9CE8Q?3my25 zmusaleodAY5TeJFw8tBz8AyTasUEHcJBazk{uXFE83@4c(2E(?og398 z2@;`S5^^ju*@nPut2Q2+PYBd8#(|=McZcC`)O&SwWhsNVwBju$_kV|Rd}DG94c$uj zzX$Y^2S#GJ=!4gJJwl7SpQli!X|33i02n?`lVaE_R*OP+lV!?;gO(=gY zhnm2QFac_vkBubUkH%SQgeair2YN=tB{yGQ**$!F?#`=hw?hLG2E$)`6)g zIzo%0U|*G_tMQ5_=qxeCg`rRwep7zq`+@QJe=vL&nd1@t_Dr4q?zk1oK@)Dc{E!gA zA7gW^hnaf914f?YolPz*VMzsX)7{pRnnTX2=}UK@NO-jxVZ;XQEbSxyD-^*1p)DCN2t0E!-v;(q$1PBZufa^4}5M8v*4kmvy zcsQa8sogexAD40x5FBsX1#9NV zLpZ4)&z+eod^()w3t((-Qrku_K2zz zLo(~q=+sf zcAdJB%SNC>|71f@AByHY#d0eOz39Vnq^Nk^G#=CwCqNM&-gF8!MLKJviQ)pyNObK$7xv@t);pqD zY+!jFFpf+`#F@x)H+o}MT;7W%^RL8hzXQ2fU+n6`s_KKH3QCGaFR+w&QEOL!)!?Oh zMH1ul5XD-l(TKU+v#P5YP|Ucg)dWKGIc%nnPjNOQxAzf2$0V(^#-3NH+&sV_yXd5gm%WSMvHBO6DXG!RS^M{B+ zxG34F_C5uBAPhq56o!TSB0NHPUnqvjoSQdTDns#?8ads>E4$t*9N#Mc)~}uJ9VOhR zaVU7}y@Ch&rD~O1HP(}XUG(&*_TpQE#;Kc8X^v2Rzze=NHHI&bwjJ!yN({n^r*~Ws zpPD9u_?CL;Ii)#q8N2z1EvPML!;}4B*(ZQ9$Pn3dK;#KQI~^i9kM6aMM`_kERo zOx!oiW{4%4xUr;w=CV7pnO z@%uR+kI=N3>;q*N={Pw;t0}BXN#nNm#$J-AhhYRu#D&45gohX#t($J=jI#(#gG@mb z6ax0OldpCKC7qYyWdPfmg|CW#Mn~Vj)g-m<-GdID{W|&@T^Bf%=JP&T$$nc$ljfkY z!K(P7E8g70y18v4LIO(6$K-`pX)DxQc|)CJW5S(2>d~{ZEMw0bx=+N+Y#1i7-T6~d zg}TMXe_PX!8VI{=f`>x5)CWGt)q+p=~l zZxag`8-r9s_^y?`jW|k<&;%03apUTMuP@{Mwb>=~5)KD^0#n_1(mw%pM=u%w$&3R)O#8&fQtjp zNf)dKmCMkGc_0@AvInFT(&3WXsi-UNnwJ>TLI>pMb9q!tgD}rpF@dlUMJ<7Yb4blb zx70xfyUHuO?QaqpXiuaRfaKP3mn;Gl3d78qK>hn`M1+ro8#ue&V0pfjt#CA{jy1be zJ+cRuc_GTwa0rhA_cjn=am|Z+;+K_3<#$ zLi64U@zn28F)T`Du+FC-T&B(x@1Rm$&$5>k?2_14rt=4h4%lO(U0SG28l#UecKaJh zE3e99D#oLjE*e6fB-*+MlsMXzc;o^xd^0Zi_Fx)^E{IIekL1x&_@7nZs+yAI4u{^= z;ZP;C*kuF4Saei{P=1G3%D&K-I3gu#XPUyNrckL@$dYy5(hmyJlgj85$6kWlXH zalPgi2DRs?V?z6)#mbAWc(b8qHevDztt&<`1WG$zT@T^A-_+6%A>9KO`uS_GAWi~w zuWvRbFq6UE`hv~*gdE-DEsR)_Ri>`{AOENPuPsfa!-|%uM}KNC`bMdJglQXz zySfL9uQCVvj!n+N3*57~GP{phkfvQ6dT~dD zTE~O$Tf#Qewf6ib1&~YvWZGJK>ps0cN;5G_%wNU!4tz}UjAGcT@hhO|Z3E&PM1z=> zJ)JB_i3|q5x_*5yWj!CYpiKJwBiBP^$BG0e+z5rxyV>{+VDfnC@0(37{q51Yw%`{a zu%}k+Y^Q?Dax=9zVNrKcz|xE%6eZYWCQ;Hii#uJ8A^$k>nb@q>U%cJda+QS@X6PD% zcgzuS^Zyzx^r!<6;8=6Ij#lJ!XFSwxMU~_#+O?sy-0bF6rr7J}4Xrf^1$5sBp z9^}mDTOHw=2P0QmnqmtLH1F#MZLIWWGQIRc17t9N$VZdQQ-K!ALJoKg3+N;cT#y8d z(h?g4=!@HwXqL;)LUEQXBkssBatQf9rBpW}PoR!Xa7jj4Ma*eaT*%bP0&i~G zvQ5ON7JOlhNe)Zs?qY%laWu~Q1|pUig-tgCm+D9D-v&F+NZ%@U*DK zpf%l`%#DM5iMyKEH+Xo_L|l&P}U`|@;ZasRE3$a$Ljv^rV#9Dcn`QS zTMZMqDfYa{fidjm*j#eox{^i{<5xOW)R|3`HH6h(v7itju^sTmVuuC%zgj@$iSO!R zI;rsW4;UB{H(lEB99ClfeBrVRHi^Lqe^t7+Jfk=31!^>T(KB|@G@4D&n~68dPMeR1 z?uAUK1r!;q^W2R>!HUu!KTCtRI0!pnJub-dK<{penv`7WdON2Ti$2fAy27a)_hs0O zAAZbmc`!dg9Y$0pQT~GZvUdPI)J4XSC;@fyGu8}O?yio2U~K3q($g~T(8E&OA1E=; z_+b2u;seL@mrFyW2K}~SD=(~X;3^2?Yjs%?4n#xbRl>TsY0#4jUoi-1bTN6vf&$9! zH-EeDX@g077welNLvV+Ar@}EMUH4ofHB#H2{Fs#6zj3nWu@}3=C}EnOi5b6B6#KyF z%N$nfLeFy#4o;HL`AA%T{;J}*3jH)dvF?rGV;}(;jF`DsZTO2r=iVD>TLdP=c`gG@WYo8>j zKp$6AQSAPI?kT8^TNB<7adU?U)ibTRTJ-()HgOW;J z(J6?IzXyMbCufrGuvB<*-D|T-^J$?>TOz6P`xQWP9DVhXGe6zjHGPQ%nk~=1c&%jp-yEw}T(sYe zYe9i(+IUvVg>^$eVApR{L&>F`K0{4B#o<(xADg@uPE#&97@Gop{e2txyP?7|j5n9a zYJ2gEKK;A`tNZ2mPpbxu;; z@=o`Rp7ESiza{~w6zsM^nI5X58f$3IUK+Y??FHNGchnc6$^|lWBoyB!*E|%oGD1Ds zp#0Urbk7b8%I@MmVQQfV5A+05D{{ScDGN6*)oP7G>mo`OlvGT3EFu-LJf79o0|4i@ zjS9>|Q%B8MoGt&-0@LC$EOK!iuZpjEZMz|u8_{HzMGYCzB&ZDeZY5rZ1Bw7RiQ9*t z9Eo#czvWq$WnC!U$Pp)fiFAhVXV&^Vc*%QM^alU-iGuv0S~=`+-j*$#rvAxM!2Yh^Dkd>q~>eefg8){-ZzJBkMV9?3RDkyuQl$QZ}2x+;yi zqS|4x<5LLDc3;^?@kF#omz#$%mu@KRozC_ildEajn}dKIgoX|dhWO|oX%W~Jv!Sth z!&evXdL{QUrfc-==-K-eChaX(kmTjgs=PVZJN%(acS#+W755Oc`RizoMyhrX2?oHV z87}__O8*cwcG^0){3-Is_ZUPdTQGgqq26Z$pJ<&7kjT*08a^ZzGEe(EHsHOIl#Sov zXiF-bMSJ+e{*9NSJo6KgUvA7yQmiP$ceA{9v|>$Bf3F5GIdp}yGktb@1P{6GV&jJe ztpS08vztxmH-^f#eks!dj>+jYcP+zeoNJ%b4ioNaTOf>#|dPc_@7jbEtGWSsU;14OB+{$A`e$O+*dL!PFYxSKKh`!=bMFjwbmGcH6RZGO+7 z*L1bc1w&YCf=Cm#YwW}dT;A-J$|e-Lp~s*32^Kw`#gAr`<(4X8duk{)QR&wx$PmAc z3C<9cF{x2#>9~q$g2t^7_XYjuTADi51&W2=;GW%9w$AN zGozM2o7w)urr%e6wesSEcgydoQtr4D;ehmAw4?S&V~go5eVV)Y%hJGG!beH5-9P*K z&s;ErG&Y?FxGiDUY6N_7`f8pIc)G;~W?rJZt>4HaGH@oWQ`$9%UqHl?!drHSBff<1 z6kr43_t(y()EgStMnTssp$5p5X?C|fWUh{)ZQ6adsvqNICkhw4bFc)sZ~751`4y^O zn|W_)WYOo;-p`E4yE!a_{|a_S#Ftq`WCi*x=@LMcp)28}QC_#X7_>?z2Htcab4pOBBScb+=j2_A8%VySb-@#ywJFm0)M8rce)zT`+$>*14WSZ%11m>{@QB z6m?^AQ#iKkYu+=sr{&VDSDml%9PRbwbuH^0CxlDPb&0*=VTb|LNQF=rI3-mQJX>C7 zYXpeG63MWE56~IQTM&5`N7?4@(N-$|-znURbLJ05^>>`FW}IC>;UWUo6N7+4{a zLT1QzVjKJ69Igh^3(=%Mldy2r8)@6R_p)FHu+*BnVj7(N9US_z!T1&3j_vEhwyodWu$_w??C*at2G5fRhr9H8im>B!Rb4xHce))0_hXJ*VnzCr;Dh+Q54~w#ziS#< zaI)fFF6$l)s0P^<(_L*%qi)@vnIw_hxA-i=QEu24HQ`;5Ff?piQdyM}{whmRA>UJ{ za-WnMz6}?NU6qTdy~!HO(gTx4UUsM6UpTcu$DyBOAEIPrWlXB^+PYPVABo{F$bFRMJm|BQGb>>K|5hyA~egzWa21} zzYpR($GC1t*q4@R2K6g~FggD-jgEfx(07x*hT7%0;Bj!TEGkQP3hS+KXr9~S@=BiG zGg+LjJ39aW#ekS07N;DkQjVkzfgx&Iyfpb0E927m@{#T|qre9DZzbuDTG|5Md-^oP}@0=sgV1r(k&*jI7*n%N+sY-7Rq`StaygOBDkc2yyhs0PpH=yba)WjPH zX6frTO1OnYliN(%Ow~D^b&KJfz@s0q=3) z{7=_k3ss%Xisd-y|96L;$nl&6q2`9aDWv(VErFZ~JtV3O^o9|6>vzZGf#Mbww|-pM z159%oz1=_{s;e#C;~j!oe6zbLA)Qu>%aTU$wV0*9L#(dH&I&1h!v8AOW7YGY!m{&_ zjl~=|q!D*HiQ7g;Fvq6BI1}K`eqs@b55l3H%G>gIneMIjh=S>ruHx^=i z6x{a-KaO-S6A75qML+#Z7^vnKU-M}0z$giM+(iB@zc7&W4!0jI zz4Yvu!!z8&j_5@;l*XnZDVsz0HydLUqdV=al|quTvBY<;Y8y(Oqp=0+mr|D7eLBaA zAz6l8$u+n-N>V!X0etC|LFCY*r47x|icDdfW>U}6snV^{te^Ojr5YrHt0P(al;feu zyyk(3sv3$#i7v_pO*>k**h(OplhCeQKq`b%RPISY%xq?6uO)W2Ms5)*t2JngZ0GI; zv?HtZL6TYQ_e}9jWB?j%AEMW=`>ksKe&>GKxR6P~I7<0J{dk~(!!I?GQ$eK*1HO;p z824jAyh-BlVPbraEHHaKQG@M>x+#_mAw(ruf{cd-a@u%MZGtQ0eYqyv1#jNbe*;bR zX1e|NzVhNEVHntC+E`t-^U;{2Tf+a^<-pPKeIYD_#@l_&i#WbBRlLnN%TB%j6TRj9 zx-qPNM{tL>A=hy}?fCeqg(IVt)D?T!Pl8BmA7uQu@IgjacfxF#g*qh03n4>NXJRP!LBjuA|`$ zwU$n)t8`EO^jsq-mQK7YW?%zLC-{T6Ta>9fytXA#2H76~!+)me1jAx!2R{5A4^u_b zn~GjU^9|H70_Dz12||3L#SXIhv8C8mTr#PaLFuT~n%ga@!y$sK|267tNby&w%@<-g zaRQwU2tctvUmyk%$*ftk7cMXW7EvOeshS+3_%5r~7XHB{v8bc@q=x2*uhjI}1;`n= zJ9yj=w`sgh`A2Yce99=a>kygo=9`q99GQ4m%vezVbA`p`g0XTJ2=A-U_u0*%4+uOL zQz-BVI|gy2$X&Bd64IvzD&;R`UTz>SU*r9)01Iml ze2ByYzLik=`TqQNuSFDQId}8Xrh&!u3%frTR)64iY#a8lh#;&Dnj9t*w~V zC5HTZgle%|URV~oplSt5LGqFmXr%SPv~`bIDj}qpVQem%30>R{u6!mij}ssYEETXR z9o2o$ZPCP@@|vEzEue>iS7}9I@;?v=X2=Nu{aFtPV)0@vZqdMxXdar`Y2Y?z92hak z$i2NW^~XETkoj#_PB<{!>))4|+;qsZ1@0)OR|SEXp*JBS^f2;A~RN|r2rGO%W zlKNYwL-;}6GA{7OG&t;Cvo(Z^G$?Z{%-nm{JAkfuN>b2kA&5r4`#?U=Z3tz5%L7So z7RgUqCG-cA|0~~w@x**D%)1#_|M&=u@CPNx($yX&IS=5JN0gD+NW*7`g&Q~nsessx zzdy1k%8%1qM?0W_A2G0r-eGNT$>X3A39o-$>OSOOnwDnGIfT&(|1(|}%VwLh_gsBY z_zekh6%$+o7Xp3nw|>lM z6NC4N20jJ?FDQgQey{dwh--=O{Nttj8VLR%h98OcdU^%+^)D@1s>J}k>SPY$D`eyZ5;Ze3L_5AWm=g0{W!_T#w(=H&B7rd$ z$#+|sV1nkGrcLmB1vpaH&JWB1CHD*_Ml(Vx;jZKa^BYZ)nhxNU_U*E7Un6F8^Sl=Z zI*}nHJxj0AH^X4`ymn6z=KbTqtb;VpAWb&{JTfPBXjT#nAw&-N?5eAijf3JbH@mvN z>n~^~9gk{JjLy3`w#xquaG3c5+y6prLwh4@b1I&`lj2PqyVlmC-!7P$U7k|Ox9W$G zrkg&ItTh)e^6}?km`s2(COp;U$gY3A2x&{H+k)=zX7&WNu#gj-y|J9S)VBm~vW?Pz z+{!wiek+ux>7+VKEE!%iCTNzDsgRW8{&XBtcg`=bfD#GLM+>1v0wkh9^`%}5D~_P5 z8=Q+mmI0g~y#KZ!RXG#NOYQb34^O!hRV3y)WwMaR2ft!YK1p3jOs1*6emX1}_8GYQ z9|1soXJW~??;jLqw{7#&FWNXttL}N!OG)21pF8xz!g87WSmkx3A}rE7NHzOtC*L6i zswRbdh+P0ypN6QJb4N?4oCL*cecdH|C_jS@ck*b(cg4fqwMJ$U-v zU*(#uo8?utP$#g$d`?~HbFTi#w^GP}a;|}p!L@M<>0tK?OnRCN0XMHKPVa&vNK#KLwj{~|b4G@_ zaQ>RVeBOn_C6TVa|9UTLXqG=&YRt^rZg1Q2E<#)+Q2M(u&IJ!`zS3A6Bd+|qbJlY8 zR&3=AUu zxbqWZ5Qi|!)M)n0KD))-fNmEBSzO>&Ob@cqxoIfO*$IwS6$Dtj*ov?c5xsV7vQQ;a zL_ylxrm@s8H(0YHG7L*-<+#iq2du+OX>SRG6((_{OHrg>B+l7Tbrs7XeoaLVBcOH8 z{6r@DQ;p+7()#zAN@?ox5IyVM{b*PRPZISMV6}*VBlD@}V^cD$^B}xXT9}=Oh_-5N zP&KXTT%Tbyk){+@A<6H4m4J}|NxeP6dTNLr+c021<5@Q7wl`jC^fav%m&}#ASLc34 z#URHM_N&pV@-mz267#1Vn;ZudkLfR9{+E+5%q<`W0`b)aXp|#VxwIX7XgC}RHEHk2 zDy%g(yE=Lt4?v9Z6B-m6CEnE`5}8+AJMNwLX-#&xIP6UElFzehD95O(&5oSOGIWD3 z*X{XjLz$zoPB{qh&5?HmY4-p-{vo~S za!m%vA()7wIQYXzdnxr%L@ZiQ2*BLcgub+TQv&r4O$7gvR)DFYa zPBc>rT_GZ#rdnbxain^Gx&wxC31C!lcCvvwb-%)B0V>^<#~S=3i5;DmP+Z>__n&RB5;e4GCqo}8Mcm?-oAQhE+tnhYY`0y>5ZJCrH4-x3Zvs+f z7%GHj-~)CgwJF9FZw*l0NFwYpH8rwJASKG8ijvG|YI5+snGfS&LaFl-Y@T^>FAON| z^-%ALM0qUNL_|bDlNp;<|EOydHsmr9S=x%d7%YgM}fbufk&3of#|J_RA+n# zul@iMKJ>ZJ`DX(odr7r;R;Z1(i~iz-C5gARwLb3oW&ta*!%@GWI8}^nudO?$fRwok z8nn;Ry@94bE!NpHuBZA-U{MT&@?j16VHtZ+D|HKyLtTdvmd zxJf;v_iS_SqPk53QwJSIqT6HX2cYYV+X!uq%6rB0d>3nDWB|YTZUr(FPBER)i~wXG z#l4TICBs1__nRNY0al3dFeGiqg5MlD)7#otH z)Ch;-(8FUPRWY@|cK?y%AeES7#A8dpSfeiu8g+}GxRvuT4s^Vqg8a5FDHNZYMGv-E z>E>pHMhc#Nxk|a6BQma^*0QXL5MM}@G&my= zV)A{$0$a%u3ie?BVj-pQnwMv$_Q^;zT~+Y0AtMz|7h!2eZQEplyubzGIE@$BSDfSw zC4Pke5}_x{6>=E)VG6iM$*iu1#X-hq3JC&ERynNcGS8lyYJ_XegH-6KbV=GdJi;II zhKl*_d+1H@kxJ8pSInZ*qPjfL2x;vdGU8-0a|qgQv--xZ^GJF*+T6Dbm_JS}jJs5do#>7(oMum{j(Mx#e0H1(EMVN^Tge)8X{AH(|q ztN4H>I3(Vq?YlV@%J+2_*N`L34*-LctX#whzyMso9){xCqd3wa-ukx4DelJ*f zJ2!hxR)$01_NW1k0@J-w?anseC2vN$p4}Z;ZrXx%;6(mPdqJFjZ>_8!x(CgjN*#g z;a|!>)H@SP-X0BwGzcGve?x^12h@&mvdIBG^@1Zk74Ycw`Zg1zPf^tIX-!nqkc|ER z>dm(au7uB}dN62m2&Sb=U15o(BvF}ic?Hm?FhB=RtYO;c+INT=`<$24(1=@{dG@2r zb5s}Goz`L(m!U?znN~?{^R%3*ZeKBU^*stACX|%Qy&}H`Z^ZKwN6p@g+#ze+0pnlH`D$2T_h4 zxWui|B-x3#tPd(Zt=@$i?rfVHwnLYr*ZQ4=7S?ry`qhZ1nVZcKQqVv{06QS7YBM5J zLn+5^QMZJll~uxykQ-i^i-9QN^|u;gTvQXSnC|MG#nhA^1Gj8{BMz=BBK;93k|k(gK}S0=NA6*wi|F zIsVjj|C4P&>+Y+}q*<(-z3GDL$dY$l=&_XdivlO%mKMFA~x# zyfSO&zHYG=8|z83L?=ci&hShnBKU7Or(;?OPJBCD)=Xd%G7lU%{S=yGcQ6(spOlnQ z$Ps8$v>jat81P=T)V1iAUhd>^(E>Q*<23m_5yLA3r0Nsy^QPTnIV{F!<_U zn6JP(%fu6mIH#QqU7WZqrR~4!v^u-({bwo<7fo;m=C;h(LFwTJRbFUiTxUom4C@^`s$Ko`;F zzVY}8B>hX71Lf2OR!)9~zz*&o$t#FWv_(vAS-+e$@WWBY>OCoJn2y)Xm&(YOjZFo2 zSgGe0++`MrQ}XSD*g4D!tqTM*%(IIg)VL|-8GMpahzEu1lsL;3P%2=117aWTX)RR^ ztgr)SG^P6y&RG$YXV;PmjQ>r27jkHMn{H$2Y#{Na$a|gz7@mq%Pg=RewkhJfrb^^= z`e2!z=XT`}8ZNYpaR&2#EMBof7jw2lz1bOo2n(L~CATbteyo5=pkSZ4NP~T`yN2ozEhDhOfM^F?QMq>fsTqcOlX@B4d|)noW%4VApKdwIxdi+A zI|b6CoG;%Wne)O3MWnGmmX@m`TMvM6J4AzkNSC@2FkHZw@2>#RD=172l3&~H-=HEV z2p)xt_)_99Nv%brCMt@CtGy}`et|b$ccI&2JJ`QCoj|ibl7RX;)6ea?)-RC~YJFpI zP+jGV=2%8;X7ZH%xl_DA)YpqI_tu=`ceDAh> zQ4~5N$c`iMtq2K>?TW2IU!dxtI6N;l0rqnqr#`WH-W7+W-xXtKKpOK0i_o?p6qT5~lfxWyrDLB;>JY)rnO z9*IVGtHcY?5OXUaraIEH(&I9{ZLk~p;1V^+4nm_YILP*gOg0BI=aR*L`;16GP0l9 zGShC_*1T&hSmU+0Q1dM}UDWYUBrAOq>)D#4m|&z%t+qN0XvkLIow&=Ew)3Wez{;6Z;CZ5fvdH}x5f^L|Qo|Kf` z*5~H(yiuWb2DyF2gwi!?f6dotS<*66`AsLgdc{X+G~Daqqs=GGa$gTH*~?_xgYG2z zi+-cDB6J%I8Cg*;7;q8;x#J(4N3;Uqh%q`}XW-nS<~1^kpg~}H9b?e(x^<}KTdTY; znWAR1cAU%2i!(N{v;OpZS_36tbXB;!yLet+S9ix^A>5TIC0ZO+>IkLt8=c|+PkCtP zV4s=_*T5wq0jQd)&!6m(8L?2k3BrnV_!3e}d_mzE&(!qV4IC_;Ni-cbZ z{-%#!9vAsbpamm+WTu*G^!g|NwvurV@eN`wf30@R(=0<>fI0g%yirdW=l%L4((yU( zpO88;-j&K0l=dO3wCoW3RuTL%QnHvOx@YNTo!$~$R2OBgr9rg-P)`P-fF+(Y<}rWX{3Hc3F8#xa$abKw-^1aVx(*kiW!eb#Z(=4i;Rv4B0a3|>W3^ZOoP3` z0@UBXHz4f-Tdsy`?2V{c$hxQ0e#p_!-^7-PkZzVNDF5{SPvur?_V$Y$1QHnOASVUq zmezj6I3MQA6+SoOtmt-78U8G&AHu|b&W`LPI^m^Q;6lWjEUVpw9k4P!} z7MW5#;edFTeUBViT+eMZ^%oJR+LWwY+*ka2sHkoM)ZWrSw=Ywe5a__1QB#QOZfx#$GSOj?DWqnw=ID?*uk@nm zKo;WJ>^whUvdF?Hm54_Xr|{nfJax@j&m<| zI>P{DMOM>KZIC(^+&!In+`gj|vm=0Rc&?6W4cnEk`Qs^AhuWX5o=-uZK73Kpr*=fk-4~Ps;Mg9gSd>4zaslJ7%39 zdY2;Dwlw&gApIFNw%2On8>9s;9yi7D0a>Y+V`8i!Fsvj$D`ftzn~07#ONW1-V-#eT9SMnC@&z{HeQX}QLfN&%DJ{u@rF-&KCq5^|v(r-+ zA2XOx${cI0bourN$J1X@ZhthGMt9#pt;&@$n3toDLqH+06AbI?a`8ed5!+)+VZ@Hy zufOJ_3KH4UJz*%o#JK-pQ*{w@fK|n53(l1HqVe6KHE1K=$);jxD@iQYo#!0N@yE#C*ANJ8h?at}@}%;xVuY5GP!1T~ZS|&xX4$+aX(JdA z_B8f6kp#G|$6CTnTxw>`!W@kmdG-<=s6%t3&AvbejYaOuz_F<{r)fHfLSl_njkuhd zLNiSlWDtvkBAHTJr7{&tG0P+jNZ-idxc+}piQE;{fM`1DNDyeneCtx0Z%kG-U zPvs4``G5DFFWd{R`OFNaa9s^naQV@>p2O}3lgYSUl|h2srrD9!2tEp@6BY{I#rI}y zXm>8_MX&>ooGQFvVcOU#%_0l%>7}5Olt&=7W7^v!6A4*!_WGds?+;%u8Y`G{qN=Gz zze$08V_G|7kwt6HIiC&0p`w;aTAl4KiQw^=tMG#;p-Z@~AC+^k?NZ^q63_)0UxstyCh9S&Eq>tGU%r1;ZDn~q-$LjQer=LWUPmx8Gs#E zZE!s9tc0*PyC4jzE?XC`-%e7>T95(Bgc=R*fQkRcfNsN9JdI;I<}*|}B6Fe~QVjFh zC={F7zL6l0Vwp^StQhgUYdgG_A$kX-!{Y&Zcc%Qg6fx*)VJ|aH-B*mKW3eA1%AX)|J_QAexqp2BVWwHo? z$!w@o4fYBXX`ZXaej?VO|JlzV&?97p&Ve;q@D+=IQ68zn@!RZAn6jxwp{v0qspMXM zMBR%m86hW&8bHwYi{bbo8utTZ*qS-5T=`KtnR=`)zWA;DriZ@lSvgs*Pd3`bF&s5Q zV6L#_3P?6;jlI0Sr?O;{TltO25L8BxiL0YhfDz^(BmUJF-ZXBj!^dag_DvyLYti;O z56RRw9A(MhsiEWj*R&#b$;?olhkYzd+Nc%1L^0RRm=;pTfrBgu;P9EuY&qDXdEXG9 z*0y_B=Q0)TA!FMx-Tz&Lqm<{{C`akQx*rPykyfCh`OtTi<;lCKv?R4o>l(dCKyiR0 zwOu&Q`qi*QY2p-RM*vQXm1r}h9LEG>r;oMG<&`%o`>3L*z0dG#j<5!B2||}V2DCF2 zs!a0g%L-MR%}+4wyD`OH;tu)ks_D+7e#CbZf!kD%ZjsbB`FAUg-S9%8aalx8jn$3# z+h0pL&Y=t)`eV#6!{a9utbZdx<~&HVxJw0DbW z{bvsXwa-h!X{aU|Ymxl!R7^zX|8dj5)z#-nh4at3D^c4w+a&q-i(MO2`4O5P}6-0qb(0y4fyh5?D%UNAetSEBO zG+%3Lf#D~cL)w`rBTM5?P7tZo!`fN={}9#DOx{;(o?Om+%2}(Zkf}a|v@FVQCI-MN zlHU~9^S9Ol#~^D)qWoQijr_=Q;+|?C3d5!nP#hk>=ac}U<~{~x!kfZdrj&rM$Y@a0_#@qC4ak9l2vHR@nvNfaEk`&G9j)HoHjcY z_6LO7ad2JH%bA7vI&_F+08B*nPelTV}0J-d{EK(wuHL>dYX zO;-aYj|%r3D~{AyRv$wnNcCDD z?RACb-C!q4ZXgoe6PZ_#lcYEF5IOHoM=~|@rM7z=SeRD-?)X4K)y+B(nkP(!Q%vzmMg{F<@#fJy`kCr3$#=kx(Te^GFluWDB+05nyG zArgNy_JUke`_dys8UaAUUBsIwf_Dpe_-D1<42aF4Jyt?S4rZ{N{}O3685aDmOb>|= zjaYh6BMzAC^Ck5>?{1G5djA~-v?w%NiPzbY)IO=qpB|MaTZT+L4{wwe_MtE2^L;Q$ zo?c6wxsRV^rATevsX!!W-vD$&@pgy|KsYXd6^G8?ckZEEH8Xfa>~DP27-O9br}S<& z;$6{H4!}3kGk8SS5;Z<=jD}g9-+#|^UnueurjeUv9?n~Yq)Lp`7cJMX}kpd|^BEb(tkeMzny)pETc< zJT6A2uG3TWggl80yFlLssP}Y^%$*C>So}}Zrcyp*tb-b_WjX;Nwv*0(a6^9#8DKcY z3aONWMs6M=qk~d4WQOa&Njt_)iM(FBNm*0t+@&>r^v03Ag1>+P^D*dMr*+t!N~z<7 za2v4}K3S>~BsYDEa>h#hYY-DMso{H}p~74a?}p~LX|?kqd#qSaXVtZmIG*xjhkCB~ z4yc}{2P0VK`Im(jpN{s8&Abc^ruA0cy*a5DRC2_;k8v-+Oj02TEi-82-B-AgiQK89 zKA4A4w7QNx+|r^107Ozx9Ql2`OSi1cJOO)XclL9)isbb`ewyPUPgbl;pgMl_aN8A$ z=+Z?`+4IzJ`A315nkf)M+@;RQJwQkP`WKbFsJAsX<1{ID%K5RZX#4~e&hWa!usb)t zC>OwIJM-B4x$;w6`ID*T4&{-@LqFzYfqhNl(<@Bw<-t}IEG)b=pf-?JEayg`HlE_! zqKO+5E@bYJmoK9Elk-MUDjkrQ4&B^r+ctecS5&TzdNb`wah@hM@13I$q1icy;!Q5+ zLxOi-2W@S4OSmCQ6}YIa$H(6=Ke84a7-Ji*^b9bZ=9)-^6?knDtMgJ_ zP>gJ^DOh>!y0&!-4U6#Shw2&FdTeoD(=t;;oLkOZs3B|Nfk$Waly+oofZyecj?FTT z1DPhfyZ70~qf4LuNWjG>kx%b~BnPd{UacJH$+t_r^-Lgzn~TkLLycy0cJM4u=jG!DGy6A0wEbjNK`1M`&fY5X3-=N5<&Wd zidMlG7yb`jeQ+em-B)+mQ-||o6I@D2yK!DV-!&mBKmU8R9)Pcmh2V*P@xz5=?gV*lW^hirG~o*Pg)%mOK8=aW zXwowWKnN`zs5(Fbk{Z5Z}xR*S%3yig{CcSORa->kV^m|%-{LBHB=06 z68ofap@X>)tZCZJJ?b%M1Jk)b69pesB<};(l4d7&tDN$Qi;A@2R{gzw&t+f>mv_Ex zy-iu!l<9j@AHd?8>0hfh@I=~=KMoOsn@R1CMHF%Pk2g@e#$sVT{MCBF=P1>7 zAP!bO72afImgR}VODT(~RXchrT;_Guf^jodf27Ux52AY8L<5>x>C>#ego&H1oZzZl zvSl@>FV7cSd`nPPc9=1{}#m~PLnUYh4lxkJ;z?R>p{fqvL$U(;WNlLl|zv}9*pKR6>um3Eyxah2f(bFYkIfbBcb3=0lu zB*HfgNTHfQ%CKAtLTd8v&pn-CQFoq0`U#m&xr)%zt&COWgVU}^#oE2BgGeTU-58mK z=%B$8GgRHtXT0DR5{NXF0BYAZ<$IIK8OL~qh`f~M{CfsTP^qkEbqc!hKW-mv)!S-h z=p0}ETAHP^l6Ha;k&5&J>v5$I%Op#r>aRq4Z2~&xJ z;o_nM-!hgbEkk#0NkSx^9lVey6UWwIJ;=Hw`iYb*fbdj(IYMAfBxPyd`-={xexsC+|vo1u?#ID7sEa%pSkF zWsH-4UW&Oem2IoYnpXonZ0B4Y07);1T8%M!GTR0v>`G*wiQQU#Te6khA4LfRzcnD= z$S%qb3@(F8(mx#-?SnxXm(8+cKY(&Uj>LicGS&qTlc}G=x47qAXW@NYSLjo%POSyL zR}%ZUbv~NEmIT{rOgWdsT4lrHBTtDuvS^PuvI}{LbxGE~nPDY&Q|=b!@<` zlXKmqfF%3~ZY`|YCP8dposd=f`+)H=_n-A&Lp8qgo}6nz29*TDJL2oK6H8z37|oUh9jy{bn?h(9i0uEpB`#wMC=U?% zQiOe6A|rVsC4kKjhSkQ>R}J)y&>4ri)EHt_!3|*yqksEaA^(+cOuSmp5OK6gny%)D zSF?h=bo)i3Z8)J}PFt>+^J_D8K)#YWZzndZ@g!f|1nYW}wru}vCT)vUF=e=^wFqVb$Jt5F!&l!w&xz5}!3ouZmE3(it! z_z2OL!%TQ@2)zxgHYdrgR$mpmPZRL|gNT2_0 zCydM^#FshQa@uZFMy+g(OYuna zzF;)OOpE0B`4NZt3zPJ~IK{j!Iq^VT+1p~KWEb|}Dv`k!G5OQcO0Pv2*yp|x{S*#> zqX-XH0nxhZz>{g)+|U(}UHAt)n~#E!<`_eG{(GN;7SX1Rq@1so#84#97UKGRa~q_U zIkf52Ott>CFx8)?I^g@H-H;$B^~UIJ?L>y~$yH>!+K(y`m|H4N#r7%0RGnAL(rZR0 zm__@>dG{jyjF+#GRUf5LhiSahn+-FJytEug83I8}?~1aXLdjMDdhq@L-omX-qHUyE zJmD7wJ_rN!{;2jYW*Y;lCT`}cUtJDLJ4yEaV{a8&Y2>V9 z>7L&#Q8Jb%YeYgPxw0@$s|{!VG}(fb%HM)p7s{qA>z0doEMuoVVdEkGR%e|!hc2~u@E7`b#E6U0#pW%}fd^LKYqKZmMP)Bb zV2EH(H`;&D_pPiq>ktE~{gAe177M>$RZNvp za$qMaj%yz24tm$cw;U=`^92tb=Bj7vk^9Gai3M=5P*75u0GOJk4=iEaxq1gd+w*Sk zI@t~{1UEP0BYH?lFu)?L>tuDwaMYH{0#@4v)riI%|I#a#Mkn;Fo9vD7rVxBM3}uD!3HCghz(F6uRR z-CcsRPCN|64(?QU6Xka*G%5)|p@61M`232XHWiIw+D-f93eUJ+A9OQ{!JUcDy@$NF z4l|@?05t>7wdTW)miDj@mZHlQ39+!0xX^PtWD)NT2_X-WY-ftX#>FAtWW$8h{`bWt zNMXd33sxTH`JPyx0cCzN8ue)wKPSxmpcjMw>YLg#0?W`|5POuvoltNQPNT~mD+zj^ z@i=V(3wk!AW~Jx=LadFYC%RS1Tjo>m4{+YMdLWkP;xSb`#ni86BX8qKa+as}31tL$ zm?bA68oEY&{vC%etjVhp5_+Ll68vk$Nn$*b$S0#2&(2?xN zT6RYD3eY7<1rU{VFB9Q42;-qm*!nNYlC*r%vP>rOYyrpB%B>_iOq!I)wqS_hRAP9R%Dz8H-SOhbR7oIkJY4t$K)rQ zK@PhaR%_VAHK)3&Ptg5lpJW$2;u^!fJ-(XWVxTjg-MS#K~|~cZsxbl0!C)nDa+e4*!yq|4+0Ew=!^N zF579Q?DuNOyg>cvh&hCF0c0#f13}dhoEU=s)g5}O46K)mnXy@wV4?nJn!%2w5|#2= z<^VNQ(H*677OjQzfD?Ql6|u_^s0RgnJv&cEmXHX1e6r`igNMc(7kbc*5=YMM zuxrk}D0IgpPdMxU7ZXk9dKm|hyy)Zj*$JR#w7%xH=k>m6~VA6PO-&kMayCpNFo5Aiz1hY1!=uTG2_R>+aHTTP!Y=MNBecM zg@I5>vy>c+U;E+QPeu^2<7s5J(1uzho74!?45G>dF~Z~C5(@wPYLzs_wrI=5y}QIu zIFgI!&K8d!ij4YkpCxfWt(ROHL8?mz$`mP&l5!?mK_xFx{T-ujH)y@}%Up+g0( zKbNoxI6!(2)4;2~Xf{;~4zQ_AK`|M3vGoFi|00tJ4V6Cnvja_TQa*XjRUxpW!DQn( ziA!kqMkzCM7pAZ%nn1E0SDV;`GOw6i%?K|3F`uj65fE1(eNXk{V^WICXngbrr`xTr zxCHc&z6r;!Bpm3aHH{{C{edB^7*uN_1QmY8) zdTk9!wSd9_yWD#voKl00>fF?6(k;(I&0`bk7KAVbyMQH-g+;PY)j}B_V&kV%ZS=Ys=8Xj7*Oau+yCz8QxA%Q)#C3QvTfV zRkFw?Cl~9JJHlBF@7W<3(v*_0keGIne0+gwUe_bImwBV~gkgFGB(6neD zHRTn9X6%W>0Ux^}OBtr3cE0L;gq}H6`RD&$rzK2qHhaUk3G;Z4xGNZ(Se&x)93?js z16^M3hu0BI|K4-ZY*GD7brL~8V6>u$yXK6xZm)p79~aLO5#gE)vr1bdFcT#^J90_$ zjU>B02h^T@H&17@)k97glk->E7|D&m{Q`#*J{Gg@yF*ik=l;)S^9G0)=>Fe?RypP2 zwiMbj{RrCj_>CFN_h+>*bH+r5RHI_Y=rw@DN6ekdDBU{akpymZg!XY8qv+PgS^dU# z7{dpzgjlvsWychmZp`fh;+v#iGr1ZgH>VmMrb1t*5+02v8;IAO)%CM$2&Mle6!%8w zj)@%p>#r@U^N+kP%UVcMC4Fs{GFX}o*JTh41kLFmS4kPWF{3(UH9_lzg0+JErrHpD z^<0Q)cn+%Fko@Q+xDqFJ&PCSY<(RGkn3cE|V|oVY6!E4kLQ3lfKX@oizAb_*-DPnz z6p$nQD0Zb3Xyqe7RN1EUqL3II<%Ykl{#bi~Jm$o$f+p(z>xvu^gphSA)WO@l($;&q zoTo*b;(puZ_F1~7p`Ayu)-KMKE&F(QvTS@_i6=g^E{fV9^|#fMkD|EX0NQ-w+*831 zBR7gf(nR)9{G7a7PIL}#pwzJO1iI&t-d*vB!M~5kj4@By5(M@SAHlUEl6t!X>_mLg>E1;dM0i8AcBtTr^p=Oob^VdJQM*V z)=(!#aaT)zo=FWLFeLFptX)Fr#$i&+2SHEd>=4CMAb=FCK;J48M4!fN6WYOCpD2`6DU3srPCw!XH7(JazGCpJKpN<4Y0EQNj%H&UxD+WfeqqfMYNI}wxjI3Y zXWGPr(CjgwMESH&k3FRbF8TF1s)c?EcN~$6FX6_~Cyj-$An-{t2@ERQ&XK9~6f5@#Ko7j%fOj~)a{R-~ z)_y4wJMe}Qinrs3{FzL)gc)lD*}+NO&{t00ML;!|orSxro4J3tJ{p(rTFpsZxOh7D z7Chvv!JeP73B%{Kl%uJGo5yNEQ0aoPE7W(3?#!VpBRZK)2DUX>A=BXg{@MA3gXc<6 z-+wadNKJWwt>z`KU~ZW5Z(@Xdb&1*6k{2p&2gii`M{i(e6U+AKM<>cpE2sEA7k(OA z&DBk*AK9t4?=yc3H_R<80{mbiwwf@*#*iU~I!S4sq6Da(`rS{JnobZ)4GaRJP(oq6 z%OpU}d{Q=D#aw6*ltLPw3^4)F6cvy!scgi1iw5OI5X&n+q*GmMHPQ5dOpv~6Bp8j3 z;T<|0@y4vb;9&4YrY)`y!jgm3Qn&KMPn z0&F7(g81cYhYovNuB~p;ECSIfi}_Upb4Jh;S=ov%ukEl|datl4Ff|-F#K*3YJ2?lH zxTH;7_nyYK0SZBzJ0u*)DfvJIA8`joB1(hg*7DHx%D~Y*azEFzh)$n|Sq2dwRkf!< zM`Z1IA`}w4vwj_@_QZNHSl9-4Er=c<<{h8nfg4x7kF|+Oa%+>Jh-bVOW%pXQG&!8G z{UUKk;j_lhke5B{iB*=stx|5Y@`rIQEP>$pIhjw{=o~0*{8XnfSZ8G5gNPnDTrdw1 zEl}}D-Y_Ml_SFGR{hv5SCA3K7{jJ^A57ttEsM4iNX~E!W^qOm{$V zbJ>^@`OEhuyfi}k63;PO$K4Q%Kfmsjg}+kJjRRqCZc%9`7>mei7+~<>U8?1r zQx-w=0pbOP}#Pw?EQkH)(@g%f1CFezWS}zG87Jt8@RF1 z4v`?Nyy~<~sCE4`lxcQ=n{nPiB+6^_-e=6ZL1xFVlBS}ImojwKA)c#0GqL(@=J^3Arihkdi<%f> z1c1PzakSQD`;juDzj>JAnKOzq&8%qVSq=9l09m5-aGr7e1j=CiMK5pqSF6(BnCzll z_0U!NDQ+3AzA^#mFdtryD>a8H1u&Er)AHXa3Km`&nB8lTsD)#(aT0Ku))!CWWvan7 zRwQJAoB+f6PN8ClsD&TkOqk}tOM@gzKT z^tvCefj<|cr|1X#v8u@G~F7 z<8B|ns=-W~cr1PA# zng+JK)2@94Cm?snY&ijq9n_#`Y0x1fx*a4%+=tgYN;;{<3!#Jsrw;byG*Q;+t}m=GC%!(EnkXRJVE(L3f?%_@KrK4>{)+r zfV+JbMH}>V5E8loAq3iNwmaIhizE4tWz?RMoFxuV8l)MgOSzAsgXUBbh9FnImyyOE z#?h)VZ9PmcI+6Ffd*;(gm4pK`v;VRVs>BQg_(z5-m(o8G9dv4J)e?9JzOm(!pth(i zLPZ=hpIRj&70xqmv8&a(k_3C)K!4FXw<-$Nc2kKfR6OP{w_&y;k`V zwk*KQ6$2`TD`%V37e01bDKWOtX>dAW$e$KHdO1zEQwMvF1lC_tWReHJ-&^m z`RX5vW!-=&7FUO(v!^U>yb$Oh!IhD3I}ku36MD)|(`ZzlyB3#OVPr{5vVOV-fdVbx z!;5it-~Fh#Z6aGT{oR%2MmCo2ijOmWqp1x7BUQi9mp{H00NHF@$MY`V4Jev;?7s3o z`-erbkGr=Cp z%%`ZTu11aY+%Qv6up*kQ2g(G{+F2?1yuf)L zfYzScN_Q<{z^$K^#yZZYHr3?l?ju|to2gcgf`5W%ogJM)?&R$+5#Svre~ZG27-gg9 zR}IiAT~93wV0mWR0VH~z0{A`l8eoXX*Igwb5x}8q{4F?VDV1Y6R<+5Y@&?hX#JVt#b(LPQ~BMNPir{cbL6h+kr62rKa0h zY>#0iV(b3YYEayz#D49%=DlCy1Ks|nd0nVz`g&+JnHN?4JuVEww#A+jlk&wpSn77A zGCKQV26b|<*u)97VrJ+6up9r_Xi0plv!TbAH6iB=n=xsx&|eGV?5+h4{KbgB6I4z2 zl2Rn)j9=&fY?lz1b5HY1aDHLnNb^dGOA^R&dYn48Odm%DtpMk0y^6DhGA-vryX~Ey zq1R0Kc8_@tdQJ8NS|`M9mk2ixnj??=2%0D@HlZ%0)B*mtnMX^q__M#3gUbb-k+f(W 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508064001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508064001-Diff-Config.rsc new file mode 100644 index 0000000..370efec --- /dev/null +++ b/MikroMaster/history/20260508/20260508064001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4293c4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN -- 2.52.0