From 3dc1a383e87bf9b2e9e800dd9a08637cc64d8006 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 05:20:32 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 05:20:32. --- .../20260505/20260505052002-Binary.backup | Bin 0 -> 270775 bytes .../20260505/20260505052002-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505052002-Diff-Config.rsc | 14 + 3 files changed, 4520 insertions(+) create mode 100644 MikroMaster/20260505/20260505052002-Binary.backup create mode 100644 MikroMaster/20260505/20260505052002-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505052002-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505052002-Binary.backup b/MikroMaster/20260505/20260505052002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c9ff1ac871be1572bc6917531df2c7129726b13c GIT binary patch literal 270775 zcmV+aKLEh*sF8EGAp`(gJL(@eQPP!Ea$R_S!Jz&C000O80004Z`T(2&Lur@{4}C32 zcGY`6yAWRyMGrWCkqkzF7_CAFB!q|}+&>UGf8p>3*@!%O|I<4{V247wqY~2<4Wg6! z4pv6dU)LLhP8oj7uNhMFr1=&!Ls1he9x?nspG{wSEnnB0wmb9xS9`?Gpa|;Z@L7|K z%~-uKjI!fKG8Q`71-vHW(5snhO^?}@5c1S#(sl34NxZ+Qj-MxO3m6-HPHN5Hm8Swu zZr#02&#joZb|vB5;ITb<#(awKNRT`7xP2$qara;xS?} zjc$=Fbp>c(q3c$ioSJtZ2ISMogUG><=^_FgnS&DewL~ zD8Voy=2QMhWrM}LbL5rxZ0fi(FS|ToiWWzsM9C~3=(~jkg<45Hm|oywJ2!6Etcs5~ zo~LEpk(|zQS4fG}fg0bonAYB|jRdg#i}wV;nzWF|RMs1;T4|7Tj06RKfPC?B2H;+-u-l=|xrxtAvSb@`s8rL~))dc(yIfdAV zdEemx^USUU>VoqwQkKIKDW1%Suo9(z4V4M-px4s!{uj=%O%J5#)nptbI#^{S)YZ2UhL0{fY0+O$n_Z;PFteNA5v?*pXu< zrP)8#oY!`sx|T^MW!;^zXbXcmXT8C**snuhDd6VkTpv9RPc*(LIO5ae&&kNkiY+H2 zX5Ch7yy&WZGwdv?+VR*NfgsbMy#*TIZJB$|r0UZ|d8p^>JnU`xwj2hox?>gWkyk)2 zl^>GpL-7uAADxMdvn%h0X31->pWecHad1vtWza-3Pi1+-M}w>4EG2^1 zm9=H2BeYc;Lkwid8sK8Ps}i@pve;RZi#|bW`|ay?s&B)4MZc8;-~48s+ggu4xsu_5 z`BP7LC*9Se1V^%3hZ?wJnxOY==^%TegPm{#-v_;h(%P zp4pk`A)RA#Sa(bpG?Dy`#W*t9t>VjLNt(vNr726&526l&iztsIF+-|cyAfwVjE-|iC05{a#sc|~s z5~eJxn9HB*DCqIwVW;TC9T_o*%%0LnCqqV1se384=b9YeD>l`(9%az%R3#9yj9`7o ze$Lg9Iecv9zJ+{rvZtc+M-j3(U^Lj*@!Pw;+9U}`lkUY~?Q8m<&DO0>cwJQRa!ji) zU{#G-U>k9|vRQ~1fkJDGa=`qq=icIfzs+OLw4Y}TM)p4 zy53~DHy!+7B0f$3pC4cyDFtjYILsjov$NLC)-56(?`T6gdAfK^5#G_`C;Q71@u7?l{q34~`r)5-i_llZDEcFSVVLapXbJ_1!4|h@u36 ziOWSygkNymQgO@#I(-9}Yc&KO6+?rJfn>_B-K9kO3NL?m(ve35OxE7VXFSh>48V>$ zJ&Fcw{GO%D(i-?49^ebzJ&$fYr#R}^!9J^SVJ8I`dH(X32R82?9do4$)E%<^-V8i` zcGM2IwJAdqhs6y4ZlC5!3K$B>>;PDvC9v6F#=S=WavOW8mw0fQc(&2%F3eDkqEraf88gn%sPMtA3&qRz&NeUvqyr8(zG!%k_*C_P;e^R|fwLHz+GuDp0+a<916a6)r&YEV zc4@{{On;Z&TqRzUW9`(W!%wexS@NTbl4*K^k2~}%Q+A(vf!y?Z`|W+CZ32Tv;AWo- zoZv~EZj@9;?>pi{F6u|gSOcO1{n~{*cMEk@Ck7C~(?!zQzrw6(#A3I0>{sFd#NU}y~ zrGGUyw4@?52$)XBbKFKFwAlhLD(?@2NJ~?Lb-l&Hlb8N0)%bOgxZHz!Z94mU|2n;Q zdKDBgbliXNh@0A59K+EYD1nXW_zh$5YBC$Xzju6TI-aN}!{xJp1SvW(0toQm^%I9s zUAv|@RY@{iQd;j&a7a@gVTh_NYADFdvzRBcsgdkZC_W=|KfLrUh0y9*TBoDt0>|c3 z#hx)|&S$&wU#9YnW2JGS%cK%GqV^@x?_8>0?mva#;7ASfH*3k#+VNf#Y48V^6zDxM zlU+#^okZ+#Us4jLT*30i4y3PwanEh0I%FAkzYX5UGbYLk2q&kO>d#r)0v{xjlUd!a z-3VNgzHo6=d*3bnRayWnLV#8wg4w;K`f$PHXn4{s&hbCA19V&3ZELs5s{;IiWN26y z6y1=lITJvjByJ21LLAzNNEt;J;; zLxf6pqIsn*Ee;Z4rbz+w1@Z#%*0Cr(OX;4Nd0q0Z%j0k$)cQV5(QXc~^xKJ$wpt*6 z`kw}D?EB>`eA~#k3J!3l*7}*NmMaC6`z2OAmlcUVeSW^!CaEDeAAN%aPuf`ZcAqIr z!Q(74_Eebs-_jQ!yRjB(BGmx15ve3^>(cuxfUo(7aN$?L1&*nC{RB(pbikS?f8=}Y z>#kiCvvuEPj(y5rmk-RG8UuZMJtdWq9T*w|1oR7i&vN4>cNtw&!DhLd>{Tpp>X`V* zEtMy*Ln8M7r50eo1mqA9H29oG|4+I4(pir$(j&7L1}tB&0zEmeFpQGyZwAD_deTTK zD=yY+wYDIQjb&@jNtBE02F^f>JH|(b-&wjte#buBcboPP5=tL=Y=wTfXp1 zlKabu^o(?!7%r5)Z!iLNfYY#E9nW{i&%0cM1|hjsz;rj$Ot+4f+a*d3Rno@_u#1Jn#W1h?H)h>a0VVeIvX~; zXAr(LXBvXs3s7c37pP_#z&!mDS zRJW4`a5!vXQ>%hK2dc|sW!uf<&3e@Z{d^uf8PZ4&uj`&CZygs$-ziCC$~H z^E)(A@)Z6p{enbL{j8MkKNp(0m(izlKZaewh)y+yaHP3|KED8AN(j9hMt7u=abAa` z*ouFCm`chSb27p(NIkznk?D`A1xVGaqnE;C<&m^KgZ-#MqrU?_8xyyr;*bArpsl

#d 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

nF*}_O? z*JcR?8|S0s4dD(D^y7r0@>0jWMy2EP2@n|W$N3Vr{;gOY}(2VHwUT!#gw zQE;+7m(l!Xw5VRev>QdFXR0pdY zQRLetKKrEJw2Gaz%hy^#@sF#I&o^T^wCf7n;nzJhKD#kvL>f(U<5v93-dKHiDmay5 z-$M)CeeEG?(SHqmyiy9fUOLci$at#?5$kPZ< z>|SJOn}>QVJI`MZlsKo8S_^ZNmzG_us;#4}1jloS!1lNP|^1++WkKDQPxklqo$uuBVoE?Zgq5wN4m`&q9wCg`?iG zY0&@f0~6Mb*?3y<(I5$md{uzwYa$y$xXZEd)Ywc4+mcVcNrlNx({k9A?qCi z)*><6s+qqWg9ACbwn##5ah{qx3Xzf#s$1OnPg@acEIMj{hc$C$pr;)IlL%0(5%=QL z6qk&z3v?aX+P_W*b_~}Yy-Bc4@T;En0G?R&R56q|#gPHg;PsC)K!uEm=?gt(twV?1 zv~Kc`zhlr`R0$XqlvX({d_O%jc3tpPCQK5tm1i@a`&$<;JBn;mnXOsLW7R@Phi z%BgbR3l*Mc=^$4>y8n441D-et`<}af0;nWf({~AMgN(Sy*7>oNZNNqT36949-{~Kd zs!N=2rnNAqghtY`-K?|MAB>a~fkxdmcOE?^K4~11^(EKDCJ34`Lv>S#;1G7xg0Mbe zFJ^#hi|kl$zMfY18k4!x;)>nrEuJu$hsf2YaYWW5O(zXUql(y#K{{|*6@RV=p*xc# zr5hSQ(Y(mA?#fdiKLxY!tjnO9NlCcHH&f#T#3+T&wo|-E)4e=fg_|cL?8h4o-<3aW z{j7SY!$1Mt#20|noQcDcfn@UyztcWqIAPTh4mg+XwBP``r`36YR&mAUro5L2E46%3 z{Slnw$iIxg5i(=X1+1bKX!JFGW4&Ioz2yM|qPODms)diiNQLMqk%aKRAR3UVTXUaRlw|~0J!|^}M{|Sv=JN{V(7>8g>m}q`(U@Q${7G&6 zotTrvIqX#P^X&~hu^R!`$r1Z>XH6ePTN@N7lDKIdOk8j*K;e7bKOHJF#%LWCY={Z* zqxv>mr=y6}>`Sc7rDJQ;i88dqv9g}YK3FRY=m#1pF{v>WZ6x->&*dwFEtTSK+%sR|>B>6{Dj3FsnhPuK9Iw|4>&WraKnt zuQ(`wpGn9#unurXM{f`r`R5V~-h^ zQ@B*4<6qCOwSgIzhlF%y?MeJO^RO!mUSa3Ut9KU5*aR_4L{6A(5)ji{}Ysc$c4 z6QaLVP<@<_&CYxZuAo-{cbUXbflH|@J9y{??jU3_Thsb(CAiN`?jOb^PZr8 zzQK&qkXflT=OFKvb<;A!n~l>Ryuc*^1gt*{{^81y^|Q-m z;6tX>9tfIS^}rz+1~*RW*Zj#%IfrsgDONc})^n*KjZ%E{04eW>54WaNJkhm1G=e>c zWizII$!H*Byfd@42&AZyMrY3AoX}*?gGeRd_0$ADBq61+FBArtPIsp7Eo{N-3XEcNI8=+fm4vz|IiNG(TTOp1LahZgzcty3D?7$lBxh6<{b12(Xn^%1tE)U z5j+ZoG-R#U1}~=#FlS}E4hHs7* zy^~2))*flQtG=26PuYDo8KriIY?+#^zx!x2GNSlSdF-*wn%W=BfEwvLz5eY~TV!y; zGbo&W$np1|>;|!jKOd-j7C}mJKA9|N?N>@n6oHBgpW1K(SP->>L%@vrpC1}f!M--{ z*5fW114R*%tJmv$NyapH*uH@<&|1$ z>HOSe4Cjnfjh(Agf*^p=j4rs2rd7Y^>iqPP`-w{eu{D9#Dasg zVj-|W$I^BQO;D(IcdVZc$UL)W4`6GC_WAB(Ro6MbGU*CJ_Mn(SKOZ9|At3Sr0&_IS zvS;J444xu=)U2}S@0PS>HPbNEddr=_k$+?eS7(2Toj+kNa~5{OihC-ybZf{q;*BR) zk0nT-Q`-h_rI%1mx?k6dcJ?5YeMsRU67@`wf`UA*c-W=WxD41)@k1f+?fWliWF z8~_>^?O>2#R3$bkOhrqr288nT@P`4~h1#MR!b;M|%?30=o3586)a#oC3}olYoxRL) zFZ_`zJHq3|peMRbfL_?=#b!c`!}IC*5#mH+81behfywXc66nKMU66%iZm%5j3j!J< z)&g}EJPEMH#lX)^I{lHBP=gt1f{&C@aObKJ*#M4AMhy;FB8j>a_Er&?KiX7m3qcm5 z{^?wt8i?XRmm$G=ZcwXYte9o4Cgu;2EG#fJq8Hcb^E#T~erpksYfDODG2Xg@Cdyiq zCCZTtaCN`|pr1m%Lbq73F)K`Ws)FZMxqFV|S2CTtib59S8Hehbu4NTdSpn;{{JXY? zew7^Fd3l>urb;)MWq7-+-zT?xvjoTF5y5=^=;(!~5Q(OnI~}Al+u1j(==RyI?9~ly zTBhnn3$AKZ)y-Xx{{hSw&%H`#aO|>?|DQ!1K=p2TD0G{bzC2fhZHVTAN=qjyR46*> z{>k9fQzf(0)h=+{I|{M|B-E;_=LwPF(*hi|fw2qFJL{$V+BJAiW^iP;Cb%FKP(7J& zx|4|psZw30Vr+zTs=on%V@t)y`f6d!Uqs&plb=&%a`CVkoOGQYw}+Q{IuDQ}ZxFRAQC5eMI1>;#*`u!Xax}i{_Lg+qXcv>i z`Tfng85dGr`4+P z)>(LE3^I>*i@~-6mI2x#fUSJY(f@}4i^+W_Q&V%$1XOm*EGtmm=tb`|ozqmq_5W_= zqd&K4qvrw3OdK2)CJ5~rKLDab%r@ieMGWhYZ{N95j+Frk(hXAtjO+3i9I-vV6CT?! zC5Iirnh>wZZa-?dlrpWOQ~shOtS4Wo@GP>&95%9Ii_+l`N(X^enLXsnlwdMoZJtP( z%z>7AOFVUm9Ukt^iaeOxg`%JXa5M(>_m)yDAANksyJ?W^CFC1;DYBz~P--7J%y?E+ z_mZ1wPsg~kRzg>taH!QT5GdvQ7koz4-AffS;TBKA{$?R=7w{TG+xyDh7tasQ3} zMR4QKZ=3QB_b{A-`D=2~y9;fD5ew*v0zs!SOP7fb=In7=gV8IiPI)aG<$ckGCw{nr zBDGS^*vDhpZn_8T5dhFkMwAIs?wRfUfzclw@f@i&hX$-GOH-!e)(QT%98J|lWTWHrnR32$-JiVw4s>itXQA7~r*XF+FIc~-MB<*s z>;_@iyihoSV1lzHrg92!sPE5;2)=d*02rX0+s~NY!~xnJ7_20sLL=VG$3$aSfO1WT zy)4HuS0ku^Hn9eh()|$MsW%&bg^-~F*PUijUq3V97859k2jNYqd-gv{`p&*UR5>3& znuL%X_S2!^Jx}av>p-Yd_hM76FeT{;NQ0@@$*<>dl-iV0RrMpR1$ubV8-)L~1j8Rh zo!~BJubDVY?f9wz(-C9!b21A@c?%OVh3+WGE#kLYs@HAfWh`jz9GsQYk_G9&*(~ryB(PgGpgy$ zAZW@BB8?8ZF}UH6v`YC%XSVap5N+hJ_-+3QA_sBv)A2KP{g*zHCN+?kRnI87sQM}2 z|1m^IVDR3~p*1RSdNT9g8|eRXzmvprM)eSEmb)~MRlj7;Qo^}def0X?HD@0XfPEzb z-+0kspN&T(QSQr$4h1>QTm7`q5LLc?#aQJQ%Zj7;Kc_#c$#{;cJCa$0(401jehC3BCAnk@;U@T|bhI zA!HyA2gV3?l>SBSnX(l0cG`C+eFU3=vU*u3RfaJd+}+>9f%N0^R5$THHE9PoX_|_T zlK@JoU{2@MDGkVwj%!os?K6)qd&%!wdNGW0IZ?2!$OJhVUTLk=Q@u>{dOUYZA^-&0 z$YSNC;EA_1d~ZML%}noJ6-|T^qaD~k&`n9(IS&sug#9*L1HN?o8-bKN#sFfVu`prRlk_nREbiCiK-yI-JF~pGo+{8GWqXj6KEyA;7Nw#axRi5luYR^O zdTwCiIpfRnar%_>)t(VoV9&Ppl`nb1=bw3NKCa{NV2o2rCdN~(X`q6#wG2BT&-0XD z1@>mlXy|&+RCG!V-r#Nn{Hec~K`m~S9pwyyjRIQPLYk*A+58em9tXcfR9h^N!GCaH zn8Seyt61rE^*fMbw9qERwZW4x12mI>)0P=O0iRHJN-ux4Giaxcz`^mPGUQ(|^U8`~ zwES_yui&8O?^w)<%U?dNRds+;28NDOKI8*$i4+Ir!7to*3z^DTivKUnb_FC=vXP^S zu@EkU@WpW!^Mr)DvT5@)JwgA7gG{|w0O91^GT#Y=UNI3=ZHUeO9z|@&Rl*77sZdA$ zNC1=c&L5=4@zDY+`SA=74LExMCh|$u&^6l{lpy6C~T2OYN#=Sp`5CsSP zL#@i!v&JM>fzr#%nF2NuI&AtQ=*}6&{m!fDxbnhEO1hmtD|azMTS{HE5S}5*ze?>j zn{amfV2okF8+O}vv($MRh!Aj$>u~daf4?57HORLQ%C08~(USe!q~8T?{2?$`l1j`X z=m}idV%ts%uRj{bk)SZ^%Qj6@i(U^fxO-L2jc03?u(8Fvcc~J(#m=(YtX5V)Y;=4Q zO(qiNgqJ0tqa)e?JwghjlOP%#L0~t>@ORXK`t>Kf^e*q}GC*jj&akSfsmCADT$erk z`@V3;2s)c`r;uHzcE43x!^rG=32}`{(!V@+!bBZ0ID?7lxdRs_uYrU6<_e@u&IBR5 zDDP=kLYP;jmwy@9XXa*xn7f>8Zxw`y+-f}wf@Xf>BJK>d;!rt$%JE=Ho<#jTfo+*! z=kD(H4xTA`Lt*#>z@!%_SfZ*j{`-g3J^{#Sw==}4#?5ObICHfvk#UrpvW}ITI{Wr#J1F~)OJ$6Z?e~Grbyfvn!}B@tKbqkf>W>mo z(vhT%(p*3|7IA*uGgz^ZQc*6WMh(t`FUYVmAIBpXPaR7n1!m568!hPxr50!kGy=s2 ziFAbgQI4n-WkL^IC+T`Q_QZw%iP4F_mz$@QzZTP;$R&iBmZUHcqZAAy2OrGRBliu( zqDt7ab0G+|j7WP+@^ufo@)yipJ^TuvSY6i-yUX8ANL(?TaGrtmv~Rl@dK(>?vKi_Z z)FvJrFE9A$1s|F6MRe@Wmw0n4b+Wol3aX)v`j--S7c&bZ#C&)T8x_Cfw6*e;^me$*zm zrUrc?`y+9KH1W2MiDC>Es!t&eqCoeP&J&|w+W(oq;5D$#pnzGCnw=8*T1 zI}=SZhLK^(+`<6_@gI`gebrB?yoR#Nq8pUGm73NuoiwkUnp4$`CJ}j?%5` z3}j!-o>yF0lt(+E2Bwn}tOs+QM3bT47;rB?CkbTOeaqx}FRwBFuv<;=94pKqojp8lxg&2~RoZUgqHFyn4Yayzb*O##l^96oa1#1V#B`H_>F zA58_3cES`;S3wpU(zXS{R!1(Tobc$x%hB_%VJi4YXn)SW50}w+JvxRnEH%_2J6DjZ zhAW!>6zhj=Ynifh;G5ou;}bQ?GABBIsv{P@)S1Sm%-a39ssvX{B!{h3IG-74h^3-5 z?HYmCpzu_oD81f>T@jb2tIbi(d+8VRU|(r#!#>&X_@)$1^^@x5kT8Fb1G@(h4Hza3 znvjM+0u(oFz;~AUrpDw{+WoFL_)D$QfE_&sSHck6Ysb3n-CWpjeSJJ?)*VnueS|bw zJ}Em<=;-a4jy!7S)zRNEm+BjVJ~Xe)Zs#8zdqVw7twRhYgr+8RVgYz%8;7fR7_)P1 zhxxTJP6%5&>T8yH3cgQj(0S6XDAjyuPtjHTblO|fjmyp~QUK)d;d3+tsRa0&iqXDj z7WwR$R9j{_iz$R-DD^r&Krtv~C>;F2N^z$pNPTEAn1|`CXpcn$RT)`8YcN##1b_K-ggj{*u+67J4R0V~+3`0} ztv5`pE`b1`rgb@h1$+SVJL{y}<6M+u-qhi+mI-hK&)E(CR@Z``Q_nv2 zF(gFM3on_Bk9S>y8FsA%4_!H2E46#y%X(Cg6KC4Wqqh9wapnH7)fcE47Sx^1nW2h7 z6Xi^#M=kYbAP8$VL?*H8+w5?R!!%TA0%$nx-Oh>LeQL zMN{Xu*m>5XC70vs6iLvqJy`-Yh%}q&Ww9^5vU(?^vV@)8k04$!aV}ZAo5R{hVrrnr z_YB@m4BCF);X+EO!)&*BIKWT=mx#}|rmliI%*FA>Y{qjUAw4KMp>)k-Ij7NTyi6f) z3{K2{?v8OA!uAAyXa<5*V>(Ij*YP(=oIYD=^EoeIk4ako1US(zv2%RP>mP$bziWPP z$l}mVwayzXz*chA#ci!+*+VXN{)BG_0o3T?^g4jwAeqcwWbg@9iP2)#m<_)Vm48RuTcNC9XlKs9%Pn5|pv?V1!#;o&8%-Ly0TvL;g^Q`C~ie1GcKz}$S_u9jGU4YZP zFHcqUMH@WjO26=xA(md`>g?yP=dJ79a~}OJ#{S4QfeJIEe57Hk*@HHF%S^3)y2ewX zDb8b6vYdd-7;w$0@vk_F(Lr;|?H6hfOq^jIwCfqfjZvUMH{LVZOqXTT(eE4)#>*UmiRa z!zG%^ZgCK9-6zH^##36s=1ij7UFX;ZWlMqDg--rdX3pe2p<1h{t{~apc98scyTQX* zCh7tM6HY|P@WM)`N$fi>ed3GjK7EmK5Y_8d(JF!3Jh+H$7pDQ%v}j<6(mV`ecnS=H zqR|2xMhJ4J%ZXi=#~sA_Zp5)rSixM!F|NZoVpVSw2-1!BDZYp{LeOT?lb3NFI1jQ+w~vT={Q#QpVj&iF$D4CWUM464~ z1snITY(_xPf|BM41fNa11rYAEW3uZ$ikdO-S%OC%zmvT!r*|7%9v#MT5?ixD6LeL! zt8&qLC~4ibL1yYwSZ*w5J9QK;0r03TK&C|wXdAm72@#}fM6{UzZta1e12eD{gN0_z zl8(bPez1*!FJ_a%QD{*Y>-Mgvo1B(|PS%~*Ij~-assp!Nqnu5i5J6#WAh8wS8|Pt@ zQFzO+Q3}KY6yZcn^beUB_n5IVGZN5ldlqD_XY%GwwN5zKK%^Bb;U`Y%GcQ^&uke`f zy!ziw9jJvuWA}mqbQ4_@Fg|Ntf!6N!YqK8%u*8D>7eH;W3GFqn- z3Jrzg0O&`KQu(I}NOWl%Ab3&*Y9e4zeeXVb{FQZVXp;h?zM1e^7-J`(t0^G51hu~< zx1Mu}sN3}Jf)F$dXgKe)Ak7&eW+@?*Nv$#;S#54@)*rvr5B|m}?)#s0yHan50a)$U z;6y=!EGZSGv6`B`mQ{rJj{v}X$w)vLNbA&E6xA;MeKUxlH0AxM9?~QhtV8$*1@A&# zcHv6`UWG~XT9APQF^C>8G-vNY3bXdAQIIYwW>%A{>q=;HqMLc|9c?Qfi@#C6Q`2^LgQ`DcVI_w9fA0V6alN-msV?8J%wYp1MZ z8bdB&n*oJ=kGm}t|Ht4v-H%lue&cF`P@enr0Bq#=7fH-#MJlMRu*EldyD7ozgtZEL z8`WA$j2p5cZC$#VmNM5XPn&EU0-@=qz0<2ojz+`Fvq}7l81^Iv5y>^x0*`>>{&^dQ zfe<%nvO>d&*B1Qc>>1IxI8?6!b8BCtWDNlt`OZtwjogBxE%pz}TfQ&Tu0^k1~BC+OC7x%q3cKdES1`9vzabCCekqOUYD zJ*7IyzrxNal#JJffZV?5VCt%FDiqrf&$ft|XGC$!wLPJa;kIbrjBAF0hhNyA10RYh zvsj@{ZTEIW<2Gnh$ackUp1SlKduJ9U_~>TX^1~jSu(8Rs_06^Kg;f7zmQGnIPfy;P z77u!6Jum5s(sy9H7GY90Y3$afB4vHCDVtmWd`QDQg2W#u>k_CU9DsRj4t%stQrmIN zPOo6{K)JG%tu1J6a3=(vWI|mI=?u|Vx;&RxyHDrA+0;I0lGPv&sCtTiBw1$V1shBM za0{b?S%-1o#1Y}am8 zb#@r^t?Q4hOYUR`DFkz9n$2-f{)5GUFOO=5^$?h<#J24Y-0BJHD`!))sD_;!744!f z=0?ie2(y7x4+Z!L&moNAoN-bmX8SCHJD9m_(5H+$MJ7txS>x}-3(#~{8}|oEbcPUR z)L;CDd00Pt%Me92t(H9HD37DNap{L`tD??mh~03O$P(CSpam8`P;~f)e2frC z%U_(&k2g6_QqYK>+HkX=!?eW?80a3TSCeyv`Tte`qIOXz zjE}zy%6UZJgPu#V#{Dd6R@=fxV$yGhQ^7NVLMQ4?YBi0JWL0{GG5&KYAte2f&^f+B z%p0?sNF`zX9ftkNe68&WaB8wBQe{n~m$Z8JmCfb4BX}5=F=_x0SSNyNorz6Lg(uE$ z#vnMde4B=uvIxc{;%Y&!QJFE8L`e=(X0aYy<=90BJ&TrBTii0`sf+Z191F0SwJ$64 z`FF!j9RiSDWSeh?N$nhz3O=t}A>#~z7xGZrm@u~G7(L*6ONTanI?4q=&ePCkab!4sE{C(phbO0X^Ool4Xqen@zfH0WS8%*&`Db zPNKM=gM7@4;{>x}t-JM7pBb&~5MmwEx9Uo29ofDYhpr9W4vCfIjm3$&W80`HDQ}wI zW6PIXY^;|B6{lO*WItB_tREKHd{$5`67_VQEjOYd96}Q5W&5XaZEQPyg?Yjl1G4cL zibWMv`*YX6@68-iog?5+aRhi@GYf`Tl!wHhQP15VPUq~xWh)H^YWsVQHO(y-Gy$5q z{|9&S1WlVN@0d@OH#(0zg%OEQOQYz`Kn<9!f5k)>siF>hmU!WBT`UL*>fA8fKQ%ZV=QP= z<`-$ZzrB?@dKO+?LavjQ$h7L42%&CL>kjJH*+oyuI*D=Y0|=5LS#ada-@k`0}&malGYZ zO45Jf95wmIGrmrpV=dVd_JdnKr9UzgcpJQIABI(_bo0d=dD*cIo-3i@trhAsM2{35 z{c{0`Mq#ynO*ynbz^w6SsRQ4wr#ZaREUoPVQ&`uG&af6UNgZB(?&QX(&r<%H$j22b z)uJHec`&3rMWd&Y4m+T`RFz5Zq-{1G^K#i*;~E2mW?_K>6BP9f66;-Uk=uZWR=m^C zY@Vae!_}9b5UsCkmf|6#xFx!y8a4S=0F#a)Y=&;3n4yvCjBeQ!C;X8#&Ta+p|9V@wG7V+?Qe zK5%3VQ1=pstvHt=bHJG0r|0z(iCiey`!;9IL~iT7<$k#2atFT17?|Fpc56hq*E(Km zN(sb{X^COBz4f1qbQ*rqAO7-q1 zN)f@kZQ4zc<(JB|F@~NIiL}VmafbQIYok@E+j!jQ>CD{e z_NoumbW=I1!;$t4?78jupUp(oHTG|Hv0GlY-T%}EC2A@*m3JoRL!?K;=JRI;qcg~S z(KaA3d_Irh$Vw+EYR}Z4=~TzM7R-8!!6Ib$s1# z)p~6;VYFdE>{(jBxIlXxc((^Myf zDsweB>$zy}y3)V;N31TDbI%s%d)rrAE%g6w|{JQSxgA& zSLcu^=6qt~VH;JnW(#!hLZ+SHg@pBrN|vPf(w^KT7l0j`#4b6PR($;#AZK_$J)mq4 zUVKK)bfkza%Krm6jw);}%gLY(tL`aWM|Be6!r1TJ;ox1!YB| zSei!3Nhhc4EG^@u2cs{Pto#r!NaeyVV#;Ldczj3exf%ia2bh17*cAL$YXdA3uG>aT zXP{9cU3XugH*I{;z{JSZ;w84R*T69k)c7=6HT3W7e)^x-WAIT_+|N8b1}+`q<@Ti+ z;*Mt;GLi_jjTNc%aBwh!E96{!sy%xu687q;e=+)!B%(z$WHpwz8kO9@`~&W5V`aJ7 zN9zIK7oOcuy-M4blymY*BAMgQC;W=y3iqv7AQxdT4P}@~>psV)2aij30?q&L&^b<9 zpVuM4Zx_#^Da|8Y;na-sehG!ThgB+48F*3}NBGOEVMUr!#^G4BB|&i94K@R^J`%I_ z!AO1vF49y5XnoscAR~SJ_4Y@_-eySx1!KxB47?b)Z>Fig<5}I*Sfl{ve#AW}}}zN~dx+7ylK2V{?-Ti&~ZA%53u;Ysw@+-f0)t#X^4Q%}*HJ?2&qc|0B!L-6e? zpNwOoJvu&UieDo{QQ@zZ(I6x&>M&PiR=u2%OH5B{(pfD%PH)81**@UqA(mp zhXqVl!f9#MXkeStK&EXe5DPLlYQM&`c#XxzD^I?wrm1A>cjY5g-pFh7Ao9$SS+~oD zmt|e`3`mbglYUx!9`mT1>EnJ)`_+iDt^3?WgL*{3J2d7;h6~(In91XdE;=~c=lQ^N zQzLo=u+q`9uo1ljo~bo!GRxBtte{vd%UbMMBMZQLCdp}81}!_Du3fPkXiBab)t<| zQHgNGN!8!f{%fB5%Bt@Fy8zdrFxZUgqUOe-TtW%5JDmF%tIe_e7-JnLeb`x#MpFZM zSwR~j*IXmA1^9j4&KvSDyFE1ggfnn44k0Q)^176N`I~6t12~J&`ZkJ-qp`yK7>#Ne ze;jlw-#_;T9sN8&nmaz66Fo)?Rs^)00nWx*C)#_$w2~+ zSH~1F;bsy)=@HsNk~@Vl%PzAb4Jt#llcSjMR)ab>bOt2zO@@(xF3J=)!()M$^ZRM; z5sj+b#;DdT11xS|{CHU0Pux;#xA73Y(4k>qgCFheX5cg4$5=5I0Y#kD39xKOFBJt@ zqp8Cy9sFNytS2jzDBUm&cL&)rX*L|Zh)A^zpB~2Wrs4fIPJ$54PrlA>*oJPXoxWtz zAA*pv5u%O;Bcb)Eu2U?3uh^!ED%!XK*skHJk9&VHxIBXSNg$LaARScbO&fvUi}tEWysMHYnXg#sf9{+rO@+F|CnC9-OeWkDJiFDcVB zv1Ofr8KduzfgX>Y5<@Jn=Wk`JfjR2?c{Pf)%#_g!!Ag4OatvtYah*|yKW<}AquS@6 zpwaU|i#~M4iN${MQ;kwD|K%Mjy!+vLXVqAST?!QNLyI&ct~tW<2Y1VJMwiFQiB*`O zH}Jpx+5Q#bCb4+Zlc-u$aRWpJ5!8#snx?m?cx28nU&LRfsbOk#YddZ|hb^ox_x(^t z+SjVg@qoa4kwgcT@DXR?@oL}tG3avZGE|FJ#q^Up0+HYUu$`=z=%WUx+Kue?+*(~_ z8hh+MB6ZHGmNFz@<@!OgYQV#_uFNu&4Y%8p6gFv%)6T)|K#K`AABbpbJCGmpOjq06 z-)iw>BE;kXqMv;!e-!cS&MF~f#08IXU=S*1(a#bopCYDmdkb>i%0p9@n9T!dK z_3Gq(tT+Zp)MOs8sp7Oi-7f;}o4Sqbrc3ZEvn6?_>-|bMooe36zKHa(?5v^UP;8JV zs4GOSDf8b>8W<`5SSRA*v_{3Vich(T5Fip83_usak9X=!Z+7t@Qk^pIzDD!uNg(Mi zKGA%e*AizB`fK05OpiEj<_=^V#xhV1fB6!1k`PS-Rp%y`=XtayT)9py%>UEFcqc|B!d%Ol?d5NHj>!)QtIFB=Y0qGxJ$J|% zg3Q{~Sf^V7(i*8v>?p7rW!CsJQ;d)xu&6xy7o8g7%*UsCT}Vz`Ge^QHtsi2r0o_v{ zD(VnpfU3|Vbflw@|Hvc-Wu6>B2z)8IuD^5e=U?05sYe@ooo^LavK%F2?=#ADjC#R^ z;>}E+gt~(6;|zKq{EdS1ArZ93iO+GaSG_OWRenMwnE(SG$P`;PRrt^b=n zJR1;Iwx@XzO&E7$fqw1(Wgp5;@OK^kID0b)Qh8O^rmK1;;5V6#Sv%Mf6uQTx} z;73VNCSf05xV};6j`7LhQYdlN|Fk@{>^6$w`|;gh#8X>Bmtp7UEA8~|?r8&=2^6?_ z4JzF@6pGuUgvTDTqqdQ1%wpOFIWF?!)&@X8(r!VUNk%Tx-kl%#DPxH3iGlLmaCt}r zvHjGDUNqQE>rGeiF@sraVMMPCqnGaCbLz>yQhDSot&CZ=$JDUOzb)x5m|vhebF!-^ zj1@zE5gQI7h7N+WLTPM@S$pD2Ad6PSd`lnxy4xV!jOhOm_lPIWE@NUC*z{7)Qapd%mVnRi6tOrL0BU&WNc=}bgxStIYNu^Ax+u2xT9_AE^jYa^Zj$h^RKxs8(7eC{2UOK!al-RAp=6!Zg0g7 zIgvo!p0wv+2RlDSI%^DLB%nlG`gLnDGkB1o7129Zk7o>;)HC}mrcO$qF)y@6AmprY zGe28stx~$lYG&k=FbX{AJLcAk-zZj?F4*<(u^_F89K|8fM&H@;d$R^rm5Xcbjn-}V zrQ5U+sMh8&I_ph#oC1|J3uCz^wLt4G5$r$ZllZl~^A}fjE;3LmMABT5@oN^btXr0W zrI^2)hPg)>VeDR0&Vw&7)pXaEUtngt+K0<8izetD@=AVxWJ+$D1ueJo7P(k*$a~)OE$QN9el7JR$Tmdq)0oq^ z77r(NzXowZOX}2M($U8o5>tnBeUXd|bys+yZ02QG+BKB;{-oFwTRy8-SN1x3jrNuB z+H(KrX_*_orj2`0vc{ah_2Hsr6jUgml!7>o#x2T_I+vk%a1XAWiN!oRQ!dKDlbE&c zF&jMGcf)R0p{F^3-SkD+^Vtl*-k`%C{BP~FGQ(9&Vj2&ec;zST-R^=bT7-GDysys8 z!T6=}>kV}kGt<<_dK)YY_ybo(+laRbgI<2b&18}PGH)W5T#xFJ*u_xu`+P8~5M+99 ztxYI3!k1%=Na@HIS)lb+Z_*OL*eKE!6dObJgXa7){=S(5J10j!!*FMirOhEKOt13}@6st&7Hj zh}}<#i-X$uQhF}S{{d$v@h@wR@B1cj`6a_*b+8xF(nIG-(@IzL5gY|>!1-&U37Gr5 zzFRcbiz~1caN)+*>Xr;3Q>)BYvO2deuwVh^9ktL|PzWZ&{Dvqi-?e4L+!6aJiKi%! zhuW`VPLk*X_EFQdo+%D*m3ZjicWLYN`6A;P$L8EaYLM*Td^znxH>KU;-pMuEv0MuNeq+ zMt*uvBd*f>ao*cuTax(B{1wGR561M}oI5W+%Sf|UPu9RUfQ}tV>0+`}I=rp0zy;xE zh)2v>_{HM@$th&OFY;9d4BZ{CixM<_NI~|#3AS;jXoCgPl!DnMDgioid)yy8*^`nt zU?z3d$nm*i3hd}EVIlMyRq)_$5gSAire%}Ak=Hvl-M{as4f&(Yz&NrQhycL~s#!&D zwxDfzrux-+{fLuRi0>E>(L0rXmvXn^+s&oU){10r`0YvLao`xjg6Lvk- z3#*ZP+L`4?aNA_Kenwo#t!-T7b4HS7#c|M=$gA5fNqAHMCVubmu1oKTS2Ic5txnaE z64jDggdi+*`Bomhi)Ausg98nZK_%l*zoM86O%3FI0Uay(hB^{f0(!XJ&KyW-t zeB8OS`47D}#o{ke2y;$iT=6XsO<_wCzVpDF(MFe*VMY8-sXOb?#iG2lehfAE`UA4; z5~;%K0e|%zgISez7;bCksBmpS7D_iAo4?$ceqAOi_gnd7>;zFelI2XxP#|_e1g=tK zhJt(yQC+mn5HI$b|z8u?JP7P)7~$W&zxZ3w=1AWcs5qnLB%$sM85BlAQnA24~k~Zwk4+vq!iM{75bZ%s7O{NDw?~v zn4WHa|7r`mo=c(M-fvv>hzf6@2!0n!IPu4}$YY2J@11jyk3o_Fl-r1h(Rk)?nTW0; zO&ZUC#=JGK9J_duTPsLE?z#&cPRG&!+;EFvV`}aK2?6sEc0`1Amu*RxU9i zjgGaP3vznv#8NvrPSZWNiQjk{pTEZp=GZ@nzSfWx4>q;VIPP_ZBBYjN*~W&h%_x9W z3%6Z8i?2&fQ`YFxyp+_IEDRbXHrg2_yYzTrZRV;P01{@wNaHhK7(n4TLXPtnBfC8V z_v*3XED7<-)F+vj_Xc6vo!DIn{)PJd{DPu+vXv6tsssDALI}3m-nd|!lqA0_k}L%& zdU_h~``qAZXjNP63A|FrkL@cR@ER$uX4Lh6AYHYq>ojm2raR z`zdu53XV%)daTp&)@b=x0y>d;XhQu4XkVHiN`d-l{W{rn5v4Ns@kyS*s6Xr)zloU& z$_cbWq4H_!Gx#o2OGFNL0+on2qw^m%_>L3N6XuA2VRK$&nHl{eVTe~=n6(^%VF4_* zMtYQ~Acm!$ziBr;9IkJTj&^p*m#4SAvpBVwfpvhXV`9Y~x|TQwVjSZ?57&ObNur)1 z>0k|ztWVUSD`jA1%{$v>rH@=TmytzjCdN|W^mxFYZebvFhv)qCY#x*5s_I1-k`gHV zj$8A|+%gG9^>}2V@G>DBrFGqmwRPpkmp7Oo_rwh@gfFFJ($OrlsIK)iDl05Q`x*J7 zNN@l@-RN)f5`c*kt-7#FlNf*BsGpIL2QHcisrfG)ot|25=!-=rd@edQW518_qs6`0 zZ=h=ROG#q?vSRacom|RZ*D6z5mq0ZAZ4&!K59An~MlSM;h7(C$8^RfCNJ8|_E#ce# z8WqvbBta&@yYT%i@p*(Iu%GaEku{N+l(8!1BHy~8zY`|P zSS*Ztu1oYQ8TGI3mX-X3W^LZ5_s)OAXxzYNoUJf}oN$d=yP{VvYQWeESCW=VAZ^)LE)_BZ58 zGO_Ti&2?+`8H3N#V_jZ8#N{sB3Z?MUoG;XRH)kFBhwY6k2-aksT0TGxgcB`NMMtAn z7qDaGw5~7>vCb5_pc9R*&~`Uy6wIkr4d>>qMrgrp`F0-f(41fW$85iEEIDV3VTb)% zo@B$}>(9|NCI!PAa#RM17Sd076wc@iZo8UdAs7*8=5#D#S*I2GAAAV5%2hDd!Zy)& zF|Gxc%F>C$pfokd(Ed$RHGf$UH<}p+HdRywn#yJb9Gk+2xSk;c0S0f*Te!unuvX{R zvJumt;?YSV*;9eEoiW5KS+#|t_J3w6WcpXvvxQSU=j!%Nn1b8XpGSC>2XwGrD^FQW z^g`Yt5yyQUG&o2hxYVo)&wh?}Kf=X0S^^|dg7Z&XJR&6aQ~hs_sOPHAjBExkltA;e z#TSh7_l4&KWp+1KO_@sCj+%id$FM}lAi;&gsY0X))nh8&b?ohI@xYs!MK{!hvdt!4 z@@*pm)_UFt<&6LF5x7|D2KvG7U>{AV)P6_WJ7fQ6Xke*(V=OV*}8b* zf=(=FO724MJ_l2){%wuKL>HV#kH5jykiTC%mx(HmrEj7RqR~>qQdSQ|W{1qz#q@%* zk>#E}+;KCq!~a$lg7KWGEtR-*95Ui^j)HbKpfIDOFiSsUygjQ^(vPN;FXgev`939RpuF>V#V>H)A0tWIe(H42J)%&PCx!vcP4l9rsUL04XQOTC zvAuo^NNj>S=dYY@AwQ!5eM86J)ssG^;IU>AFh0o&_#LC^Edn8wR$*MY%51oLIVNs3 z4WFdFe0QB++^NAy!OA~l@1PrsEY{IA6TzF2zUVNBNsYu8q~5U6kg7%~AhWWz0zxsI ztTn4lV|B*u8aJJo2)^IYZVfUhg3Ig2Eey<$-qAr?hD-&4430;Sa()QOU%Je;Q;Njj zF@#Qn>ykS49duySOH{a*2mEjj0d0{1?N_15h~T=?;k zNJEl9D!Q~l?s&hTu(iP`CSKGT zyTpB8Rv3!pMrLx+<)WEY=DvGq+u<^|Y>(OT_Zu|5Y zplFO80k9sM&aAiZ3q)`pU;)DJ`-xW_tH)XytUi;^-$M8VIHXR8UngZ%{n5deJ>3BcTb0&l#Omu zdb`n$sHm`f%Mar$y6q{@VfpEo>8|rcbUz8xuYBF_$FuG(U@n8q%$d0vmkG@+B9HrU zHN7pJkF@au=qz*jY@x9TN^8#W@jf7tjsHfNfElhyr~~{`+=aMfI)y}rpa>c9k?P2x zUSmYaGpuitKxlz-;Cjk2UVftO{ytbn$VoW}Uks>BlsPCu&kG8wy zzDHE5Oy1`t*Ok;W1D29tU-9c_%<6eSK!gU**I3~vI;mp*&($7P|?|LkVegiH%cEOf}nswYt@X&9pX zdu&qf3SP8s+8YCX$nl+GFa^vf210;~m=IEn!{J;HaW-Z%n?{Eb5&8=~O(2rvmogjTifebVprkEH9Xbih`=u{m3rg zn}ZSw)cC|xF3a7%Ih^Zh8xF!S_&{!W22@jj{|hG*g*^z*h-Ji7WX^+th8p%a6Ug9U ztIyi@1-8X6zqZe=*x4y<7LtkCqLV;5CGqGlP{N%tUY62zu}c{amuOU#k(Tc^$pTZb z+`Izfo9UK4 z{<2Ne73OhdL?LuZ?t2i=x9Z=-lI~enz=!J&VQjoI#2*mDS~458Ra* znm~a-bJ2mV3YYUrsvxG?dAA}ng{u$o2|F=ksk<~qRD+{hXn+!*PsqjRnp5Nh>(0l= zvIbb>7P2zyOu~(SvRgv9&2u^}X~C`D*mMs(mI`!|7e%tbua|MTL^;;0VgPaz z3uxn|r+*;Vo1(Ia{(68cADJ>sbouzPB;iRVzcSo-%T`QW`o=_-G%Jy_H0{XFu|;e6 z5&yA1y=zL0^3D(qxe3eFnIiE<0aX2W#z~K)dC6(|b*)LG*7Rn2WyeE}4Ipgfkwh{n zRl>&*!9)8AtblQy%Fg1OboTLxrW%Ifq=F5b_Mpo#n?2H|7FcSoWZMt3yws2J*WjMG zl79-PR`u)E82v()&&&iHpa-!8n0D@=#_`?=k{x|Czj{79{8}+;JMQP&Y0y)()0*qu zK(PMQn!sU7Oa}t07H}>=e|lunA;IiUD>t{3WfM8!Dd3?k$PS||e$OG#TtL$<2~%vf z!iK!tr@#1GO?l!-OLn%kBMIX?U}4C&iN_?q@;SQ7)1LWeCZgY}!qlL8LHhcmm5ahRobDC0`z2!z{&m=?FgOkD9>b0)fv!1uso^#Uw5@sq zC8u=&n%P*kyLwHR6pBA${D>}60D5j;0-viV)~z6ob+%$GG6998BQsLWVT~z^zUjqH z5jJ}^2}N%q-c~H(z*N8B0XV)u3iw-NjnsuVj0npD?#o7GWx!vij(iMyR>`O>Yt;X| zz)Wlk{~s?>dEMD;RW=kvtBh%DN6udKTV*g*dS zxTnY$X$JY%_XG?C(?Q?l1vJaxKFilNs71FaDzc$#|J+ z*71hniPSWsw+WI{O--j>?=ef;P~(B8W{)E85KAAKEF{b-4d5kP59)|J(5dW(+v8gN zkuUNbp`2f`*Pe&l1tw>g80xo2ST`5htO_PCQ=0-(KW&7FpZgrU#mfKu8HiukqJ+90 zRV~V@(l@~*7W^BD-x!poZi@-Bi1twC^lbOLQOlPC&^|H?SjYnuzK$h{mA#kv3)aE` zx@up$hc2Gz!l|se*HkkSflWwJ+%WcTn`egsZVtXT<(Ih1=rv}0w{hAT@OTdudx}zC zW5^Tsj^Lu4R%iJ)FOIeSbj>F@!t2@Wd-rd@EHvN~M zI-fX+TVlMG3evC;piZOlSdE3)hpmnwiR~kbLo!-<<~J<-)SVb|*Zf)VatzokR^Seu z_Jnt2ZfZn65q{vAfS|M9V1wg||A0*Q7sjn(aL7eVSh6LU<+Q1fKeDdATi1O_Y0bO7 zt~XOhBnN>@7c*7XbV)gZ940QLV;f#eiW2OXbz$ zPbhm!iX3{EzXi^pjP&gSxQHAjQX$l`S#Q$i_BTUN@h!9zeXIfydI0%WvC%>>n<_1( zq`~x$-(!6=91zo~L_q4$w!lbjSK)}QGQ1P5`Qz++uo{80%>eK4??pn<3>o_H%$=BD zpI^FHZuoD}JT{C`FZGk(mFKi#5 zg5WbUXJ2nd1noM8=w@0qjgV(AMIP=9{K0-|ZHenH%vAZp9@U9%v)JormwbZb;_1U? zl_bRxyiM1)dltKG_I-6bWOfoUwt6CSjFUkG_s-0MmJyD-X{Y_&sK# zYX#}(G~H+k`Alu*ro-rNBa{!w3r1mePA_1dWa#90EXu4y9u4@|$^D};c`58rxy}2G ztWvuoqmKw(T7nF@z3(Tq;2QlOHlCI~S!}Y_JrPu=G8v9Pch}8WXUCwT$L0rEK=cLU zdvYlF3n_mwk+iNc|JEucJED!Qv~o<%oA-(!me-xWc^{S)wyXFAdK>=k^7`@1uaox7 zvar{<1UsOX6f5SO9HOv6_0h$C7+(aK#rCP}1 zZT?au0d%qo&FaVU4qv9Pyo(#RTq&`kJ$JrE<80?_8ntF7)oMKP^oFA1F+w7JwT0hp zZ{%$R=9Ljk^PAnpC%6{4;^`xntOI0R13P<5dyczIQbB;B$%~4UqR(H z)m637adSK6cR_RS?yChomk=S9gDSo9hHw{L4Xu7EyZTByx~ z6N-1mB6YtU>rstF&2TneD?L##9e-zp$`bylG?ig@2wHZS_6hHUC;9tb{M|WD{ty)E zv^A?FTIa<0(+2;Li%Er4u-Zputm@SN@CB7X)~jRcXUt50D%n0a?*-3-7aXQ0+f6w! zXWLFm)WF%jFCiell^pldBcw*I_I^z)_YTLOu^ifh8ASiRd=Km%to%ihBrnyAvvN*P z$|$qi(>!7RJqBhi(zrgcBgWf2c2J?V(|X?=n@b{*hKaV>jhRc8RaXp6oLxcXW4b_L zE5+&96W)E_^d;bDIk$>jXeO7~t5!aM-zfMyV@j`G!%((-{UMVSwzi-layun4x$hw? z8Qbj#$;SDUWvYNJnn*6lEgU|V6(29K@C)}`l42eC>eYJat-4q4X1WP>2NHxqi~kO! z0g%Z(TaNddniQQsgReitq|A$hrH_C+uaKV;4!-SYxCUNmsEFCr*ebC^$Lpk6!MB#%G21 zmMHE0x)naq5I9T8dNTDV1$zif-Y7YG^t}wO!Q3N%zZP{leeQtj6MKJ)lZiS(sVwU3 z4r;{f6=_!SyxbG43cU(hM{}-%U!fXtMjF0Ak|OT76NKF6dn0`E+DPxb!K$-5g?@)? zaC*gK{io}jBt)aC3EPY(;-x!DP*4nj4SY@BmgBdyJ<1m&#Ff{r?}Z{o$Dg0kj3dG* zB2Q1Cx5sb<>GU>6nm^93&^T0Bx05qHxoM)p3M}^MxCE3kRE8~db&&o)>P-H<Y{- z3CdwA=6YyrsJIcFKJM58%ilQ_aeUwkr%Cr0YhLnh6z!MJyp(XoBE0 z25Y>8$H7fpRCQKUSo;cWztEXJS~(@PU#yxnBl-v<*;x>m7zuk*7mFCbUjA2oa4o!u z+qR7FN;8_9Z`rKr=pEKD5crrla)7wlM6lGnT~UPjdSRDkf+9Cb*G)QnE|#av=4Hko zXn;zW2=1X2;3~(2%%etGSJd;rn#R&w8WTYa5e=I6QRIyfp~@{E9MKZrWA02U&4u&_ zx)7xqJGIqpjUX$ssN9I{;=coXkWZFZO|*Ib_-wI&|2)YNeXvnj7vb9nEZeC`a!1(; zFo@7Ng2%cq0PbG&xSm`{tS z&R-r=ES(Nu@V2c+vF6Q-98B{D`G%*Y$+Em~7;Orzg6c6Xn%LjyACvYwZU5>3_9Ooe zZXlHEv@JKz(t@#(?9aG!K=}U=1$DH|)ts7|Dkkwb??c*gKecjyqy#T&f_*0IQ4?9hq(X1n(tm`Gdp?hh)QGy&NkF(lM`O@&^4=>a|JC9$i zy&GfI7M2VF`i4IKpoK&}GY1SHq;q0?dwf^CBrLtuWm!rba5vD?pdayG$d#AnY*aey z`W0WPG}ea*xuS!bP{5s!X~*sRdAeSWclu=-7)t(;M-6up>rv4_=urWu+SaFnXlf6qk+zdIkHS$4V)Gtwv0Az zuf~XpA-!%$sws$y8q~yE4FOd$OZB4}>J=#G=yzzwFvFK!(AITuDYMWJePLu>A6}SCJAr~O(N{0WRu!cEM6KrHu?KS}>i69y5AX=r__ zBmE6WY2_>6!4ltFRgvTggFPmMz3Sdt{k=09uW&|NIxJLhUx zqO(WMvr=PNr!B~gKB`W%g)X4%Q=!z_rXUh;=7Q5P(`y%QKS@#KI;Sg5)r-uZ}hrp&mMqe75wdg)yQwNx=+w*i2MHX*0hg#A$_8NvpjgixA_%HJ84ALW3t2S1n8Je zax8K}JYrssa8XW`2@;(s4!zdaerSq*TuHJ!t|5ngAc)Xw%JLF*>(@{CaI0yeO8AToW0hIyEB+ljD5qnx4{aIOA8cP}YoC~2@ zbPEWV7hf!)3lx2OL4>DM9Q%Wne-Mo<-K-7BM6qrwO<=H@yl$p2p|I3axJVLm-wVZH zFp4$5l#8*y-t=egzEe7L$1Z58OLGmZ|6lsuuOs3oCh2!+aO|7kQmo+ays4P^`WNQ0 zNYr%*$?QC$wfcWJxMwiTdM=n$Vo5DIeuUG<@on;Zps?S?XK!9%>s+nCZjAL^LTK$A z^_gS1_656yh~0|#0z8QK1Q0D2G5g^u0sIb<@~F1~ zql&_!Tn%!hsgbk;baX_^u80gsLpT*%e%(A@^ORcZ*t^rcw3#8v{7<#{x2|gNl&*i( zddRz)eQz6&U&%`r)uW)37}ncTb?5ZhodmN2=Kd?2N2*!id)93z|HIzr5CQZSU)WWh zd)dEaUbIq>;+|3!cuq$WlE1E<{zXME<>BagdUIQ%ONWyCirQ`&Llpc+cGR8D4opDEE+qMWZvyxq| zB2>&i{`Ig6G=Uwa%b}xOq3J_y81}umcN!YZOLQWf*{x*xPi)UwN_y$NWSTJJy(Ho( zj4Fx+xV-|RrKj|qTan%Z2Zxt(K=%jF;5Wl!%8c_i=WE$w(v@Qp2Tt@59f0_(bP!cd z5(ek)zrSaqe9<&Up(N}Wu71f5&rm((($OZylTTNRb5CyZq=JLw~%_~QrKYhg2?8MJhn=P zuqCu7pM7;<)(OX#79stHR(@3m#ll%``c(KP{js92xflVNG}2|9ybRS&EEeq0H|XXrt_Y|A>#E9{cK?SOSYz> zI3%2+C$vT67t##ZaZ@H>=+ikc#-B3PBYu-}cyo~6)FCK+m9P8*9NScmzx)=dP59Mg zu30)QC>m_C1TFIa1Z}VtX%S-6-Z5m1okljYkA-AY=c7Yv-?t?}bTQv}K?jL*i5IrK zyIG=^+xr@>TM~fs5d%Wiiv)zr`Wg_!>U94UsBO`V2GLL7eHlnEwGL5b^<-@bct=E0 zqbL?d4`AX3R1t3xMOTIc3{&10*-V`%eDMYa=ng5s$`Pg%QWk+hRG=VJ5tWY1!e4@ z0_6oIU8aD^01aPPmXRoa8K3FZ7QCuAMmNrm7hS&B{d@if9qF6d6q_r{2!Etz|OC^A!HeZHdFtT2#qSR7Apw`h>3{5vq-H&+Xg*sEJj^4QGGz%^6yK$f3N z`<{XhRWW7wgG*lKrRZdQ>{5acw09nqAydC&C}N|Okj%eDB%X~Ikqo?6! zYEfmDxASNM^|q}xH@n6o9-bZ)6OQ~inzciy*vqRFuo_FT%vum1=Cg#bYdM<=mY<~* zZ7mY}`csBuPjKQ5QyMVR@Q2;K>f^n#RmIqDi{l-;1xJ?|VSTu;@eVh)l7RVwFvN7Y za*W$FvQEWIy z)H+@61Q9DgUkfTQpDq)>~gb{~MyBjdZiAUc`OD*Z5@=5n(TxX?> z_1^4|{KEVq^|)5m>UOw+@D;?wVJ&1INv*#|3Qa{oQg$|3Xu7x+*y)uHpAL>o@?%;x z-lL_DcFgF5P*0aaNa87coJ)(NbNp8L+U3i_<`k0LkVR>`sjGnaz;}?>H4a@l5K9x> zuHp?9zZ9@MDXE8;RKsVwijlZPt4tZ6hs8Og2h`O)LAQHi%R%OF35=iWj^!q;q*h<* zB^^^l*QOkBCP<}W_+YnokKM(hqyqKGA$z=^FO(Ar`^ukO-*Nd{RA;AiW-< z=CUzs(hDS&AliPW8hh}H>5VP86fxA51v|h4!XVljJdq_MR@P!QFR!uh~9^yR<4vYcMp7en1t+=g-TGW(3 z&|>}IVv2=bY};MOhu*s#rW}-z# z22$&_x6VkC(cbnV5R&w*#S`9K z>q!U3HG{v+AM)V|z3F6B9AmGtQkcG?H4m8csEQB&=?HNh=Cu{wG^;?kFm)*4!?gQ$ zj?vW`GKuWu${5!eKwN_Hxq|7)#Wq)>#c=N4=6l?I&cIPkjN6FUwP}a%4-j@2 z0D&w_`QGajhPwPOVG4kfmF9C<0~c15xmr|Pcu|ICeJo>1r5Kl)+k}-J*M0D}a1VUQ zuP-VM>7b!0?%Fc$$q~eOwk& zs|=s%!n=i2-IP0Y>UX1% zz?K`u46ulCeTpyn#%L%+`l)t`l5Q}(&p`)+;SMfQBeheUGy~z=nD+O=rTNj3+0$3j zw5})BBR$`IJyRbfpJC*%F-FYs|Akq?uq0Ak=EdBzA5x#95AV}@D3wy@0@yl9PAvxO z@|5lNmArn#=9(J<5HEPmA01$V+-Tw(v?ald{fALDpvfn%13V=>Gm9ML$6V07nl;q_ zzE6{WxdQJ+6r92gfk51!L9ALX^ZsO*W0X3wwBx#5dMQDAlwC1Ha!b*fdEo_iNMd0* zMJWabeZQ09hcyZzYj|>f+_bF60B{cQ6(WG|CY(&N*hCPlYt%OBUN8q8j<>6Z5fZ)m z(OyGz&?Z}_C_4>Qp6s=WFm-o02Mx~Y`9blTpyWD&PgUT!p55Rbgk~E&GN;1f3H0+^ z;&Vi5c65DNo|ugL0+Wm(kwyk>uHBb0^jAkBV&Gl2ky{LH_YEYsBzfM+0xF$@u26r0 z%!osLLN*S{-8#_GBTM~u`*|k}IPQ&E(r^0_@a*5bsrQ&qTUk4fr%Qy-?r-xPLw9|1NbZy;hRSRECkD6^RHourux>^*w@z zI)4V@AM#H{$aTZppFk_LDXYN50w^1B<%DGzm-8ncv`sGetIeXAxdEh_o*DI3-aaol zU79BxN~CdE5(54jTMeyuO5T1iYq5Hc9HrF@HLn82_VO(Yn_^oU8?MuL0s-kpa|Cp@ z)jUQAt6g4FzP+b^#`Qi2aOa3AtUf^fD`#pX$2t5E3{aWp(k}*-=bQOAU0LagU8ZSS^dgohu?<5`632A>!9XJ<|ZE%EZKV-?+jG zFEhlG5tUpBO<|;nexlx9vfS9-bgnh6tk;{~yh}c5sJI;Z7 zZCp@6%CK59vssbG)=7#JHRB z=Dg}eff_mMTOEhlQ>}0P;n}dYE=*>&@oI1dJYGz#t6%1hE<7?7*a z3qPE(is=>+*vWnDCQ%T|AwMow7kMCrQGzYhb!A4d!t^4dtiRsKtg>;XQV$XOE>D*U4P|vWCrzF0HJ=dOKaL_?sjqL7kegpCY=T!L*?~xgZAqh` zA@|3(rfq)LEK$Q6>W{KqR%l&g@%qQFgYxu09w7TTliy$ecELCd6}*gr?i(ckG2`lU zDvi5Gpmp56sim5Z?Je#;xx!>E(Ov}P`oBMKC)s%&^?Ib3Ohj4zJ@+kyaaec*) zBdEDjN?JC}F4@Q7f44`UnLT;7>eK`>u3x+veeQ0MXv}R$N8*%P_L4!{>k@N*BEA-B zBp31v6vF6vd68PU>-n8|SxFbE32AS`|L1(zuys{+PuUVN-jwwm)WnAo2`E$~wf4~V5&n*h5Rvii8AmtnrFkv81#sf# z+w`abu3%%yfgV0n5qx}TCrMEME4a1$?&`=~pd=3L;e9%efnq~dcp4#yS;55=AB@oV zlFkH)2$4X6o2A+okuH1IDpbTOk%Gl+Oz=o{sfW+XC9~Xr^M`7Pa5dzgVa$;N zyy*Qr2Y%2we72EGROG>LvY>|l0{DXYe;gDAFIJBm4f18am(8R*SR!gS6iA`}#)p$V zYLL*iz3Nep__%2td_poJPi!w5M2C%6Ud;S+wa#v^F|~D_3gxa<{)jN#o)FNso$?F94BR}(Go~jhFBdtx zb(<;Rt2dMNn;hMRi=;r2JWOLpeDE#I&|g4k^XtIIgXnM*lez@bwcjVB;#{WS@24BU zIcQR;`tM47Dsxm}y`&~$4c5DDh_pE3yQz{OL}ss9pM5XB1yTUb$}5^#aw*KyoJSvrcGY}rSSG0ELsm1=CV1m`Sy4$F(ueg;U92;g=d$u8g*+{w|H2hfX^6u=3_=4o4Jq| zrMMq(R_EYtA5=1NenGcnPN{V@fHa~aQ8ZJWMQUe#_4`rWZV@L`RV8+*lg>Q{!Jkdf zB&=^J`xXRU&A(HOu9R3vH%~m)gbo7qylEHj2v0UJ_hUu%{ZxScVX~Pr+s}hh1CHp2 z^`P7cR!jkk0+re-p~Z-%hwh`H#fDUKY(CqCu$yn4sRXK?9|k*q`Vha%Nn4}jfPEat zGrv?<8Y!o0=A`ta1ZD(c!%zdWWhhL&q(6n8iGm~%OuPl0Iv^F?)Dr-neE#&6IrPj? zQg~iFk}^QPMsU%}`Z$9O$f@sCfWKH^=Ia4C1KgyKjLj3UmR#K`J{PNv8@P0KYwctnKW9J& zt9EP@>|cSt?lW1>vN2j8N6$d;YL`pDIKzDQ27D>1DJW1aKa;?`p>VC z8#l9y_`8Q`b`k)32jz=1ZZv`_RT#{Z*rAh94jjR!aSPzpEkzOiX8c%Zd=<-h%L$ET zgU^TRS{&Vn_j!8ezjinuyHxEMKrIvBbW>OAka<}z|9MOWhp*Q8{;I8b>6bL`Hi0(P z!Hj$X$;TCEbaIpLtMwud+QkT1$qDpv#g;Ruujeq|L!~yCRNqbfqNkcr@tx@1UyvWa_(-;BnpLQ31uS9tw88m6k>Q9m3{MPwg8mh0N zdu(8;?1A?c8F(o6-U%5Nv~v@fF2(KdhT-s^7(;M0IqUP5M|mz$ zw?J!31tG!_^qFf^?M@GWh49UCKt3Da`B1b{lER;ArH&ghWa0RWr+hYirC$yxqvxkA zNqpMS+iD_}IS9?io&E)LoGai8<9~U?-ak7)(SbgkkANybTfC%@Ol7|_F@J)}OAxBceETyy@rJa)V$l4a^(?LykK}^rAArT6Et_&)*9=oHoXQ{gWMU$17R! zltpd(C{n~&J!TA83qRg5P;sO7ekWulILqVovp>sQzvp0d8E{SVGsQLA8KV~4grCLW zw!>lmIjKzZD#Q2hr2n|!2*Io^EdQ7jofMS(z0#UC@sPLF(RKqtV|CsfoJn}@kxGU= z*v5LPFjw-^G)q+z1fD{O`%2&mhVA@17Vnl{xmkksPG%OpAA`41eS?5_xRMC@%$W_< z#OZ*CmS+>{Jsy5xLQ*U_)`prz4(kW*WECo)Op@3w16hDz*C-)6chxC z%Ze%?#hE$gngZsHJkAd5uT$^=^$T;$|J?4;l&7AwfZY5>jX207D*6G$y5Kd zClXSM{!?ZkRa$hFqtEP;P;ySP)T^D4cqfVmv0QV4@ONf}uBH4Txn|d!|EzO_L%(>7 zQW2AMtuSB(R_6!pn}?9^Z06q*Sf-Z1Dyrm5HMoD<=i69`E;89M6dIaX6IxnMzu|HB zVNS8*?De6({?$)y)@xNL=i?^-&R@5@n3&}MAlD~U*nhipz|4VdG1(TSD>Jssvlei! z&E8y%kXP$JO=$><6ae~qVX4mTPi-L%M_o98ykSYN}FtNl`xxA`jo1p%cCjcY% zb>A;+h%LeOb-pFp@|~D})w7r6Fe69WvhxA1w$`B7a8S8_nx0ekSyt-Mofg?3+A%Z# z_~Q?5CK02HZ4@PwhIMHU zTlLeciFT%R0RpB5nCWK0yBspI&^Ulk2B>HUew=`F;;ms-(i1&d>X<-+(r;4P)RJTU zAfIznE|kW3K7lPsWo&?TjyeNSx}JqDIW-JC(R+z{AQZNZU@muy-^Q)MI$Pk&}DaE6E-a@xOM%?#6_zpDl6%`%DI&j3r z!Wzhj#efmGICsYzWoA<&&C7ChPVv(v0lS(wd_(?EvUYm?UtObiUIBdK z*liNf**2J?gMWwt&d^R(Us`2Cx2B7hH1I!8;g=p~0fXitw^p`F>8FI&(=>`5hemA`R!G*eqe?;r5?;lN=pUU&Tud9wxFD!!JfnU25aYwc`3wwFqycUX*M% zngS!mh`x$@HJ3U^Yn7?}C2KNT?mC19FO)1W(=rNEr?iS)-9vr@Q!{4anY<=)tH#O9 zB5v!H@0AbAH~S}^Wl3`|3wfT0m}^^z=OW`Ce}|s~|H_n`lnN64#@uCb4|4o*v-0Dm z3FQFb_RVo?2VKmHV;L^3&HX7jDecv%yZ|yWYWc1^_V|7ux_(}y`7-sX29EI*Fiw#F zim-$>eW=>lp10DO^Y6)XaPSBTZFtiief3p!hcCvc$xs^y@;gak##CEw0UiWw{#pYe zH~F~;=ixTZ!*o^rs@I!BS~c=*`q#)hTzpk?3(^)`7pNhO9I`J`tGqD+?9JR>&lvRX z`tkkI^~5ryBh^g#-o-b)8B|3ESy6TvuLtL$UT z5oD78)#MVV>rof8uTfOpJ+suI9T#l_!u4A71f~pB$+(HZir>oe&OnSc;KME+NAD|M zi>VJ`*Rs&bLC@;FQKEht@c3enp}v2*(h)%+>y|ge%cqH(<(rbU@#ej?%bDLfg_KYD zAV&Nx%>g`79@w`~uBAgyMwRJP)nDK(-OXGm5EHcXxHPh@YB-J*{DV|URB&wX1sX2E zpWWm$1faZgu>=$jI3fu8 z;lTgMU*_JX2H5!v;Wvkia9McPBLLD#C|WXXz)d4*tNt#Hjut%BS&m!kaVDfjlc|E$|nK+5!B370nn=Io8eolC4 zOF3ArLn6G|V9BL-gR^y5D^qK)zmi;{lt=vEY?Q_3C!kV(h}Te1>6rzmc`Ak~vk%Iz z$oO?;Bd83F=@J<86W&0tW?@spU!V&Y69}&_UC1o4Tkt=%@J$QMBBBM7)q&%%GlOiMZYcMm_EDH)6~~j&BQfsNj-=uze)@&xsEq&1J7xyD_ zI95h8I2Zb6sYe^x$Ji7R`9w&{j?{W0tty5Z$RPI8GV-EFjfSi?6?)y6SM_O?`intw zg^`{+xKh!pkoM%>CWwds7-l-sn{4PBelQmHW(STv|( zg{#FHE_7t+zcvL^Wdp{zc>b}-d0FmXnCcwRqb)Qv{zstGAZQQ1Ue*~LjFL;qPc+8f zUZ|1=191`1*&;}jfdCa@K4Na({L9XXW>KC+Bg5Jebw+BryQlT-c0QmB_2mTzf}9w-W+yi7dBF(@lvkjxap-eyQm0^X=knbQ3smu4fSLQ5x~slB$#*7fH+gSq z@UK-4xirgVI*5=xAJi{vhZv7<#iYvZMgxc5)dywIc>WfE=4MG!#Q?aM< zl>Bq1{W->u;q!btwk(d9mwGm)#XKgIva71njG$+2JzYng;zlYKGXJHPM7{4L>fX!m zBq|+l{(C_R6XZy_Gz%AiB#iw9ENu1?${Y4-=wHHlY-ZU90z=Hkg@G}otri4IZY7d(X7lUn^UcKd z1528%7|Px035xj#=wZmOWHr(hgU>YMO(yyhk0&J(ebQYZ!?^&C+D0v_SB@EiW2IKw z1HPiAJ<94^?IN_Z*ho}$4Zl5L9mne;N-_h33w%Q0w114QiQhJn8d_NnUzJh*tm%r} z>%WCApbpg4svn~kV-xkEWheESmI@ljepQC~-Alay>D9}0&^cL3A@`D<(d+Tn7`dcY z)UXcz!%Dp^;AK|lY6*~g>75<4N$IP&r3ppDunfLCJS2zsTOjfXmv=g8D#E*voPzJ? z@BR0u_rdqm;Sp`6Z~GxGYU^=PpXv zc=V2Anh=%6n34{Lf{JJt* z_=C_nDi+0K1>#UY*d2c0U;$a6nW5Qh3e_Ky_TWY|IM}^emjY%K)^~Pe&{mne;BNwI zY$Ij&?Ie@Z1bF73yRz*H?{plbRv1vEnN1E3?%Cn=z6b4;WnIBXfPOsJk${|AYecad zsdd1}8LP;d83F1mlH(3$%s|Pt#NK@^Lc0GFM@}GSkS!9SB!puZQdjR)>7!J94%_`f zM@}7zt^t})K@Z|lp>2o(W?S~X8ZS))>#fvhF(68zr&ZF@Bm?bsC{t5&DFj_WYO@!2GMo8@3V1gerg;25irmBNM0d`@XJR zw410z{por{+jb3a;7k%#Oc~Kfh%A!Igi!Q0Nu|bBRvo$>H4!6HWXl1n%&w%r9-Q_ztQvvzi$K>GI9K~`92Dsmk(Wxje7^Ql-o8z zGbpX%s@HZ~YC4O;2?ESxKg3jc`jAXx;H-Bdaw;aYWFuBGwKSY`molC1XPH*6f);oK z#VaRPC-$yvdO2RpOo}n%lny_AigDBgv zLt_ciNRP}m_}$y#sd}`Q4Y}?mCqPz6dad2ZhHJ^Xa8{e%m{&75)q-9+Y*Y**AirSD z-sq6T>8$F5!Fx&*B>#sz$Qj_7yDN#eC3B0U{_h>TY?j=&K|767nsmSK&_N$iyP_Wf zw9RW+cOt71fu}YFy^nqE@mWL7_@+GNaB>#ykU)Q}KCQ1#SmCDQMLz@fQ5Y+Pifo$f z@^P&b4ZFM2Lor$ctOL{$wN8ak&qnon>fxFcQ!PA9Zu%5EQTcDG_gX$2&h4t9x^OJ; z$Zz8=MmkeIfoKhR^xnXv1c;Vc;3+w)i}9xKf5*nAu~{rHgD5<^9I;EX8V^0a(>hC$ zG==J)t`k?!T}tAlV__ooL@^~S&WTdr;f4?yzzc%r-ShK{G8VE&w*jst42q9pO=r#d zSiB4Lbt!Q{3d>M$Y!s9zY_HU=babtkw2%nnLchs>nmUv`y~yKc%vwLZg^YkLBY@(y z#6ijqZT0qBarqtT*(8rJ%T*CaDn?f!Yp>q5@|H0>_<$J7PjOYukqIGAH0LpUCo576R=(wa}SU66)Q0jmQ9v0Bfc}!XO_7TAJ)<`MX)VV z%MJb?mVuLHmLZ^Y+QYGM|1m`4JVLu@2;LF5ut|p`a{65!RFgpp{!8xcgMrja(Y3!= zoJDF)J^RrA`jIT@LuBcfK$Eo;U(go-ZHynOPaI)D!Jh1d34ip~JxCZIVfsddr;UDp zWXZ^d6lG9hKzn5wp&#{il59Wg56f)%?6(P9x3aJvnbf7m8pO#CiT}mI2OK5_PVF8p z?f#r}W|S>|j1nW#xYnz2#A?XI#mQVsl(t?Rx1L9-)P2Dx5{7$q9kvS}?9e!Ikgix= zY#aET@0p-t`Up{8<#G9GP_tuC`KI*wqgl^@xmN>a#(S9*y?c3rwt;E2`I$fy)WAV6 zX59K9>UEGunes3`=v!1;F8h-wN7&d7#bWfOqe);Lbrc%u(^3xHcR|pPC9Tr4LjI$$U%nBS_-ur(!+K z&dSAgl03^^_Z@35pIp~+g>N~F;NXWm-?Z>aMvMG!3e&6z{e>dO95M~Q@5tK(_E9y_U8Wcz(XJ9yP1*xUa ziez0?MGuTp*Zk=zh z!1!}reI2HBPsAAaH-rBx>-s>&b4ar@M{N)Mdf51!>r7g+OI5xjz6Ko{)8)IVuh+lC zU*x(!uHr6q4+c}Kb8~IlA&GR|B zQw|n&`DyGS{hknT*Dp@s<~^Vo`Lxg&?_iqB z=6KOFJ>eT0;&z2C?#QLBXL9R5vgkOdzS?{ssDGz6hYR~`%2NZJs;k=Q|6RjUGY?Y; zYSX6&;ME}5F#g9w4nsA*Q;x0+?rNO1fecfPj_L*W%)UM=eB2isNUlTM_!aIaG;M2& zUjBMNKdK(-KokPIWS&3e)n+;fDFk=ITQgCy%sqD8{TkFDl(?$P#Qq4?4Zu0FXXvKKlwNVWIc&$}*VHlN&^H zg~s+81z2}zSr*Jc(M@M^{5;HgyL3M>sgM1M{NG0Xu z>Fxp;cQ*tipjvaQJ`=dAO9dheqgjROb31SO_ZN(0^fx^dN*Ds!R+U$lu6G2<+_B#0 z$Gq|+77fDNxxSR6(=&_2%os4qgFOHg_cU0ZwiO}i{J1Rt9VZ?b5Sg--9XqWk+*UaG z_(5t44l_mLl|Jr=3*GpDy-*7368@5G$$6HIpUx%s^VldV0amCpoFul0bn7uTOA^~? z&U^<2r-1VT$4S({{Xn8p7aeaHt+5CSIZ_H1=UO~X$rZ4eS+L?eTGClq2iHyBIK!|U z1}#pI;>ZbjK!5yf^Loh2SWcoek%;3RID4ZKxgHfJc!aC7(*NA|h+ecM5FI_ePBv0$ z5QfPOO=j0LchiKQ=*seMO_!%Nk`H5PI|`F5q!*r-#}2rx)UYS%NI!b?0K4>0%A4Ex z`F{`!SYul2Jv!u0{?(~QpZaMMwFo&3yeOQx1Qu>kT?#+Q0U z#f*Z}Hc;S{^2?co_k?j|M!SKq6eC$~er}4sFddb%?uEm73J|LB*Z^k@Q|~r-$@c$_ zuthiUqk;Q;2iW%UdO;e&+t3JcyJhh`hL~=!c{_<91rb5K1X_O|$*ii%2Ud2($lN%h zbsVXz4RnnF{dWl|^IEfiyymAMD_)qGpt!P%Y7ShecTKl z7IPs*B{l>>^0Dkd#{JOBx@8$5+*tO}L6tr$SYe+*H71(lO(fws zGojeHBBN*b)fta1%@`YwUYxVW>OfpFd!iX7Ae*#-#UvMm+868)WM?2u#D9!N)sX2X z)!A67{H{x=PoBsZ9I723q*=>j7nblYeZejE$C%n&yit8)0I4y(QjQxchcnBj{2TI^ z3|>CuG>iR4g}Uwb0?^E0^!_b@@{8xu^x$9I8yp8B^7&&+bsLHr`g1kuw059L==>e< zYtqwR9_pc4fB^kxDFwF+IcloPX9&<+WK@SyBYn$eA4slZnbu#B_E`HiN07dMpP7O} zPa>L8yxcZZuRPsTVWPh=AFT!TXA{YZjU*5-VsHsS}zsa0OWBmi+35pH7b|kd!LaW}S?)0+^N{270`sm&rJ3+fID5Zd6lISi`#l z1A?xPW5xEupQxKT!X_J4Vn+_vD9vK>L z^$=!j|LUj3zE_a`K!Ry^KwzyNbppCCW8}7+f}P6?Pu}Dk-Fa`o(DEcl)cE!bc)HSF26z3BVEPJDyKXi7Fcbo!wB zOFvcaYm5VHj@Y%lLz#t|C&CA*ztJY>78!IPI}P!If}X#yYwf*4OuG>Rm6;S>v+0lt zYyJ_}%5M3#4CTk%XV-P79G!M*ep)OO`*?ux!0 zA6HmYlhCB*j!iMMn2kO!WjA#WWoNj7>nqV*z!V}B!4dn@dh$8 zB@a2PWh6Y}dL``hKO;?kj-d6nWi6mklTjY|U>^}9zk@(2=3k;*V;QBLh>KaI@s{84 z*)&Tx?Xr8lOs#`M)M{D2`M4jhUHfFkEB3B+EI8q2b>3WqA&j1CaS__DJpqTmy3v*? z#crADyG)HIk`N9E9T=EeE~n@Q{TL~8+wArZL2u2{OB zIE%r8-;hi~n#huMx)~$NZnvum-p;rPg=W(ou*^ne$}TChJGTj;b4feor20g?0RUyF zh=MwdCh@nfRNo9@G)9qD-v|ShN6FNhbaz8r834IRQ4vp;u%;=)e5D0);Au(Bm&uRZ zvcQ1aa%3=?j=4+B8zB0gj3-Ac9v)jcz^GC=1>{x_xV%Lbk$~d)5AOMvw{Gi*#3cR* zouYRU%s7boAj=)oPCDT#h8vK=cow+_Bi0hc>1>~61?c0>Rf-^X(Y8oit`&Jku3yUY zt5$Mk)}la8w`el5139UxuPeM(Z}4Chs=Wl_hdb4}@;xL1HZ@4<8c9onlU8H9O)RnOv4nE%Dvb6;_vC7Vge%w zU^nZnK4Oo=4fRdWo_Hv(_;uZ4)DGa9eR41(aSmy6&PQO{bKI;|6AVMwtQ~=-H$H2z z-P~1AR&1U4cW_9_UbN>onSY_ZbstY96jU9sw;L_+kWj%nQ7C*ABcv0w{+$GTnFiT( z#9{+^TExVR^x-a(&L)9-$Bf$)_I!)VVIaV}0@i%gVu#!F(bwNoIcJazYd;f?8`V^H zM3k?lKhuA!!Xx%fI`Kuo-k>V~pSWq4#aR=wTb+tkf)w(#6%g zItT2c1IFhq@*BBj%&_aPz#em?>DjdXPu8a@mYuAa12i-5bp}Vmi|aKA)q)zQv6%_6 z|EJ$9R!^~`-aasuT*4%)^O%cVQeQJ?Urh9`3gH1mhK=O}11tc^?wqCMp2e&@q}f&% z3@O26RQWZ#u(lDSA(90vM8>~AGUkY@P8h?c@d{!Lp)>`6%0&stU52p{30oT@gtA6zGD#v9|i#O%*hv)*!I*-!Pr4^t)QSj?k)&FSIAFg>u1rr!l?GZf3d;l>Og>2WZ zx)DHPu-AH;{8*lmYvBsH_PWbFG{rG~Y3qqa;Jc#7&*1S^vK{V&pqCV7sXyd?lUt&R zdAJd53`%)p5n1cVjh!+n`hsIRm%P4j)*mK@GNcDC7w(fKg1br~tdi{g{;vOPUrA}* zU8+p{G`*>J$ut{zudhLS>Bw&h72aGIlOco*P3*fqf3m2zJ1p3w3810hD+aLH?Ll+h zkv-f>9e(G@`|a%z*%%<|SphBTNl3;2mh3r{kbky!*TN)gU>ZyS*pLx|7UvkqZ6v zTihdBhJ`kzfOjF_Y+`1{s<3Twk~5n>8j^gJJREgQtkW@%a@DbbJ*&(8P;0qiGAKT1RBR zpm+Es{L~my5RTmQ0~X~WN%V={ zKmlEj^VbznfH4msWmDc0?Ry`0vi$-veBz|!3L%KOFa(;P_UQ8)Eu;;&yBw*@jpi(&aSC!S_`<(tB8g#heN#sar}|A%8R+jXyy#ib7BzOeDtmuthk4BT(*&|G^)w`qDcl;{hzc?Jd1Xo_`mO|Z zA%vgg0RKM#z$rbJzb)yTjBTF;W;2_L+ooPxtWU%?xAmNa3g_n%ia-t2=^_;_`v0(j zaEwC^>c~=vI_uYg9GbH!A|coNP5NeAq&v*7sPIrCYO2=zSMnm!dFI}KX}%vs@bN-F z57z#_ogMV7IOp-`#1#5U*kgiI%?>gNMPv-0kEdKpmU}y9vWSZCUezN!_l)_^!6|^D zSwI;#%{(c6USup5L89EM%!-k4sfpTjBrYF&ib4>!c)!h)VR$V*j+lL-Jzpu* zjWUoskIU{^#WP@ zD%7#-+B8By8HL`93>I39a~i@Yr|_z`6U=Y@ad=aaVPd^!o!uy-H}pDz-;!=hG!U4a z5+^XkL1WPX{k%T3Volr}E`&I)L8(E(f@iK)hNkUAeOOl3Q1Y0^f}TD!(evt$3VZv7!HnpY)~#*>TH&2=#pTIVkFCX= z=1QkX(vl}?3U-W-!lZ!c%8x+~6MC;=!9UQB_mBam#dF-;$aqES6@9=Tb{WR$C(v%$ z-CK9~m$7girTI)#fR$_AG@l!6GY)|8dOY#Pn)idgXxjk%{(wudzU=Ctq;3&e3n+1) zF%6lf^4bZjvq1cI^bSkrwxoUabs+2ZYS50Q7fy4vMaQ`DZT>~AH^h*sMyqCqbn>Q3 ze9X^x$vh$P5~s5i)M@cx;J$uHPF^@iJvj|f!`N`f<@YCnk4N7h#)e~RtNDpx^m%g* z%9f)iiNik-@97QN=P$va0!eG1ueqs*=;lcm$xYu-o$rS=#Lp|i`16*8Teb|AVbrEI-;;F z4v0AEi7MT$_wXz`QjU?F~MXy@Ai|vyFa2LFNC2V)f1TK4O+olF;sVtQWq} zF73EMI=jS0@d{_tAZngQav$hTjAT_WD60*1^Gl=w88kl2lNK zx}}~7acu`!1V*!JH!rpy4R3{w!$E$w>d>1K9`KtZ4}--fVygW!M5OaJ7~ug;-VKN- zHjMJAQ0grd;Xnd*jj}3*@`${5Eoldi9rUuLoB~d=W?f`v$XmgdGb4{98}$hqnsn&K zq|~Xsis_W{sF#N0Z)Le@+9N|c7AyfyZo#Yl^v!(SBbNpv!5$$bcNu#A1qieMx%$;# z(b;*rF_E$Ws8l+T77WuYv3DVSAEL3zm%b)(9c%9Oh`7)m9hM8jObTxi@pW(e6!3bp zh#BP*wrLTtCoM+W8<5Lk^X4O>=dp@L7mu}Sni00Ug`y8EU}E{xXVjj&L!6WR97f5| ziDst!pCBAq*=*sKYtMniwT%|fVRZfCqD!NbiPw0h`8fLgw(T!5@VJ^ zFKM`4ZMOCH&()ZG_+d*kfj;CuPcbZ>DQxct2Kp4dqz6cf;|_rfKJc` zJ9T5rFnvDlj^lFgHRgnmJwgpY;KICXH);e$q#X=iD(!XTLWZTFXtSzDRh1cN*U(8t z=`)*_O8+O?s%SJj$avbc>|jcnOrF9-cMhV#5|-<|K2f=eAczaKFbf#YLnz3|-FRb_ zepdFbWfpG*dgh&2hn+Yp=@skT%XUkB{;{nvA|tkSM$QYJX{0<`PPB79g4|(m?qWsR ziSLF39Mx|lx578IMFpKg;0rFti4s}!Kma8N5CHcfrHppYA2-}Leu#>U);(#qgb#K= zA|<*RZR)*EZ~;h9=qvMD1X>>2iLT?LYHPo;Okw-zI93jh+dOQTLnpoD)6_G7*wzFy zooDI)wMFv!M96V^K$!ODnK1+e(Mx(8{i=al3Oa2pZzK8>woexaRO^6GhP1h{}&X!Q0nyZ_O~gCi=1HVM7GAoKBt=Gxmh%;iupd+dIS` zRZp5M;d_`SN9x0ocxr8Fi1ewSCnK9qceDt>ZrVcxS>o-}Shu5vlLR1q9)pSYyT9)H zF9W5>ieOY@>;d~Fn`%;hg66=|8RRHKlijUQss%f~mFP=9E z*wh5gGBUu$?gbX+FuX+jfdoIyjF|(h_&+jz?xHa4EENF3k;c#QgZVx0rGkQ7Vq~Pa zr$>vK3`Nd<_hO0r4-z50xcx15Qw|Q`D%h!$iDD5dngQN3LdJ<7M0UHwYJ+&&pMv&= zaF;*1z-e^;y;Ha!wG1W+dLyq$vI{_U!Y^D>i6D z^*-J76{#U%o8&xhVK6is3zFkxgq34;HpOXEJ)}sIBlZHUvj(_nkz#0K-8|9h9eGMQw^JKmHD{$>VU^=Dgcji;e_(pgml02_1dRM zB9^2(5L^3xm@Ni_T2STBg%84Ry}~{Eci&o883P4x?!GjewzIaXDT+lHD{WLRul%!* zCY!GiL!o3U8-fTapc{rYt3|>pRN2TMgnE>AzJoKm$e6vcU@+InG?y!J)|KTBQP$CF zhp{D|C{zL{zl6!T{lJF{vJBqd+CRBF*2)wBj>_k>a)X5#I zp?&GuC%H{=|LWtfYuPXHK#C4{f^$6o;%)$d{`@5kxnset(T~Hd0M7#W+`dL9|sj+6^F_arF1f0p8yn!Y7 z35xpq?0R-D>=4s=KN>uW!*|N3D*323;P#Be`Cq-TU?;4^B2M!3N4PuBs4>KC)QD@v z1-0*WZI>@!(H^|Ym(KpftZRQz;`MwiRCMO3VWF7MpJI!OThvMp^PmzG}YMU`5)KU=jE?tRwJ@-aFf4w7JCz2vd&hJiV4uRQ-Qy zOkuO9aR#nkYy6)7$Xd$ZFsop^Cp(myp9(pT!e?&macj?P63q{)YY-egpBowdG z@vm1ogE-M>JZDrZetT64?iSFw`1Mz?SjS1?Ds397UD0DgPxM#@GhN_E@jiR{G*GhT z=S*U8Ue>n}r*ch^*40=cM_S=JtBFZvc@@AXJ6>DX6J%VzRP)M5ATif)5`B#IVt2{W zUSAXH{f_vquSE$b0yiOzTipZaIqs@*R~P(`y9l4wKl(x4@=J%(WIVWMVY@!zAZXn= zXscVN@>bu!DW$zC9EgmFIDpi<-Y`ejVA)U=7_Jwfw`QXv$2in!%7Zh_T8IW69i|m( zFKUef?r_A8tqqrb6j(dr`h!ajgz6`Gr!cyOd!Ax>*ZD1i zsY%&acqn{$0eMBXA9XRiofW@=$!o799Dafyuni!`=$qu-CVcbvk0(WCOxS+0C$jjV zHt?iznUKu#Z6q#9rkEFh48FhTJS|3PuY+ro#n;x4?orMQo+{r9YK$jloVNI#3Z8UA z=RgK@B&?604ZX36bjL|OE=ShX*Vp)%;C^Yf(YoN(%p)=tCC1N%qA?P-#o3X~4>&YtwzTBa{fj$?tEb8ewPXG4m`j%NbXXH_KgL8lj$Z`Z)i#YB{4-@(>q4 z5Bv1OR1lxf6fs1iIcD)h1(h9@Ex}$3M_YU)Y|CX(a%`_}w_8JHA1*$zoz>Qt^}xgp zJc;9>n@+XfAsKxPgmjhCM)OHQNZ=)Z|3?6vm6=cr6mz2`7io3tqS@6Da{%LOR);`Y zPZPvV4-GDw4N6Jw2-exhzv$;&MF<|O-u(FQl=@fSK%!|jPYD;zcFOxmOB2>CN_W7+ zGWpNI-2Q?vu4R!?g0!Af_GAq@C~j0&aaONan^teS3j`Q z5ZJ_bgkC2KDo;RIj`OxkyJQqm~N8X3r>=A|3a91G&fe*6tP3iqV*hckr z+j9YzlTh90IE9$XZFFA&nyV#XRr5hC<>ylVV+XsVt$WBUSs`r6C zS7>T`W<xf7f2d7E&@ViMN2MP6c zV_40eo}$q6jSyKSYGbY|;LZj3QDWOFednbxC!ShNodN2+C}s0R#4ek4J?dE;n$>+7WP&5J!yAM|N^^U+t3?wy0gk+8O47Yi1rA!pmF3okg6 zI?KPa+h6l)(q{StBR3aV(i1X6eD##v-fnomFF@e)5U`?f^U%O3BiY&3*j;>AI(RTh`mSLzZ(Nl5Pgc5}4H?eJeH(m_9(ijvx+l9c zAIs#8FKiTuuv9xB@0yG=XszcCQC&A*I;>!XN~I*dk-KGu zmN<|+{%%A~k^gT`I#cuZG7&%oM~2{OWl9rQ7^&XdCiSZyaJm2~pZY;4`ww25AC3B+RA{VV?e8&MpbU)!<5UssGHA9 zzsM{HHyVw3Wt50i4lUB)v)Nf`KI3$8O7Nzg7e5Zysa-O1WL;4KriV~10`XLS^>JjF z;tiZUPyuE)*G!UM*bAGlnf7-;-=fFimw1gcB?y)DoczQ-Mx=ZDG^{4L22ob^kzs8? z=8wU-qBG=-=>_BSkLCVJtCEfjY?n&X9!|B|fKLyrRdXX{lb zB~92?&j)6>R$6Zr*Z#upb9~2rzp4T8&b3mp~%crbFkb!8EOHq(YtMYhUIAi*8@gqAF3R@l5rdb{!&S z;Jo%%iTc)C+|{lrbU*E#@bcW?z^fi}~H6ir|c z&HI=IH_Be#z5(mC8Y)Ry3wi?ZGLX)e-2@zx8!rDx#wF&*NSj#mWU~}Qj-2xQ9D8$& z_2(c@|4Y|$&9;WH-O>?eOFmCtr)E8Q_N1_trS$r}-(olNU^1!fEG$A4Ag~KzoqHXp zsMIHEssS}DwoPC|=VG>NVdfbws?*C~Z8j4&cTXa&oDDjuo!+wEO35#XlgEym$k%lN zlYu)JNKRRP@ymdSA@b@-peETvRyWOqdAoL{n77u${`B)r+4&l zmoSux+=5yodQaKX+jh~hE|@LCtq>D?l*@^?`8cI95CJq27dn3Wpd~X-GWG! zF3~pIep!_`zME~XLeH{XOtNW~^Oan`f=p?`E31V7 z*AC@UbXsZ(S>^3_w@ltf9cj)vC6tFJ>%C@obO1=3{T_IzCthLR&-%x(R>c&e7;?^m z1vhu{Z@M+MR`}x_lDpYn-z}!X{ud-)o>jqbAJpoGyoy6CToRZGy@+I0oKkP?bEj+s zJXg%34Z^75YDIQ_PrvUP$@Duv^4b>(4$Vbg%>2n1txmqyDvO{S@4c9Wap=@V4~-r* zODcXhC{7ZBH`)qdTeEt3pvwIk!>#14_FlMvnh)e*m)&9`1_`1^UUKe2@{WRa^LMyV z!P9PRZ>Re;5O^aUxbSXbT}1BNWHhZq69*m9ysJKSXj7UlTZ-=>{Ttv%ot8%W9N*xM zP@yZm%P4UUwGj1+F}T<5IHjWb>s8&d*!b8ir(OF)p;^1Z?Tnk>y4<9-`+l z-e==qbn(NdzVha@?9h-5(mY!m* za8UkNs`S|E;Ux}M%#UD~@udHCoN&t<(zf_{dAC9{Gllp9MU(^gRjI`&p#%# zUvYx86OXkno5mM7S)CYB0U%8jhf#ShW>}Y;x*yJn%{g9E;sB0?^v@5Z>8;QAdpO$k zQeq_4e_omNSwcNOl}Y*E9zxTD=DfjqPKTgS#Ns7qQ5g7&cYyu(3%Y2eZ@MoP4TdGH z=9aV_&Nv1zLx%wTKdCtlGvR)P4r*x7T49?L^KX8@G=>VEG6LT~S4#jM2!-!v)N7N5 zZp2D78_&FYoV|19fYi263ZW#@YfJsvd@wxRqgP}om}pz+S}6!l&{ym@Sg^uXU-ygG!hYS$ zTHI3Jndc2dO5_Z1E!+^`+?AH$#gucJZkWMt#3IBiV|>;Sn9>uL^z}+CrM9_Si!PaR(l*;uRW z^RvCX11cElVi$v$e@$~$X-F_G9o29 zV9E{&IL}^Px%^3%BO8RQ;7`}>c}?f6(7XD@pk>+7$WS5*CyL1%CD^O@d2{M-=!yc& zk4e9Ur!dq`=EPO$hn4pq-_#21?q%lJlVMk9DQ|%{;-^K?%ggxqNxZNU*wJ7WubXTl zKhut`E1q?O`8mcDN_UYWG86t=$JlqB9s}Q@CS9JJfnm$?6ufZv3Fft)1M7?gzEn*m zJI+2b&|4f%O(N2-nMOhCg`z)Pq%gG6jRd7d%5{7}Iw*`{pfZ0xqE5FR&lj0KF0 zFYpVcyF1k_XmER7RQ6Gu|U)xRb0G`a@KG z_|QS_3e~H4`R>ru$YB2sD#OgQ!j??gF74_Ht-Y-VHWCX)Bq`;OlO7`*^jeOB6k|3t zcuB<0aL%A}`_YVOwd?|xd6oR>X*#e>%3ycpycRyV1-YpHbi5E0iz3>cT>~rPlZI}R zko@rCb`cCr+EY|+5YLGN?AM=@fuj|Tq!#3MWk0{0Tch#)(ISD$pz?`dHc2?gbD+nW z2duU(;?7{1nhMhYJ&g8yh@htHoW5@(bOr*ke|Z9^Wh(Tbjeww+RZ1dgZRpF?RVwt6 zO7Eub0>!E#&qlx$u-QwEpdH6g*|m3v zz`QT__MJ+ur~_1tgC*X;--wJE69`jAP@=(pobu;c8%6j^yPdC5UHK30ggm;7wAImH z#w}RPCDbHDX-U3W4WmS~D9-Jef78@4iPv4m^>4(zShE4ypIe1qW7?R}Nxz!%{Z#&l zB*;(35G>r@`Gi%s264j7%>$`d1ke;uA12n$>Z~$B9+p)YkGJA$ojBcXdk|kx9QC~ya%^=_w9#> zz$s3WI@GA$%QdNox|OJfUSaWKh~R?s95ucSGNw{dBzW6c>HBZEm&!iS z_yXOPCUuT7pqw%lf93j>#6}}*3-4>~4*+9znMiHjf~jSv33`T`g}++%T~Oq`O3sJppP;4YULv z^NTTHFDKe%L;i}1zWziYH*EPRs%oK$$_z9xb~zLc$VgS0@v}6}-LDq7?0Ee;+fBk) zfC3Z65V^n@tzO6B+KR?z1ahyFuP6zaHv((RK4&InkLB?w>*-Wx0n7v*MPPpzktY8P zE+nsvt{<=8Gm4^g66~i8~Ni&mNHoMbg zR)M92Tb*?t6v&-ut(~fLQc4t;ELYevx1=O#!lB*{FO0{dPa$@Xx6Dt5d_=GmzWv?F z571ll+1t2-El?EO5WF2qxG0W5Mocxn;0W1J`q?(C>z=RO8S7Z|SynxrTGSf>7c%lt zqOZ)}Ap27wR;KhFEGUl(Xq$LpmG^rU8Vk~kkjL+~jQaW{x*C~v(n70JI3>?>8TWkw zEF_m5c!S>L0kj+kL)TLX6rxs%mJ$GO-|?4kH*YSsaYB)Og3Gh(EMiz7`ESBq^Uk!y z*^*kZ4>c=obc>_JXvd|f-pnKZ%0PinkfS5lD_{Sk)qjx8mv27K_f(N~wH6vwXn|sQ z5<{>brj?N;Y}#(H-nW1lFkeqeP|o)(I0%1jS1~eTUQ@?-5RmKu@adrYwYrmh^oJ~T za&U6j|H+v4e$`sum^y3M58}-%XS4Trx?6?6mrq2b^xfBjLH#GQ)TT)(*JL|D42o>> za?9I)M4q|p$|s!uw8TY5U#wPqa2lbBmI~7zH|-Qln|%KaoPvRX#J^v9SD3u3fHC!MWiE`83-rM&WU5L63Q6$A%yD&IoMRM_jYeb;nCL^?_3LVPnJQ;Oa4D+8R zBBQ&87AU$fmmqgd8U<`iNNd1z!PbdixVqq_FURMSJMH5E#?D;pS1WN&jk zOz%hn@L3%UW0AKT|4Sts~v%GflE0R^#zi(w36uAMUcvLUOLc^X^sHV`Tq{v#Ep>GzEu z1M0|6unOPeiFFT#Nnflc*9vSz zMQ4?BPnlGSD39iZ0=y7Kt_x9&6XpR42yreS2*NDkWDD4B!208Vi9qQZ<5YQ$9C~-GwyMHIU-!hg#P_d2M?F zjpDF2|hAvT57I7ojeBm*M}k!jaMJ&UPlx8=8aBJG6r-8$5MG@ii2Ix>>!0<~D0! zJhc06VsAHXfv?>UbhoU9KgP-aMHk!W$en%;MgF3Wjh14KcrWJQS!0;PfUM!Mtw-v0 zP)YJb4+iXa&c&p@Nf4t?>6i085cm%%D9Z3ns*O9X>3gq?1jLW*t$a`H>-Og24Gm)D zkC<>5P%L)bgt4$pM%*J1)56;NYf|z*J@kpGO=G5W zjJ61J{{^k031N*( z)+U}Q1f=9aBDBps^b&UqS~;Io%_Yl+4!<6gxA(-nv@-Z73J_B5W$ z_>jWLP_&P1H;M_Qq!&Zdu3g}!q_y`J7~8?-ZZ?Rvf~{g;(l(cUvPVh9aP%+t&=SpX6U6o}Z zEprtlL(<}10Y+@02TQXC0Dt#Au*tkhN8_8NkEoh7w4nL=%s}`}#JTGzHjBFd9G@!d zN9u+p#YI&$%fx%QamU$R!KIV6FdX$D$^TwV7c54`m7ewv3~yJfckn?7FrRC#f=SP# z(q6mth1;DdEay0ODXi*WHDwI&H&bu6$~l!TV8&f7s4!J3pzf=_9a;v6MuquDbADC` zWdHh3Noy9V6=kS!MsUMVo~a$_Lo))?#(v4?75_OGJihs?QRp<^@ERxN}y} z#^{1wA|P{bhFAiw%5W#53{JXG;Fzn=rOJp#3y!I>92CW4`Ld1>!Gt3lI`D822N<$U z=?;7m^JRL$#!m<@yf-AwTAuTo3mj9W{0{owS>|HNM8-DP-H-bETE|msmQPDURD_(d zsxcgJ9POW57kT`DKOPpxD%$o`)3yDZ52q~dvJNZdRI=`m5;asFumn=L*)41$ldwE_jTx zqX^8uJu{hLf96A(O2f$d2S=JgtrJo4G4aJ!Q|M6ziC77L&}v$LaJc!A^zA7fgxv`m zyN5GjnDR9X_&Y>Fv4mF6`v_KI}vAHvt zdxzY!f4xq5uHKHA=Fwl%Sjf5krkpO!VtmhaHpO{D-JLt@=jO3Kr{5Jsg1c~OR3@c9 zRRYG{8EG~{CE5#h4oEaOexLBxV#$pQ-Aev7RE6H{dG&<4JZrieq5r1h#6J=hOJQrmbC6gk$+W1fh zqqTX3O%nCtpm^asKk#Wzvvp_22Hmth&(N&_*H@1)kOQL3t7J(PCTMr={Zt^HBUc<2-WHA@k|5!z-aJ zUYuhVN^xKQ+|6Gzi;R#8YeEsav|yfeX7)@9j@cD!5Iph8XQ~#H zMLL81I^PPa|)@6>9w&9-Dc0RqJj=SK@%C`#k2Hfi|T4>v_LAsNPZj=)_Q6 z^pT|fE5bPQ2kJR-O&Gd0MSu{NhOt_2SvbmxzOa0Hc6e&o=c@nPwwXLVZi8*6qjMa7 z82c6wu}@ez+(HsF%~4zCRnWKUl4gOU?X0(A7vOI}SYJgA&MYy=yb;>Cb5N1gLBAgc z1gB*BIp;eFt{|@id#K5KQzDc+nMXf(00SOMUL1<%kQW`BXa^56+0fMR&oLO4;9rDuT2mGU=&bK*OGBmtNn zz*h?4I8r>$#Kf>%Q1u3l_Rd#3iLhMNc%^fd_?QAQ;c-m-F+1HHwwdm!TZ>gTB>JUC z7F@hq=^~N7D!)hgrfO$No^bAH@lhdOY5r6lcQ-f;?@$K$t7AY;w~K6Ee?JAuTY{pK z3Kz-Cgv`beD)!zk*YqNi^T}i^GX!n$zm0v&TKs*rjXi8n(BI`+aa?F)^kln^3Gctk z#bKgyavRI(*>JgZQ_IWSc`Ia)Oca7%eD@^VsXu|omyo88*c(|-gKUPG%y4n-Nj6l` zU+phLj1HY1-jS&?FKs1A0c7T|oDyE6uA8T2!`#q2am8Izmq6~1oF8F$Dj*^*vJ|)D zMsE(Lf`To8z$Lp`8a2gnl6k!Op?vIoS|mb1kOlUc6IG3r6n5~WSvkDTC7@y&bEBb7 z)M8%>>9P@r4h@3|0Ngsoon;ir+Rb0klqRa8{1TSylwm6E1j0h^Y~x9XGbVLylN3+%L@5phrtmJN67jLEBPXfo`_-P zuv*x_vbI*Xl$=5!iK7d{GL-vXB3=)qjD5g>Ry*$=pRE^ojDYqa^dmiv#u4bJ2`2L? zi}^EMG|fSuIs4kcJPdSJBWu8x=$)H{m2+9EtyzEg>_(!krR@H_qB0xNCO)J7+tWay zhu^_ir_@KV?JbbMhHx3lej4HLt<^R&O6n$8mBdpDV1i8#94SZKD~Iwdi^dbLlPgyu z{gAp$3ZN_N#;*>r2i|qCAYL8zRm2yYLw>DSpuHEHz~q^QL*D>O&wWO8hyi$76@n}P zZ_7BN@u@>Jx`BP4HYy>yq|fNE)47L38t)3jf=KqLjkOFNHRQ}rNrsK_KMz`@JEUH? zetVlqMs@^=%eAIpXVr?N3R&H4JkzNk;yq4W|Mw*$ojfT2ZV7^0?-OB0C+K3PWQFa5 zs;?&y7?T$}gQE-ZC=L0eVjt>m=~x}Gq<3q`4fjdl?+KnNxAnoL)1s3$-Jp{92k7W| zHYTtc3pSX!6{v3mN2JdUaNpw(xHDbqgN4=UX+g+jBS=YNh@4ksJ_@`TsUY^uKrZGG z^>5d$4?FP&*iEFe{|2+Rn&hTmd5Q4!wmY6bnwP`8dY%ZK!VKaq+EDpr)oh_pSXb(i z_ez7$yVRdODV8wgcGF>CbDJt{p^na&L)SwWlf+7Y&4Z!WV8evO*Ku0y_`rX)Uz@_U zyVogI+ZccaN^-JH4uzjr-Qt7pk$T@0_m_57B`5=JZtLO$UMVq*bCw;8x-Uo(Vm_m! zNb;nu_LdU7M1*G9!EKqe!og;a`z=dW3c43FRx6-j?^+pQlGPperh#K?8(bhUFdILg zT{28>wk$^arY}BZ-m6Fv_##!j!@tTTQ%G2_vTmqWikgSGEl@ainJO})bU!2po^NHp!nvBTaV%$;Ezi4uPHdxp_G`mdX{loegO>mET5_I@T zS5muJTK6w9%f%pwH?h-g>=l^H4;w1MU>k^(S8jJ*Do)u7x13Fx#%Tf6YyRhtY&a)- zL8E}_gU3ET)4S6sL#BZkPSoqB3+&4Q4g>@|!JRPf2e5HuI5fnJm}q7mb9z>&k`_)p zyI~yOE3oF12yk3`+Rf_4N`(mGgxYs+rG64>XXow&GU}e%UD+7Chpihmc|k8Vi$yG+ zVX3Ww_C4;H5$=!k@h6_JD)A;c3&PFt&i_NTKH!=+~w>+uumvxZaXMH|XZ z3tVa%^EPAe;&(n*9!8~x(D4Ho99GfY`aoKJydmx3!Xt`I%ikjhtik{*4Uac=f|3f7?`Sw0MSmk)&WIM_XJyS`mpNeRt_{0(8MI+H3wTh4{{;}Qhq*Ln$eUC1{`Q)Xz z1ZuTlVIi6iDZCm7Sv}DU_ctHVDN|V$bMo$xr9#E0ml~MjvaJnMu6V?d+Uv`5!`vNm z^X*4c2PaiTg0lF2;O~BlYPf)}5mzYr_v*z6pdPWq({$RTGpMsm+F~mw2b|r-p#yf@tE2BCrpj8j7B~*}!Bhtn-KwpGWO5N4a zs{&~99Qvyaoi;6*A&O|aT(6duhop3UJv`a7>?fsLmmMp9;c~K-%pPJ(wn;9LBXEY* zIX%S#h&q;Cu}j{DYK?&ibAIAapl^i6|E90J)$rZ1ApYewzr@uWcg@uje=Uec^ijgW zPYoW16-EP|pPm2u5~ERZE&&p+MvO*BkH0E5(Xe}pNhKdIdfUEOSkaI^(mfxk#hNWR zB0&t>ec9#)8y;@TTGAgX0uFkWU#VC!ZfY@pT;4{P%{#i^VtcVXPE)(s&X<*&^&dmC;jloOEmC7%K(6mLw5$U@ZG z7RYs$qG6Gv^}V%~RtG(h4P?T(QIhja_pTrv`6p?HGd4-6+&&AV)70)MGsuXT;X5zq zEY@eV-rt~8zfAKP6Rz7(gmjkiGrxGC=Y9WRxs27EXryq-wGCq=)V~`l*kQEk`42s2 zIzY9)Q(0n3seH>qnL$Z^!hyeC6a_61dUum%@{Mx~LX7Ka`2Ys)&L|ilLeV<^o2rf8KfMyeb%^WaM(R7JW)t$=iA=Zx%KF7y5WbL zZM+1fl4=>$*2JfUJSuC7hg^Pq>pf`@8CD3SIgeMKm=u_F6u|QnyF>x^g?8b~HbXPp zp~ftwtb&tFC=*@y+>$6)`|hy3H`Nj3n8uLUsF|X^UkE2O?#Z!m@PRs&9yk~_WNL`# zE5Z+Cz#;+wV7bA)gFA~P)mJtBoTx|i`ea|J?0LVE-%X#IU^(Z10eU+otCfL)Q~nB1 zWybQP-8T~#Hy8xJ0RKM#zz~j9y(U(kgLHPgAQ7zpc0Wz8mD`s7s2H$x;(eRAym8D@ z`<&)19%j276qE>>Hp}kd z_6nT77K;IqJWW>}9z6N_H2sRJ)XL1w8~l!AFsyI5BPQ^fit2ut|4NBQfuh2G!1E5^$!d~Rchp|NRJ>FI*(#cKox$KjMRU!ynz=Sg)^8iuDB*%E=@d)FZE zq_rtO`?LEg${w)%og(o(lQN^u{`3u>>l<G9C^UxM5?oumEw;~3PMaNmeA0$; zTDm^BwG1-P7I;USzlp%gLhDD-6cR1oc_UNybd~C;P)3dU{61XWqUnxBeRiPOm3nLa zYaSIG=i7nY2|OW6xRpH6`|oCV#WJua(79wk9y`8goxfd+zRk{@pwcIsp{VV5=y7%>1CUBixf!(N7 z5S!1y_%i~<3{j@Cg!vDj#TRnDV*~?Q5Zr?1#z#KjchM3PXwLf7^ z1!H1B@Gy<_Emvtkp1Sj+?qHj|Ezj5=xc|OvO_Kc@#Wx6jVWf?ZzB}bjBEVdw`8lB^TN|N)Tqp91F$dcn|D4mYRz1m z7UCJQjhA=$U0tasJfsEeot2|DeGHT&^WGPM;~nSAMzxGe3WH~;(q};E*2r+w**c)L z{JxfME$qjB50v$~a_l2`c=gW9M-|vyOmT;d*PYtY33H^69c;4jT#4ZCdaqkT%H+f|(t+wmdeq~Z?K-kFpyrK0v@$`N!$2b|?eJ4I5Nalb1DNZYX z7b~uH;c8#sYfCMH;QO7iJ}8VX9JrHQ+41L_Q?px z!^z&DAT9eVr#Z-Tm)?t-RXqwOIvwN=oEMp7lzfUPg3kN3D8>FQq=)w=JVP?I*!Kc_^VRcTkZXi)& z@{zUs;eOE(P>h@acDQ)UKFkAxkWDZSY4_2A(sMH8QQs@8a#dp-jVt2*!9%V0z?$p0 zw{LUq`ph%fCW|_wy>Fv7qMXjxwLzpDXNXO({N|=OOtExvPNgML)=8sbl>a{+ZpX!-S-^lTE_!!Q@LQ(|& zZ6m29P&YMG6;v|ue{>s2jY@>bd#BvcfBaqfN|K(ThDH{#bp~xJ{_v>$lPJt^r;%m9p;k z=sz1Y?qmnegjJ>ZCLr|`g76q1!&K`8Wk^DtK8@(f40LGQ4uEqYKeU?+iJtSjm;_ zKuil1dV5$qTwdAQls1gJzoZUsy1YY^BS`cMt|+D+|C(>rKVeF;#-JamRdePAXFaRM zbB3YdSkEY=g&4x7ZbW!$ppwZs1QNdi6uBGhD4I^e%^~wl|aTb3WcRg^nGr*djlouCaG#PB{vi1(wecMx?y&?VJ-m37R*6IX>cS8@{ zF%m`Enrso2z;Q#8q=}-!Xu5s}$cLLt09S%~$&{lU7U^2EDqtDS~xKho!mhc~NHGqCc8i3zziM ziA*bt9pV~X@JMOWWY{}n|8$sR4)WFh!jmeYfw4pus}YdFPd}g%Q%aT$KDwhK(=7CN zh}*9}C0Ab;4Y+Lpeydi3p!(0_tfB@~f;;e8`DlZ9bmyx7n40>u!S1_=!BZ1$VsQi6 zQISB+*dXuB-h~7lR>@)TJhnLK##Ci)MkFsZI|G~mY!>l{VCeQ`vtLF+U1HC%YVaU`k`H!8*9)ETuC26kjK^9G&pW#051s|npGP}KtOxT zzDLPpkgW6fffSZ68{e>99aLb4FRp*`#f!g|HG}!}WGT2Rn#m?e-pi|9WEU3aMzvJ1 z3e(0jYDGA3Oa)~_w$OfxA@->y7nc&?0gr-kxJe)*bm0A^Q~%eEe=B&yW{9ko+!*;S zVT7F+b}aHL;yCGMwer0i8jd17t0<$*cPCH^#>pI75;X|cS>%)HOVE7$V8n`y0HOy4 zI0Q|*rsJGN1vEeDyQb*st044}DEj`;iB~Jc3qPRm&>Z@fAK_2l#ZN;ovJOmW1r|oz7n=9Fot2fjnl+#%EgYd#rm?ld*&k_LIVPP-tiWxvFbALvcER zI0P4P*+H_s_GoNO3z1<(`<`jm;=gzkH_#9m1ub3#?j5n85^}m7_AGh>I>vb(gz5$v zrHa7)ASzQWU>WN%UwEkZVDWw~{1jxQo<+HG<3qw@PB6;qzx)b8KVn1By)?_=BH-41J;cgD<^Wm5qKZ<0E^ zeVIf;095tr^9RH1liKY>+gRjHG?_>kFbGs+x9G|j1S)8e#wt#am_sDIh^a2lrr$-j&Cj- zs&YlHCHosZ?hh*RKcP1-lu#X(gw&_i1PiObHRF}L{|a%p&y?ETxn8vU7%A7DtEsn7 z#ws%L;JuzKzw%Y8OW*(}qYFf`8>zTnm>)YNRo3v;oXNHD%WFxH1|5F)HdI~|IeHQ%v;+_3kQwm7}O=w`)yr zw3=cWAjGlTgJjkpj4Rw~M&o7SN+@82v*jzS;SncuR6B^376-8-zJa4OG%Ga;ZmY z{m;h5d%|ua7)| zu&82v^U%a9{a1M$t&?KdC+&{K^&-~C!Gv4g_^sU%tKtdi;yK-R)@GEr1kZ6YvUO|c zKCI3noH-IIptgMvIH^d8YrLQw4N(C>Z8yFFv6`v7hi1rSotzbX-8Dv2L1{{L7+NP( zspJAqJ6z4+=fpAPky}!E;)8)hg&adT0`pMM7{CHC7KgY}u0w)+w?48Ruz#u}KnCmE zc2eG5urzQpx3=V?u26O^jGG>VA$IiI=!jdg;h+~L_D0`360~8+xy`lTT#f?7qybC1 zwdW$-S(Q$OsguECyR&^L#y~sn6w!L`eNfF!>e}NF$D|4r*UU9)Fc8QTqGR)6M(RJo z8=3Ke@RlJ~ejCt}UdssM)9c_6v|Fo8ObV7A79hpQn8Gp*SfCDJy(uqpml_dnJl$Dz z+K1X2!E)s?jls4zmEa74XHFZ&%9CO~5KzjKBQ3_b1gsX!QAWxLz11^o?vkacm!bYR>m&I3hkcgu})~!Bm9fO2K z7{1xy%-PQT@!(c=RMRa;^nkFg`Z6D;dhMnN0}LKv_>iJbf!SB40#7ctHmN}BF_*8N z2BQ1hd0JKrou}Jroe#Hr=hkE@lx-4<1A<~=D6G#wM7$R$wWFg=7Yt!UZsq$VnBfPr zBy{NcL@;dV#oQZj;bL`TB?o@gd%7lwS0XOe0=~pFuDM_~#3RXTuHB7oxGvn&q$doC zeqTq5S~+5lc-PgD*HNi!C6)$FBIi$Oi$5f2vG61)wTUoJc6~99ExkjxYQ~(Zl-p8v zE;+Y~YstL)H<6b}A)biB{!-b%6i&2{U?9l;nqO8^%CW;gB(QS` z2o3R>qp;Y>ShobRknzycMc48uKel$2+69d{PC)6_ZUKRt3OP-73yBs|DOQS58W)B& z>&cH$5H&)g?+GiAqv^y$Y3aug%#ZoeHXV7Of!9|hQDMVONzqJ+rGN}h%1?vqIVTue zRV(1W50sO^=lFL3=XPPcDuZ43zjCh>e=j^8C_gihtN!vqH{!*KI^2((cGwv;N!v6K zeOcWsFM|hjz3q|^wdD5qj;)gNyF64x)6+Y4Jh`sYW)_DmwylL15S>)K*D(=~e>CXo z!x+XGVKGvkUv&Fl#wLOnLZtN8j`Gn02j5)B&QNF)rnQw)ke2@Ib1|cpbN65%?wj^K zuDvvp26jDV447O-{NL;{bzjnVk^LGe!+(VA1SViFFaPx5fO${8)z3j@@G?cRnckFj zS(X7YoGa+C_&ETsY3`q{dq!3Z)SxNVPL4Dqiz{_-IcIKN9m=Gm zQOn^$I^u42qkteNqm*{Ol87g!+4p~^#)r+*B`O2tbyfSx44_De0sxWF7ygyt1|S#1 zZ#B(pOXSIw+hFRU=W=s0N!(X}aD*2vGG^-%5P^<5$?InzM*nJAtqc1Rm*zkJaCfLX zXx#bd%bY3!6R(RiRh+|*Gbl3JfhOy!O`Z|#i5PbLC9Nd!+C(W994*UuiZN6sL zUN|t7V!Nbmeu3rr_U7v_|J(q0qRL?zF%KBVGSnsF%J3v6RGlxm7Sof3H+kKj}s1h51{;pG&) z7rZ%LSM5SJr}^F1S*lEQhitrfNlwhf z_qHCgjc~G7Mm`1pJ@^@@mb78MDE>LugOk77yFB(BS&8jsM1a(Z8f;0N)H4N287b&F z4x=gHUj#>Z0V1LrrjjQbr_}cVv55e+`I5*YnNc6b#=%15Xvq+dVfAktD;{mKSxIsI z_9)EvauZLi`2_S=%;_(QR!DCP+0KkoXSs^Pps83m(n2!?2~K|Pq3uzH0AicLO^Msk zhnMo-f`81*_}tkh*_e8M=8CJc6)2|feHEYVEJj{TnoX*jpKY?kla)gkY30nKkQgCc zoO#^>Fk+z}M5hKj=$#3HA~eiU|MLxZ!s?G{<(*ZsO__T@P|1n+gWNEVY7T|VDX9aQ zC4Geug`mfC7tK4!NIkgE_Ir$nZl4B2z!LSG#;;rNix%EZji1!g@OpoHkhfkdPL5Jq z$|baox3~}4xXO=A-3q3!4MyzAPGox}Rw=j8gw%KqyIUTEdxcolHA3+|Mon?cYJqmC z1+*Kx$4`$Jld7xUgCJ)iq8(3*g`7;k@k@pUWWV^4-}Y+ zE{~=y7m$NrBN@kSFwPFg0sR|d-^z%rh8v}f9fX?)V4&MJCt{2 zx-uWpZr#8RI4UN8+PP{fDI-B4g=(1aeSr8}yff=#P^!<%KJD7#4gef@*!$k4Cd9vHg&FAh^Q3REXjG zHhqe8*H*qV3+k!3uh5wjuo#?M0NK&r+(KZx=35;ZD6mvJv`WN6$FC=7V_NEy=e{&u z)Ei%Kc}JK&gut&4Ln8oDoTPRSr6mOEg=t+!(JY1;x-!prejS&ToR1E%QZTWvT@t^i z%5PtrwU}9A^~;Eu^t(G_eBIG@u;w1%bGY?V^2x|PBX2*hVbZICfH0jdLv4V*Xs7bp z&9k;q?k=ZPo2yS>*a(K?2fjQ|sRfCiY8S1#mebOLlG^&+-bn(PBVOBB<*ln`UySI& z?7P|7#GcRr7GN?I;>o=l<66HsWhDsply)+OiN(;>Tj!)6-BqE_x!!h@>|n@43~8cm z1339BX>SMDV2eD85($xhIl*jeT^J&Tvx*7YM8mOiPCJz; z27UiBbw&kBcez2T3Pv64L+OW*X&gpHkKY+}WLZv4@Z0Blc>FK;CmjW+<{wzkIGg`L z3gH>npb*le(VE$2XM+aJq#_h<=nB&~Ur*3d4eJostM&R%|AI`r+tOlD#de0kLnd_M zgvBUjR3>DZADW^k&Mjx^U>Mj`oo6?|S0dXy?nZ`vNs~@EAL=o;`>+JM;u-E+g!lHb`dN?XP$j88s^MEBs>Yk zIHx|n0b=X`>;pQzxe6iThcUAte1OG5P_;TZNQ9kiVHF{ba5~!lv20(Dg-}3s4A;4X z3F+z&C0*Ty&Qn>Bg!12Mde=b3itcPnLv zz_MFr_l-&R*`bv+0YVu|9}i{RGeQ}u3F5+5AS+71h3+W8srq=Wa8<=4$j#(tr5=fW zj7Ihu;Hs1u)l9Dw1#$j#L%K;`Vz702)iJZLp$J%oURU>M`WJP0z5}77A6HbR@S6or zd!HU@lr?c+aaSW;!t`)B92+)E6*0l3Jh4OXG7B2f6ddP*!@PP(tmpa4Fn&1!CxDIp zQ#ypJqb#U2Tp+APWJ1WtT{>{LoZQKdXySMbV4jaT%LHm0`JD& zB+O-*8b|eDFtS|!TU*tEj6|C0^GnxDFDNe>WcOv2plc=Bhz^;35yWkKT zZq$zDIdpi~lZlOB)y1vT5>QDSHd$J@Y*tMk;`7@?Z?o(N2_*OOD1#h?q&*JyKWGcn z{&IpKEM}U2MMH-cl=HK^$hn|RgZm?nwEc#EjD;u&UGWL9#1v7=aOYg8{@o*KXGoC8;W2n8z@a6oM84K7f-ZA(SfDmxYQ!}DQ7aD&*u zbhXvTBpRb(aohAZe~G@tq#h15mS$>a*UW^)5FDYEH}Mq4EjApGwiM1~JyACeJYX?3 z1O*Q6*@+5kUeX~+Ywf$G?yUGsUZiK9s}F9lS|gQAdpgP4!PAYSYvF7HDK*NHK$HGM z?1+c@+N}PNF-8Wnc|T*ir|yU1l0t*e1_n=N?~7QPtj5mz}vtvs!I%EFHw>B?t zKTu4a75g9_Wsk!d6Hsk=Rb;D#46{M_PI5VVq9Nk!)u?EA8{$ zhsh329y;U7pI=pGv!lM3HdtIL>>1sDX+_gvV5umao>gd!AwBtdySgl?kc#+ z;yh}+6RqPs0iMgiszqeL%5>uf*3NLvNT%&a^(9O{-+&-Hi==9rmx4ZW?hKu3a^qg^ zXU+bG_)ilJw3!mOwP`T`t`D@=J#-fR$zspVlcl7tOv5l35IqAMn?@LH)%@Am3O5Of zk^QteG-X6YibFU*f)o>b^iL`EtXJ|LA@%v+JxE+I*qX=}NQEre6i6SO>CiFQ62^k_ zZ4^hUij344W{5df%PJ-=PV@lGe8Z_Syr$&gL-1K|YOB@AmsH?+NP+w{o~$r!+^JWG zFEy4A#{!eJzToMQv!cji19kn$6|M|cVVgc0awgBqp+9+<5mk>_>o->Sx?6yOIm6a# zz|DThW*uR@cDFFb6@`$^?PkekmC-w>dYDDG4-o15eMg6<8XL7RV0A@$3yBKyxJ}S6 z@6*xMp*mg2@C&QYI!>D6Z%CaQX9w4C-g|TrS#mFtRyViGck3u{?J9&~b?rP@)JfC=G zdIG%=G`ffvs0p-F3PYVz^ z^!$pZj)+r^xO_*K2y+*7!aVXR5Fz?O@@`EJF#7GKDU!c z$A-%83}6Eql1sWraEq6@BLz!eOnq{9*6CJwH>PtWx0G?JpodzhL+YSEdMi;n;+QMS zk<&}g0O}kUha^a6gEr?)$qOr6*)2#{^C6UArJk9-`uG|W5btDh=pm|s@mv}*ifwG& z5iu?re=P}L(4;)kh9%`UPuzyBfvG%xwm|2EdOhDaz$VZhpae)X8^K5lU>B6nsi<6X zVF(&4q=R`^qj2t2UE-s(C_Y#H?xxRnzDJb=f_VVY=kXH|$kWuJTX;&+<%A=M4g96v z;+Nlzz^m@TYR;#8L-BH@QQ? zmDjOFa?Oov`5b4vDaM=&W*2 z$6DPDV&kVCssn%yaCpdNa#dL_W>q+4f?o>>$)I)oP*Bfr0vy#xXh0mr&|j|0E`({4 zi?d0XhD+b$unuY0?jWZrGD$-?>JQL>UBe|QRVjj)ffuU$KtSldQ6b}2Z{5kRMmGkxXa;{RjasuRvr2fg>1Y;U%c;Y&;(JIU}9yz)ZYVcI29&+>L^V|pqT~usas9EZIsNxv= zKV`3UtSTJ+`i!by*nzN<;Wtirgd>QPKb$vO!D*BR|Nr?^;j1B#Fbv6Pe*+P&`@#%w z5MsUWW%N`PmgG~==90}=W5WGg=GsSo{$PF1+ikTiACL=IxSh~FDUgVRF%#OePZ4G8 z>zE1IXZzi!RCle6?HfSZlKqsnOy^Eg47zNxI)`VKQ+J@BfUx zqL8{1_+jfo`w$CZWhZz%JSOPssYpdCj>*jt0P?M-EbIfRy*>T^H=;3p0F%rP8AfoF zUHW(GASk0YMcxBX_>&eH@%)~6jK0B60|~o6uQm}!gU5iBVhtbBf_rg^%4kr_#{&PY zbanF<@mB>yH~nW^@AuI6pH8--=-62dimd5VD*5UhUJp@ zxJDTh=?gjOSHf*lG(x?QLYX-DnB* z-g9?yAkGj0L{E1R@=4>m zul&-7uMz?oPb#2(@7?R={ZMxJHQ_p9;BM}}1;t(JZ`%pu^X&3-R9r=&K(~| z+~>=v)(A0j{s|GV$v_WG6D_4*8Bd`exMo~#@iXQ3y4iX1X{vKN&mu8mjC;qRJfsQZeRfs z?5EtatpQW9#dYN!6<%S*g>CVx9{s%y20|sqb@Ldk+3vaxUjDo`8crnsO6(GZHNW#d zv;7DHMKaS?*(WBplNW`V`u&)W?Wa@shI;~swwH-0Nu61QoOFkkIoLRkkQwn*mMiXX zydTW?PABb?xM{y4<}~fJ;v_*Y1ud7T(;oK?y-bn^2cLwi8)5_!1aU?U${C_C{)Ye&%xVzUyQVv)CE3%WO9i?C1DfHW zHhu501TC%?rHjAr5inLQV+1Zh280C;{WVckHo;(u;_*nha2Kxk(WvNu1L4LyFeGIiM8dhAy^ z=Mj@+_05)Mdb_uEAJGTqX_86+wPt>7N%TD!+QitMKF;sf`Rp}d~Fsq9rzK~WJMFE%;#qp4Xuzhw$k^)dmk@@@xL{Skw3B*v8=Mak6 z$%gQ`E@Uo8P7&Em#AEIHV+*_G#fQr`_4t!EK&)KJWeg4V=nvBMD9?u1&#A55#69OJ z(T)Ay`O7s7Qw=eO2~R6kw(P(XXHe4%le$-owp@8P86fUEaDtH#q$lW{Qqe@tqDYXB zvAR2mBKL%I2V5Nwn?hH~Uvk}b#Qx2X3d!fpIPe{3Yz5n$}Zvk3Cj<@3MXWXRgEW9lop}(tz5r zhkvcg7O6}-BoOwM0%9>e9X84$N*9MA(gz^bPVuUXNE}XW+Ug`=pDT;o38k?FdEkUl z`OOQ)7uMcv5rcxtP~Buf(6McXf?3FLFtnFn2)j(bTZjiH+3u zXVDID2V@xD(+a)Vy3#My?Ooyhm!&v5d0-tNcg9?1S2Nz73W%k|d;(@ij5Vo`xHIQ~ z9N@LfukJhIS>qt-GNrc>kwbLTG7&tzrfep_KiO|KGi?%}l7v-0dI@D2&J`#Ru)4kZ z{5eBSba!ze$E|e@T?C=his7ik7`aGoH`|sqP)ys_rq8V5<)yIW+cJ)jR|<69 zb6%W+rWEd&bxv`nW0~P0+KnX1ln0kaMhDNp@h>awpRJ7iBSQ{AP}RY1$`R>^DcgR@ zApW$2R=DqG(7?X^XRur`#gYfI4ix8ujYTy!f-VZ*8wlXKW+;8)zLIdx0JXj)tm7lQ zah5s+DxsEdUtF*+z)ZPEZT`PF!|f=HR#u+ICQP&*yb^IkL=O`g@1R=!aB>nf(5rFukO1+{F1Xj|@MZI1u&HFftrl0yZVf&N_ zB!Z*x0MS@I+rbyi>HS8*x~qoSPdZXJk^l{ym#1{~)cExbofWrh3b?fi_zmw?Ko`V^c)G6aAO4zHUsKHB_!&Ep)H=(bEhLm&4Y#Zl)ZB2k zyvL|grz}evIYqkhpnGztbh}SmKsuC<{&70Bn`xJv3%d|_cCis){w(~=W4{b)TOL2*9U za1am|c7DwPvD;6veytBlturQ|C}-#}DP8?X4Z3#rQRbR*Hu5%9#NmD@l73yeM6ts) zK&;|cv}1*PQX#c;;GrlCPIIBz4|s-;%*M)yfzb#?3A2_^eM@q&6h~iX@!!PnZ|K%O z5`QC>6780hSCIL>ZYh##Ou@)gmX!)z>&z=w5}(6_pR@$vVY|yi?_69u%=9G+@QQgO zJ~u~E4dLkV^D(hE-KCo3&WcWovOc}0n|i|={Wk4v_6K30#$I0eKjFUtlz#shHl3&P z4+B?`KTcO$Ygv$THuf$Ls^p`Q)%35T2|`L9smz? zRVSoewK9K9HhcK=K)KEZ7Gi&=Fyg~ugj=I9|(}UUXbB- z&um*Lxrd@I35Bkv?H9s_rG#VnmeWT*n^vosuEwcW&VImqeYV+G-jCB_`tu)5I=JyO zoG4!v$YUCRV`Vh7xTpjoW+zV{G6JGZ61J?0en7cy^L7eVIZg6f3-x~hcQ#<+IhaID zDI#!`rUOet9%tMSvCcaNR`=l9Bsp?6m zt=oa)<6u!d%I)8_+(dT#NrDt0bym(&seR(cT??}KhHKQu%qkSQ=QS`a18)Xxn+>7{ z0%}ELG(rtG<@IKEL9G&`4cKqEOQ0DnidXx-Eu9L$?|Q{nGlKCA=KO%ZD-D9ERK-Em>?MiF6^7|I=2T3B$#2J-^+{6m0ofv|K;ZH}?ro?r`> zaR!>fbtROC;n}i?g8&bdZV(~P*!UZAhjwOJP)3f~+KaoQ^tic$n16M+hVBgmM0sIppTXcq~Nz*`(;-&;>_-%uW04J~->1#A) zEoW2rdiE_XN@)^pXvdup zR?PvQxzxjB#bBojto=PGh|6z@L*~G9pw0ot@)XZiCSxB?A!RNeCmUI_+cND}*%=X1 z=onTFilRLm1L_rC_9Rj|R&h3101s`|L?EH+M|bm2mURTRK~Ci2vnl`${~Sk&rbdUw z3j)4ZvFqDvnk;STt+(~hwD`kaNvizG>&!Po9(=|4{J1*k6Z8%Ry8eW^&K?@p_|KWi z#t?UVW;@zGFYI;D|LE_80M!S;1m?0`TPFGeIC*6U10}W%v7} z9KWP2Z3VM+cI~;!9*}Fl03C^TmZdpncZ(;+8>dX8?oWOSoyKpM&)OngUuNa^+mHF^ zL|2cMQ~WwN#G%=YQ3ga4P_VcBZWR+*+@}C$8EOv!F&twUP zm4p*){u?baQ9Emci)cs+EIBG(VE|$2fZJhU%+lOx?-+PJ_yeu99XEqaIump$XJ~t~M@B4ifVZqyG$Idk2 ztB&v(qg|inC$UG><|e=;H*2}{LlxY^H%XG}vgDf4K(i9^XQuj_*$z>UiSbg@k}M35 zxYAn4=feofh^P+{bK$I5yvJIKOyFD=tHCeZp(TI}%<&R>#NFL$s`zz!t?$g`u}x~d z{{wGz^;**N*Vs^V&_`YyglSg)>aHD}Mh)072{i{g%wz0_>FJIg-EZw2=e-tQG7=T6-1q?pQRJ`dd{@nt_9)xOiw%T?h zJQOm8R>0J5EsfwO4eyoCz{+5o1DtVfV*XA93z1*t%d%8l|%d z5ne1lK8DU9-d^liW$@gcg=KRllZ5rGwLZz=G*HDV+~(k|@Hdi@>}W9?t_X*>fv8@G z(OyI2_^VJ2ft+LyM)1V-U>&i3zIU_%WSgdw!&a+LLl)m-bBdj@+O}*HdC?5 zP8M3e>|Zg9*#HfdNfjFv+nk1-{~jq}EHP;C?-^Qa&}y;)HVJlYoWC0S(^OG~mz@eh zWcgkX^mZ1u zng5rh+idpfY1sdpsc%ZL#AF-s6J_3kHbh-AuBE9x$nltB!n0w$8IvaiUX?h4^`|K> zYF!T!GZfqU?L(gwfc1F}?W#RUZqij*$YU_dq9W^BCb+k%wIp}+ucr~I_|j~)N!~hL z(6%$KiD8hERmgCJrhsVtzmcF2E9hCFi>Q!G=#T&F^=%FyRnRAaC;P zI;6b(r>%9kR&BD2x5y=GuvCMI0RKM#z?J3rIIrH+#@W=b&lmp`7dk9e`YVCZKJ(j` z4nu)5cXb{tk>p+B-N)i`fD1tMs+K7W+t;xdp@cZ8Laeva1gof+VfQZBTSvrW{gY1XI_?!Mh7h0Owc1aFZ|~%IOKarY_fYo zW~jG$5|cVev>jW-k=dFG!_XMx(gApw2AyqeX%Hub(&;;vY#Zu@z_{U!XR9S32JG6)g&mbgY}g_n&z=& zmB#x;p-p`}_#FOQ5jhS22p)orxn6J6d;EXw@LbY63CU1#h){F%R<9?x=JzXEEp>QN&XBQ}m>>Q_CSV52(9X zHj$wm`sTz=@ZpcZ&{WZj$4ri%Y`%&W96EO#>YWXCmvTyYji(y;nt)x!YUR6)X06Be z`al364cY>$3qoQg4Hw8m$M-QXSb1}y%TaX945-)Xd|;@`SBPv)<--%Dw5y8%+m!YH z$WN6iIYx%Ze9b$XcLM`4J)~#pUi3~)B&qJ8pylMZT8Om5jvyDCU&43)FE#Y}u}34| zN97MZW_+n@?mwJ|PDuBwk8=K0;*o^lIMH8&Cx>SYhMaG|wPR{E@wO;ANehg`hTM|i zRUMKi=~ZLQ2vLFgrB|krUL*4(I(PsM+LH3KM$c?W+Z!EXT9-=C3H<2HD^n8*9E(V`mK+T;&p6$v$&- zx>`*;zyg?TUY<%XfJ(bMMZze=HOmqaVS;3*Ke)pw5E> zYM~$6hMXJnT*5IB1zEdM@A}(SoquwGmcJi`G`eR6|*>L~7eAh7OZ00gXD$0E)hACp}0~_x@FpO)! zpqw}rk-mM4rv`*Y=bF{bwOxNH^K>Aj+qS+Q*1{}jaP4v9 zZ+RQ)J21Dnm*fD!M|G=PVp1b|M2S?LAwVcp3w5ys1*yC!lt9C=3fR zDWl$y`ubZ=XpDGw$&htajY3MKX(Es5F*bXApl3?>LlLn3+%`fx!^C?{*d6<==Ja~z zUB_|Kr|KVeX0zt>cBH>G0J%=p?r%fV>s4oy8>RxGq2w!FeutW#c5nk3+#*cVIN9jb zd9NzBHIfcI(9;zO{w(J%wf37YJ#INT=kASU?#?gW!F?*>zn?_RO6@duE%2DOT2YMF zo=rgPE(6?Wq~Vln0}6kNo7yx=LVkZW#7o|cIlEV~4>tLY!}Ci)Q3gLMWnMwQs+|bi z(5>Un7W>#|?wT`M+P_xufk#8I&D`YKocH=iH1Trg`#4_t50PA&4zr`9s33x=?Jt#9 zX#Pj&P;5z86JA6?3R6-wQo+8??tK$n;XJV1uJM!QN4=ruFnYS1&Isn8 zKO9$Kc9Hr<`cNrE;|Mq;yF~k#b}PeC8~D7f*oBTcX>1*SNZx!eneANxLv!iUgrj+-fiH-obKFrk-t&?ldC(p;_RkLZfoLgZ1_Wwt7EfPy9rLHDeLL;M~b7u5o zlz2R)|0qSTn6Xw8$h#vy@Uk5MewHl@u;6FXv#FkRM%I{-yx+SAZw>}^?hgHTX%PU4 zVZzWd!Cg3SA|e}E0J+4y**Xu6WnRlJ&tLr)S4}Z{bm;0{0r@#v-+7C*@V7nBfFfn# z8O<~@#)I)hh}{T*StA`TIUfRV(T)W4hq0ZIt2wR=`8Qznns5ak=vF}IaCK^nsJvOt z?--rhwIYY&%pT}$9%K#keqCOt<|p;T&1;B{(&b z{LAkSlPMWqMPsAM9nH6R%GxQ-D6W%^7o`9bP)V%^DQp+4=ad)l?3jrMV#*{%HQ}SM zq{P&-Xs?Ez$soT?;Y~4I9B&UAG-+VlW!uXX&WgJ3^%tx9JaUr;o1$C#$ducprF%Q+ zx9}b4Wm){v#tJKvn>dUnHqpyTcMB8=u{Q=@}JrR7&lc2XH;V8d+y^&G~I56TV>>b*0Q7DXCKbQ;p7Q z^#STTjD?X+vn{QvdiYkc6ITcN=h7GhL~`k=U9jQezrx7=6z3+R)ZQ}vZ5($!pa~{) zSOC+ib1U9gU9tayi|#V4w$L5{lH>H9Y2=Ndatx~VE>j#`hS(V1+BFqA4{i-@5Rp7t z$En7pSwSDjWM9tMLhf1^7#Zw+)$8G``q||*sn;>qrLLYMvxC~hnnq5|dCz^-%DSTR z{3zh=WESZKkL&PD%8x{Fn$4n~JV$9K28Hu)R;yPYxC~I@pE2LkCB-hDKi=x$E|X?C z1IZ6MzWY-cQHPfhxv-`+z;ULV#0c(T0x(<8kfhs8KoXaI8@5a&VuAS24pDwbXE}}+ z{axmRHU&ap3#dIWK}Pcp&IG1cmEQu9mKoZYMJ?3@U<17zGrUx(KV6UQwYzJf>3575 zhfih9vI101ey?3Nn;etGc`x+KJ-nt*LGh-vgpK)PmZTtS{s7a6e%_;{!Lnfyz!X`{>T zXENs|@HB=QpN5Or365PrQ=*v)thUeg#C#R7Uzn@@2n{l$1e>gd0#~?)-}1<51-8BY ziU4=R&%M4rQK9oG-fVS@!p(G!U@?XH?y0fGFSz4vz~M~MoqKaXVv1UdR^B-^iM%u; zPXtp6wcC4k7`AYzvTt^`hBW?b6i8L80^x=j1vth9-LJa)#7Y_62YiPie&k-Kah02% z&f5henU$O1s6VV@VH6pRhet*IuG^-(#vcb8Bn<*Dh1j?c1fTYZ`M&$FamONkg+%L379z~%u7j#+O@PC5Y@5GTiyLMqj|O%o%b8GaL$uGE zB?b!%Q4aME&=rNIziik=K9)ewncXT2vqeg z`M1MDfHo**PLjJ*chKm8S2$W+<=lGX*`}Oz^C~C~woYY`>DCmTtz=u~G9wL(&2Tyw zZc-&MwJ`wwYQ#lkFvrJlbmQ%3#0@SrWc8NOh=hR6r#@+@_#h)mTLi~Zqg3GbKxrt< zG+{|hNMq=(BlT0_7od!s*Duu>DKD-C2xO4j`o-bOS|9UnEl~&@)|SY0fYyh>smsD znq0n?8L4HGr2m&`q1Fs6sp?NQmr}|NiurcfrUL%=_PnvO`UrzJ_Ig1f)cyQAs|h~n z5cA5hV}pA8z%J@lWFdl|zNK9QnTr@_%`kj$nYx!NbiN2ljzK7+cY8T*u2fFT%10*w z!Y*nyVE2F2$C}iY+E{`*SccUdR9y3|2<+Zw8m^+(VE=e{!2bnE_pw^^X2p*InE}=puyObb!iN-9CoN<~wtg#xJ6qaLLJ*WSa8I zVDPLB4_lC3a;Em(<`)*V61a3|eQ^zu5NdrV`;j}m4BJ^jD^1zIiZWfu*_+LYa@>6X zZKQ55Y*l}uhhV_7`9Jk%n4HR@3M)X~oKeGc13cE}>Z_Tiq=&DSRgPCIdL1v^RZ;q( zO=-oqU-)p<#{DOy(78fDdl@ssq{0cdep9|sd%~fM@I9>%wCcQ7;{MIN!+VXi2q=MG zNz*y-60^?0$8h;ja>YFImB3?Qyjuy>ahy52jYCu%A)F*&OqJe3#%w1}l6^l1>4Zt3Cm7Pc z54%W*GK6_FD&JD7SK5I-+IUxl-lJ?ER4w=i-?|V+x0{4uz_Le^5 zbWFL9;bG`cB3q`bp1XPx-~|m9Mt$_H*bH_j<4osV-bG$=k&1_K(Bbqx+kzS1+j1Kh z)kkN)wTF&BHU;KB&oqU6Qi=)EkEnlKHT-t`9*i;-u`{Yq1ZkrtE3DpeZBY~vlJ=gBT#pBiZzkoIZP3n z8alL@zFJU!is*5*^3TCRp+|Ovkv#;-QW=$ z_*?9=@j0_`=Q3UTJoD&96L}g|E2nj5}OLv;H&9`E;m<9v-8+ze>Q0UDRbf;#i!Ddcr}d(r%~$U zN(8EI2VYtPz#y6{DE>bj|I8ed$E=?rzh3Ib|GQg0#m31h^{v|b6=oF$d3JFj| z*uZl9kHu$`4bbA#siP6IZx-tzDbBRm)P`2NPAS40FXo@9kaHcEdCjTBfAt!HctI^y ze!!H~Y#ci|m|n(=N*`7C))OCzl|NMiU4A4*4;&iyew(Hd&;yiQ@yoQy~7(2&MLsWM!9XmPu%a-|_cSZkRsE@=5wRSHj zb1CIscyH9seeSTw3|^XCLt$SPIg2 zbJ%(a1*)<)$IYG4po*|Nl%;njfYFJeHin$S8Ifd(ZJqvmk zrQbKImukY@l2PIsz1r1Padq)8`b-j|6F88vXquXGu(F&Mm^Q?|AvzXoo|896ba47{ zQzYVfrbTxhhw8U><;CgTMugd4d5&&|zRw43@}XsLu}+!#b=h+v^)!Qu0wL77NU3a? zH3jDLN7Z-^kxpXc(}Okz@pF?2)g^@{q-20sxW?y87m~rB_hiBvYxHLUr~^` z+KQYfk4jUv7X5#bfC^DJ;j7Q2XDIu*0pVoB+!!m!mKC+7g;8H*Sq%Ryf$COpv`jF% z1>H~iM8`16@&Bq@3l0lkK#7UQxMA_SalzgB+NF_s@5NN`*U;Kk?MBQ=ax^S#-Km}) zwwA1F&#@s0%EZ?wR=Dy$XQlp$$32DgdP`+LA^>#Lkt!1yXaN=-?L>oJZ1$R5ZP;wT zLhFoZA!Sg>Vm<%A&@o;A+-ZqTRAemyDbgmY6%_+)rvawTSd%d&&NW}XP`LaCN;{&KxiXyFnU>y25O2qiuT_Ig3G z(Y6#~GHTtKO?%*sXiF-MPPk`dCa$S!zoBo$?9~=QOHYe$wxq zTe;g$vf}$XP9RH@7@yOVORF2sf38)9v1Umv9kPywUnZqqd_h@w7WHay4=b;f9S%LJ@OfyKM&C+sP%xk@-6Idp zlx5AjYl_DuTTP6!10@h-p_bph+-0>%zyyes>8K}}%MA<5gS|}jq2f2E+^!#0-FP&`k|Zc!Pnt#Y=fICSzSzjWSPWC&>QflC9sDd1`HO0o@`oIGyJL}aBb0Po zjB`6)?tEbbO?9zaz+Nk&JS@b4o3#HBJk}G_v z(^WKVcce&|2A2<><~0Fe!-ohd6ALZfkYqEL3h-@(E_U9J*^j$smTUsPBR?aW0XHQ7O;&+1q0%23O1BJJ{UFO3M-~jV-TMK+GyMzXvkUu&|@(iK9_;R1{LzQ565!_IuZQk#g+wi9K$hLOA!e)Cp@G z@a=kfvjxvLFX}KNn$qKUBb2(Z4}RQc=!mZ}4{+xmvefhEbWI9Zbo{&_M*?k&7C~H2 z!+@YU-l!*dSbAuQ#7ElH}{?VbvC)*}~XC$|nOrVf8Nji}0tvKo|0@JOUol1y* z^wzBAXx2wD0T1`3&Y0`SfQ_m?ZaAogo7a7e!em|?*XZDMubV$RKD2cu_(54y8dvyw+SLy~^K zG96Iz16>e8bbhyvLuf#Zgcj6VZsUipe65@8*`B!NDnOn^^c(neE$~jCuU$mLxFg#VSEOYjZO2 zGHB<|`mm!eHyhpiP42px`hB%&n4(9et_ynxFG%MDMP~mBx?6{dXf6J6B}qRBitT3A zDsF$VchRg=A3eki>x)uzcUJk%oh=s?D(|r*!Z*o`DvY)>(bzgOa9%nq0JzwpgFgDC zf0_bAAG5H%w5`z-xP|SyWo8a2@PsOjhJk-RU`Oxv4DOA)1R^8w$S^dB>qUWphdOXi zNl?qIM2eSqAR&fHFb8pyxjPX;-O=6DG=zauIwn{abn=RQ_xXzKbkZ@kV{qS}5nK2_ zLg@pYe{YboBRa+$e(>0~^EW8x+4k8rTfI!Fl}Eei%K{|}l6nD(AUp?UMpo`+!x9E^ zB+7W{(^yI>)2!=Kv;eei+*y1DJs11;c*RaJg9RYbA6FnO1__G?z60;6~?2-P``o|z{N|rXd7g{_hp|6TYg=pw)p#meDlLmyVBAN4(Z1sa(qgLEu-Z3N6||J}hk25U zEq8NF6IjrW>zYL*gh^1oN`Z})+LMt#K7Y^U4ih1q(R>X&GfF#g-#)?1sJ^{3jDl0on&~WPvt~&tIri+<%L2Mf`3th*(z(s$BY)!0R_i~}^tM&{)iEnB zBad!eLer-e%`dfS=dv?FULSJ;FE9g5Uqw{T5>mQfA34`Ts&}xGNWyhxz4?FVZ|no3 zs_E459Tw9y?m&pOVyLnh3D+wq7dEkVe4`Kq!{O9cJD%GN%f}r3HEjl2v)23yla+xj z-uZQWDqt|$ z_*8yVVgvD9FolV|P2%(SpB{~kQvo8m4;Qr45T;^>!g(^%Q?s6nyZhmnmIxjKgn zx>$rH1ICiPZ6$F$=@=gOr_iuwixG?P=poI7VwCRNfq8XfKXOzU@N@g24IPEcOiT{6VFw;fiy^zqD4VaQJwOKXtxkfU`hMrCo0o< zd=~)jfY;kWXq#RH^G*J~E2pYi-B#<|z~jr`+sDI)Xa;OOu?#WRQD8+OUsRUCYNzLx znaE^Hyi-sNvW%DB7>5X9!7&p)Pk*oR#nJe`ymV|^I&WAODe^Z`);0IypL_Z;`W&Jn zC9E1P0<=D!|11D-Mwu-O+qV(_D|QsaUXm)3T2yGf?%@n^g*`E~oZiVsKB8|~OZH+5 zOYyIWMW7gsSaW{*@5*%=?|iqBfQb(JN7B5c%l8esp1+1{s8se7T`*VSuSFHcfW2aL zB+_6fO&ktzl>#DOG3^l`9)0>E5EWPmh2;+25c4PfU!^X%h0HQ?6Vy8uCrRu0 z%_2^Y2m5ZvNV-dSz2Ri{XRS4i7m!fdv%2q!;_`wA*iP8T&}Uw)75lNQkkn}O9UI1d zJ$zkMk1vr9n1vjsgC!pNXh_Vypf zaP)ogJ7cMGc991_2GT=UFw~zaGd}4qPfD|#g57v6SU#_%-!ngyA-s3h_;tsvTjO7K zy6s!ACp#2tng+P7d3tf7X(+H|4#WNvIEMOBUo)H3OG+HPGN40}hK7RgD|z#V1*l&I zo_?`X&xNMBCXCxg(RCJJEGdMSx5UF8Vr<3;Er$;`V2fhI?76dG@r{n>$Z2vX%uD=EBXKk*U*|M zX){fw&7=D}Ixm5%=4PsK5Ez5O@?G)pOhK9Co`qLcOi_`52?%#N$SGP~yp$s1o$VJzp@$*H$zcdG7O^tmB%; zuQE25+KG2s;Dl*itQ&QzIXjz~bnQ&g_y%gDz?{E00LpxawOC%;8(1TfE{huC=dOFyTs9(rcK3E8juDxz`rqY0S`1gzb zq;%Lyc+otjcFeLd@*jGD7uHfndk?`9+FdD2Wt*^k^8&>0Dj()Ad2?m&?es)O-(45JhRhTvIfHywM#2vEaj~G$MIdY-6*yShwg9?E5H0Yu$ zb=vVY=eHuuY|RtiR6#a<^SMIsueaZYxdUCT1D^x5>0-Y0>Z<>I^QTn>>k^thK1NQ2 zVt|#zWTIbR3rj~+&U@3C%yk}P&XGrJ-((tpWI_!ze)IwCzUer0Us9$Imu|nAjm_@? zF8eAlQUW*gvbF)#S~DcxE(!z8;e-dgzU3V5j~y?sk&Ha5bT zMTzs{>HnqNq^s>;A3NQs95U39dv>>OV@m)@8R01_N)cXZOJ`mJr2G0~7ZJunx*~0Gek7#Pu$hcs81#Yvj2!ke0mB>o zTgQl*Pb{hX)|&DBhBXqWu)*L0zS4^!V%bcA6Qg02lM2e>t?WUkjD_#Gh^%IAvm3+zaSy4cqsOd zSq)^j2-z2uJLU+t4}=2=ZOnSbUu!U*%XL@v^K#So!re5h`OPj1CIGFFMR#uDhGUP! z^9C~z?;}mn@1+SqMzi%fhXZr)>$Q@;3`$8B0VJ1w=N@Plt-ag$T&epsiSho(_2`W~ zGV7xZkkUZ_Bzp`G!i+HbI4PuJ4DrjX48QES@YdA=WIrz?Mk+Yn>k!hZ-;ha2z_TrX zaS5XfH-$A*>p8NOM3V-cE*VwRw6Uh1=x@DbTsz&krNTu~>{@5P@G2?M7rQYi5;?&@ zelIeHS&F~Xe{p>^PQ+SV3v#nLC$9MWgCAQ9Ew5UaTZ`lnb#?H$!VApHL^O-vI-<=q z8kxaGAJ=Y6^=SL?Bm~yDRiV!uJ$ z4Q}RfgD;gsRmw?JyY(O~t5Q9~n-c})M;3=E{;_iGH?Y5;a1~AvuW+`mU*=6Xlzbf_ zvch;wDLMoZ$x>EHDJhg^RwhcShjta(4WAX1$qNUb}4l1@lVE2SpdCfj)UV{8xYcRaP-shY9J1NZ_#IF zBIX;nl3tenq5J9dxYID0#58RbG+w|{o-FMOEii#k<|Rax(9S z_I53bjz##JVTV6T`Meh~>;?@STf3DdCD-`wiY6DTx5k@{pO-L0v}!l~atRE!cTBv-VqA2c)go3FGM>h>Bb-X z*K#-M>aiqFhu;;R>?$J63f{xr-s(>y|NBvQRkz?muSxglV_n+FpYT#?PTVf2msrj< z1~I-_)!+*?rcKrupb+n%4oVPr^^gNPnA8VnsIGxA7O0=dP>liSh@|TSYRp=qIa=vk zFY)|@7^tJJ8o$VtV*?8~zy1PC1;##uX5L$bj5^vAMck(UL9U;7Yk1Bq0n=8QeZ%T3 zOjK%itxk$d>vHREnfN>9Q5{(xzful4WF%>f*sMXfpmyZF6}~d&ha^(Z)+GpzuIHQfs2AZ)Nx%)*_>=nwY z1kBcO0VjUOl=R5gjLKs|JaEsz>m~&j*4w^iDMD^4K+geZQ^^m^LSetN^9psGSU*gc zqeaGPy{7(3dCDFLq7Awl8_oh+d7iDIFC2OJaCcsO zkGTmmJYf}4@4jFkw~0c?Sb_rStFpP#-*rEA%c=}v%a2g-{|5XBYqe;m^rRAF2nt`3UG!gF9=y-WDD+xrFB;E15v5sO;; z2Ja^qN>(Y&g(E_Y{ycEXnTTdHe|o_&42vbnrd|H!O$8i`Fwn+9wd}>N%QfZ-r5soL z!!Jmem9lc1&2NEyRo`@&aZrsdJ|3{Q2mE0zQ*Xpb6grMrLHw>MzqjQ%Qbwy7dIErb z{CjgWXi7#=7n0SGR$8#uh6L!q21?niNUv6lWh2kTs~>pYxdj}H6{g{ja_@rn5e= zWB_j%NnlHqhbpmsB(0cutnfSx-O2jhRu~zp^u*Tbe}=&q;hEh%OwA!zwoj9QAF>rx zZ4TYh^jJ5Y3_p4zpZ!Ewt^GN6d)FX=Q<(4tq)4oW^X6i85cUn{syJo7J%YwBjO_m3 zTt1@)9%turxIHZN%Kj2`$=;GNzTUt7dmWEqxa{>|E;RS&QRK9kjQ2XT<|jDzT=?>@ z>}&r{UB>G%GpUNjccHxIS)C1WrjYOgU{5+vSI0pT!Ut>ozirk=( zp6Fp*wOf_HWIEqAMpiX@j6~TCB3gB<6S_fg~P(R^WH z6qVc#TmkG7bd?k)0UDRxh7Lq~(N>h{e3N}AqhZu)AapkWS10P}9OuBq+AX%`NOuk!uTrl~R$dITdO963kN(12g z32FdAl!OGoH`+;vWbjB-3Ch~KpRr*K-1{7_^<%;D{!{&vSGDo(6FPn$qzN`9fO4-H z5Z^H5(t9FIqKmWiLW*h_^eT>op(yyzzpZ~OZXlD-;KRZD0$szU3&>Sp8ja~T@rMkx z97OfZ^lgM|3=unO#MikZZie#dZf@)d%I$by5-Ht(OUw3h*BFDT&oEJWlDhwf5&=oz z2pJ{whxX}3v){>b*`D%|fzv28j?KO>dHuhZz8ge32)I|dyfhtYEQopMrvA9fj<#83gbD^RmF zw^*h6abTqkIoSF(c3MSylu_&b%lMVWVZ;0MA5R=k%P)8Cy#_#cfB&(_z#C*%=TJ%aFgdDI@#ugfas0nC5 zhKykjg64>Wl9OQKCL++61{kkWh_APdC!1lRE+b(Nnynptsxul+xoN!A()CsJpW`jm zPdTuBHWYcP^rjZEcZEB|HPBNn?V!yVn!qKz{{D$takJlex;g3VZyM2lMtdOWCK65% z8`!l(yz)}PpaZxTU^G$MtchO3q6)Cc`R7W?=zxm~yg6^m8YPx^m`c<^n~7SAowS1qL})mJ_onokZpNpWnRO0zR=J;f2Hnkuhsgm zPCyXPL6yo_L)?zuKY zulPshNKu>X4nEc&CMpB(C*lqmt2AJx_U!#Td~x%DgOi3qOfT%xDl0+nvKxvLXZevEzKSS1jkG($lsdqppMM=hK^OU^g6L}U}-Q+@LX_{wJFJDn7;p}Jd= zps+x5h5@GCEuQ|vC-(d+!6$qeOy|D;-Xjg+`}5ohe==y?ynR6UK6&{Xws$)BM41T6 zZTuZQl+3^UIS9ff_vd7w0Za9ES{v2rM&UMN1=Kp7ZI@XabMSKQaS&ne8MN?g5p^yw zOZEovs7x&0kUd~dSBD-GdMM8gxkwByW~Pp`_Emc2Ap}|Ah||5WtiESUlHTc-0-21y zJ{XAvr#nBj-`0&e9}QBtzuGPj`TWdMTHj<86b;sWiE2rZ>m?(PM1Xn4lnTM~>O7f^ zVJp{K`Qi)$^0OpY`1G!`5^kUcW_nZvw304WRsj{k{x-B4tDUr3%5w5MHGcpOd>s(5mW+u|w^TXfSn-T$@s~ z_Hdi5SnheKt0{$7`XJ3Z<9wsM-*q(SNk4512(3;O`xd_CDf00(M)YP}QYBqS;-kMpedm0%SSJ|HJ z|1e)t@R~abW@2zihK!caNe@qZIngX5J@Rk#d0y^Mn*h@Z@A zdmbogq>YbN*->5crcg1xZ4o!Cq5;-3+mKAsSO!|#^l0uVk1^EoUZ6WO!?IFSoAeaJ z;LGpPnC!bcp`xojB_5@?lPac9pn2V#?Jsip*@Ozx84t)$&$j@epBQ3Xo~v)O*FuVa z!XoYF;j0A@0W2)oP1tAluMTVZApZ7pfwYBSU_D&j0qx`5-7ZVqxGZj63>$`>k*%4f zA%a2dB&Cz~&P@JRtDYwNl@jQ4(pLAvzAc50nec{C`xN$eoIc+!-?M>k`FkuxmVw@k zDG5YaD$Ot{+&1r=APm1mojd2ptXn*4<9pC#!mgkt1>o*lr5?Vng za4o{{VuB6nQPaZR?q+2*@GfFZ7yCXiK&xI9udkKqlxBN$M)yz^N~x|}5$E03n}|AR z1YRy`1e1646D{mzMl{F%M4|@*^xvf;{1@`o2v@me^e{rTb~8!YQ)P!s(P>^T+PF^y zv&Ntnb9!Y?9fw`}^%+tpeFTl1)y3)kTiKCaR7R;9c}E%9Gk5Yph^`|DjBtAN*sjty zfG#Fa@J3jA8Iw2Vb3Cwc|4VP}{1@s`tnl1k#ZdyZjMIf9gsg06&uhTsf;iy*C(div zGdN)pslE6|W*{fv6T}h3Ke?J5O4dtVKx!98nVn3h20Mh~zwzMpDXaWrCDYSFiuE-D z^sGXoLSf)(la71f78~{W{%6+EO>F!t>YM$Y4*uD#4j?jhm7C^`{`$+86cOxONd(}! zPsTiEvUaA*5yQ~R=1{!^)!lH4Ve3*ea@6rgPE>Ek-@=GR==lsO#vgk*B^1=5L+Y_s z>?q~wj32B3Sit=&hH^V1Hn)Il#ZAGBFR+SPPjYW%Jnr(M;AltUg`adFX&#T$^lKCg8=1bk zsKMsD{>nXK!u51z)x#_IEvv2qKON?nc?-x=`ykpQs@ zw-ibs23?ilBL$M>n|71YT1{Ppek(1CJlP|IKarHEt!Z(R6sK}-$yHx9o9D!g=k{9# zHcCA%I_tH*`c1BJA2_$vkmGco_u3n>wSZOO98cDqTs?e?+T-N| zD%k~#vU~aXI9H4!g@*gS6O(MwhdxCP{gmnJ!8f~my{m>Wz=9wjcjI4GeAKpJ7p8bv zj8R`(M72dBrc5F^_zB-*UhW!s+-iOXLa_e+ANw&5JxcGpZ0kA-p*q%xXg_@Ek8U+MX46dv0TkMUCS9+#&(Mad#j2dr;qu-+TrP}2Mx z5;io+6penlVEc)#CY|dKrt*P{&`*n*bU&+Fw*2*v7mp3!90RS*N{%v zKAPV|m+Px#45pK0o@??=mp;tfUO2=P+3ieC;rb-PT=U)A8a}&(T zIwx2Oc3E4i@5J5BHTy;fllj;ZmwlzFlli={45zWJE=zRE0jct$k-Qlp6fv%v72 zEQk}EZxED@Ok&h1ogT#Fhl*GSXwrO5KK1%fsW4Qfezl%F2jhUlFJPTi%M@&4hBrCM(UawGg z&ph6SX!L2KOav^m`Hej$&?r2TXM~f0Ql4-=|JZ0*JkHP|Mj`g_ZA+gvv4?kA zK}^vOHOH=$S|o_{$F_g|o(e13l>xVFT*B!2>IXoyxorVYoFPE15K%ex0$56-3+pEd zD}cDWzA9PAVZvxu+U6k<;HV$B&NR!`K5RLn+9*V5Rp%La+e3BI#g0Z{RqAhB5+WrH z%)^}Udyz#`6wx<}K1YKs1C29UzSFpAKW&g2pvj!!nGp(NVX-FuH^g%(B?eaUz8Nhf z?xCEc$o*A6b|k@&bd7X!QWo_grbT5;2K^N<1+z+^Wlx)& zmMs~$FQoMMKoK~>T1WS^q?c zZ0;q44fOdv#a4#o5sJC5K2r2$9t}aMV6R;zVfzDrh8h36F+O#>3)Z}5^A}p;YuB~F z)(E9i6izvyMfG`Pe`}|7{HfdH2O&FHfPnEI?3lG}6&@mv^eFCZ%W05#jpn^qSPqk{ zbho-BUq>6TP0vcwmM|E0(oDgqL@H8lNOr;a_fuPi?o2e)%xMcEu{ULvCY&y$Hm+h0 zuy9FRPuRxC1zEJ*<*d52w<=NT02lw}e97Mtm-b#`9;~~QH!BOBC$SI$%L$Z2XLxoj zimv<^!<&r!2?T$r)jdmdPH6x}%ljKf&szvLCL8qQ2!6;xSOB;oQ@JB*-dZc?3rX(C zN#Bn5xCp(7Eh8`ECfH9PGzFTD+9s3Gft3re=@89%zE34y8m7k|;w3ZDFnEW#8V2u^ zAz-}q4u>Guy<0JmDdc4WG7gaUHOXVs;gwg!ECZ8#z*e{c$z}fIn37h6)?pW zBhSXp>ctMHvcrONxWYIP!XsYk_PcQham_U;eeL1-5`M;?CT6X!DWHXM_9`<(9`fBW^NQrKech3c%q5bAv(j@LAH zSha#E+4wcGT1ntm;epG|GvY~wobqXMiJ(^~lgcTYj98z!k)n&9Le-Jrs)+SzeZ9Ro zi3}=qi+(imqfZBWIz8p8;?NUj#VO`j)`*T_x4 z6fA92R?ezw7aLnE6#GU=F+?-I_~JUKMU0Ll0RKM#z$AFH@n>vHjVx&3auwM9#z*7l z^`J4@I=O8N#ING4EHSLx#hqz! zR8f)@h}WiXeO05(CGri3-A4dPjyH5Vxs@n}0>sL5mgXreIl}SSKw*r`ECc(4) zfjX=lQ8{_kGJA?-NKet?r~9!%K!&<;Hl=$imsRuvA*hJ5tw>9N%Zz>LHy2A_QJ@4k z+%Cq-?;$Zkor0-7KR}YXn~Ki=Xv@7b4D}YR0sZznbp};I?0`11a0Y)mJ81A>>kj&2 zwd1brwnW{X1K#H)+%8dC1Bozsu0pg5Q|`jq1Ya`>VDAWi$a_VP9W_CWGKylo1J`JP z;#f;=LKn0E%T1k3+_UR$)F3U@gim?qhM9`uFjS*XUH7m=U^ zICnI|#np~eJS%8U(#*ZI`AIZWMTV)qziyVz9P@J%Mr{h5fou9g6S|!SN7)^CGRCO& zmo$T3pObwEZ5FE?XkkyZH}gh~X}$zI&3uk@G7Abo=2)pLf+}`Fhh^V(=~9zTQrh16 zQ%sVLS*WyJ^faWtD~fVL$@ZO^vw_6u78ghHu?aMOl^ucKy4EnCLl0^r&7c!l*ICYV zESke)OE_EiX224`lBVoC-hiX~DD4F+yJAH_TV*r!UH4?1mclc`Mml3YnP=FH&ceg; zAMLr7t$bG_th;wQo?;Yj7@J?!07{ynppdMi9jz9=oa=6OWE;AN*s(XUUdLIKDBUE&FEsPM$sxM z;HpNNFH6u~{3Lf(>Ow7P_7=(ZWC=tNC?t2B(5@8gzk~$1Z89#l-G#mD-*+Dr*_n~v z&O8qGx%ht(5X0>2vPBX#FLb#nqzsFZWd11X+*W1)H^E5k%+vDo?q|;%q~&)2+$WeP zs#w0`MmoEiAH12uZ&~h?wU@q!Mro%nE)OL){PKbcqS%asjk-yi4wEJ#hFXf1a&p92 zDB2?SsNJGy_p{r7U&ylI;0o_I`C8?8YW^3r|7un>UYH~G`}T9-Em`RR8 zKy{-sX>IC|ofV~u=1LFLd%n^Aqe~ioqFBJ*`U4|9Q$#(YJ~)REeX1gV_?4hHX;^Q+fHi8O()YIyRtJb4I%2$^Vf-#9~XJNY7l1( zpx_?v#B8Ekg&54@`dzg!_kpqO!4)?jj$LGPY{2etj;OH;An>gf$`G1=aO2p1Y1@SRnY9FzMUwFuO=g+ormTFOg7jS&JaAA!VU-6TZX^_1!_-JSl?h2f!Q868 zXMdS|!sN0Gu_wYpA)yIwPbOBrO;OdJCFsbPt&V9}c7&^WoQWFRY=1eY!OxM-732>7 z;3iu^V((x>rb|BppdujiZ0lc>FA#vda4p&;32g{i*{Pq()d||_7=#4N%=U7S1qzT3 z_>3N0kWi_I31*ZNSTl`3+wDf-=$flQwWaBs)?>GEx)o0-XkjMP*9H;<%?c60YLml{uNJIugw;1y6lI{EkBpRa8?EYu1||%^|;G2wsV$e{SsD_JTs6I{I|(Nxm$8$N)|4 zh*>Gz4=uO;a?DjB4W`t!vTqS-(+zFcqSW)f@s|%WiyqMfv1GqcH@pge%qP7r$Uee#^p=#ZV{6w zD_o*2N%=lSxjfWyNgiXS>Y)lGnUF=kL)ZMgGtD6CGe+rNdBmqF(fMRo6DIlq&mp`2 zkse+#lBO!z9C{++ynI10S=Vns5hwZ1Fbx8U-2|x>W`G5_6kT4eWSK}d-6}1An`Z|K zFkppaROB9ubqJtA1ihEQG^Nf~KsYz!ZKl@KfZI+p_sx@=ybAM7q7UfQTCx<)6ny0V^H%7;Mjb(C~-PpZiPd^eVcyDrTE$oquvLeJTysW zQ!D1HvzXrdB8AsAdzee;m;7p^FyG_1UXUwNl;QWy)~bxc7r4i7evnqiV;tj&TRrA> zc(f0fKWr_RlNY0b9iUcyt$?0OX<3l?xNTm0D7N>Yp3o>HGm9^!p{lgJm#A)NNz-W% zp9w(Y>%fOJZc3?~sQzfLDVBR&%q2hHONc1a44TN;95SN{4Wx_2UGuco@8wvgaj(ml zGeb<;D(lR~GJPQV!on|R;Q?u*dWmO}(Dvw4FOi-Mgv<flXHhE1sr7~( zx8WO7aa@p2Wh&KAY^bKML_e7nZA6j8h4c@UzoZ%68K;+WA7!f4np(_{NClKTT)Jvc z=Ao}HhVa+qWX>kXNSsim1h$#-A66XYaTGa(HQwM2gKpO86kU2YOMr+HulBI0G)<46 zcdt3eCH~6{h7g;enj*TV7hCICHTZFgNy+RkT<>I_#p8f{xl9!tmO>qM6tyj0Y*dGg zQ(Ot`b4e3_QbV9+4s@~LUcrF6E_-7C6DaD_PMOCQohP>XDlr?bmb+_pa7sz1xp<#F?+{Jc ze1fQmTwcp^=CNlwtD6-`#r(%cC-n0|ASAr^>$gozJ}&`?Lj5uY5_@gXI&N)w09=`a z^vl1f1T>Vh{q<`OZ$+3lr^|JkqX^_`Jw$66M@kB*eA^bioutn6|Ls5>dT= zk$G-!VPeXhDmX2^Lt8Ayhwa8&U#F!Mkr-Cd2~o6nUDjSy_PT$rMdGj(<$v6hq1AWT zd^~~s#C1pr->IW{uP^$BWby$|f5Wk)y?b|sWFO1PWIIhWRpxS*hH0`bx!P%hym^HV zJ0OoCGpC({TVpZEZX`7obR9B6!DMBX!n0Y&{YqkfBiNm;EG(e6xdp!Td@)zu_(c_W z4X>9_{7UTkEdP>;+AI*xU1M+J^!QWEwbesG+VdBqrz3c5n6{ruXB%9ep`+G^t20j> zEGcokLJ}fH)e^eWv!c}aItA_xj!E*a-GO-gpqb!KX4JiolCgIdKa1T9X385Db&>5B z?mYYk%Ntst3#%#>?hu*~&^RaWZ2W6Hk=*WP<#WtbnCW=NJqk*K9x;YXab-II>hy4e zLd%I2{M7&exVLQH39_OUXFA$0V1ZyCNEpNRcFiaf*v-2lxEJa9*d0E5mzL>@3=nL! zD0sld9gKMJGT}F|m8M356S_BQEFf&qo4 zT^fN~E;dH|gx{q#?<#HutmNZ2~Y!JN7YK`UX0t^B2cDe$+i zo~WxIBO_NA?p~=}9pS~_YNVkMhfOC_0&MFZt$D%FN~dqB8Rt?=zS5!8q{+or8IKoP zPEa`zp$ucp`;{%_2zZP?X&bA-w3!Kzsb zhoO)*w&%X2%vut}-dEfh48OyEf;q!Nheh$|oiqN7e%XNK1ukP7|NU`HJ`t4_0NbmF zK8*2ry0E)cK<~()z&s}icsn`(@{BgOZPbotl&(ZmUn%-JqRS()wj|PKk`_}Pb5X)50=Bk@FWiKbe2%2bVb|cj_y7P_FVCb zZd(o<+zqB8%TyYxhTq{8=KmJ3ooxQ!OyqUoZnCHJ4am>-fA)8lLjYPsU}#N3Wvkgy zbqZKbZ2IXOas!O&hBL=Yu48jrgyO{6NO8IH`6|WLBV0Kv7-i^N0E2jt=UvK3) zqf14?{1|b+xAm|BFJy}hZ24Me5_}8O?Xk#AKlc*el{G{8dZnp2)Ngc=K)Ku^_TyjA zwq2)jqL}KxwX56IpbIp3{EvkDf>%3)6qQ1__MIOwUnV?ay&(#RlZ|@Q^~6;S@psp9 zlc%vJlr6qaa4c^SFo+3#qIDEp=-!77g7>AtE{-N}T?l0iEL~fB(Nz)IHDc#S1A(*< ztU*INk=^WB73-8gRI*{jxm{8^F>2?J#>{sJ8={m4_hG|7ZG6aiNii^zPt!RihJlTa z8o0Gf$P@I@8zPCRGSW{+=ULW$bPXLli^8Lw99WhnI3^-i&4Z=DM0LH`(YKDva@V>Ptb;dGO*%`^od&MVK@xE2o?p-k+s;|9_nkaO zcm?n!`kab|CU-kpC0^wWD7Ee%}egH-Xgi%jZzV30rz#K zX#TJ`GIN#DfWi8tS|+NGa1ZO8#)NlcylvD zGQ)1sMy&j_k1|rqO7f#({Qok#65G!tO*{%FJn}*RDkp|q-rG?L%f#6c#I$`Sg0Yvi zTVBWd1(#M_8tP2db#8dLGyMwI#NBE1Mn3)bwws)_^ZC?qHUAV$T#$vQN^AO9L0s`{ ziSZfvn5%+;$UIb{Od8m+&u~&rfSU#Au1$f(ceP(W@YAEpq=?z5^2>RV)qP-F0#p4D zb^pdpLyJNRzbOnwC^|M2D;#BYoZVDi!d+;yQAuzS{MN&+lC|eu9~#8D)m*#f8CQ1> z`JNgQTvvM1^eGlLjB$i(9~a?>8EKDmrio9Z@<{O25AM)B4No+FEAYlbig~xsFOaqi zEOPnLq;USZb7fE!3FJ`qZ7R&9)QB-`3l<-looWDF*XkAq*j|ZCEfYq@edki&m{G^2 z3;(MpU)2)>4wTqa`7o%YCE;AQ&0Y~|UuxDaj|oz~dj9!GeH zWg)j`SOUj(hii1>_MMb2+G9@Vom~jR8SiuoNI-Ou^!e>jzK_kX(ND-rN36n4v2~ z`bi|6HlrDVA#$lohcH{(Q?e&~vI<}N~-C9$$70^x(=p*sM1fn z(;g$-z^v zb4uRvGTe#5h7w2-V-q&gN%?4roaIzoqxkwgiy54=o)Tdl42%nft?O;Z@C5)!R{bp{ zDBTd>8GI&0%DOM7I<+}G@=;rH1R&mhtdzF! zT%w&N+$Ph2AH8W~&*fuc??bV< zl{CNS9I2#i&^Q5!Bw$)X{v)9i_=Q8gZ0$L0Xu?FZxh(yr?7O3YDMjzFNzEU?k7oaJ zQ0E^A9V)og=I~xjdvhP$=g}PrU$~sAT@fBbeAYl+iqx9O)J~EJheyr?7L%iu;w_d% z9wIX`Sh8_(Klq-%zcJMv%4WgEV7=B11kEij8?Kgc;SGDgUN721i>sz{$|9qFv26lYrg+zD52Rr?@9Asmw3IT}ZD z%rJG^ETy*)aq=KgG$MD2lyhi$v=n|B>KopW0jn&Q$6FY;?-jHGs^!1AaLd-Ma-tD# zh48$sBf?>YB;JlpH=gL^y(2e`+2j3U4c-k_Rf zMDkvxd-3yM(1LR|#S6r{`QR=)AN?-xL0fb~$NqawWTra9Sfw3m4B&@Do2%m^-jECA zNEO35JGmKfiIjbExFun- zbG@sM>{`UfAelle7Y*rhu)3bEIeJk1HBe@yu(orQ2L%lF^sQb{lJ7(_@t!w}+qI27 z9b!|5Rk9kmxHI;Z#n!h5_=M3Y$|7Ui%mm8YUOtpyP&a$&s}iI}w>)QhM+sA%JOe%M zea7V(REH*;Al&}u2D?C4{QGr_e(ZX@3M1*{F4@+2qP+az=Uic;mT4b27B8(-LZ+Hj z^QSWFkpj>?7(v%a_a_T>hfYuX@K}N?JGn^Uvc179Ky!0Ap0Ss=~(GB>w{0Z`@US2+}t84L0JEl;acdrkj;l%d1Z zp&3h%l!o~uVS15Vq|F8qaVY9?9-cL^W1iAzrnIYYe^lPa_93cC+{+#_?d#W2KJrCs zSK7hQg%D;2fd~mK*q3g>-`0XAKUZ$_S=p1wukX&5zz|YU?a9go35^4b;7ib>X zSz(-K_)+K3yN%%hqJUo(CESY*d&tm!rNvPn?G1V@A^(#Q@>`$00)&>O~28VAG{1J6|r+ z6}q>2!=eP|zW9nevXT@B)LE*3C>_UaF9$ZzTz)ZF;Zn`VDO@^@;L|$7HKw6$mk$&w zX55IdLDbM+M*drhf#=R=X`2(jY`$5!oeiV|hbYSOpOxZzo=yK{90+#r^@Y-Mb0)?o%~1`(ttSKt z<8<4gP^AaIEEfTvI0qbE`eT0Jbv{r!KDyE5clc;=felGesGnUNBei2riK%Nd>t2HY zP~%jBneGlL)FWRsx2D@Xu72jk9|B2_`6R;3msZY4Q6sn>k_`|80x=uMHGvjK_@5&k zBESW-njJ)U%;q)y#s2z|J_Wm-sGcPjCt6O}o_BojMM9w8k)Qhi3cUbB1N|fqEo5?u zX|N08=r15*WN^c`#uXvT(5Ph&&20ldr817E6#Y| zYl8>}HF`~ECw8_XtkOyvw|fFpiUXX%)!Isy`vjH5c~w&wm}_aVl7`SOTQK(`KCQMu z!J5>c?!BCfO)rBL1aiq5hPaJ0WE^1LfYb4&#(ebs{+Gd>D#t8r(}7lT$gIm67|RQa z59@I7S@jD53-a1BmC03jpiYkn+7YH;?q_T-m;4=63)$+`32rhtgpyosWn^l{BpJvN z<}SG98hKZ0KqVAJq2eT|nZDsOQDZ8DKV=f( z_2q?n+Ix&yZEOo-l$*ptV{s4Y;5ih?W6?)BzCPYM)AQgxlc6}bGl+vUUm1R|ywm;` zSbv4d^l<7jiT(v$Y;kWAH@qjj4cw6|u718j+A(2<5zMQDQD(?uht8q#u}UJoA5>oa zzrK|b_!%4M%0PA9p?8&Cd0Y8WUq|XD)f+m@ z|Jc8hxU!q`FI!u>FO{qcF|iU$s|P{^7nbTWa?i}rjoyp7cdIx-_igChGG3Uzy_15A zj*%NsrceeE7pEzbRCaU8JH?U)PIg_?K$~2XT&8%cMeWNL$M2su5F|9g(!!7Oc5e_K zJb$-t$5znu07iQU8(RHnQD(S5+$^ohw9d0VUl)}20TTqbb@=S*`GDLy9CXw%B&7_6L+Cw*=lLw<(+0@PIot}WOHGBnu0n*i#GV@$AKIzQMY>I960D55@2l1NkkjX zm>LPl^JLcmSJX{Nt{{UyXoP@k+)6bg%|_S>KzLilcOV|FXbmOWKNkv+9F>PAV@`&S zcD+?r4De#z25z^nxD|6V7=rM5uANDKg%d`#*&y{4@3``XpyD>z8t_waEgxP~QKA}LQW|ETpKGua`sY(+g8)tPq;b`tsiF0sp z1xS*%a{n-wr1p9!*}W_Ghz{)tT?+RD{rhl#LAg{l;BqXz0^w=GUP(-?o)0tfk+)qf zwt7RDuWZ@!tj;H>XAz^{^7T{Imoh#&k$evOpUmRwHyO=XEa}M|#NieVXch>3UVi;j z6%1(TTZadvwEd71ovVvw+TqrZLv$ucjNoYxI>z_Uo76}sNkeCpN~dwLLVOjY;Rs9r zf09Gl5i73q)jFyG74r%Lg9C5y*A9B!L{_)X6_$Xc@*eLEkoWQ*suLkGe39x0NbiQH zZ5_A?HDkd&NooewP7A240yt@+7;bKG&&uZe0Xul#DjQn+G;(=3dHh|MI&E~RYjx7z zZ!x=jYSk0c5*2s43bs?@md*0Qhqd^)_N(})j=sKkq!C-3fMld#sP2)vpqH|AZdqu<1jJwr4j`MnZG*No+9rb zSWgFlKbD4f&{=j?T^3H&t?;U?7KVmp{~552GhyXSBG$kPK6q7rvzf!V)EbRQVCLY; zFXRj~5^zt8KE2|}Cas=|@0eLymRPf

TLoYjDS*BlOpiCGL#~09_y`JWkL92u2?= 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 |^v7f}Vsm!H9IMl)5RG}<6 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260505/20260505052002-Config.rsc b/MikroMaster/20260505/20260505052002-Config.rsc new file mode 100644 index 0000000..f091d8a --- /dev/null +++ b/MikroMaster/20260505/20260505052002-Config.rsc @@ -0,0 +1,4506 @@ +# 2026-05-05 05:20:04 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n } else={\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [ /system identity get name ];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix \"\";\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\r\ + \n \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" Failed downloading from '\" . \$Url . \"\ + ' - \" . \$Err);\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n# :log error (\$RunName . \" The file downloaded from '\" . \$Url . \ + \"' did not show up.\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n# \r\ + \n# :local FileSize [ /file/get \$FileName size ];\r\ + \n# :local Return \"\";\r\ + \n# :local VarSize 0;\r\ + \n# :while (\$VarSize != \$FileSize) do={\r\ + \n# :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\r\ + \n#}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={: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={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" . \ + \$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), 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 \ + 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(18dBm), 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 wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=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-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 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=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=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.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" 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" 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=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC 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=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="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 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-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=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm 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" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat 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 +/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 user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=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 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system routerboard settings +# Warning: cpu not running at default frequency +set cpu-frequency=700MHz +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260505/20260505052002-Diff-Config.rsc b/MikroMaster/history/20260505/20260505052002-Diff-Config.rsc new file mode 100644 index 0000000..e614ae3 --- /dev/null +++ b/MikroMaster/history/20260505/20260505052002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4167d4166 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4168a4168 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4172d4171 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4173a4173 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4415,4417c4415 +< 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 +--- +> set graphs-plain=no rest-plain=no webfig-plain=no -- 2.52.0