From e2fc6228ed80504481b7a27b392565995dcf2b2e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 30 Apr 2026 09:40:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 30 09:40:08. --- .../20260430/20260430094002-Binary.backup | Bin 0 -> 318233 bytes .../20260430/20260430094002-Config.rsc | 4618 +++++++++++++++++ .../20260430/20260430094002-Diff-Config.rsc | 6 + 3 files changed, 4624 insertions(+) create mode 100644 MikroMaster/20260430/20260430094002-Binary.backup create mode 100644 MikroMaster/20260430/20260430094002-Config.rsc create mode 100644 MikroMaster/history/20260430/20260430094002-Diff-Config.rsc diff --git a/MikroMaster/20260430/20260430094002-Binary.backup b/MikroMaster/20260430/20260430094002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..bb5a42b28293bcaca7101a33a587750ae41ab6af GIT binary patch literal 318233 zcmV+aKLEh*sF8CS+XMhaO0Q9(E$LMZ=3p;}m9KpO0000C{QrJHkp%!);^}txp%w!d zijKkp`&X`}r6ctI0z@Bv?hDk2ftu8K(&_F;8Dwn^Zl3_>iE~^^0@ZA@vFrpVHy%3= z>Mpb3y${j&yx}%X3SHU8OM>f`e%qUM8h90^h#a*Q0(nyg#|%yb5+W{XyCnv*j$o`d6N1!*nI`sQ?%SYUtABW>Ll_W_%%n5QVFX6QcF#Uz6c)NI)Ouhn~%K ze;k1Gw&Z(dc?}mxnyrie>0|ERAv=~MRf?0SKKlH=vq`bYQg|N5R^;pV7*^cBORCs} zPjXl>v`ul)tiAJ5w+&i2YF}B(LSHbP8C4*UaN7JCXWLzUUD&45Ua z6;|sA)sNJ7Fy)|@os{27k3vr=6YfO{y!FGjC3vyzEW+Jj`+uv!TuksjW7?P@sIfT& z~Ou zt@dt5KDqQ@tCNM3VLHJ!$RQYPtuf@E-EvcV(j$tOr!IfB=ll>jRKuhVgT=!54@J)P zkq?IdU}uvKdM5|%=0=FG1ACQiR->v16=R}*;VrjgcmP=Y$_Dxoe)J=8JsgU~8ww$Q z>TcvWrH0WvkD|yxr8RN7+5?G0ZoA_eeE!{f=<@pDn3;lD#Gby7_sSIFtQ*2hD6luj ze9&qNV3ZasEi!GU7hEybgTqj#)$t0FRPn*i@_eSFNZwMPU8K4%hf4LCM?W2__fH-d zA;eMC?_CU!rTH?D0+Scm7q%7ECegUJmZ8v$apP2n!$-}VQ#3r?=(@Y?U99bFWvlxZ zbcFObdPkhgcY^49P)=sg-2X5wngrd@58WDy0-6w!ZpG<|Uarysl;09+ocXVZW^kIA z!Rgj+ArXB-j}hI~T_^*DzBC=&EsjPv0BZ_l=vUoS!AJAixUqJgUw#a$!ysz%Az63C zbx;@4^U^ev<|g=^gvqm_@q>gy;0u#`sxq>=@RW)5;826V5|$-KfRDY>{EZ|RAJ+^` z6cWfmyCsHe4sNJAWMfgmBaK~DQmx$AjGVlH=o!WMhV9|k?vIGv@%5?4GmfU)ROq@R zzhM4v_G;ib$^=F21EoyxOT(72X&N9mx^L#28Pq$wcq!!Madu2#n27b5dESo{-?A1j z{9;j9n`BCk_*tiHg~Q5rMQ{^xw%88GZizep3t<81=}6L$+LYO%$4~c?x$GdF`B%3s z+wkypNCkuLHytGgvbI>1*dUOmdAwxtZp}PVx1C-O$PdJp<^s*dXRx-bakQX>9dO`= zZ0C&@FCq|SLmj{$))ODs$_Kp^rUi*hYRGqs>M!4|=#a{;IXt%TpYCR(U#+G2k>KJ_$I=z8#WC z3!(t9_!c_h2_(A}k3r-%Yd9rm8}+#_~msd@R9h z!sg>?ik=jqyG6L~u@+rg^>D07l>Gt#L>|Q#>|wg!oEQzOlw7`_<2IFkcp*Pgk5%yf zb#j8p3<{%nYVCrL6yc&F(HfwW7Y~aJaSHAdhU879?m0FZ`uT7h3>V&rUZ0dj*FECqDECu$0FNDogCQwvJz*FBkGWWIPvamXCZWx=?0|st zcg_6gf|p3zpU);qDgf5ErUjpK_BAU1lJ5BL9l8@}1Apv(+nODJ!Y2$|@?G z$>?y=Un$af*NEa%o5ECh+~Y)o=}R(E-e})yKmt=~?*nsCu$=L2WdD z3kt!T;)Z`Z4!66fTg!|7E5dAb^>u-7QB?p##Pp#Iez-ic&=@rgXU z=xRTX??roU#qRWUbo#=cZkpp2=ZA;5&wOAUSXxkTe|5AdM^GmgSkGv6i=eiMW;p@@ z&Ryx8WtpUK7fnj>Vi@ZSFphdGQpu&*$iW45uWIDdV9qQAd*)EIoY<)Pe=}+?@VBt! zDaG2~!on40pajOYa7_e9)E6N4Wqq@-_5)|i+{VkVQDO}9#rXOD8wHA_r++o@e%?3! zc({|+aL8bdG8B<)rpz?5>rS*u=>%=s5)10PBL)0CZ?&~_qE1pENFmfeVm=enm1QB! zE{wNYsY%fGfS3=mxEc+3^x>FnSS0^aRtTbJKN`YldMO@kP{LKF5O7$tmD!qbHe1jp z5|OH3XPS&TFGPZ4&YDG2OF6VL3Tt;j&U7gWuD` z=|n{{QTUms_7o2(i&uUPa&8{9P3Nw`^y@`d+&3`_b9tFw%kRl2Bdt2V`7P4-p(lN* z4HL2t!fN?$Ufd^6J;BQu(#EqS?4H7>!WVX`45QrDa!_faVryOZT32q5Aer)x1_7>j zX+iIPVB`bHp4<6=-905%YwrX7l9xNwxTL?FC2~k`{KH25Xl*jJem@@4V`zf1+=Ezu z_d24mg7vaqTr~w!?M@E$ozzOUnl^Y1F-EK1>58B>JgB54D|B?>oTBhFt$+-IaDJA+ z_sE-3N$HxW9OHjzy_Z!E4rlMA>{IVsoXK(9h0~z-fuH*1rigq%l`Zmo$yJZ2tgIO1 zZ&TITmc8wgf1w$Uhq6bEgen^+G`;11{f`vrwwm?}BLh9MM^sNW&%Y6qJXc#W*V@t0 ztJz`Qh1OE;9VR>2{FA*MZ@%^S z?=Wh^I*sab6cQ!xz|Z$F!;J6p;L7RI>uVgUZ6Fv2ebeW2lPiDe*xZFik(l$XHyI2L zfB4x71N*s+>J+uV)|5zP*UJ(ZI9G{sSNp>D=Oj%yT(e{{dt*X zT%~P~EVCiB2__Yw`-#YBRS+6?px$IYTxG5m4|Vr@ZEBcjeOQ^;HlJHn>H0(+?kwN0~YQ*tw+*lG-9Q;l~#^XT!K{{ z#?~VhQNp0=xLj@EdKB?;Bf5W@DGVqUVO!Z4peyr((7zn)FV)yoqH1^7vMMY5dxx0Fxu^0Z%%DInHH~F>WbkG_x!P`xFyU3C~Z8$fk;vwdaNe^hH3$UD5 z@;?Sn*!>e`COXfeLgih(O%_yTCMa7Ky!pG(=>l;`+pn; zLlDyhuh1t0I`8!IHglX#M^J1t(&9%EH)ajA?(z)BAw&MJU@`NrXvS*v-TBoq02HYqyl77=bJB17<_Gb|_-Ta^4EEQpU#knRik-5%D*M zph(k-VjV=-fr4V3mz6SBwlW2z>7v}c(UD-8;FgyTDRtU@*Ic{AHFquJC^!rLbAN)o zMs=``j<&L2#oM(9LBxmMStQIpT>u=x^vIpv?>Y zT6TagC+VxetD={@MREo%m+B9Sum9K+Ojn9v{3hf8hubm|4ut1;c3nTZC^ zU!k{()0~WMV5b0bpOA%@?0sWWvyj<^K)X%}0tp5ZfSp563xSQ+isGT|35fLtEd@{x zBty)782U>Lw=JF6z2z9s5Q}%bOW>lP83QF51CfxJ{UhhaC;ygkgiz8_98Jizgz zxT+j2dfScyKVM&hW79+h%!!ZF0lWN{z3|P~sg^NeU?KNOOvtP58E$=qCVfLpq4YnuvTXY!{a!$TGZ-dCi(W+FkauOfM>%WC_gb zs|QDHgO;!r0dXmup@*CH(21zyeXq5s-VjA)A0!#A6`fja;np=a;0*TrFe=tGT$bXe zd4{FJ?JE1!bovAWJdGf}UE=!RMmjxfpQoe0B#ta@q4)a9X9UfF3z1m@xMpVoaaY68 zNmW)&xZOY883B(f6LG|qx9g?x0*Q~HC0d8q458#BXoPiVj`D*=-aSnNBg#Kvo=XE);-II}&Np}+;^dS>%uj#^W z2#We>6xU}8Im=O=vjPXgyRAepca(z<6x!V^V?KIH&rh447u-XoF}t zLxG=|$S=rd8^vmI78a5}s8T;e`Cp1Q^JgOgs3EB9OE$LMWKl+*0!!Gy3)7Dmg;YyC zr(BEY4|gc%=tF&LdPpi4bEY43CjdANvDFxRTOe)3I8I&F(K7S2dT+f3khTMoHZIb)riS!+} z80*t6Csr&Q6tcQxKZA^05itAD0|OXAig!b2L=~x8fMVm`mWj}z6$HDraH5JpX9*J2 z)cZje&Dkvk=_G<+!8OvuTBuaQf0cp}hu};_1bI=_7xtadUQ&l8W9lTj6euY?jD6J-N|RLe5P5ID+ERI2L4cT`%kk?d>(O{ zw(@T$Vo`LI!qEFd3j8GG&`E?<$@uY#Q9;Z4iN;?a^@&L=lEKQy2n1?;Ba2@ygnV=}Wf5I0WSJvi?Pq*zO&sgo0{}m;5p>b<#u; zs1CDyiRQ4y-OmdCCl;{y^;a=u`(rJ7i>c~dMlb7PTF^FLRAMJA`$=mF$UtjHJt@th zxp3qK{FWSd8_po&o>y^wXl$`eE0XAOL&x}D#pSXNj$gv`S7+|qd(yRH~9r8L&X z)dBZw6M+4(C-McN+|{JHzg;EF56+8u7T8$4EHcVCzDS^~I{~WYGXM>C?TaF!b z%DrXfM6LR)_h=vjOz)_4llbE|rep5p-c!Myg7#z*0XidG{sJxY4vTmCGSnV_x>kEk zO(S;9-1$E@Y0#qG#Kdxe;Uxvua?=MRQHcieX$Hl)UV8(909wfJwG@RA;O1$P`hU`= zX;6>Rp*aq54Kr8-`i;0HE~9omgAp!V-k+3XawX=-;YdxxQXFD45VEcgSbBB7DJ zaf9*H3=`!at^2*@-^d?Yk7~oSHq}XmYi2af3AB#ecOcq!z4xXf0nchVb()F(OVZsc zP}1Q*TGOTuj)9pjoeOlYMrUQgTx=;ZCcyZPD(`*o{J%~o9E~+v1y0sXrzjCZ)3dRp z@GvYS-QywT76oC7t1-k+-DxJWInt5a4^$#hq9l}rBhJvn(l*tSf2NR7_g^l&FMd1q z=?jOA)cN2~mt3GQ7T2}6a^+HYxI@A7Zs*7?Vo0vasoHMIf!5^;4;2VurrrvRXB?n1 z>4Jd_eGDBRpm1TwPw&v5SD9P4cS0#smZQrOrS~*G9ZV8K2V0d*Drzc-D7os7S5JNO zt_d&<@1hH|vf=pT@c9T-l8OJfNwA<;*Nk%2NCW^0aF$~;qyI@NR10P|A?TX;9H;ts zmMLC=clE0+>@N{s6L==6E&&@Usy)ILddROw0{F;?xmHy zVUmwoh}L38ne)xPC26u6y)o_tt@SF)ovLeu>rLArr;p6gz+XV#7|_d^$!yM|I!4PA zD#zgQR4i$61T4ogp3H%Q`8^;G(*QZr#!!!PRk`3j{6&5zpC)v>@{JqxS{bhrDYgr9 z;kwMjax(!)SsmzW_F%CN+&ffZ#Dl9Lt_3UpquF%&G~~q(Q!qp>0lSgfmCrnK39f61 zr>~Nh4Ao_0JO?zTlwZcHcfBfx2E+L__emNVSDKkIayXyfm@uoZk+3e71AJvb(9|y~ zez@w+5FBgrS&RXRkB+?fzNrF{q`Axr4;omlv^GM}KzbhhhkfI@onTT=09kw5>KojQ zsUoj5H@C``LCjqEYLO?XxoK#)iyGdNQoSV`=r9wDy=H%j%6KnP3Pf& z+>B&z>8wF{eG**#R(9zh zT)6i>g*UTVZiI1gAoim~i`7gsl{s;bnz^L1%eUHGGfp%{QRPI`jtT>P6B$P8`Mor? zNim-@1W&_&9y)LWk~cnKas2k;zlI68G+`NW<5uJQqwG2CGzrbX;Oj+ zH*-}a9x<@vV8h1sKIOR&=zvowc;i|Y?O4XQTofeFhR^8y({$~DhZ3kA#4hI+=lLn4 z>QX{geROZ?Wb)uW_>|1=v~q*d0$-hBon-&V7Y_FDy{F^$$|&-Ud^KT!@7Q=HyC4Rn z%5?^rS{;7plo`guzf)YZ9-vym?sn|-J8XpR9Za82aGmo?FMh0t+I=OMo;EZD$?Cro zi*^@TPBOFkDFk6<1niS+%cvzj#XhwmNXT-taov>5hU6U7nprHu-J;o(lcLbAQ6U{fgz7^Fwy(XGvEFL&1AhWWmE}=qq?}+DTg67~V zn_LaJOL&NW5|4>UY4}I zJJru61ayu)LZ+>FaczI=V>51ntu>iTb@m-UUTtLktsMeaBwrQ3%@V@zZ9J<`;i4-DxJOZlmh*<^~A57F$5!^ zE@5rC1?ga#GIT5f+upn4C_^C^)l0A|T9WJrjR1scDb_rpYz_*9kYLIlm5oAC3}6IV zespKZGi}EL7i~dQnB-RC<%oay7czJX0M%#jfG~rdF3LHQhy7&CimTYzJHn>l1n~q6&aQI=x83~(Lsc_p92@eJ zaI5EK$%s~kmyzZW=gfdA>&X3ceZfM>SnA5}D;x_A3{4f)7eh>*ON4qK#4^Xp4D<}n zy%(Y$jwpIhSVB1b>R|v}O{U7iCI$Wa8OpEZtL)i8FvVIb!DTc;j8YHY!3#sCsNbA?v7#H4lk|8=FX zr^O7a2|u@=is=?p4^ni@q{?aNNUbgtVyQS=#S`5y10x`FkupP8YfxZ|6>EYefF^u= zDhq}dL5K0nqb8=CnWJ1)IcNsilh`sdNN`Vsq^OCnxbRB3jr1n%1gz7%H;0Bgk#T%h zAHe%R%#^w=qWyh}gcJ(bhhc^3gOM9xS&EuDY0sv$EWUf=mD`-_md8AS$g|!-Ck#U; z8I$|M`I#5vqm@9{u5p2QGZ-|7a_g3de&x;FI{A$hb|j?A_9wVvzgBi>2yFY^0qZK? zXwPRsVFRu+s}r-p*hk5C*YrOAL+^dj+aSZE4lhFGOmz}nw8!v0@Gk>~W%TU-h_W1t zNl3QVv;RHe_kte+STaC!sIvr8@pS(vgOC_9(ox_8Ed=~M?k2=l498U;1EQtkn~ZC4 z*CyLxL-7OCcs*#GqKXq64XKAeEDkBBrkBjoGFO$jn;b7OB!G!YMH_ab_xO9I_feI> zt#qO8bf&~(X;Ss6gf@K0aBUvHH9Pn|TzcZ~V$l`7PpU&>XRGUYb;I0344i5_VzgA~ zGIEV@yGK}(3Fnzs3Fz`3C8_6vDa4wDh+O9n{JlbyTG*`3!el9Q-bW`J1{Dgm59AgVvrfG-i#hB<;P}^*gE2T-c-jFi+(xL=4$9pel^0{f>(qt z`^?A^vh6u(-cF&QGb`L*)NuJEibaQ3Y#4v~!0?fV_99(mgM3keAN62U=m;v7S}oTo zl$t~I@$I1(Om@!E8#*q(zo?&T`*#!eI#o-JW5Nx16AjLZqNh(*ua1IM!9*U!XhgIU>6B5Mn8U6%p+rH-v(uh9~+710?*i3T^hp zN-j=jxRK}&Oc5`-+)t&K9)2r;Kl&dgE^|t-$sH%TcOVR1<^?IBPtuMdc3kU;I3=sN zHJ=6y{DB0zy{0mJ2~w-CF7M&Obn~SO0m~Gj%z;a z^xTp<^$!>!XU%@s5|*%%Q4A zSlK#}=D0DK+40(mWZG+WTzVuAdPyyPbV9l+&$n*W;M7+O`j(l9Cxzh3;xS(SE(p`w zx1wnT!$M47GI87ahJ+pQg);z7N6afDs5VhtJ^JyZdfFBb@Fu=@O&YL9Qu!kJ_V-kO z3j5aj!p@Vwn$Ks{+=OIG_3yz608<>$UW%+>Q)4PP>P5ODH|e_swX+vlkg$-woY?{p za&hN-0hvUs2yOH6{<_M%E5~px|JXxxB16nHa`6q`FXIb?Xc_m!y1lnUq6gw~(<^GU zOj;3*0vL(mrR=)*;U;r5YfpEnL&VKk^R#Q}Zg*;Uwq)=Mji3e)#C5eMGhM1Vs}y3% zWqxpqT4v+67gebCx0jA5O2v7w&A7*gH=AA~ZAc-H;e4 zc70msH;Izk)|?%HRI=sN1NXADzz`IPJ+G!}+8d`Srbl_r6L?qy z_0nt9V9K@)hLzRk{;R30j9!$^yE6I1d}|q$*aq&U(NV7S^r}?5oKrW!|3h`3G0lCT zM%fg@SWg>THbG9p8w-W1zAs_3e}?P3_#Q;PVfOW zW4;+OHP~$EOOm#q%eD62lU`5`O`jRzQU<6mue$-Tz)+comgd!-ySJt?8afhUF6-YSpsB=miRHag z`-Ac~2wZ%nUMTM%BUbFLblHMQQqCniTtOK)e->`F5i=;qk_P`u%%jQCZF4^t_hW)o zJa9roCwBKhf7BJUGI?XBdYrzfCXOLE%X~ zr#{9q2BU?k1DFfio|&mv^CW7W7WSj|Gdw?=vvC0ywHFJg21f{mOImUlQ=w-9autaE z^I#*(VJsmF#I!dT?Cg^~xJepOY!ljBr6jgB=*yPg0nQ~Y9@;_IxI;*i4nrYC(}kQH zjFG>SgHM(Iqj4TKKq4OlR5nk1q-Sma)* z(GeFulEc=m8if5by2XoB0X-egXPQ@$OMn|mK$ZALyv109T&N-0S{|ctw?h$o_V;aG zI9**=6~{}M)IVaZ;3bpU9jDHtBUEm#h4>hZJ8Asmz>FPx3F`kaQ(qRy;u0_`4G+5j z^~t8?2Lkmh8n4WR-e92rt``B!Yg`V9`P~=9bIE~)4TZJ2Iz0o5B}2%&+wWU=ixGR1 zZZ_xgnX1h{_6bG5OAu256g&m_**ZRpnA(umli{rc#bJT0LDX@DP*mQStVt_2!Pw*_ zr^Dr`PZ%=B^S66ZyQf};?;GD;z$Xoan9hP{2N-70ia3E0|8B;HZ45Sp&=Wi`<|t`W zbb&H27WC3RBS0lXtO~AGw8Pe~7x;@SHSkk!W?F7r2ha^_lsG*3-5Vm{geu%IAG3rS zj0IbJ4j$XdLLi7Ng0B1fo>q-_+`E$Z3_|8u5)QOZqR=g?8EOlNE!2<#F@g@dsYUb? zleqc1)F#oktNJ@@NrE}~W=5xszwXM`b&-H*b8vR2*{B{~{$dh`>EulCe5NF_1V*nl zFsfAYp=Uz|;uA0u;peq{Y%4kSmIpmau2a8M!D_g#yoh;OB+`n|la~}is}sN5U4m2F z_eqHZ$0Y4#c8APzT~i)u57h{8?5I8;cqNL9@k$CC;`x$lpyVzgjMOAZlh6guj8G9Q zN7QoaW7B13Jcq+ubE~YGZ89njbvdEz;f_Z&MAiR6Koy7nA$9k{qLCs9#ZeUR{#pAJ@*I3^}TOT zPc6`(PE@{vry{nDzCB`xZ`7Dl^cvY&pCuo@5x~qSOL5y#v~$z%mDB9NCCDA00@%=Q zaNtlM!=ERPR}Wuol#+1?mmAn};UuGxqy(-_Z*Bin?t-J^k?UeWyq5hOXWdVV=7+u| zY_yguugD(w3IsOqy@5z366olM@2m;1DNJ!)%^Yed*yg3F8jYnNQ zuWzK8bbZ0*rM=f8^-n}|l3pB`+E)I+V{Z6N9Z7M7hh-!N+|6ATXvmpg zuUZ#C5N#GU>x1-fhI*`EA}W3H5K-EHZ_yzFS2IrfnG6RS_~(E#&=LQ*CFmNu$^$WT z#{bnZ%XKy%;U`jRtqed+vCH1%WGvSmzx}$3^gu7!O!K=&PT^if+G~NxG1h^2$>}V=n{e>lb-rk1PKxsEn$s+UU^aSbxKeMklSb1vo}^^hl4n@ygoG_~cJ7Gfcyjv>1T+ zMq9P?jsMHT91=hniIH<&-#9h9nw^%-VklPq9gOY7Ge0VnS;y3Y6{&FK+>#jF_qnTApR_cEns&ACD-Spe3^4u{jMJlHnjKG_oG?e$7do%Eb!mqK5c)lxFZt%_k`2xq4IqAg;=(&cnDx zko7SZ>^(Uoe0B(2Vc)30&y@eh+Y|&!5`yP3)_7Ped+|tVJQy;Mww78wJ|eDXBPQ`( z>1ZbthTU^NpOqQvq*KHudo*Ix#y|>5`Q_;qzkFlsm(W0^hnMVtqFJLk zSCT^JgiX$nqIN@=d1UD{U2rHgXMVG+?;*EArRba8i3-^g`JkXi+c=KLnB>;Y83`Tt zjZO7$r4i_uaN<8>^9slqREawdvenuY1YbAfHNQyBjOoJm#}H(^6L^!Tf5g2*bW3zp zTdny2h~%ef^dmiW@R!TZC^@qqmmUvU=~1*6; z@*5-ron&4>bi0k~6p~FSwcgI=yt5J39pg+TtJyAq;t)t`>(mqXlxJ+QXC#c*Nko22 zX*W*-y7j9g#lGaNqtHuIS=_gPFM*zK_d4gAwrCUm`dr4g0J#9yTkX{WZ-vsQ5)L$znRBa0NrYHB0JL`D1~{+E$!U_?zwLo{K-0RbOZOi>vI<1ll}j}UM{ zP)(nvdHOCP4YP%yU^6Q7O-8%I6knM0M6bs|n5>ZPW=L?=k~I_-of$vx`Zqn__6Y1a zZhXqSL2s0dobV1-4v^M9yX;|B2Sh@>88QhQvATe;@PUsuXf-|{X_;#mBI}cim z+ReCmYrU4oSHR3XQEWND$5Hd`$)P6aA`}pCt`z1Er(0Zefk5dy^nXoLb%XMP0T#q? zN5F()X)&DMqBfbJVi>dusmpm%j0890x#xq!wcd-j&GliE-3}K`W>uu9gG}1crgH^S zCpwukW?ps_!1o@2K^2HfA(x8Tne91C0twbfV;r$5Ac$2WhMR>XhH1t|ePwV|@(y>; zvFVZ&HcX%}eKxn)u4d!@O1YtT#tQrtnLeXLhue%q>FEicwnX_6X=-->AmX{AElTwx zvTdEP3Y5>^`AKo?`o>4w#^CgLG^ZRgW0%Ym>U8`tp%oN%+CBVbq3PrV!N=~@iYWl{ zjmGCXR1sxmec41fAb@RK1J#@vqt&G0c+Xp;PhsjOCf$w9rRoQAn4bVt_~zOt5u$oiueOe=E!)wniy&JIPFPcR|KEobmI;whGD+z^)q#)MGv%rIp;#^Zf|{q;{~ls zr^xsP^9gk;Jg+y=+<-WAL%j7#J6#PFF)*cXO;s#HA;|bbfzMm*xPNRsV7qJ&EqapPn&-tA6GN+;bz0xP#z!E1zojh#UGPK z1&?Sz0?FGVG=Zbv9c)usJ^M1N_-8cYK2UlUjLHPN^RVBq8Y-%rG4llc&il9>`LLb} z_sO8MC`Bf0{x1{5>8ZRCwIT+&JM9|`dsTaSRN>;$CR8~icCgN+gc>@T=w|qsK9crN z^T;OtqZQK*$=F28vW89Jg8;3!gc{SLIyYg*%9fqp`nCz>Osxbc9W~>mGdaU=5p_vng z%D%yLmkw+Kj%%FI>)GGSR$qE4R}0pXs-BfU`blDcw+B#W$Qf8De3~cP)+m*UDBDC7 zzJ1{?8_}ts`W24r?U%b-LO~EnWEkD*^g|3_@{9EwAq(EfSt+HGH4<(u3-!)K2jwZN znSW=AGhMvV2hzEV16Tl!u5JZw_z4{!Tzu^1ghl~92={KZegl93~u?C#|d+gkR?7M#CryW8DHtzxyxl{Hgz`yVt4#R z$Fu^99NX62vCaR{ZlyL(?s}G8>IFbOBQq))qQ($rlmS_2WlpE%xCgqGe{uL;d#5KN+CYXqja*CLELE>PCjj&;CQm3 z-Z1gE=i)0_G}A2XngS#gI9nf~M$3_5@I;jv6B-2DP_HA6UU#rVdeb-6KAk-l{XmUO zgDL0_-6SwmUt>?`V#vJ4Gu1J1wjK_+gwAp=p0d+42_B-4=2x7=pfx`78K67|d*fpI zg0SHZh3}ZDw~s}xgpTil5xmD@K3LkNuPWD-`=iSxBLNnAiWFSPq}~L-52b(pQ5D8+ z{WiM>=wvn8sw03AC6eIz5F{7vFCb!4Sr9V&8SI=4&W@zMnt-fckCYU^_?;Mzf;ScJ zuZ8PS>{34vGbXU$+K>$x{f|5#=9)w&@#;K;@6E8~S=zW@v@ov=uroHb|D|@OOMM6O z>n3-v0?#u)#6WFOunN{a+&p_a*K2w4^_uLX>XTtbDLC|{8u%8rTY*E7Nav|Zz5e6< z%3P_5qE+cLqBRfR*FHgY5aH?ExS7eN9=s+M=Qlke4 zP+}+$q%_SmyY(qA|F=;bVhM-|tF3P{m&K!=q)k26(mI92W#^1(Cc9cZ#@R%bC6~v;d$OfX>IRcQiW<-&#JUCr`w8G{Z8KN24K9Gzkw`KlSdGp==ecp=vaz+5T} z>$;kxtF;adlJ1<^+CC^AbGQW64my(aYZynZR>PA*IlkFvb{;0vuI{uO2%N*i6ZsuP zN*3s}Un&lXP)g3BwzkiaD3Y%Z@6`SnzZ^NOYkBRWE zmqGCtij|BTNh#J@L9wOtr!JV3r+zEKdoYQtyznCIowJqw!Or-CQkGII7hw#9Hm<&m zdOZPJEjdq--wL3B#h;Js!>hUOW+PRTQ{j$Gubw_QR9=$xoR)zeEm;LVuS)GN)_t*J zN{l@O+PM;e$6Ay3nvm|ycM+&To62@VB}_ZJ1eGS+gQkv`A+Vkx9n-%0Sz|Tx9gwd-pfN zBjn}{togKk({I`umAN{7D#4pei&HL(e7C(|DwSI z605Q`OdR`nDYJSowjpmwAmRsglkG7dXh2kGZC0e;cbK}-* z)5(x|f(DwzE=ED}k>*XC<{&oB-=;-+^Ijnjo{mK`PGe;;<9e8&_-; zWQeFOAs!8=`C@)>1M9jrR}K{V0;D7;&wiUpIYs47^B}C8uf(M#G2;F(@KicMXSahA zj`lS)l8)cAuUTh4t18}la?i{R`!C-|v6)Eg5C4RpRU5_hzzc(et7Lm>%Qv#R;C|kS zp~9*9Fe$ET6zE5FZx!HN&&U)MapesE!xi)5xhH1Kb(}bm^h^hwxh-$>j|)U3l%=Pe zNtei%VKbEWJwxv>82mR+RkkZ3sdq7#8X)l6WK#jm4SABgqx-d8k-!$MTWqAXnTIMg z7z7@A9MnUZ_}%|?O*bw5!oI@5SUC_4j;jOHJB{a3=zobTG;#gtX!;t#1=Iq&_l^|r z4R=Dnf~y#n-D?#&A-y)&B#!7Okcze})VY?29MyWG>2^%e(A6i#&~eXZqfw9Ea#~dD z!`3Y8g*-%45_$@q%VpyoSWYqygcZKHYsaXN>4<4>(NWdVIPm>R>(UWB<7f!>JC@ga znmtscjO>GreB~v9Xpg}WBfSCxUSC!hMD=<%SL1@WSrO&4!LM*l?#y{onfWK)uPrQ= zz#)xDq!^X!E;Ca27Vg+U@Hi|>v;O^W=}CNck6&seW^v>Bf9eTKHnCREMUU$0`Xy|F zqzSt*j?f$bkh8c(z~*fY!!~a5z3f>Oj}uDhGC^BAfS6({?A(UeL%|~;*CS;B1WlCn zanMIXng8MP4Eo?VTUlyr>-L9Kb@b-8aRzj`wjjwI4uQ1hL|NfXe6a(Q?ku7D!{p^^ zo`S>p8?-@9#i-wW5X0@y97wuIGf7VuqN zE2_Dqt%2wFAR;U_8jsjo7_ZR)&K&cm!?`AjUgqG{;)G++bx0+83ETz|x;^Pf3N-g@ zbc}Q;$+-=~SRnCH3vxo!*8mi8Z{SCRf(!#SVpPfWVabcg=Brql)=oLK$8i0s*O&o8 z@Dpo57P@9QfSD!8;s^vs!s-6nI}|LzHACTlf@To=vh>SOH61^k>@N-ubO{SjYa5+= zkA(r3`R=x0z_L@tpbhk`m#;fx%-UD-F}UqYJ(MlRVU`gHgWgJ{upp24Ruj7uCi`ro zU-T{%EU8bxqfX++#jqzCIBHAxj9>Pb?VZMm*m-}}Y|kvGXJ(@mr=OlCM1!iYWxS$a zIapnUc4IU#TUd;=qlb9_QsG@nuwd)FjwKK#sSI6SL!nW{IYv>jaEeV`|I_7TEj<0!Mb^ z#i=`#fAic1yG~Bb^LrbAA0X8_tt}3UQ4z48kIyR?R=#(Cm%LX{Ym*E5!x)<)Z@JG@ z+GjDgJ?p#OZR@Fi-TE{O5M)$Rn$6!8Av@Q+c!K{3Q{Dw+P@grQ=(E&7wiR%gp57u- z^NQFo<5o%1S|wVy(zryDJU&!9{yH{r>v*kQb^+E>^L2j2A}ng1-!rW(Fg#;{R?pSi z?>W5WIW}J3&i1z&BC>ut?3)9i3yWQ4)t-dDwXx?mP*n5?JL*bcCn^ZL#y^}M6XLsX z84Hs?eG4EH@Quy>XRuCo!*TUsK~FR~QG6g-VYy<&OC@h4NcUgLJ~yGCYnU;}q=<~I zvo2KGSF#@lfuR1p$OvgSe_RPfe+P-F7!Zjlp=izonXS*Zp2hL?;|#(YT$)h%()y%# z{gdenMCdW;fpdcm_6V9j)t99bz5 zaSw!<&+y?asE~salih3z1o8+V(h=>3`T*?k7=`1!)nbWF93cMSQ*9*n(?HnDn?Cty zDA(ueoH=Ba{~Nd&>6Kkn#eQVR;_9nCHnlXcAn&c<>!m4i=LZxM?7lX{xkdqQc0_LO z{;!c&{-Bal@xuWBKLEfl9Y8-LZ$TazK25I&FU08>T%^4YRo`B{Wo>k%Ejn+qsqXhq z$Tdb7=w|qM2HZRb%d&29QP2=B)F(UgzSR&U`!kNmNRp8FMj+7%DS8IvwxpaYnJ&W0lKGu ziCWbcWg?HbVF2_y_XR&b3sTpD2qC)p+0Y_yjG|Zwn4BRc87N})t&I5qv4e|atCr2z zUv1xKvGKb~jXONCO=&W=+mxaSn;w^r26~iCWswAl;Q}|jsm*(EimQ{}w-szLQrYl_ zucABkE2gxM2rRYvNKenCNpC6Q+<$TsZie*8*mM>bPZkU_ zvI5KuF)o1-1c%g71fWY(Il^dzuTc|BVHGwu4^AFt7ss!-LX*F1{ z_^xD$gslZQN&tMdg_~TiT01jGX%B_fp=HKY<@frqo?%%KiH%O5*MZH6@QQ4eh zWm3UdqyPRG?>!p3 z?tBTrU<`{I?-Q?*Ug3R1wSJe`t(@F9)~+KDPt|cslK`7~RKkAJr7$mE9)uE2V8l2L zrVEYh0^@kmdQUgad=MiNu1pzSQoHy!h=lQ2~pQI{t)ad*HTs(pL3lJ!_G;2dg0+9 z9U&6;l|7K>v#7%>Dg`YAxX#9V7}hkszuaq(`998eEjN@R3qn%l@Vwy=SqI>A$n~x5C?Fmr0?Gt3e2;14>i0oU*l&qcGE*eCWxiJ1%UQ5#3VyMf}q1*t=vx!ZjzlL*ST+7qy| zjPpbMexjmVX|1u+?-U@p$voezFHvjej(xR6y#)&c05-I=8~Q!lOV{?b&2bry=m;5o z_|zEt8(-DM+>%{9)0%7MnCec8N~foYKL0$en2kh6uFQoIHL6eKs5NWPal54Lt)KXS zOZ!B>+;qq5FQ6~m<%b{Du0k&t7WN;04qrLl13KI*lN7XttTh_pcirk<{g6wbNWH%U z$p5(K?LDMuL7r!V6@8dIyc|WtzKh~mlb7yx`@2=cobkRK2zITUjT0n2LG~u$c$Mi4 zLmf=xyW6T}-MIAtd7XwER)nu;CBltS_~gD{uYwqX;hRs50{1$Rnv|v!d3#S3{-s>Y z(px>(yMJ0Dg;{^!e(i@yW;?29-jS}t)_6!sMGKmfqrhbxKWRB}f!Zx4_~ljBDtHsc zWS&lkH4(l+Lk8gBWX8MOi=?0gYlD(IJBqmg+X`|(;~u~Rh^~OJX)8G#_KNoZ4Y`IQ zW5dZ6_FW()@c{@1L$o%dO#cj$bRDAZ<`ea4rJZd0&{=pFlkOt}c!H(@x`W1!OyD~a zCA@T8P0IkLOfRyk49TW{z!mY|&ykLyt-@HD3<+mcGn8r@0Z7bl%GZ0bN8%su3$Q>) z(0Wz0G(%Tp%KtqzCU;vr{@r|g_h5Vh6y>E4io?k;3smR61@7+_Yhq-6y$Zo;X&?8L zWex_+%X2|(hf0h!e>?d0!+X(|GJ}cXONl#2!@6p6&|;Fz^qNpq6yaNX7Ew`eb}=WwTJ z@>L__+VZCDTZ-=96&G*IILonq;pUVLx9tsw#(Cg&+0K29pSYX41|{56Xuqt#tJ=2p zBCvX>xaJ?I(G%;MTP;n&QCm{G$z(%t=ChH*B(~XqyG=tIYo0F1q;V%0WDW8cqkN6iPID3oA)#D`G_R~W6`gkq_J#f; z+NX$uNQk+bGi_;a!OAix?KLNXWj^w5!h|Kg8o6~g+$zOg44O6tGHUD=5nPuUnvIZ@ zwYF&qu%(-M_Zkee*=xfIJ%$VF?Lv?!TlNLt*8xsf$AnwD-t|;wBwqM{$)LnS@Rktd zv9Kf_vS1vQ?RbO=I{D_tbyyD`O#s4}w@s60IvR4(eF|5%g|^MEIaqL}TP8xm3U5_; zWLi}>SaRq$w<$fh8Qp-s&a;|BD(0loO)I|G19wGh5y?+R5g+TAip+9-mb4`T2jI>r zdcc~C6xtE3_Y0XQ4A04y`DD|5F1qG5I}+w2d~Q-$DVuq`_CWZ0r4*PiU}8fadzJAY^4PwvOamsj?{e44-*1BZxmoz31kmWoF%SxF?2| z^tq2J7t`Y70qk`vf(f$?bSg42#klT0Qf$uNGdouNYRHDiF)mY~Z?;YoKPp946%4s& z$A`wm&c}6&&r1fkLceUUE0X4ptSY0Pso=~#&D8^yii=`NE5Hjq;ZORfRIC{1L)ak4 zWVb*XmVYbOMBJbCVMMyNRznUm3lvo81c)!2>v3zjyez{I+z}6Yw`jj z1vSQnm})248(G7oneoTZseKfFJvQ(i{|h==ov{NLIfE3ufgwf_eE49bvic8NlXbB7 zY){WFqP{h)9fFuJEf?%I;?KQo`j2Z7eP%6gPNzkO)--BO!}&<+fZ)y;^P^g2;V$ZZ zyL|K~dpfswW)Te`aa|Uac0&O&7;aQtnv3Y5<1(l{PUAP{9$TP$;d*=&yyY(}T%1B^*iH>YpHcyG}|*!xfs zx>83xvnHai6>=a}PNz)VI*bu4EG$`s0akgo4uPR)pL?TGJb#Gg*$7l0Jz3gOh0KNd z_E*a8=W{uLPi-qkt#+s?ZLHdoiNIPV6P#EX%u?MZ=RJ&Ibt!Lj%Z@j^WCM#MXYC

W!qi0kRk^|<3`Dk()m!USiGR8&KyuTM~=o!;We~@uv!gr zfQ0zgMlmGU9;yXgXNi*qQD8&jT-H=$wN7MlY!|FG?O_zL*lIzGv z#hI~o89{mzT>7Kbf^aC5RSD)_BdTumt;KR+CW|MT-ImACO-+I@D0caBrOA)IE=S*zen zAnqLvzG%~fXIujvk#&BSi3}PR66!f0M*DuB$|(dy=>1R1^S)w9tk^IErQ+kDlUg*t z_W-O+#yfj@?LmZj43?gav`6KTI1ukVwOm4K1FfH=_%EzJegTeR=N=yHteRq+{zSJo z3Y)Eus%_kSKZYbZw0R5u!*nb6&*N6OstYMXMP?A&tXSh?bgbuYp(ZDUx%CBs%osO3 zuTX>dOEoKn0&7nq5eOP8fhMr|3FQ{z;HHXe;*b7_ z^}FHR_EisnhXIa|nsgvlmy(ZKDw^VJbzUYuoKmGJb^tbEaJ4Z=egj<%#}+jfrFp`6 z<0)HHsOap-{KK-&>|+pJY;?x+%JH^G6W?M|tr<19b=eh?`rE#OmH9aOaq9s)D%uNl z9WB!d7bzRgn@I^yjCv4-_Io`jwFT98$S$kdQdQ{2}=MjCQ0EuKN-q z6sS2E{*+BGp7N@C`b;n>{f}i10v*zjs#Py8Uh``Bke5% z%QK9}L`z2ZbpuzS8!-6;-d)eqcB!!CV!S%zazecs#Yru~IpqTQ>SRB9lEwKCk?B|0J04 ze+M(Q6BCNQi@)~^t=^Z&$hzY9G@KoUQuoy1OCAxaE|PLpX8V=F#_R6eA;$jz5cN># zmoQP(C2&V?5eu@&0T1J;Yjvl6u8}Gx5+IfnMj`IF-zrSieuKjC;@4RP$;^|U)dZhKZw5t zlbq+kP(fZ**Kfwt!|aGg;e8kH*wVT}Jtc3izlzOVM4S)VrQ{ZHLW(u3AtIl2hj;UG z9M7VN7S~&s_E$+Zj4##vUoQNsgnqD!@|3&Pg*vQi`rx0Hj3@4m0>^6h9hW!}T#9s5 zUdqex#lB(M&6-SwTYJ%Qvp4XD@L)1&(UcYa1o5lQMc9?WUqnH)y$?6kLQ!YD7!#i~ z>eSL^`=3bqRx35HvT=ftuufjnlFO87EWb!EZN!7 zO%j&WYF;f?7kAPM5OVV?I#fR0S|bg_T?&+nKFKj~i=t}WO7ewPAO6r5}kA+-pJSOwo-G5*c4{h(>Az=d>N3?`t9*!}z%~)RnlF8x4V$qE0z_K51BKM$oP^y z*6@;z7za*Y!}O+V`^Y40kpt!QNOMxmPN`UcHT+S0KImEf+F(741$VGDvrGr)I+u40y4E8N?f)|dxL7> z6dywIghs1s-9GziDNNXXcgI{0glh%Nuu7(fmvy%bIZHo*W?@LOW=$#T${mr}tjr1W zk^v&KVAkEuYU{x71q%?5g^L4yt{;(Q*t0_Of?y9wJctBv%OD~?c+QtFs|R{6=iL9P z6z~_6-r)|>*D0VCv4eCG-;(u6oaPlsB1E^p;7(g3wQ~+&cvy z8~_3WV}(#o?=x_#7wCRu*b9nRUmcnM`FAmR;($ZPT1|N!B^uk8xz0ZVHufeOy>P^d zw(^7dq;QMRUt$-~#)5~aR47r&4vU549nyEfNh3EXi^05#D+1~1J0cZIrX&L{)sIf! z4n6B-Q!Zi-Mci%vu+d~(FodYT7dI8D zn( zx#7jI!U4<`C+9q0XSWE!dp zOdx9|=9e379M1)4S^}nrsLqLI6KKiuBB1qx5(=?6)rQ{S)vVD8>Z$u2#sW)mU;jn2 z&k^%8oqRz(K_-jNVhkU8`z26Za?l}^T==Z{*@*TFUR=Fk#&ia_5DlTIF74&(0N2{< z$h5106tx#!BO7fW;Gbr~#l4BJ-#Z8!@e{;Y^e)%!J{3F^$xA~Zr|IS%T~pm1D_8MH4|b$!qNeZ zWTpdgWLfpU*DcY=nYD{gI@|b_(6nD@$PX5z-mhPbAzT!8XzOOLJ0#I{}!@oY&D_N zhFxv!H!V|nnJVYyOrvSyYGk|D0Vc|x4Lhur4kF;;0lPz$0ghJ?(% zUk}wdQPa?NQ(1LH>Uz3$7o0e5?TvPv&rhqMU@b~(n5cQYyIM<(kaBPW_hzfkQivSx zmj1imRn-tAs-O|}7U$en@&2&|_G3SnoOQU4}uq*lu47aX&a51q!$xrxJ4Kng=coW>DK*8yh z?;sKikeNDI9HAF9c1jpMkUtT(>e&B$?MYa`mW!Tpf9TULHGfT)u6nNv^|Y4vKx|3; z78)8W>>}f{z`2EM20bGc+Vk=5L@9(|?2>1yt3G;yP)dceAi-fIz^NWZG$fkLehY0$ zply@qV)sYA9;wj>kY2|AO*es)1g6!q1E9WOBeojUI*!J3VF`fRUSKmION~si^t)!B zuZ*uif%=aL@3F&Ij-dT>8R3@S2Gz-5Os!fY3*Ct_z`YKCd{_JhEvWby-p5+X&usX9 z2D2`n^8lV@K#->zvqG82iCAe!bm}Up&1a+gM5s+KyOk2+H*x~NWdw{igKYspc)6=4vfo>H%j0RJEOg;PHRQd%kW|pn!~8DqGpo zu>>maLVHronaw6fSHD<{jj`MG&yf=~b##t+Knse0p`n#h(_^LUl?X9@fm(84SraoY zZx5L@+M#>EJ;(W4BrW>2!cwQR4nl`2SHww0Hp~tx>S0>{9{5MS2p8RoD8oj!PtZxp z2}+r6?$b#9qsGnB4{7G!r72Y_Qn&np`sq?+)ChzJgQDrd`OrY2lq4>9A~0Hd63q32C^ z9CS%yrm)%Bb~i$4qD(fgmLP@7egKHdvResjR;5b;3Ti)5JUq38YPSD%ZTjo}DiIR{ z-VAQocAik9910N{3lG|fU!`{P@!!oa@UTk4W~uod!icy^OUg+ZX^?GcZHN575V8Dy z`oduHqi~iuZ~4oS1kJr&g)zymoNPXUGdp!GNfI_aqfIIxC|W1 z(9$=V-Mdu!h!V~08BZaAumBW7DTuQF=&5$m6hdF0tpHqZH$~)T^_hRTFB8BFY-BbW z%wSjA==j%O%)=ShzE_f1zbH@NNN(|^zS~pyj<@^<`2`}Bzr*ZFB5>A#4*%XHwbxqU z{rkgL?-hp=awlQ7U+H5|l zNY#hNz#gjl=2sS~&7eaIrzYEvo>sXhC1mN%zq#n>r zdcmM(LVwikf`I;sTUdJY)$}AS0DBFyJqxmVmoG#Hc?;mP0HSe`k?F~8KCDPcyAEbzNr=OuUG_+GY4&v4L7TG43I z*BTQiovXzfRITMkU)z5-f+?S78gksZb-Fdc@YdavC-vs_=%2ShKZ~G}pL}qK6Md^8 z*Thd0^U5{oiT1_8Y3h@BtW0l)w&945$`G#>#w_Lj%z^*J&S@A%EnI*7cYvj}R?%3| zrgBG_;)HSU(+x-;hI{Rbvj9xIwaXo$IOH$QoX({vv6xJ8Mix&w{pRDQCy89y{-{Hu z?N{t6a4vld{EnP*f+D()E#1D`x&r3x5^|JaiG?g;l4$@SGEQqIj@R_=c%bG|K1vmL z<7iMXMCK?kqsBS8eL11af+*n-=q3uifx-FK|Dme_akJ3TXvqj2nU;gdO#SVpGAE)woOhyxa`k+k#A&5J@&P^Jn{(id)rl;*rS zQjd!%vajCt_^5z`FK=Yrm{K%;yQN7{!RBO+Rw>>IHta-^B_Bk?7a==|blN)zQ`hU_XkPq08P+ z2hk2`^O;ZCk^sU0Xr&b6iG2`4@^0JKQeWtWXUsQ%UMOs%1#+lCB=;K>co>%{D%FgSkX0QzIYrYboltfC ztQ;$8(khoII&M2q{Ev61l&>5X;d|VAEv$kb=lNcPuvmwPFO#0n_^fur{87#r{L!v$ z+fS@7j>g&PY*@C}EKIUw@e7K}ifF6`-KQ zu}es^K-G^lwJ`ucFd8QGE+b3V0BT}w_EJySma2@?Fw@ZIPALqI3Q<=6_6J@^Y-HvI zd5PJEJ-TGYs1RM2tux=xu7s!Cu575<3PERH_a@ZI)#MAhlx|`$G7KP7$kH40d(IHb z#QUwk+mYP!iLQ`sCuws>98cfA&Xe0^3s_@P_<{F|RYY@m+WGq5{xr=hyq@Mfi~mz@ z`R@;G7BP2*^Wu#?G|WAuDwbl9!k&e=9tE~2?PT#PXTqWHX=4d)6pUCh^Oro=~l)XOT8#g@f{@fdN%u;fOzA zguB~>4|OByoaZyP`izz=9Ml;4ayifPD}|8bT%_Hd#>uL_E-3%0-xSSRK$XmGX0Ftv zL3gL^(S66#lGkQ7TPOANbi)(MagB!|oD2Tj(~hMJGY?cpaB>V)DV8&+$ChUh*AFqK zWhMG9cmx^=&0m+AL1X2&m%8Wh3LsS(f_;U=veI#XzDS}T=Sz8LVs9dS)9An^D)JxqxK$RaLfa3et%%hi?_n>3+_Nd{>S$qfF)^<|a!|{oEWSd`rD1rN0vby4;Ki z=HPjZxMwD(+h(O<<$wih>m}~xWz5WJT}NBL%}le3^0oE9YSSoBIvQMT`}{nad$KOi~f+eeLRFHyw0w5wBOet|Q&PB*6`5!H^;lUGD%21EKst4Df4tx-9bZpRmV zZ!L#sx%H!+DUo%0>N^> zQKhUAW*z*wO+3uO`{e$3@fw0MA`=@1p;Ar4@A+IrC$Db`IaWio=7*lN0n&c>LE= zRk|<+b$jufH4*I$LQ7ZF<{M8Hk2UDTqQ8=K$0P4r4wqKisn8PzO(3?2YK+!9?fBGE zA38GsO?5OhK^b;V5mI6;3qQyl9-Z4#fwA(Vdrv-<}1K{uR%>0#XV@%f*OwMSDS|d$z1`(#CiMvma z4)x|1(e5}B_m(U_zy#sPWFqGb@bp>%z|~k0z{}tj@y%v)p{Z*+gx<}>>Sd`&pDn9X9=ql53pSUYiG7L8aq{0j6AZr zn@tw{qnWWLbeHUu8n^fO48T(G<;E(JiT$)7Oze^GMpMHYHB9XIZ+)|#4#wt%h&Yl? zh}Li59OP48gI(42VkCFY7MKb80DMgi+ZP9W&SjQ*4dPB3YHucQ5Y|V{TbY{XmS~$J z;MQI~{HP~$S$;T!!?l5tsJ;_~z>~8-pl%ft=IQc8-kSqH5jUufU zD%$?-^`3`*p@xnZJS?p(`_a2|UKH-%0g!Y!nf6@^c@$kXsBH`dT)sq4jg(w zY{WN(n)@bEM2=W$?}3}G+XzsY@R~#!XK8Xqi{R zXqq$!mo#WnoJ5^DwlNZ{bgMLf%5z?25uXUV61ArMP}D_Kj)(3f2tJ07E;t@0Y_6xafEN_Xzkn$l`A$Onp5O_Utr?$*`O@dc$gB36SA7t(rc$y`Jf zB_=z#RynWm!g&<9N?4Pa9L;{HV)^=&`)V6EADWl64KF#?;)~vmrI)V8lQ_hc)HTw( z*|16qBdJ&&Toi^@D&>(^&Bt((=p^nTC1LG4-VbTO;W+_Sk{JfNn9Qm#s{IPm)x?ua zcceP$s88=Fsz&B6pt%(4zai6sOZFP9=iIrpz%ML9`x^|!9&MmH^Vq>Au~?Hg9B;Hw z$Zw-ZYor7Hrt2(=#2ig{CtJAI^aPa9MAB60-7=8@u3xq8$ zr1Y!D;WG{z&@b#{>R^&Vw{De%fkQYTiEEs1G@Ue4kgBshjnHjO#9EqjcDS6#dId*c zA-zeEj?n_J_Ho$ebLEoGTy{Y%0+V5?Quw6!$4A-Z4n*i#5bu!H$wBynV1@<#DI|K6 zxCpP0wDrLe=;kUO9*lp=k8k@5V~b!rVCJ;{CQHkDcIcM``&U%fRa z*`8Iug}qSfMZ=LjnXJ(V2P+8OE8di45an0kY@$%qeG%~?AguY44=@~`+U==ey zm4^%AEh(6lPUs`96CA2qaE#T)(;t6vm)_ZIq?W!Ss051SAiXjzUWsG?IT1b(ZjB4J z{M(zbA7v0@Q3+O;Xe=nX@CgKwxoE$tj*(Hg2(B2QbJ;Z6M{3tKg(KYy;|xriucE5+ z9>S};O$M+8LkE#pH7+5?m5Lxb*RKvtF#YrhXqM@#Gg20xU%npWcjA+-FRkjHIhDg3 zHVkFqYCl#_LLn#!JerOW&O(~nYLo&DeGW#}OAI24KwAl&W`LsBP~$BjwpALl7~qcZ zHVr+jh$ak!@YP}2&N8JI;UuYIR;0$4YET2RjIzeFrcnMQ#l9rCma2z0519M$eH3fc z-53d37rZ*p*)wyXjq-c+WRy7pk96Gj|41aF{MggQ5bT}9o3`nEV8x1QhqRk78Btdx zS48U#q{&pI5+U>ovk!}}M!VJGlQ=|m<&dJ_S3OjYhYUO>f>Wk?@Dv?SX_Pj2p)XWk zBnu)v03ue;)L{yaUAW9W8m>5{ z$$mr9zHi#&!=XG0AsDtTdU(-r8+0XY=Qq(ygs(2kWO5=Q8ZkeoE*o$a-`LU+&+Fm@ zQfuYf=c1%1~9;Xmy#;%~eid^TKmFh{5g0jV2$C2fynePFvb{p0TBx=}%?gjC_rI zIY51Og5MsR_B*bSGat|NK=y167I5$J{#VWljA+Yl%{W*uu3#N#CT=afm{Y%yunJu` zc#lMODi>Y82CouPf86Ck{;OkIMts3M!?>Z55IGooQHF%W$nZy!LiY63ZUa=ZwcfnNCAucVENy|bUd;&Hcx6t>2&=NxY{UP7vFXqMj38phkV9;=&bobQ( z0@|bw&KyvJPwg(e{3PRUV$%Xuw`<%cjm_boRR2A~NdB^rx;MY4G-B1Z4bhICG~@7( zLz0i?K{z^%wRHU2MF83u+vs_HFs_m$JM6R@iG&&;vH3^UHT4i7uOD^^P@Uy_|(8b9NRl$I+n5rwqMwJ$RPtB@se&A@WfEc(e2B0SxN z;Lh0i_)#b!W5M>y49kI#urRK0B;ZO$*u2;uxx%AU3VO%9yW zZFHNU0kGm`eGcBu=FvmQ_e-QEO>^Q70rSyPv>U4}5!o!8qSoxTk!kc>g zw8Rd>1LzO1)a$ zI82r{4Vi_py0->1@r`zQoeCpdm*4U^a;i`Yyvc6ba2jDPi8?fK3UUSoevC)ml44&c zQ2qFw*^1pHwypM<*CjN_qI#R#uSgdq88RV4l#nl9h=FL#=Sdn#c#YOrr&{Og=CV`b zyxPbTeHRhLaKxO!Fk>^*U^TCKVIP6SlCAyfg7&y0AYDlRGZ=a)uoq4w-pO>4%+>|Paqd}8(Lq#YS+M{kvhL8rfT2PA*S-4u%vyf z@0+>`F*$r6<|W!g9vC;k4>eWT$P*JXRe2l46(fF)l~48U=X zcrZqI2`C&3OIT${&m*Gmp#;QvtVY%o=@fQ%2(vy0UQVP@Z&bpJXr;b|7UfIYs&0na z_zr_D14+pA>WdxIZgrBqHmtv!QfezbqW+{$U(+q8G`{8QvTXeCx()b?iQCTRX`V1~ zw`rSXdv?r(J^-yLh$zN$C81xA3(U>QJIFZpN6)H>=@a2$*CoQADUOEvy+eyaA$YL z*9*4Z(odQ&*8>^-jq@pO;A;fj+CKd~8>KKrT#)wb-@nY#h>;d&*0G666P0%E-nXT7 zvuiQd1sKcnVQpSv}XSoM5Wnnho8Rou&_f2Sz1Lv*1Uh6B$ul46tM+s?U+zFuPBX{nN)cjfLm!suM_?QO_G>Inv|K|xaFhH8-0j==t zwh~gmZTrntym2)e=pL<{k5x(8d7(%5YEz>sVS);;vRK@mpnQi^gbhWG`yC_cZKcc}IZ19Wbr@!lKKu+05}=Y0;6tnozF`RJOHE4|KbK>#}HippD$} z$ru2Kil3mgTUvT&qr16bY?8j=W^ZL5jM<|MU9+2cPnuuW_;qPK zJuIIb^;%9Cf7iJ68Q)NbbsoAuMRjeqKJ-h0g|B;fvIHq_#2H_8vz})CMydcIxXWY; z56LuA)ReP7T{hxXh-@vwXg0%p)npQi6tZ-29STSfw);V_vftKnftOX$Ihyg>0+ETjx_d91qtHUJjr(2=~A`N%?tmr&lFB zDJa(BsIa+_h7&0RdvWXwdTy9L!VP3j0A#UdF@54z#$*&?P%;TxV{Pe(!*{~({q?gh zXPzPfwP7d`H4u)JIn1i5CV7ohA)Gs>QC1DzUL+b|xnJAbL!+&^=nSio9&>{^Re0Gs zH1cyq7a7(#7KmachK*^qi0qpt_~^n!D28F(PYfb2ck(J+sBaGLA)jne_ZHnOMMLYj z+W{;OtMwopdb}I$)91wfnz`RmA_~hZcQqFWWFmEm&lYri=Mz^d2@t7f?nzJfbnoze zI~kl#JMJ%n@sTO%qw`aL!qd?n%xffPVYQ`}$zr5-Yb)Jbx8)DGW5N{UxC)lpPSL_wBM4EBc*#QfW2fjz%rD5>S!TOR2llU2 z%^n}Udo%m65%nn_KwqFyZ!o%UCDIKs8OM355X4{nc3?$$%aDb_Bl1jz+;-_pk|{{A zF6Pu$eYFyBXpsW^MqxF`rbFA+|LNy1kW1zVOn|;I1c6bb#K~0iPvy~Y>`xemQsYmAGR~pQ`Sk4~@W!vEi;7@u zC#y=ZY+`JdnlBuUidpeo_3@q}disEsMjCe%OiU2R;sM=VevSgr`i(;mE7_5dqc`!L6mLNQP6R@}ImZ@msD)!$14i_3p)NHnsvojlLth^C2ygZL!=-fur12k&; zz<2tr;pdg9~=?P!cbn#&es6SMp)ggk0ZITtQW8U zR9(G`T)K94g0`}8P4QsSp<)Gkw8)ncqX%Bq8JM3FwrUGk#Y=*%R81@MH6VXp|5juo z7^pF7W_o~mSk92*pE~u9{slw=_X?P4+-7d~-V)^e0pq;37R9H!8uk}pjpgo~z!vf%wVT#p*7=Uv=QLI?PixC;m{24bAU>G^$` zSQG1V+!SfGq%4xdax=iz zs&1iOT|R(PAUU)Urb1}EZ1SX}o6&l44gSI9pu3{6P?7wC)Gp7j7+4^`)BT)Ij;EWr zuLapt`alBFt*)ms=c)qe?qFQ_f_6d zxBKoIhZA0EgR(>IqI%uxkxHtGvzfH_nG#btuTPHeBZ+2~#dLY?MULWURsgeCCGusU z+b$?W+vL6Q7Kh-%Br@f8nlyI7=u8YmlwUKy0GN3pf?pJE5Lrh|+6M#I6}gOWK@MGb zblV2k6zOz0T^}AK^)Y{OlP+l>rfKiK01HeYOC>9siL(kj-a^`UtjW_Gl^ml2j#Xc` zuZImZG{Qu9vHM}J5N+Z4IPAU6!!fJ&ZE(`Q6tM#@tmN4k9jcwZgdu5ZUQ}o? zdyJ<;U}-Z%SQv8ARhEl{Hxh$>ZpIoG^4Ap>{@5>^#amQ?t7uv!gM0ZOkYTa zK;7kNbhP8!vDD><%ttJznkFpr@mbFK+ZkqS-=C&tOT*y5vXY-alLGp#e3%pEy-s2` zj%Mp4h<^KF(@9w-2>=|L*SRARqH_#vmS;)|^dL~#Znk*|Up1QPYN465H#P~hdR;6F z^F4YrkZrqo#;?>@D$N&%i6q9pkhFlGV(f4YtQ#%2LL{N#w;z$y4)^P=F zNel_?%b_z(<$Q~H!jAhb2$W{)`HJi*AW@4tXOt}=%Z#MX6Ft=(R8yN9UijQa6G?)BEu_m!=e{rKR2o{T?^4rP+xil*U#1if#PC$iS$;y%3)&>L5ir zQV`iWs#A8alo(dax`7V6Oi?zN%4s-6hvnB%x%N4$KAHI={&}5h|53Y4aK{D=RM{GD zSxm&h?pVLb#3#j>=Si54lmd}^?PdF;vq>J!XQgDTmh%NgV-CE<92q%t?wwrwj1_Zk zoG6a}k?L2U_+iSUqTT&BD|N1i;&A5|zUCU=2#mQNX@oSHpLD1_I*IUPY@Uttg^ zlTI1gUL%lQd9jpNVKLEgM%|)LgV5+1C>ocj^ab2%72ay}`pkte^5i+%) z1#Nv9Zkb(lx$yAfDa5A-oH~S2Ehz94%fochE>28j2Y$ykv~kubK0*cIJ7-mz(erB} z4_#$Mf4sDAIR|}eMpo^!g};?N{Wcy=IDF$+R;*w*O-p-%K346%a&K2J3KMVNmpao> zO@p+jJzoO!>d-u_vEZ+gp$C{HJb&#t^}7~6kOSSMG5Br4@VRFrNc@>jFJegj`E7b+ zag%|P-LUy{K+##T5By`uj=hE0$a%&Il8xX>1IS7kV>x@i`#W|6Gsg z3=w@^+lRlnWE6El*l*GwFO&G|o$}nQ{Z;8hGOS&4;;(26ZtjvARv0!^yMO1%oG_?F zKbhBfKuu=4U-&`39GD2jPydR0+ttQhlIIK--7SEP`rc?Jo2eFsrQrsbk9+a|O;%ZA z8$~SNm8_hpNUL+ZH!)}fk^Rsstc?XOC9S49*^f*pAynqRLDXOHJPeyU1G;CUOof4Y zUD}aqIJ`kqBappKRULDI9o?RY8&l8Bh!Xs$p+D{SdbTe=$uW|NW>M+Xb!pVuMtXLd z{F#6lN>*ePy&#ue*l;Q0VdC3}1DYQWki}>ufEBw`?dVWJtyrNqv2ju8*v$yNA5&QC zZpTa|+UpBALr8#I?nE+5a9=j~edpd~IU z>eL2L14O-_Q;Dp=D+8i(m=(zpRuOTQDP)t&UMo{xg8Acv(9>zf`e4&G+lc3fTyF@ygoDz? zL;Ca3YgY2n+~+N#AMa>m2d_eBa_#P-I1m7MtUX%lp1_#do%olcRX^j0r-B zKXnv8;~IuFC;fR9@N>QT+<1!hVT6kA4+2CyUd98#zJv%VR*RCg>btYmg!Qur1fYny}?Ye%OEquh1 zB0|-2dAr;u9)%MRnX^j%7eGvBOaPEi8H#htV_vIWO!fV1oV^%2l|$4Nr=dqJuJbs| zn>oa|MUg|-PGNFiB^!@~Y{#~cEVqk}qVGHYPQ9^g9I`SDh#DZ-#b%O4W8zQNcEKOT zba@(y52@U0)@io9dtf*EjJf)BSGip9V>X4^KFo7U^H+LNH4_d5v+b2b5i389@s+hH zHlHO^<{82_EXmF8PVU1)i4?6~N*a)f(>ffqo&U^fxI7YU#=1bkDMC{&mXP7<0UPKL zdM5-_@pAbw%5YBs*j5+`WD&EGzs=OfHcRmqbMgdtxPF36>Zoc8QS? zPR~iA=9@>sc{-0nxOi`ApF6iG!r?e*WQG43?fGV>i>Svwlr3v3WBve~e4q$6UW7MT zH7<6rkvhmOAE@t2y4_8;gFWeK+NuXe#GW?d^zLKyDPuJe+FhQti|G&R$S>eYSo% ztSOJPN#FJ(%Oedo%$A}>f&-~K8?EBvq?e!%edqY_OebQvgqpMBO;a!R#;!4n<9z{h z6oN{lU_?9hO@2kP6`rP+7tP$I4=Y`rqTFkOkC!11ywtNXuJnD`kIMEsRAfALMRB(Y zLL2``ie2G%X)2z*_JCLls5+UmL=Yh-7uzKO2rq(1c5fD>P0wHg?4Wp*a8~Y!i4fbl zN%%%YuAp-;KXV z1JIcUzy9VC4fLJkw8WhH>BchS2vZ;K+#7{4{`_h`;!1)2hMMDix^BCYB2?J{iG3(X zHQVPrV&BUYyDh3*miIO}j*iL(;5N4f@>qMrZ_%VE(|m*+)qA@GUH?QiE5#qJcVedF3*Au(42z?z5I0x+HZVDH8{RC@8Z$Fejla>?xr1>Zr(gk+=}jaDA^R-K&}mi;E7;@bpdEE_ zXwf%DA1b+(wJO}VBy>S8?c-8_#@$s3RGpg?QrXgUCcK`UX+!qn1XA5-xumuMO)u1! zKok))6Q_ZS;8E-&AXaRy@)le92zeHQYL>^N;{WMouzz2vdD++QT@^;K&+A9^w9?d~ zQ4AiLk~|2e9$uNKb$P-RhFixyAShH8(?;=<5^*CdH>gPQcZM^qEMnYP%q4F#&GHK*8?~SFN3%Yf)S|2*-ZOMBB7<%Y_VW0KK zK`uxT8Div5S83b2VrjODu<#uweD{X<(42WMsNUIHEuH(JN0Uoa!xtTKmtqK(phJ&Y zBTZ771(#~;)mW|Hc+FLtg!5bA`W@Jg*jv3<2A&Lu9KTVvJ5>d*yBC`AUOZxAs?`!7 ztaG5{;0B)C=E`clSb+b>8;Naqxt~Gfy#fh-!(Q9i7I%Ur7&0eKTfjA_WzWO2a_dBa zEqHdzd8JktEu}3k5=F#?d=4g~aTj&O; zw$=RsyPLD&ZuIl)+?yZT*&f0zS#emb(@Q<}wcB-=a! zQ|$bil_XWnCns=k8=4-)>cW@OizPN8}oH#)sTGJSeXm!{|k{03c6bMGUqnG zN(}?(I3X{9IF@$8kQj*E?-a6uSMeI)K5~UiXAg;1F2;7T#TE?pb^a1z=myfn{2_b6 zvecN??ESVrgD&O{HpW9>fcLrk*NeXa$}0J$9W!MYu69gqr>UK*-f0ZHz#{PY<}vIHfL3IBu@5WPbmm2YvamIpF zoXuC~W1Js+fp^d;!ku3f(QwmM^R{tTQ*CocbEKHy&ly(CB-&$Yxe#g0*)PKr*>1w% z^o2^efi$!mL>R%DtiE#%R?nAR)qwbXGNC?@smKn;bnW&kJd*=G^7z*xHCj$uZ z{m!BX+IT&j8}#67*Rpi56`(0tJY#$(a!qP9Qh}=nH};$}yOF&0JhD@sgLRz$>8ztEKWM^d$CFP;cb58j zyqHI3sK?*H3R#-Kn%RhVP$U8ir3oi0{t8KIsEeGBwsEHrIIV8eMbD}wp>1kXCJ_>f zC-0hxGz->WkE56F5sip>KP6-1!DZA|yyZE6&EFbO0&b#!NNdlL`}~2fpaqB?s)49R z*5%35l=RqUllcFMQ##GC;9*hIuly$)CiNz%xQPCC&`n;^&>oAG<7>bbbh{0Od} zI7$Kjc)zF7$4a$?k-C}YeJFg*S&3Fbc^xa@ zVF=h1nuPVZNSG$Ji}DlB^4#A~2H=S5WQg)v?MqbUpSqU8QA^PhVL4`ATZ%I z12P5XWqmtbZ)^qILN~D|y8MR{zx%X+otyl3S19*thzx#VvA7kwazd}q!f!l>s1GMn zVTXcpNwsDropwYJ#S8^XhA;d31;$W9C(!fJb(rzerO_SC1~$qL5pR;z9DG|l1dSPa zo<3pIiK}v(5&FlTj6UIxsu5@_!lOq`k^UAk4%HR>MGi=y;svsQutMwqHTE*y5d_NA zQ$qGK7foNneJ$NxL3ERjX;vs^>0BJyjbY!Q5}D7A=`7&Zh`-R>r>Y*&FiIMK6^E%L zJJECHTh?Z5W0R+daO$FMfP-mtg?EVgp2~*zwI@fVY@8!R+k@N_dU>u051p7#hsx0W z#OX&aJKu#?(cGv$jSao9rmlj>dx_6Hd}PoE?@S;v-yl6<6I8y|gRc2FWum_`Nx76Y zOi6>~aDPa%iD)VzBtWmc7n#{oH3ftM7gVA=%PFjq9X!A@E;Nn@Ti#x3t4XSz%beeq z&yt?EzoUk{o1)BzCr4jAb=PE)@R#=d`nXVuRX*^V7y;hM-w9Tf4P}<6?Cjl@uXH}0 zEj*CnUyT;-oHwo2bfgidNp{`V`c_vNe>$-}lPd~DaNXJS7G6U~r?!0dSCK6BR=vOB z`{r@quxbNXG0>lk0*pM)ejP3m{+F)mC8|d4r6tvyVBxQZ8Xb?Mv;y4$*K6SvlV`F8VsCdY z{Hqb(kDx#$ILZ<#-~WH|({~p23(faMp*ofGBfSoz4>fRM(wqA5%u*FE1o*F^*Py}o zdC*dA2^{ss1&1E;w$4B400|=`FAYHrSfvP{s$}b_M1ES{GB`<4J-=aD{}>z=dUi;B zFqV;v*m*&OmS)CY4HTA>0Vp9Ql#xWUF2}{L1#9L?R75RJ{b6awaRz{MNnrKoJtW}% zTuzE5aG2Kj-Ue~dFF1I@7zK{l7O^b3%fg^`PENLiy}+HVi9-|5%=D1DUFH@nc>I5A z4$FCI)AD>RPlvWoi?NN!X1j3*uW<`z?QD|e8UBvyk)rA|k1d@Gr)#%gkY%6-r_n3n z-hU{7+msCBEke#@iCqWsa6l5?^OS5gQ`aQu3yWcg0fS0R?u_#LD+n@O_2%tu_hj-4 zr??h}#5mW7Lt1O`%B`l8=6qCCtZnMk=U!tXdBll$VXSv9PJ*N0p+e+ZTDiAZ08C7)~yUM~m8(g=2H1G=?7h5^3rq28;P zoum!5>rATP1-)0{nsXdS&!4=jX4G8)XozWu20P?({eX}brr*7zZRncBd!|r&@}05A zTuz)RO1dYvf^IKmdOF?V(#y6Q=l}?O zCSz$nb`Chs*Z6G`f*L8eILhA-$Js)hJbtVw%WW;z5B=L0F%P|SbQxFhSp_P5fC%%F zW|hslR_A3OFE3aCtRxS+WRT6@DtATGL57sCYij^Bq?x&gD%{yf`YC0(4%7B^ZzN6c z`NdtCj}w7O*E?oU=&NcjpcRL1mCmB zBcmEF-B^6wo@TS?SueFSuu=zH_6>n>q{IqepM7??fvqKw3WSM=29bYb)@nVe#u;w}z zt()JwG7iDfC(Lh{%^#B&dZCn(g2b-`1oKnR*Y3)BF%k26c(;Q;E=C2_KtpoKqfx;w z96wEKtI(ahz_sGZ2GUoDoB#W!vxX`zCPzRrE-9b{q%PotvSho$NX|p@B+OG z=f{$E<-)PeRuMP;qacOKi$JT!c8rl6v~O0(7C~!T`;k0-iN{y_cJaAJrWG~LbW0WK zHltf@558Q$H@_!3h*SZCo9=X`)3fp}|2QmnUv~%Lyn6r}5FP2$Run{|^f-xSS@5lk zdYqHGM9vpPK>f$+i zhDJTj0Jv-H`FOq$uaI3g%L3RA@bAq7E0BD=%FPszI+@Oz$N#ZXYdm=%t& zcJx@6g2`W)k9V4wR^uKwTV0Us8!M14CH1Arf+l9#W+=P_<)^H>EC0(%II~} z035HlAVq65*BsH!K|}*_k3bSyhp+D0?xTh>F6hQzINS?lif=nv3}N-BDu~t=JVDb% z@5~TP?d|A7zqB>iAGr+D-3>VpWCU9Nx}o{Bu4U zOgQc9q3)G3{r6A@w0+B}P!ij~i`_6y$?lc*zpe8( z;?PrtlVxK+veu&(U_un(&j22Kd@__6bF1rMi=b9|%hO{*AXb%JsH#a_HDeN5FeV0J zRmOFFq2@wEhfpCv2gusoLhe-)5L$sQfVYht<~YsZ(@Hwn)75#SXqc3gYWk1B|Fgw3 z4o~P7Lgu`ky2K%7!5bgV+*Te_X_^`(sbaqGZyx7@J(v3&Gs#cF(Y34;vJPZ~+_%ux zD11hJ7$Y}p2zFPsc{Wk12i`|a_T!&;^`0M9_W+S98{8@uDGP9d2(_KcLHYcS(>J@x zjeUjN8Ov;1slHUT_BRl_)FFgF23=QLVE2|;^fLb`T%jYRGX!x0uU02Z<6j{2ce9Qe z49-Vf7Zj@~rS>0e_Id3o2Q(IJZjc<-I1B(A4o{l}jHmI7D30H_Z15H)uP0uZzE1u@qaZa8@ z5>fhMk$R0p5L2n4ws?Zu9Ko`#*#G$iFfDiU9mfx0za3EVX{>gv>=ZdYb=EiWd61K- zgI7f~<4ykk0otg*IJIl#eg33Z1M;@!P#O7lq6&sdl zbPpV)Dj^Iintyu?*U|Cmt{dG4)SoKna`@3waf=RFnmNKgc=leMcRjoUowyRS>p>KY zt|5s7b%ODer$%ha@{E1M2Zw8nZq3f|~>AkA@S>Qy6Kw9-#SVgYMH@3N1dd!+7<|2^o zQFLsG;oG~_zsyUQSt&7FG-XI{mr>k74+d?K(vDB`is^E(QTPzdf+=k^LEI}?4Q_g0 z>Yn^;1XpsWJvEVuXJEkTC>x&Wm#c%v3{;&SD|EVj=VLf+rU%p6gcT|8p@VAva4vVv zZ9SO9kjJdrbu+-pW6HFgorf?^?1Qm&W)Uuiliy+Sdom>4P4TZ#7)`JL-!+Fro>mz*7C&2CU=xsf#uztoB*m7GItyTqb^aj@79`~zj`y}2&*l4t4v3_eTl_BR3 zvv+Y^p`FY2I5Hb+3Wf>(lj>vVr}ksfkBpH3r{*MmIfNvlAs49?g5nthK0h5MwBt`m zT#D}n^k}N#dp!Q#lh-=qx0|eg170r(dNvttm*5C4|E?qia0r1L(_%p9T)`m0QQFWz zHo99~X`g~S(mNt=_T^q5y+=}jC;es}0|nGYd3fP{>PGq9*!cS~EgBVE1EDg;(Z^Ih z!mDfzX}4VVZ%$$<@010vXl<4!YHTX zhNe5zu+WyqXm%5vk_Z*Bn0FJ|=4GeO!<43hym;tUbrOICG8ZV0Ki2uB5jKUt}4F8TBzVNd`8nW_>~aNeqV2Qut8K1n)VGR{_cimVc#ER~FYe zHdhdO*FlTn;}IF1o2QAw*E+H`tb*ax%N7-s`4!U5M=#hMz}*8_*@~&juY}%$#DN79 zcmmnFwub3S#5!As{zenRxhMnP2LH?|jp1SD>&_b|lMH0E7GL3`D;wGnu1)8Y|2vRk z3YDKsdOV`e8E=4XIxvzn^BpbcRXQ*FG1nOmXo=%?5cPr{z&GOl4je__R6PoX#?;&m zP+fOq_YkpemR}Di%if$971?p^O_Iq^_Wc?$M9K1VW-N@ zadJ62D|dO#73O38)@gx|02Gy0Wg=WM#lY--ehq;{d_L9Jn%+EKa%`84jjL>51%wX| z@P9yqqTLR9#Ca#6XGCO0Wa&FuK6zsOUyAWTP;B&BvCRcV#L)~4Udn{z(l*Of4T!|# z*pM%73*JWk4EO;}H0f2#Td2Nw;~O^TDzb|IE;RU!$(V>@)*Dx%D-koqd6u)r9|Y-& zGppQ(M=p)nH-B9nahi_-H$@!)8vvV5BT{jrNI6k(jv(f6L+o1cGKE&YWSQ3vat z?v&BMRNSU%7wAEUU=8SvPV`DY<{k2Aqw8-))3;d6U9BE*wJu?uL@AHMCW%~jCci*o z*p>HHZ5%=1nH906y7<&WjTGw&M9vCaD4+UD@HPYdxdqGDI;Mld^NJj9b{^Nn&y`EV zN7EGhQ{~5ud^e;L%Eb}aPt`Bs6rJGIeI-mS%BidGFh3{($?v(EqwnZZQr7>tmmJ?sY_zjog8>WZMFG2dTJY#~;C z<>LA#t)7h>V>b1ErjzO)<*FV*qO1@-pNq<-2fTm2fA0;&^L0SpM-%jL^JoUSwK;YzPX9Jq7V}5I;m7b9A2-mhbeT{vJ9aLal-08A`PGBUzK~=E zVpwPB_it9D#tI{+9tU_=L%|Q+E^J^SWu!o#)f8&cZSS9vF2R9SBC9Ntd@yY;43oNT z&X`#u>RxWQ8wFdAU=@<8g;c$R?v@TDN}c~3khHagBU`~a_%J7afL56ilMRo}b_`q< zILdNH?jbe4GWE|Uq`A#*p0zc{AcN4*r8!w8LJ1HA4P6miX8%;4#6ZvkeCU#CTP0t9 zv~`RZlo{E>ZSm@?eMPM*joqE-LwOg@Xj7MndH{}qB%1Vw>G{bE5Ha){Cj)Tlh!1lJ z@iB(Y1_mMgsN(#9yP7-5DBwO%8=Sa7rsZkzjTsCEm=>rbbH}2Q%Tv!=r@UmXwt%#H zIU@sFAHh!^uM4cnkT)cd?5o%MHtf%f@f<0bY@e2`U3$KCU96L)CJddgq!tcG7@wE> z@j|tD-S7jzWAMxk8hiuf(F0F=)sGfU6EjecaliA8pkQYQ+V_$GSypnJM{x4^a)^is zfAuW?bz~7tRs$@uQA5aeB7|I7smF7O@;Vy?dTWg7|0Cd)iu;gk3tQ<_@OOFjx%H*r ze2I`v8A3toOQAmr=2RM*s0+oltjg-5Woa%FxZ!8Yfs$j|VDK+0iGL|!iO?BJn6*v2 zh!IK-LY9-jI{*3Z?nOP2)8p%dPX7%n`1hruHXhc$mYqQkmZ?G*C;3@Sg5adbU5WkV z{Jl8u_HqTY6V&Nk74^Dt!<5s%Gc#Q^a?>i<-frO|^npgflyX7iAycnNuR-sx#8dH8 z=`AmF1Iyj`4A9o;_5XDR9HUMaRa&PF6@z9`SY>fJ>IgVqgn4uEXQ1=TrC4V_GafI- z8r*gbmRKwYm7*eFcTX)ep(+ul77E1xB9@3k4_B`6GZM$eShQ3Fqct^+rA*D?=coQcH1!bVhI;R(Bwx))n0+AatkQ&G&DFn1bFW2IbR9+`#*=n>m z+R9RW7N4rl;?mt2I*jq$1n*ea&8KO7yl!!oO%as`-?S8O^+suYBXfF6yK%9+UXct1zsV zN!OKMKVoLwlf<*p<>x5MNpIYSF-3Xu2heObk(zFI^6JrAtV-s&J4O6oHrV2TL_w$D zX3q_mY8_VCy>p@QGUg7)L=`-5&hwC0-8;!k3SX0Ct+%!Xm#?o@8+JK(MUvx{1ho0o z84m=99nDtQx9d-jq^AqdZtfwKYhsqQ{w<{hUriAI!v|UR;)Gz4A)Bc~=2O$1h%BSrC4Pz+1rboj8RHe=gm_l&L%!l& z9d)2^AOwa<%{Mf!EM6}kKjI3HeTAo`S6d0jy^d-*K&40P%|ZkgDAss<5{o3BT`05) z7HA@CJa6_JaxyOZ?*1fJ=yn+rbMT*Ck=!G0dvTYVu}4|4gFlrWmR=kE%uw5cxgK%5 zf;Y?mQSq|CXCb{)2!q1rIwi>`adFIHf8=2kz9piGlHu+22SST<_ zBX9bsxR;1ntT~yIjrRf%&0Y`Y9~54>Bk8K=8K1f$^uz8Xo#LYs=n?z#1TT1~BXBp`?Q!V+;xV-Dnz=1h)FRl@CQo%7N?h0AN z*jgAMTzFcm_$1~owPiYEe3z7;&QFOs!fq08$ph#AXX#aM0fHEvEAW%W(Vh43J*OoP zwJWZ}!daFCNvKWC3jELOk#G!8-e@PjI}@Gz;k|=yB>2ksrxk04On!sR z2m>0QKGMHu05|S)rPmJ9w-0u_Mi1!kAtObuiR4HmQRnwC6=6*WBt4Dwu}tMuMKs^i zPS+#eN&|i;4XsiXj4TMq2ivYIsw_|ylSx@>Xinve=E?<9%S_(^r zmz^Nl4w0IGO-P1^NQ;ngSew#!vRo#dhgJk0EQFZ~{|Vu(-K59PtVo?InGXD8a!nzX z?nindIKA4vzN+uS8KKTrxs`kwdNe53yoeh^EVjx^hH7_$(Ae?R;qa)#JcTU7pt1Iy zlRs4()L%q(T8;+<3>J}Qez?H&CSNdQ6OqDky=(+j3DA{KRhq~MLcEh2l&+A0{#xCi z$2Q7VWX-vL38IOa6+_2!^i>yMAElv|Loi5^I1gjCp6zt5KI)vY$OD*KLpABJ*oi=r zf2lW7!iw2ELcIfpl6|&$Rq|Ux{2=;3m3O4;L_I`fQc0q-XyQy_;8nlC9Y!r%66XBU zx$#t|w~KS6!t&kejPH0|c3`+=n+sV{3vMUVMiS3^B4Tgfd*oprF!8G*Dh^Rb6r2?N32Kzk!l)$Zjy> z2sRZdNZDyQ^3)_rEWU^HDitrMJO(k+$Je{|J(c6{Kz#s!^12| zHyGt8W8%HG*>NIfu0srU9&hZ5j8Q|ac%e*!pb^bqZ;9H3fv>```!+bmsFz!3t7T(# zZ}7cD&ugiI((G{5M466`%71sTOg~Yn50Si(XFNF`e><5yN--88b04`FSpS;>eqAi= zSbV|XC-?(I&==hv_2yuWsT|#d^-VOIsJH_t}rJ(!vO-@`L1+5BQ+ze9wx|u!7a2tfHudS z%KJTVHQgfx*?&h6!;kBAL!biAFhZlHfmnJ`^s>QnHVS3f@qTa<=%Q#BhIF`jB!i6$ z5w*68Sc)m)u+Ze1*&8|B9*vOt(ZmhgUNsnzuAu#4Pnz80-4ann>w>0O;`YncxPwmH-w$&)>w>vw zgd9TfUXyveU*&-I@Oc3%UU)oQIBTNM9g{Gd(?(`&7Znq?%8*(=*zyC9?~^khS7z1J z;kI--!xY7t!m^6qiC6tQ$3rGBPY>cY6u^s?jyfz|bbO%KH1>D*-!NArm}Rt%u{S>Z zklk(h?!R?WC7cEh3>pUWaru?ID4V^z2{VpYBK};)4EaW(MpW7Q@bqxUgn%Vi@YF0F0+NXkM7(@VJ5t%zFO@ zDH9ael;XByN%Mb0JH;@bUm`Nga3-wk26 zIFKc>mS(Eg?T<;33zIphoeGi5iY}QiC@?N$?l!k!>4)qKmboc2r(=+Dm)?|ycq|ev zUpv2oi}T@1EFR?OUHa3hW7orsYOHd3j4`bkn;pZ5F)N;w181msQO3C~0zb^Psqvy~4ZSkN z;Qj~p3vJ>a!+?0#V;HGw+!Kmqm|Zq-exr?hIus8C>2L8>lXIzko`i`KcLOdzVZT@G z9yYR4&*T=ERFY5xTCTM|qtAqEv`aTQspVyIttWhcB$YBOvLWgB9jvetpY~3eg@bb5 z2>be7_JU{+Sd4heTk|qE$8FIpsW|6UOf=YqpuT0jP6!k>;4~Mb^~=K@R95@_a*!@_ zM=uH(OHwCbdaufFVZLbc>+Yu;ojUc@l(HrUK6wd6d|5k5O#Nm}hv^~QQ!W$6OzKsw zL>-_*uL1ZfBp;7UZX(le5mp5hPjjj^{iktXa0f{0FIViVs2Ui@#!6*@F~=xdk+<+= z{dB|Wx$Ge&PjU5rhkU76j3lXkIYDM&4j>jpun}4+vsuP1yC=S2kJ7knA)ERBO-`$X z;(z*xz#N2XH;jVBgbVV7MA&|wQlgOfU%E|#Z`B!1&R;1V$RW~0>E8ccr%(njFab)fv*;mo^qqvn{5RnG98rx7agJ5C^Y zKqULV6Qz>ggT$rsS5$BvYxV4q4joder$DJrkDpY7xSB!%Bir3*h@`9lx1~fCce3$H z?HHe*32->$hBAf&AZJ)}0z* zzRyw;2IFTG^_pj}Vp^`^eQ|pauIlvk(=A(K@}eO?%F|IZ%wb+w>evqj3l^r)Au#lX z9yhrrIFOQYUg!4|FC?j{l<}HmxI27-5W>)cA zd#B&52n|&7{x%8_Cu4X7T*0o0SN zLs1F3dekq>Sk~i<7Lz9s#h3IuUld*A#P&mHqYMwJ@gZgjM4KMRtoEsO_u^p4B@1gg zcJYIf@3twf1og#T%yWEphv2%wm}H=8yUlaF8zva1F2d@%GW1i1+@&SA-(2! z`yyQV+(?KjN#+IoMZFWx1KhNcU2pJH*XO0SYgIMR4l#0L4~O*Ggqy_@>BBf!?R(5N zO^%=SsE(zlv@`Mw0KcQtM*YhaR0Bl%2L3H8ITaT~;WnxQUycj2R4a=;fdJ>- zfcXRnt)V(}1WM4L7nVapCc5a!`iwd!kBj8JAB_kXzb7q-;!1I!6_t28gCH(g9gNqJ zcOSQ%D^UGhz%VWFrfyzS9u*{%8|2@al3HSKz^qpNQDsC4 zxf`U0Kgq;ZQ@W13-s<-zbcWB~ggP{b`HHPwQvJPtC6)!{!gYj=x4(EGeLV_(>)Jmi z)uLz3gBXoBXbWuNj1~7dHQEPcG|mM~Xva|4OFp~UZt}#1z2cV*Ue!UC^R^;^GQ4ky z;Kbm(9R1&VVy6hc^cxkTSbzYTE?V=hvy^QuucyuB)K=3ysIC}6*9yCPnd=hjx+n-B z8(z+fTCNSzXS;rELa-Bx(3~SK3u6C?q@sG@YmSk*ErBcsqV|zn>zqiyLh-Ro!XW%jlS;H~}*ZIS0m_6L{}4%1puz95O#YbaL(t5@membMG_`qktD-T}vBHb&YX=C|*6^oSwzk41-4R2POqy}Pg3w5^s_PEYbN#WW+=Q}*} zATXvCINUBuJS1a8>6bEBQ4qvu8$=lfHHX{J*3pb|@BtRMkw%CqXzpn8`2e*hp!sNBX z(!C-jXyw|;)|*F}Rqb3U>v=C&H578KL<<=dI-A2m9$*4l07;jQE5ZE)roq;!Q{fXmJR)b_3bEYXVi{9d#Rcq3>tSB9RM!+ z;~$tQIBN9n=1Rs>kpq;b9RogR>swjIav3ve9A(G>4bItsq5VuP z!9ilYRH`l&_U;9IYdDHz-&T5I!x?8eM*w|tQ0tgPg}2VyKcIc^I3}5VI+0H043-Mv z73STBUby8hNBt^ejP=HEKzH9=aNPqHMtdtjtD7~_H`1BLSCDaHaSZ1Yn{DA_ z=wr?Qk{zXiMJ*d2QS&vwORo^q)$KYbjIVRdn+1$GkM_h^DnLw}to$-XP9xrq`QnPs z;UeAM;D8~woLrrYpp>u{5Y}6#-jR|>f_c89U2lYkU}Wo zKRxhR+|dKMOKYc1e_U}qMMUYjFnUE0#Fxf|aBxUsjos4+`*^L^(Ej)$k;0>Z z3X~)+4DRvIHD5VPt-Hqh>_CrmlP_@$kO{5WLG;+%ExI7^p5A3e-^wG*VZT%b&knhL zHOab*Y=tc`FtyGXYa0if7Y!4HNXsQw%bW^{jc+CMH-aLm)f$y7@^Gh$qjAL z4bJe6S7eWdL$b)XkPV`h=|c7+3){JC&7qHxLy*^c`8DDPR&v9QoS^9K;fp0wU7z44 zEQex4H`>dVbpcYFSEQ_flI<-0CpDsbn|it7{Tg@OQMw`XZOR$rfd!nIhHvl6e(;SqrA0mP#}5Ur*)# zH(9s?dNFUbG!t%^y~DiMAPp0h#&k91i^>;ngIP`&e#O41F|ZN~fZbF=>EU4yiQj&e z^De(LOvN#m#9KsLbSiz4RK+ z)p?9q23f@l zTB+$$WXg;-K(4WRceiNcLbL=DlC)H-deuz6DVb+mEzrx$^znfsLBiO+YB9;w5)m}S zn{1*h@V@u1f!m-uN$TR2?q=T%xkZ_@|I?0Y0jwT7m$72ja9XZv%P^~Nn-u>snR=VP zm>>+TdSu1``Vdt-4%b{%wNr_!Q=(GaWL=m0-OWg9Saz}-rit)AO)(f?z)$FEdEE5? z5wHq&VQt>7ppY=Hg3BK4A?*x;N)Im?u>!(O$E1O3q1k5N!S`6h1JTw7oz_hh0V^%s z?2=mJnjX@O`Y&hzz3O&cXakJg4zqLeJyN0qzk=J(QT!{R5Gc0>XSt4iH5f z)pUrrbYes9hu$~+fae%S7z6E=DIWNx9a%zRm=St%IsUCzGaTDl0w) zFNrn^EUz{fZa--qlB5wZ%ivimcrqesE<|Rl$Rbjl+V$yjO+=-UNP2k#+gP;SRPyn) zReb4)7TID!5gK;0&0P=5OR%IP2jpJ!Ygg9U1oiYSSXVL$%)e=9;LKkJC>z*0p`(Mz z$+WWFKtp#6AF8+(5l%S+E%Tr6nvS?ZwD0OHx={$!SV`cU?-0(Om>E@5m+Uog$SrSn zs>uwE%cEskZx_a}U?K(ExDp(XCNjp(K8yjsUXD5{h{FiiYR~hjM~O~$?$E%fsS=Kz zS4_I0A=w_*<$r>hF*&l?s7XG7VW-+ozNy`jZZXjv6Pn@Go|odh-QVh8enKc!???qF z)rgs5uRWFB3;oYO_$a=TVT;^Ih~~+C7u}RchSh+EXV#`S^6L3?QhtE_Q0IE>>HZse zXjC>Hx_S5IXRev-f2s8~4eMJ-8C((PDk9Y3mrkK=%lnc#f_RF9#bij~StN0mlm(BY zz)h4qrjQGcvt=Hkv%5Gu4*Q})FMozyGIOs5pKdnf0kwhpU?6$WeW8AgB{bb-mb$+CUs~fjP z=F0|>=iJYYbKlxPao#9n`H?P=GfAA#v2Wu(xACKjvP{f>_ri6i<*#l27suj!X)xPn z=c#5N2W)xp!xOa}wojkZXL3`3y2ndX4H8OhY$Fk`my7?e`(o0D#8~$72S4_uE8G4I zx4U5)$X2@|#=bZBKm2VUT2r{s^mF7_U9?N5+b9s5vZzQ6$ZxfsVf?j`kVZ1Z!?;P_ z{p7X?^YOFp(1zbD7(-djCS~eQ@rcdgo-%HWaP%P5;IGF?=`~HpzZ|^0vbtOks3mdu zWBewE-C{L|t8uRJ{n=CWG+P#8zd009%B_3w<&HzkW(b}Ahd!Pfu^4Sts*cvpVAar< z>aXg*LTf*~ld;_2qF?4ttcKr7Z8n+2YSqz z4>OxpjX|!N2VRwV=8}va-|RS_F*RT4FZ41QDjUpgf>bBnvaBa?E6EvlhR-Suy=&$= zNiWo<3+Wa#Y=S+VER0cLvFSq)(Ev%kQ(6u3wP5h4(JLtxzcw7vUvNKDKoUTQF!+r} z^w?PaJ)=%uiAKCXwC_d){xz9-1FB7nbKExsIk#(3KkWl zt<}_411+S0e?Rv|q5bb4H1L-nC_jHds^4)DOsulEurDz{226#g_JO#+DyHnSPJqg? zAe5-;+k=%ru)K1ok((TVJ?d~93kX$(gdICT0P-QRZuci+@ogcrm+ySk3%wFKe*%1t zxsxGu=W`mF`9QE+2r70Dnx;Jekr;l)k}Anp8m+R!Zu##a+@+!-3x@NPYuc<1-Ct<& zd;tHuy5y1MwIvVL8$NR%KsNrPFDtn=TqAX^|i}3=~xw-Zj=Zcw?#%1yr=SW2>+_ zJEhr9_W907D(xW103N1d{-t~Yy8Y&oPkY`qGt!oqNgRBmn(!IR$>sNR^Ij6{n)U3n z6rEf>cADH)lUXB$GC_N)mk3Q%s|?vzH$@XkJ(q6dC>?_!)PuAHy0zzV2oW#V zv9K(rlhbv+VoiWlBpB1jnu-;6+IXuYR9#^g{__J+8&hQdye%W&duf6l;}>X|!@Gj< zDp%&}*uyzWfy7AOU{(!HE7yL9YD}+p$b@~3I^=_~lX$pM1$UFXTO}R3NPB}M!Ps(V zAetm(R39>oL($!tt|)72(5SIHI=RM=R)9Q@8dt^yNA9=RjVxJKgl6U9Y^0Ie z^_b0AXM)|5&$wn4uwcIt#oa6{-f2umY#%L^7?!UzVEU>HH1Rn#22P*QV96HR`g=ot zbm*m+!S2$Ak9%RA9y!Gpz)NbhMJ32|{AQd2GK7D1tqPMhxDCt_G53N8GveMm)>&|w zq?w(bcjGWw&TiBbh}xNZWW&6wBtonjne03e4CEbcdfix@E_zfudZ5+D*WUC`9P@8S z@RKI3=uLw=ValPPrtgI^81fUYsfH<8fiQ%jx5i*b)l-I)y_EH14&`(AkF-nj2eXO- z-Z!XRue^*hx;H_stBsJLWQ-}}qOwzao!Se3hrCzix&U+tGN<_cAhH?OfsfK`4|Y&( z;kNx?lka9~*j{5do4%mMMN@JzI zVq%f6`T#2X>^=s38O0k2<3uwN$!!t56&@nVg~v+0s3tqfRiLQwiKG=6ig@a?n@NCl z>Uxr1t4cKH0iamfk^U|m(XP)Gh}~tK%Egn)v)w4bqad<&1%urzVG%0ITC!qV z-)0L#vwqyXQH{=Go=ZyUOgjkm_TuvaDLuo`bxe@Tvz20vP{+VoVJ;&+u2u~ewXgw8 zyw!U#{A|lNNKpW0?@#YWX>d(re^+|j&GG(40k|2;zw{_rX$CHW11ZNPA+*GIFZc#* z^A^R!21XTLGk$j7m&T>e+%bxjSCDSAr5(x?-q8UcrU3mou*bCvX|3oun7tBn_=?Izm!NZT+0+r3JciI9?Vd6-41l#i zwF%(hG#z0>l+M1e=)6fH)8yeUmsq86=O*#meH_8wuY-Wh#pzNE*hDpAgP&R2@%zZ^ z9y5muq@JDjsuPzC$h7z2Xt!MN_ZK@h+-kU{>vz|Ju=z{k8gsvR}V& zIGZG&$);&qna-7%uSrEcH*@y>K1Zv^Phu|RJO|Oov_BM2YZ(z9Zcs=t;rLD*`yv|H zzBaa-1t4)Q_2H!!R%N^eAgWagvUk-TX$;$$`=`d6qOv6Fvxm9-pI^fE1~@Sg#w&G` zk@gg1VD5(grC5!MNFETY`mL1;4>rE^S=a~BxNfOCrq%PqUdo9z_4?dNzWc%z&d0#; zexlh^mC5p<^3u_zeWoZfuFN5Z92=@$D6FS6x;7(q9%f}8RX$0yliz}97<0R%Mo9_Q z<&4A^LJ=1m7rayKySp6%d|#S(r!N~Rm8MN5m|)3W?J9h{6U&iQfjo$@2!V=7BwO0P z4q|{%1{VsG<`0{ie^0Rq-j{}>6T*)|Wl zJqB1XCT61GXEXN_6KyCAX=kg?Ttj2aLVY#-d=8g(Pi=2KU&^}6Os4il2;%@n91Gy0 zpfQ;OOAt01-3C}Q6}&%;bG7SYK<*$x#?}8MVY$cOKgzH{#2rO|jHl@(Y-ketl~s8T z+B1VwHmI6#jH=&iQ;aTSg7)ZA z++Y<3PQvTFi^DB*l+l|Kt(*W%{GRo)F0k9W*Y=!6^Y7&62XM>vTi5*DF}40>N&}gp z`hv`F1@Nw)mu+(NdfxNa9q#+Sye<4Bz;E zYzK1TM8?GCU{91Kc{3pZ*cRbVef%V{To#-^-tqMmX7dpZkbGmER4(tka&Wo8`m#@h zqb1)vP!qie!xjIKin&RraW&@cxtLFq3yA^mG($*K)Y&;#MA_O^Er{D?(br~>&gKpa zrC|qTtwL+L3Ohx8g?hnNsk`vi2Xs2L$8OGhX>w)%3~5RM$T8m+P)EEP(WOI*t#^x7 zKBa|%)>H8hu|Ts^(;dCktR=;_^d`oHuF=wmq*I4eoN~t((pFRIB92 zks?IEQg<-^);l^(R-u`FBwHfrh9sCXLfO7=r$u@}F6 zt=oh9gWK=kVEU!eAd>Cz+IiX$mloPM=ED!?k*2y5>@sy__sy*FN)1Kksb!pXotHUN z+HX(Ek=^oCZdp(?`M8KOsldx%VB~bY_D?jj-ihP|oQK0cgK%dHy>$Y*xpg{W z!pB=~Y2<>PTvclcoyGIO4qnb7Dylri2wHic`tw{%$7;#x8lDefN`m6A{C7a;yu; zL~C8@n$9nQWAB6azy-imnQ`Fk7;C?kPwp!6;qAzu{yt#?E)nlcq5th8YdgW*X4CQ= zzL*20wO%d|hh^)V-GcwU9Yts~K-pHprV$Taklp#>RBSGprEC2jZU9v3--*a=0a^{{ zm>gaeytWFaafleCC#8CUDs+!j3unKmB0rM*%FusK)t^G$E>zird*OixylG4l^{9y9 z^rh=THVTwjUvQq-7gSZCsY~8>`C(k8)Vyt$ZluzL9T6-B!rtXoy9d*%GMz%L92Eqfs4Pn=C;8=5H5go=Ap4uG1c?D$<`mG8cgd6X(4N4`lLk zWouji<9rsCzp}YX>wf-TIg0C@2Wnu|^bV(e`CWo@6j2MKz(?$r1y|4vT3Y<>Vwcv zuAxMMZc0X32%wGy1qoHa;M>i6Qa4uabsK%X>(CU8#qv$GO?Tr

fLhwo9;MFZ7f5EQRt5?D)JXFQANcmoY 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

lHHk*?^>pIkk4Hbkp*zw#V^7lIFV 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260430/20260430094002-Config.rsc b/MikroMaster/20260430/20260430094002-Config.rsc new file mode 100644 index 0000000..ced0b2a --- /dev/null +++ b/MikroMaster/20260430/20260430094002-Config.rsc @@ -0,0 +1,4618 @@ +# 2026-04-30 09:40:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +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 \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +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 station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz security=security ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac security=security ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=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-AX disabled=no mode=ap name=5G-AX security=sec5G 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 +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +add name=mVados options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +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 dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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\" } 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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \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\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\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/266/c0a5c627\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:10:03 28.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "#!rsc by Vados\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/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 disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/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 interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru 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=git.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=ros.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=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.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.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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 disabled=yes +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 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/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 \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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=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 log=yes +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 walled-garden +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 +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 +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/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 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="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" 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="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/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/20260430/20260430094002-Diff-Config.rsc b/MikroMaster/history/20260430/20260430094002-Diff-Config.rsc new file mode 100644 index 0000000..100e4e7 --- /dev/null +++ b/MikroMaster/history/20260430/20260430094002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3386,3390d3385 +< \n" +< add dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ +< AM-Backup-UpdateEmail policy=\ +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ +< "#!rsc by Vados\ -- 2.52.0