From 5cc78847eaaa59fa013f2c2fd335a58abe74d299 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 23:40:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 23:40:42. --- .../20260509/20260509234001-Binary.backup | Bin 0 -> 300002 bytes .../20260509/20260509234001-Config.rsc | 4643 +++++++++++++++++ .../20260509/20260509234001-Diff-Config.rsc | 12 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509234001-Binary.backup create mode 100644 MikroMaster/20260509/20260509234001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509234001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509234001-Binary.backup b/MikroMaster/20260509/20260509234001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9656188bc7470d1ff1b43d60d4cb24fe63af7b97 GIT binary patch literal 300002 zcmV+aKLEh*sF8ExlLP>F;?4#WdIjh-4*t?Qz@Jb6000O80004Z`T(2&Lur`zBG$HA z&m^ZbuYuZk_%N$UaZm^-u&la_IXQbiqXIjngm+6)ne+v-nnQblWttXL6WL~^r+ zaW+)Lz4mkaCKq39ktMq+)Um$PR@{G;SjifO)TUb1j#p#u!4d1xI~g7xVjV?0btl&P zu|aMeHQDu(oFQi#p%ct&j0|&>s}$_nl*x+@a!`^@p4Y1%BzN*O!Ru&chi>#*M>C-3 zN(-bP-sRe?C+Hhfj>!9WPm1BmnW{6?I6~OaB)<+~6Hxrw%$%5~IsNVV&?O>MRkZ1h zWiCCsDUQ#oSnjHfCGJa=DxkYJ_#cunNgA4%o0-pUaFO%wmF(N8O53v?#|*A%!L$_-j6W)8MSS%rU$BktRZYJj$p-sxw2&5V+|{7PG$Q_qx{ zk~M_p*TxDq9!h{#!CkpBPIg*(hYIK`4HaVrxCYSwgg4W=WRwWJ;VZyGMK>w~(1I&> z!};AhPW%Up(yd~GR%`qZ-TkynYX!rtg?y>Z|88qDq8Ab1j2w_2Ogi_8YvpMnGes@* z3QHb~)Udy3PlS)9qHji((*J|^zof<4jdH&vmD+WFQ{zGwVZRh0kW5jb`36gNPRs$g z+aMFohwP{~Gbrs%h_Hjs^8#$#_IhCK1iIa2(3NUSVQ=m0IjQyTgp&0M@l{jG8)l?* zvP}Q}f8QQn1)H^?jxK5G|Jv36BQv8i3$?pZMze$SSSP)=$vPvizLqH3mr9n6rRe@I zOfkFH@;B3xVdQTAylhe6Wp$0H1J%3%%gzt$XFg>x>YB4|Q?;xBz~Xo4ZJ!hL_~VEQ zOQP$h)G)g?QW6)Bl6f6P2N+FzYpxt;UH{FP0N0&vbf8g;5gI><O*qy zn~KBZ^TrJ8nJYix^>Q3El+O`Dw(hy<`}Z9CqWkGK3Mx$Y^-8W#595}#$dvKECrMhW z*xLm9(W)JyZq+Nz>zc}|1i!1Iy94-G#xxKZQVZ6CXT>8Ij&6C_k4vb8~f-KJSMFn_Z z_yQ10dD_Yje4b3ukC!*ujqsDS5n}i15(r5l(%398_q_d8+}yaWy@V9YVacsdAsS=! z%RFzqc9P~16jca2G!3I+E3i|Zu4@yE)y^{qysSGek8|xRHP}W-HkvG9cOWzD(y!o* zu5bv|-=fc=@y@?thTYOyIeeGTBDuStMK0e4!YyWg<4N~k)M@k4wXN=!+__gZ z@4BtPD0p0;w^nunq~*)EUZ&e9vdO>p1%j>(fUk21etzk*dx{PY5Ih2jjsWE!su*+w zFFjYCD!^eYRk(+{qEhQ}4>C?Cm9K~;fR)Ap-OKJ#4ctg+ETp+Sd=-~(ynfQq-qmEZ z^i^fWj65PD>rW!ay$4w+4_&Q?1`4T~Z@@JrKm#^T_^Hu!l}OBaTL!?0@Oo699pf zsQD^$*=nZGcmF(B(yOCYFrx4?hw9>D=G}ZRYD`N_XKJu(Q^tV5FQ$IHhLe0V(2ZuS z^q2O&Foj3B-H@zXh>|PGJnuL8ChU$iyyB@hgDdi@f!lxj{#okH%OsO+=Ho5&9FO@h zg(vzsM~N^Zlw8?KY{dsRk~Qzd)esW9g!O1x2pfusLi;?S;UlJhA?mg!o`+KmsxNC& zzXqNg<<_*Zo!os=I~Bw`#vqOfc2yjhz{?lv*8KFkoay3e7(_mWW%?C0UuBH`0YYo( zEGw&Z-Y;so<`~(d+41`>*5U2fM#Cn2j)&nZjE1|9qVl#L+URwx*+m6LV*uW$iC?;t z5_#<)XA-I|cL=K~89yNCx^127^iPR}z!4Wo$VI%8)rp}3b`_#jziLF?YZ*z_4{32k zWb(&>Nio>$jr|vV5<7vO>Z<{unul+)O(Zm=&7NE9?OXEktR0VV;|hj$7`E*ux%EKK&^tTji&3I|%%Yr}Lk6n9e!W&jsh~xq!e{!)HzZLY#R1qYgTcX_ zS9o}GlvMBrZ@;fIhlZz>hHU~Oj{{9_z^x z)v6&gJ6P|}J3xsCk9y5-KV_xng>Nc92sTC?$Z3?rx{|an z8M5X(^5xiR+Sp+G4|NAsI4OX7jP)#+A^NBgiZoRje_318A-4E}js`Me;JIo34OVjb z1~3)f$#DJH7Dtcte;9<|nrhew(lWaB_A(AJO06UgrSX<$4H|RL7Q?Lj)~Q&C$UafG zGS;rs2{s)yhh@P~;M>4E;M40UTzOjXy zAYq3JZyQCQL^f`wCXJcibJs$ zZYm-XH}c2bdzSC3b0*Id8^pq{!VrZQA4u{HLjfJcN}^MJS?t_&?D#DfeZmX^zd<7y^I zfC;(`1kt_!;BCB|7jaUE%Z?rrl$k{#A1xy2T_=r5W4)>S%gK?h7vlYUt{RQ7_-ks&8we0%XZ2`t|OV<%si(@)Su zS=E-@)C;CCjQ#09GovH>M7GrmJdfO0!z7s5$ldt}q|rMk)vE)eMqAnwE^Rdyb5-(` z*jvCF(|Egk=$1GC2a*q#7uE6lGgJuo=gdOA@Q6{sn6t_uUba3YVs1RNX#lMF7%uDHGa%3BvSzRXt_jayWxiNaI zgg?#I-P3QNhDF#n7Ads7rmt-nXrmtKldE2J5xl~_hNMFEMH@?eIJ%z>Q$vfU@EvV^ z6Ow(0`yLpca=POxnzowdB_Gw25YGpz%$u{~wUq~svV@y~99o4MUaPC7X zJjEM=pTBA*M;1uS=L;{*rCw{|F6eRInarHDTGbgPCPa;K&Psb%viI5~;w0__N_T$5DZVVt*`zd1njk3!ra@r7Lw5^uL3Jpr09&EySW z6RgiTv3qzA^e0!MpIk@jxwi^U7)j)+>dA_2JU!abRu;eRQn#AHEO%4K|V8s1}w9Ytb~K zlQp;Bb6rvPnx0{GCJy|;mUHRF_8jNV#5Xzo8%Q?_{o{f_Mdzy*akZSmrz+;sIqQ4z znzpayRnXa64q10nUK={q1qVf=I-u9V#?z*Q^?Fd5PEIacFZ(61qf2oWd!w1AREX>F8qNlNBi*6YW9!ARMW!u`-M!ZcA#Ocxy!>yY8{xtO)biWP>2 zzwp8Eh-b1d#HIc@Qb2>+<1R#en-YHzIa-0Y-QT9C+iKEUw4LDW_F#H5X<}{Wdz8d- z+6{46k;pdR2hu?a)e03Oy*+v;`F&-CE90o3m25=J+#^fv+=7z2)#FK~1Z!ZP#dg5~ zyn^b!o>-Rydc3mK5V8FQP>SCW&rcp&aSJT3QN!zrNymR7t-#eyAIW*D9)Ce-_YBH= z&QjhhhrmZZ-)#QsDbcVSEoluOd=BAc2sgBx6yd;s=UJv+Ze(>QE*u=vfd|qBox!3- z`w~k!&v>^ZWrcW=LQfq=Tylel=3!i@V(C=Eb*_@!zxyY6Et#KcaG%-o45$gX; ze|ti8CUC~UeN32=?NgD4N0d0t)KMhpQE|$fw`?*S+l|N_Tvy1H)T26Qv`^6k)>9+2 z%p3QAYzD3Q*3VAX9vGdT!$xOpqD&Sib+n~zZ&;c5OQBv^yj2UYtP+iR+qTB8bGy)n zLoUK3)Zbw*B7-xxa& z$K2^O1Kco&&t!%>RWV728%lsGyw&uo+>EvBfX^W+^p?Vgi)kD~j)ClP z_gc#h80JAXF`29+SH{SroUan< z6cvvygF@n~j`S+tM4VSqJ20h1_o`G~HCVZUSm`?7oRs)#vh3`)8q=4Zd(yWV_=#=| zN0oQQtc>(}nQ48&7hD-drV$~42c-i`q$?ACp`UE&3jM*nsK8Ut{iW!&>0KiHbnAZ) zUykasHE7Ruu8S6$pld zgs*GWfm2dz9Grs{xyRW}P}7vVZP~mTfe8VR1c?!+Ua>pDg8g}CZLhnOqf7i&j$_+* zn>tK1sW@l2vAi?3tJzo_XvHpiTtSNU=<(TV?)Gv5WmTT6P9h~lyPX82io_{4umRXT zD~hi(7A=Ofp13VoA%xLSHAK@ev3ZX;!fwD%isT=Wxxpwlo4U*nQ3jL}liG|rja64b zJaK!v<{(Ir$mbTOSwxs3UJ<-aO^b29gQ3myUY%dCNAuaVdT+mBXSe;fpIk;VXWZSUQb@f)$`v!9c#iZ6h8LgTaV zZcr|RoQjc{1VtS}lk2G>=Z^>PK-tRedk)mYhgVbJy-;RJa+YEn329bR*zj2@toh;cuCB!ibtC;uOwO&VyN zyIL#KS}IRUsFrzGK&5^hsfx8W0-J-?HFj(|xH(OHEPICT^L^keAFN%VdfGsT!OIQN zHQb^h-4fdXfII|FyP+@rzHzd3?Nfm4v*P4f5Fk!vkD2@uIVeq0pS<}5nXm+dAM`F> zG?P8@JIdo&v?!3j%W+wiJre2vT!F-prVkAQWS7PZbA`LfKp}<_K0};sxOMrgg7!zS z=YM`>6%L@rc@pvUbKMcpDGGJg4yHnyt!XEzbqxBQxKc*Z&N z$S9&0K~Q~5S8Z5Bg}g@Ikl=lIzfs~P`}-EXmqV(*7NcK)4wB2_oNBFb`e6IbZ!!nSBoY+qAS>E#@&Wi5fA~D-M4I{31S#JY+tyu&j^+wF zRp#-2-B`sH-9nTa*7?g%fXj8){Gb&T{qFU(#M5s#x^zYGbIP>8IYQD42TduwS|)Nk z`MK}=zQk7w`Uy$)z%jqPqj`p~DS+$TcBLT%OYG=^F!Rgs1VufmADO`*w@hX7yn$3= z1Qz0CJI1=6_zsG!AFm)ZL2y7S^xX@NAiX^q8vP zh=@b4D+|~5d>$7CF_FoGf z#Fk>&GH?Tt$M`(nU7){+WCjpNl7dLJw#+>_BT`ATQmSeG}0;myhZ!a zEO$)KXTlI0Nvxx5agpp!iSie40ms>51>OIqqB@kF)Yg#Hup?gPhn-VHl4V6wQq>JN zo}@{+^gq9(zEmmZ#^6Pu6Cl8*`WGCsEko1?)keQ#hDHpXTBmR00;uWDf?o4^Q)Akq#9%;eje z{MGjLTUU@6l2gc+8p06^jUj9>gi-9^6&u9CDn6$XbEzT$p}s3yU7M7Q0;05c=+u;b zvKgUwCKYO)m*N0$#9+A^s|XaCmfRup%$vYs5$8IVa`W{r?nEDM6`i-KbLt=;&MCm` zm5!R3Ui5o|$aJaI*9o;vfE-Pyg{Xp!0>{=)15ICQ{5T8jfivSjQuIj|uk?>~OO8QH zT$O(a7scIy(TkImxpo%@8llb1N^npC%77e+2ADnzrMg^5=46UK(@#*R^&S}FN>I^N?tfmHe%oYuqZ zNd-%WyNL30?vCP2w+I>Xfh}!vC=dSH^}~7S5{Q0V*9U4*>Kxj&{HTx(Il5r-zA#;r z>EgHpn3&KtQb1N5j@4kEV?gU1^P^QbnlKeT2pRpi;d9rz8$Z)7MfH5&!Q3E@)KJRhRF3f}(7yb*@2etYcH zg{+QPmZ_D3ONi1*-kDeC92CC1skltG z{-C*>-Z}3?r!7g8UmnC7#eBUglT#M2qq*6>9WYlA2=VRzn+k2om{K5gfYCcj_DWLS ze3Eo64}J9>n792BV!k}ih8NaEB-NhvpUlV|k-V*xR!dO0nqN1&f%+;D%~Ry5R)12q z3!qpX6s0I>v?}8v3 z13}?oS=>tOYsD0Wwx^Y17BV`%3-Ts+{v?C{M2mwMP=n3 zwN(QmjWb~EJ>Sb8r_&pGppDF2qOD`?VC7`zM$du%^(Td7Rp=BJP8X8{Y7NFBj9iK# zTsAyzfCDU~o}So6=17pL=7RDX1+jrZ{}N6LcG#1VSpfAVTjP7wS@<^vyCPk=5W2ud z5L*5>#8hfMS}5n+e+|oC-phV(BMX?_Rh0OYK2n&8)a=PF5DDN)6V0b@28v>g`$G4b zB_y=^^0PRJ7p|prnN}74m?Wr{mmHErC>RLWY66nbTjFFr=&yS`T2f+;e~bp1qFe*K zHb$ZirS`c7jc@8cuwo+qevsw)OV?W&+6;+u4;v&ONLXI9$h@4)=Yi-QXaiz+=ts>g zSc=g#VkW#?SO~}eA@0d=yqqL{u=jiyl-dtP2X^%bS zTa(!5`ogqz9jHi8jIO~63|_7TV|ZR;?VY{iVM^K8=BY4zi--QU&$9b(HZW7s8W4Z~ zg{WDcpAVNPQ-9%~{l3Gge_Gw_F?y`3F^atqdstCIEo)aJbA9l4Hm)2iVeqBH!)FP0 zU5Io*QvSgz*Rr6q90fNF4=w9xl=mD+4N|pV((|7y%r+CMSd_n`CW@Pd3ohphz7jmj zW?P&0pdAUdZh+3VRC@{{8)ry#910psexrniDTzib+FXJhMn`J(K55i9Z&!(5ohB6& zLD0~fY1~0msP7D9wmRAZELY%v^oEOdk#jSB*+dIG9Z_m8%ufNc{q1e;8WA=^_ZwR( z|7(wbWv$7oyOy*vp}0(<^VeM#@G*+rn6o@Y%yE_!%j-iI;RCtjI|A{Z`2D&eDIRES zB)bwU+k?PlM$!pQ-EO7ZLakJqlQG!5UC72E_TYosJmGCSU~^hYvy+~aqZgx1%I4g& z5nbo7#WiLd)d<8WMI#hKF;fh_5(^Q&4!FZoors%HaT5J1yAK|PF()ZHE?D(D1yquE z3;=IETJEX5MWnh~Qt(FFJ+Ce-dI`1>nKVNa6)dsmbR^2tsk}7Ml5d+@d^*&Y8q%^M z&Y1HTn_!{wTnsmAA|?-W*^p9f4@NIQ~z%8O=ve
MT_^8Mok86@TimA{4+{~-)t;?o{ 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�Lub~JQpxV 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®7lqWJT{x#7?$WLE%~$VVEeJ{ zU!a8F^qPjCYh5~aMu4&5P+Ohuu6C`6Gi~Xc7EmJf=XPsXgB%9eK)g3RIG)y zbI@SXq5(*Ou+=!~^yL!^uo!Fj#UW#M$&33_n~ZNDwAR}5oq)3xUAulm{%TC3Xk2<` z39Y(>d+wu>(Ogq|vZZB+Hj4EFAsQi=Y4IT#wW@uVWM2K2@8Vl1G|wunudOs0|F!le z5Bn1gp2V_GvWhXek~}@b~IRq zNhfzth(gcUFt~U1+a;wj@#>WtCM*n(MHU#1E0JGv_*kJJXz_$n7>4Iz#mPf`=}C~& zAaOyHneGNS*%dQ1)hSPOWbR({ zABi40A=RQW_;p~VMHr&iJJ$F^AAc~mIllee1VXxa1#0sikShzGc|qY|fSJnKQp}Lk zn1=tgP;qHCe44CIMW_l!yhJZ!kaTl2ecO4i%L}uUECN(t6j>rMC6J;Y_&OJ-?5~yr zBtWZ-;#p1l$!P#`DI`E~$+otvMqUj$yRYn;iqgOO^T=iX%-fUjsuSGvw@8_9?+UP#1x%!;@c!01Jeru>?1)B{n@L_t;wBJiBEVyc~e9a?6UZbm44neK2t!&z4( zvfv`8*@~~{YnWi?Or>uR5EyS`&UXx~%f6`-Ro>GeEk*OXL3<0@8-SN=;*b8po@J^? zXnn~rGVDv=p3!>f1Gb_RP7Xb9u>A3*L*q{I(I65QOteSYaD*x9LV>Rb`e&+0yl?G6 zsb)Z;tqHJ`o}hcrdCxeD?%4pBJid|T?%X76@B4X+0@-l@U2NHmVl;}cv1IBjwcxQI z*UENQc zj3@3#0^r;U9bYi#G+Z`YD zyt@%rJ)rIZIZBf*En4eGkftc8)sVZaT)=+FuxEf`Ya9?@Vpprh5n2wL3M#6s+Fe<7 z^8~(poo*vqWCW-Pp?5NL&vH@+;eKJoCOcn|40o8lJS2HCT6CCb&PyjpmT6*){`VwZ z9cgKjZB&&oEM0O5cE7h5-aip4QvR}#ttNO+rzi?HO|m&kE4o?gI)iJhXJ7BB;CtOP zL8Yq!l3Xs@&Nf>!b{oosfHh9WeVTj1iWg8@xr*G0)@G)oI8nwmd~Fo*F0Purzs$GO zi0ud~EAuEa9j6|V%8_R!nse?`gdX&6A42`!-9!b@ z*x>Cc+-6rfT+wia!DmIg>s`SIA<~g2)YABRKMb+SK1;SX6Nu|Gg%k@82*nRCKkq$s zh>!Lk^7XTHYo})2fTJZ~!qT5WKvJ*095<8wXI!0V%u#aM_Ktdm6vUD=Th3kC7fEeE1Zw?Ey%}6d>za>45Vo;wG1X?f zyP|LYS~=XmQSx1HUZz2XL^UT?`zq^8@$`c7-O2qqoBnJ|H#LuI?}V5$5bGal5t+9q zB6Na!ez&95)#alGIB5AH5KezOLefK;K>RMs9@_t{+m%Aha@mx3me9ViVjkFJb;|lt z<$0N?UT>!D`tBdPH!ASC*i*0_qv}rUS-7bp%oPmO@w(oHKxaX92a0dIni~%iHsO@2 z4_sV3Qf>j-<5|msg5v4}?3Z_i&rrD0mzFS!JR6JXOS11ZZTkelOGY%;QQpdntp{6} z*ffa5vh}f4-jLX3)Cb35A{dh605k?i>Rwyo?U%_gv+HEDy=Y#X!DAB0!`|La;)A4y zQjPS~3`TM2paSq}?0AY?vw)?-D3A_*Ju#N%np0Kd$LHt@5kj6c2F?3pC~thtOKa{Y zTvLS^7B%D=DX(1Mr`t3#qa$)_8YE%RP|W1j>^qdX>CRby`?SF*7-~Nrm2%y|$Q{GO zE&Q2FBNOU))Ms{{fra$>UCrIPA<1W^BQ&w+{HTF<8A>rnRRL%_yq4G7GIhBQz(YA( z!$1QbRG;Ns11PC7hLp7XCQyC&%80^NN&$)hV(&6&&*8_lpV-gbwNQgN|55nK z;@~FyH!8OfoGU19V)~TOgX)~j!ni7~SFCy_EhHW&`t*Fw6fqET=>l<2sXq>pyl( z>(GsZ(9#(iNbrz|>i`0!N5e0S<5#n6S$dN^t?S%WMjSM#1`GjOY9O=5Zf_N>f3+l) zfMz$#5HfV80c>qsc})D%F|Kiv!?_P+NQx6fl|773V=yGC}l72Xv`-J1AY$m>CVL@QV)y72GUa$tO&6`Ai)0NEm}G z;fd&WXO&{soNMy;?!sc^slWQ5GpTy+Yc}ONsHTrV86sPcH?Mn*`0X|-d`3dQSosv? zfG?w&hJ=IpcU83lClrvzyqRK`h#k$G#J!*KH&oHGX^n+)x~lz$APEiIFm&^bkzfan zx}8E^l5GE-_)Y|}dlJGn1%z%;nS!GzJ#A!cY8x;x%f#Mi&y8@lh^pRKVNACl}F>L&$3WAv~AQBg4E5Ijv$pJYEZvQ`-5Ns z%a(ZoYFc%sG$V>6QEi%uxw~#?9eV5AgR9%$ab&?urQgwIypSToTEJ?o(hAj^C!So; z@{e6nz}TA0ewXwW-l1)-FLFo3{%H^U;PLnBB!D-?#%YI9%Nab>P=zbJQ5je!SIWMR zBXU|x@~@80(@3Td^yad6X#PMhhg<=N3y!okESWP4)6l3Ju!M*S?pnexMoX{sPWDWm zrAW>))5hf{#6Ih*D#p)x{ZvX1=evD>KOD$%QP9bl zGNFpFKcDGHR9fdZC)!%%;4uf!F-%Qs9-PNfmhZ#UEDfY0f0~t+8{a$P%pU=S8>Q{? zwII$HjEKB)Kh~RoyjGj=WmuG**2OQhXEhNcmZ%h8e;oLM)|c3I>$cInL#TfPaBOlk zNktG68(Q+~-VlVN^M|C@c@8#aq;h|e7gJql@a!Y()F5k6PMwTYT$Qj`e@kz2-&Kdm5Ga-U1(^iyL_e7n7U`X6&-dV~7d$$bOQ!~mUiU3; zyglMX8-uwQ>C}-eDwdFo7Ime+cF(JgQQ$$Vrc0;!A4F12)!AvXV5D>;cm?w={{`;` zmXdCtidAU!BVX32IQC+Cz-guc&u}QVnxF6SgNX#~zZ-2?hA`JTLXBRO?EbTXnig@r z>>_83{*qr-Z{D~>DT@|#OC*y)jG)0r01xo&C65}bNzB;=uk#{GFE-q zE^y3vQQLz7)c=$=4lusd4V}hbks`^nvYBlZ-?zxkX$921hvwaXZph6Ns%Nt+EKRfN zIiw-Gp>q`XCclwG6r6JXZ95-3?NE3;V8D9T#=>;ZY3wDuSJeFN#2>7ey0c0&_hk>) zDd;35LgG(kX`c?~ugH0h@qAOJgaq5k^5qKJN6|Q%MMaNDH=~Dt3!fak+(M)RCYCwT zt{uuh)S+FCPpz3-ciSJ7uC1BqkKN{%b~duTRA3tbUG269!`U~nm&|$3wBExvm9q+k zi+eTto&5@~4^JRP+)9!WMs3RuRdAqqeAQ->{uwuAfl86QpUHS_s5fobKV8z|?D;MW zzcCq>?hRnv!%BaUd|$SaR^Q(?HZ#eR)$U8oAN~zf97l7_S97eWW#T_|vB{{ryB@<| z{fADvRS%DMh{!lf|t@KlbNy zHr7%?3j^aC$R|LRiH2>ls+}t$4CPv*8)7RqoM$tLx z?$YZ~RW;(zhPUE*bH5xaGhx1gomBI}S4XGTX$ww7$8~K%kt8DeVu`w9m)47jcX#M~ zYA%%Vgg&p*`PsM6>Q3vp^?Y81alb?b_oIDb9m*YrOkkeeZ*cbZb zerA2t9AYZsc$X$8>735E?~<%g2{Rsr_sT3NkW&5wXtS}danZG^=| zQ-5Qt`Oi0R*Q0c3#B#wUM|}MnSIEAu5$Oq1{^fb4mQ9jnGS=$ev4EB{riu<3{UFa1 z3pCqtl0;Gr&4V$zA$f1a=-^S8VgV-9DmN!6F4zm>{A2V;p}-a9ck@@XOFR@-SOhgF zI2N~%G@6W@xzFX|c9H;sDAj3yOR1byc)O|Yg_E`% zIJ@BSTUD`81+gui3t})Gx-N}cYi@;m$xTRmj-iJ{KhsDNy_~(Nle$b}$63aj$0NWx#md&*z_R zY2?NQ9EO_woSY{_K)s*K*pqAnSmJE1Grtkf!cX|nH+K)u#fp-hJ@p%h0;hM63bBI( zj;MNelGcmTS9XEPbE@z;lLk=+ZUy>gYhnT5z{ZvpZvfPvv6Fdvkv zy>zQOtf+%sQRL%a_#JI!v@04rEfFKI7lD>*ASeGZB&0*>?k|GHPf#!fWI#6bJ zcvm>BnX178SmiGKiZe^=+j44h>&6;cDmFdGEUf1$cSl^I(FrG9lB>A!bKeD&BRYV? z3bbn2M~W}=w~c5Ou(ia@Jhl<+>S6 z2wtQ_8<)1Fu(C$K^F?=9b*s+&5li;2y(D>A)_hJW&0tFKcU{pxet2nCZX;}KS$-^6 zp{*^$V?Ge1%?KYe!4nT33I#1}ce!-=sxhqxUofgHx}2M+9{8iwh8LuB-im#)XJ~-VoRLW$9<0^rMX%pT3xdC?t_Ym8{KPd&ZVzFy@>^FA z5AW~&jz^?ooS`=zYNTUWdDlbElx`zk@b}~Zgs<5vLC9QfjPV?>yNn2tA&?u%Kj;19*T9SD#9ZP0<8EYx|E+AxVv%CWO29z%mTfjhNqY zu8|M@g9$cXFG^DZR!>>S9383|W5=^SF7_lb;sxEd|2oX1XH+kd5xq6!Nn)j#hm9N( zZCQc|DJwYCZ+CpVVuE{88_P{WCZ`Mox+FX?UC-3sGnR*PsJ*Fk8A`TuL(K4{<`l3Y z@eE{kU;0M5Q@vGziedJ!B=!_`1elFz8;( z1LP=hzpTj?1i+hWUCDHkdQ>vnkq@s*r_CS{7iMd=7^A127dpv2Jb#;IRiAzza?A(ew z)2{W;Ggz-K3~YtvwE)rpHs|_6A!C5Bbmh3h{k_tXAv^-&_p1~o8TC{-j;|U zb$opA=$QyyzBOwiZ!l7F9V{Q=tL~VM0DqrPO*^6?0=qQg*5n)rdY_<9nBb3gjd)0z ztSUuS8)+RaP*2CrM|m9C-~v5y#KmmC@F5P(ZfH8koYK-_rVb(?sx(p8z9de=4R(A+Vf$O zj<~res!|N2=%i~IpW$_3wvfhW??UuZ0ECUU&U5I>nBTuK%N6l&YrB2N?933jk-AQ|o=Zt7|0-Un*A&A(&)`6izWcFwI~cj7GJPD0fWtu!g>)oUv2W!?NU9@j4oD;i6e(&Z<#YcVl_2 zdle1#?_|AsS>p+A{C%n0xTw(2$a6cy4_(9h4LAF*_T9=qZycAr>&}vXs+>sr-1k@w zQ~#T~E&1Zogq{3Pi= zlO;vGG!5|cZqi?J^J{XJaSe_J)!EX^g~9NKIS zEfr6ljQxTbQDbPwMT2zwTb^+UX^K9%#hVZIJU|O_bU-|-&x4tQa#fv`9BAr#gU1+48x5(DxGb?eDv6{53G|@{ntUI|LetWAQyl zc@w_e+WyfGLYmCyn{uNy8%%Qb)XWA1r@KT)|sL8va)B<@Mk*Fy_BE(XWnEXGh2fX?J-KD>~ z&TNIA?%v)EsH1qOe$hE_NxUTKa$K8Zt-XN^vQUr3nUW4R^0FI_?l$qYain%1f?wND z)JXz5#?sgrqW9r{)@~}o@z}Vm?#;`swki8KW@sSNc)`LcnEMuOJaTY!FxC(x!aEOugq(seXCu9j z%H~)h`S@sITs{?^C`2$_0U)TW`==jC2RxJ?=lmSH&jB~iB-holHOCqR)2|x6u@m!1 zW3(E})`V!X8Jz2*&T-%*qee2p@re_tih6>=z+^;|Vy9xblB@?5+1F;NsSA$#*yEEA zxGM8CBM1QhKLEf8j=b%qA!j-q1{;DlHf>6HR5DnOTZQi*{%2Iw{UDx;sM?VdI9^FUkg-6ZA`Dxi&<|%!-^nv^O!28B zKq93XEiLzCFrFu&5YE4XE&+#t@s(%Z8x1CRasX(>P*-ucxG5-JXk#qs7;E zo@HZ>-vQ!gvsZ!aR}aj-lFZb8)kZR$-}UlD4~PO+>Jax@OT&>`UB(Vy&qG3WZ!IP! zWwu%#qnHh6`E}ojx~sy9({8bOjZpe&e>?%WlQzW@zab(s^g_cMLq@dcqTMb(XTt$@ zL!R=HXi~u;0h+2*1gkjH3Dp#^9k$`r(!83Ug&VkEJ*`^O6wc&7+7m5qGPK}&fE6{` zqcDWo@ye|}&X()+G$5{-8`)wyRL*1e zbcJ8+;NS54_CsX=K`8s*$gQ6b-{~9D&ermjcXz_CW)4&I5r-D|pTT003daV|3Rq?u zvW%Pu+E(@P$}u!s;zmi|Ua&bU4w_ArYwVAh^h!_u1JGsq4^HLcq&&d9`x%MuvkP!9bUL_$hzpW4(8-Vk?z)=+vZKNJN6#ssW4R~|7=?lMF>ui?nGUHfv0^rcGrI; zw^S64w;1g-(|N;{r|WPON`qRf(H?LV|CQ5P9~Js-O$Oonq29fS@4a0Ux`KL$Ok@M4 zN~+Qt`yc+DoVfKD9B+SHossdv;%x0OYQQbGDex4zB_`^)S)bz|&MF^z@g3b?iWx2yiMnoH~A4}%8PBaIjDJIBl zxo1wwtCQLiwioBbWi;E<(N<{N68!5cIDQZW+#TR%ebM*@)=&PuVz3E@90-NUG$(mR zz52{pEfG7vVkvIWDrmRU=n~IwXH^NLp2r9hU&3TcNG9zrhhwgP6f>!k|1qop&LBJQ z@HXXlR#)?2<%s_rXqi{WiVTA$Jtm~!^Y>c;$-*aix;VH;wuw%8L#M7)0A`~kFZ?~# z)QM$Hc`zahnVOA`6uXJ)gW4I`2Nt{xO=_%j_-d|f)sk*jr_V_nIxxa=P`jRzk5H$n z>ak}Rte>fkXir<2ZGd-m90O~C08J=!O(qeYsOp>TMVD~51g4Q5Fx+FR0#=w2DgSkV zPKnR^M9zBY#piiJS0$ri**d7+?Ndz-U$i%EfIK2}lQLy(BPUK*n~wGA2FDD3I-)+? znu&M&VtXF|HChWuB_fFM2pVJ@`zS;3foI;X?j>}BR{k{ZEOG(6NpB!z@R2XZCpZ+^ux!hDItnv~Rmn}q zDq?Tb40d}*O}5dfu;tVbdSCPeITg*(XwL>f)Bax4n&I0Be_^V)rac}w1j@%NZ@U?U zqV+G{jkB8Y#tDBtnyqy!&K>It<1P}>i#zKXxi}u7wNFm@O_UZNQ_uayGpU}~Kt(jv z9ehkOp6e?G*zOumrX2yk>ehZ|@&6o~VJPNfy@DPY%F9~rH@h3yWO=7vrnH$~XPkm_na!=>y zuA}gDX^j8lyn%y}xkUw2$!}oN zUNIc8H!f>#n#ICj7lGU?7dC7M0d+TdwBM+Aa28}!?7DePuXy59@I}%zjhLE*j$x7e zCZ3OtilM{#sR?_bQj_pU03^+bPYQQ@)fkpZS;@9@7|06G0eSv#1>}G`pH(Ief9a2P zmJdL@-^bt4fsjZ(V{|wCg{TS+O>`DhIK6R!81I7c^xOl1clRMrK=k({kpmjl3V&i{ z`^w@by!)|-=DC?HUA?DVsHV$^9E(i)y){@sa-;0bs=o2Eq33FL17TH<`b!WfUlNj`$H` z`d&S%fr|otH}c)s(C{z#f15HsRB?K9lL5V3rIWxu_k!I}Xl$$S>)x;_wKL4p??}ye zPppdlWG;p}A%=sfv3EUGZ8)@7*ulRHFXyfO@Wp-_-=1QCMYCX$5YX92DN1zQWGm zJzteOH$OZB*AwCE;s{#xK!Qb5pe+bhiGH@V+SlRDv;Ezz_2f)wdz{YyVt_YE$`_MQ z#yaUfn@d`0*87)E3v9D0oq_Li>_s+1fRnNida|Hj;x$h*iClwsNbx$QnWx; zs@k4juOLqakoK4Lwdx2cQ6YJlg`HWmdBjHL9%PwF^D{|-dZWN;B!B$ypzQyj@B1j4 z?exu)`c$4FG`UN5`}I3oM(8;!Xnn~g%2Arbx5$x%c*PjB8uQUc8uSWtYZd(fb|)YN z&&ok4Z7yOG3sWd@MGV=k~yCkAjz=vhojJCIY!%HWsdK zOd`5d7V12yY{R&VwCv5+AB1vt->&`z=?~Q>K$6Vzsv=_1&%$4rBc`nKEaFBGU2OS9 zRp4~uAZF>87`obYxb*2(W>O;F(`VnjCutvE(3@Ila+No-GCLFwVv(}oevvF zkG@Ml&l>V&1i`J)**<&E+>!WSFB~Dadck16(xeu9ZFO=vF134yy%5v z_fntQXDgRFm0qVjTW{2*T+82r#jDq}G}|g2BH3ZmxX=eS)K7npg7(y32in9-n1#MNro-}F zTU(7c=ae14gMQL^IZ^j-6B4^IjKC2in%6}C3$RAfn-)?;VF=vO`GYdz-O!pMxQ2kS zVzurTm9M9v9hP}L)JzT{VNng3C7ha|FzSgk5evmvwGTzK7Xj3t3H_$D8k`RoTt!!! z#icB<1YA%+B0}F)Pc$WCLovTmju+q(8HCZ$>7Tn3lUL8mVQ;kD`~5e@5>8v7?WLz( z-y^CwwKThIXbAG)fI-axl}XqDR5mwpyI8)GZN|A6w*q<*f8e;!{8Lq4(2QtJ)k+FS z!*ahM6g1=+8b8Q8qqgU^EwVWk){*j$lc~-tJE3cNWi5QG&XPdpQ@Vy+%&J-1ixRo+ zpQ(ad!u|HAiQFclr?4pSZ&kWjWjSPUvOzgz)J1<~TGW$wvg(N7AYUO_7o49Mr|gF# z6bOG!L<9xRTu8S5+;}RanPS639CPnD)^ZAAsJCcxO$Ll|K%WWEHF6FDL+>`co&&gL zYXTsF7a7K}FQZ0l2x%q9?}VqacMDHJY3~soK)j%M4aEeH6#S}9s;&>Y!^S5d^Ct6* zXV$}Ux>u>A$8cdy*~A9n_{#BamO5YlQ*X2_c+pH_J3Cq{8w=zLbnS6&lv3d0736;U zT0*ZPqdegv`MxJM_Q_IbK(COA7pUvglw}a^*U<+sy9*calvx)_s+yuOKLWeyzndDc521fVeWNVJEiWt^ki7Y z$d=mbly)l|MF{8(?9XYN@XOo@)5N!Mf`*o?GMnPxCg>k)7ou2Uqk;lir~fzi!D?0g z?kO_P7^e%(=lGy)82mq4drE_3{cYGM5dV^rXSXi1;qWP_VU0J4Q-1YLm5po5M<#@C z@_dQwxT5J_LNE_$6G(Oj6^vJY$j0rA`m~QqV0*BCL>{4S>Nb(*8b@~3`fSrfd=>!b znR(X!^ql5X3wCp~qr%I$+-u1tICfW7FQv_59S>1{O%sPzcF7%r5GF?5AWN1m3+_^O z%G-R?%dQjm;)*&4Hz6jr`ViLQxzH{&j-+XLIN(e^rl2s4c!}$cmI=EIi*+$tSLa&e zFml3PiCmW4a2@(&?5}^eC9pIi^5iR4TghA}1@}s)JM{>&l~yKW29^JkDi#2N5bMy` zrX^*rF8Kp8bySShpJ|}U#^qV)hWYo)EG2yx5ft8l*duW`@w7=75uGs-H@)?>?Yr?I z4T{d3$S7h9CI_cV$wWvR$o=YD$#5}FFQ^i7TQJ&aF1sMsswdv(rqmWK(wiT}`pNw| z-bb2@W;c>A`AT7kw)Vgc3pj3GU7SoQq2N4NP%_;o2&`#9KGJ|jp8OzL-~uT)V4i2X zf;T$VgprAwW(Fk2HHy9KSINjs6xhsN-D1pZe~F4ui9i%UL-!ExJH0mD&STM(KsGLe z2nq{)y2cclH^sqwdyxFAEZ?#$hMpQKEzTyq$Bt|>&~fhA5y8=Csf9y>m*iApug_v} z;+0v4hhsIyz>gz7Fwv87ruKkOgzdha1cLG{Nz8fQqfOq5j43pT+!>~KmvHAt-6We1 zJJ;Yak4X|=@F`%+fsn=UY5l~+A9(6Hx5KGTw!)o5o+uz~v$Mb(i z=ig1+ZgKab=+q-Z$M$vL*_a69#IZhIjYQ+?AFJ5gKHHk_Doj?$v86QP`y3JKjT2Gm zqAGaw!bXwGG>O=-aY zkT>Wq>~K;z!U&dmX|T&AQ$L6+zdo#;fiNq|MNTd2x5J$nHeoM;E^jGtw_(I?Oz$*^ zOY-o>SaAzsn}(zR7&e~s$FkET|0t@}AkS&O+?4g$W5Xc%IW~PC$?D(#E4ogAejJ>b z;)*_qUBdn(I7ARKI7sJy*hl9$K>|N61+Xm+)Yw&Wq`q-~+CfKF^Bvx9x4s3ccXK4@ z!k-enIk3oC$7iuj5Lc{nq~`_|E;fze<%-3Bq%ff2bZL8p{RYSdN(Zk{#hHrjjP73lX+JI*OL=De; z9_96_Wh7HAy{Xc-nJY`9$V2*25003K$yRsb4(mn@9Hzc`)#0sdo1`G}2R(umeyJ1f z7Y(Kme%o{)=`h`lw3XU`biXlR!sen%}ASW9MlRyn#)X)&d(-1cUhA8gByr<)-h z^?-rSnki#cADTN1?6Pod@Jt#93$>msonE%RW{GMrLMCb+&=(Gk32~v&*{jmM_KxQ! zGa_p4Vz>&frku*2CAu)TbOsA^v@?a#q_AO<0qYUSo))vE zNDHpFk(|tU2TvW2Ai|`+=J8?*{eZugM||tfZK-s_W!I*TCKLfPs4OmFQT*B*luBVY zd?gdSu3o~VzOVm0qwppjBNv{ue@GG#A+Zy+FL1dIm#?(~@9KJQlRQoTcPG;z;gG4B z3t6L*_(U^E4(*0;*y{_V0W|l0)OzgYER_=65$Wu4uwwN8UVQxBLQ(#ip#Y*3BfT>_B;%nx&NnbNNRIEv9TZ#0=e{162q}0N zN0M84v2DJX)oBhT1&m1&bm`3B&iU&39nl%_-}%;Gzu+-3x1J2$^pPi3u>Ju-9B5Pa z`vNuoA65yTr|?qF0ZA;WKSO6j5nkZOLjs=PZn5ct)OWhJ%{o;__4N!+-K-3{l|2lj z4d`bl@jJ*axB?W_@Z$js61J)gL882+5+RNw<+a$wTeWGDIBWX~qz#NSglLNT(+c|E=hP!PNfMl^Che7&NOfJ|30vP)*qEY$s+6^#E*MM*K!I2h%+Mla|2uxKMFmJ5C3Yx%8dnev;)qj!b1VljYdv zxT>;EFp*9jlJyww!7Ey9up2+YGv{y%Cngoi6)u&Q2iXp7vaiK3fve!c_*5nRtIoQ^ z%j%H$l@Elc=k>TZ=u(C`0|P!%Ir7Q^RP-450uz{7EL(Af+M zufeoJpa)aYk8RzC$VmpmnzaWuNcKJM$q|8FegBLYLL?bC;gS^NHk--MPdOA)(wm7r z^v82aq*i{V6e34niJ(VLZHI^w@;dV>vAvzz2UqTH!h$2C33rJocjLrQkRQVuQPID* zZ%4ADv9RIIFx?saz)y~>s^eT{SS4SOPQUMtz_!*!4f-cT#I28*_eMa1lfT0mwA@V> zdLO@KJlz$)vv6%A2oxdR5wVmCDEZa>aWgDNg3T~hELSmkd~R>3hhrR4Th={&NjFuN4)CgDb!!Sm_p)pXs$F5^n??DukeF$>2>AcoMEZe;3y)`b$Y_9$k zR$&q%(^$*OpVck>TtD=cr-UJTBraf(ML50(pkBkg}zsk*?F# zpZ;e&s;dlAF+I#a<#I-j|ITtlF2q1Aqg{q=IjFcITWUmvAUTc7O_t7H?_PSgsENhm z(I931ZCG@kl#v8GkeKS`SXhJn93z+bb*kxXaYrSnA<1S*N4sEBQ|(^f$CVHuwIUt-I%q-#=f+#KYWuKtcg6;(r(nV$#qJ5Ixar zAzy3$3b^pKwh%Dz7p?$686~^h=GEb1UjAc8u9&_CWvKJ6jU_6cg_*e1LI%r#RAK5@ zt@Zq>BouM-jg|K2Vv`e|Sxg~|IpD)o#ug-I`@^xkz47#ttS6WIpiMQJ z+dLZeGzSTk-EA*NOqUpMmjc85Xv=2v88I9EiqQNs>3vn8?l1N}1G8U1v15kt!*b?` zA42e;qy(1->j9NG4D}s63Wri6$uMuwBKxKK7GVI&vF}=O0#;)@Wgv6p-8h^0*0!I| z25|_qy8UL6e*u?x<>7R?41>)ZFr!Y1;(!w9mgGFP=%@%NBcfVrn#4HWO~ z8yrVbiXfDP@!5+Vj%gqUa*sbMb(NTF#*fpTWYJUYi5Jf?(!8*y4tk)7KNeQfw?I8- z_~KtEm==Wv5@X@OzTZ@V5r_1y&M^i-sIlp2&W0z&Tn+EsEJ)K)WTmQ~&P0UobEkAd z$S%__dU8UHctk2GfHP#{DTz1`w-A=~&@!Y&4GN@jc{RmBW;c5s>Ud)y9!^ce-jAD! zdsQz--8V<+M;W){vsEawVADHnNfH+J?kQ+y`jPcB zI}pV4;Vog&1@0Kn^MpS?kT90nDUJ>CmTR4+t89idLNvxY%IDeUn>?clXAFkpNJnT| zE!&hhUpc<^X04k)#H@ggBC8th1xc8;PT3Z9MlVujXQl%A?5k!5Jw|zxTX-S2Q*oJ1 znz$WcVp}diNZbI06NHA;0lFRZ_#yezjgnu-Mto^1v;CwD1VNwjpMngct*(1#U2Z~* zsm8ki{jOswu6ei-CUUj`s+Oo2C#^khw%$eaem&!r*)2{Wg`o92SmrFcKert2+7UO% z5E%5ori}^g#R0@Owo4|fo^miv!8=VpJj!2p&16ZxEXvP8D|lTQl7MotB#G=H;Xczw zC4d!w#AzTspkI3pxk$eTq*Hm-p!_sYq}Ve22ffEglQ_kJ1df@9Rw0c$Cq@wOpAq)i?ee zK`a-mjq%u664s!I5VP%n}N~9q_#6a&c1Sf@UuR79#E)6*6 z$iZ+_S(&PPM2ZHgtm_({AeYsO*TBDv(KmQ34XB&$-e|IhGC zEgD+q*}t>^3MjW?V?UG^K4y`y$hL}pZ;p)okZ{L=sUOkW1`&7i?^R_!{h+% z-{R3JT(*bHOSX|1aLWWw2e?5d47;^F<`px-i)Rk+2cvm4u6i@4(g9|BF_noJB7d~c zneJ(tHUYD1Uh|QpX=ZS%7U!-uQ?Cv@j4UQi-9MK25aTEW1sT15CzLeMw)Du3QNtU% z_X1WVlre6K?%++JF=T7xo%4s3{|!u{2*{zW{;7zg;$9K*nAND?O09i`Zz(0eJxCnk zIfDY|^B4gwB&>Ta%k!s_$S7o{`8XJCjd9W%Ln)jVj5X8FrX^C`<#5v_08t$~g#!Od zb>~xmXZ!eIJ*Vx|8^ZVDX_%dvw7^VOHjfa3SkGDOYsHuup_)74)uUs}7h4^d6g3oT z9Z>nIXrHByEa%Rv;UabUTz&0;P;^HbtAzJ6vK%udF@MbbI8?{xkYa?{d|Kv;d#WE2 z&t~e-yE?E!??;B5!ZB+^;dyW}lgZT}$2BNTE5t&XiAzZp`*|&Xj$^){_ogdIj~*;! zTs>rKG*|}r3No=GjNp4(uI^L0bl}UXzLM7r9ZsUN_YPI#s^{hj+?fKD$rgu6*SjpD ze7b^p%*g>z+$&zj?KYDp7{U;Ix` ztjot4zdyyu$MLqZt0sm&c&V0L&cZB5tedjjZvA?-Z|8mOdYOvcf`dus1?4P8G=$rF zNKGVChnaJQ%~{|^;>y{kYM4>Q_UZqX`RZk=`Lq4CBZu#)rMFiOwc^fZuk@uy@9FX< zU+^;BO6Zw+JXj@6E{mRIGD(#fpeOt4u6~o7oCIiSHr1dDndW_@T%OypnX@$)FqUs3 z>*w=gUEv$dDAdVN`EjtiCf=G@edZYEcH^}y3~q#XlLU6B(@1Ag5p{pT2#HY>c#-d8l-~#j6`n5sYscJ%Y^4ZbI_`SLrNUMF*!9^_G(oI1z@;AILbd3Ka0Oe^IvYJ>dp%1OzVV}YH{^Rq@Mz^ zk(>C!exXe`&6H*O`~SUeF^%l0HV9JwWY%E`G?Bueg!ly#y<@-r`EJpY5#1 zP6>hPSD{9=jcqgHo!Z~vZ=2!OpofR!%1g59>@3qMhD~##Jhax6uMyH z@O7%l;f`sSo5Jm1cqmzJ!r)WA5=kTPiZ;RCQLj};tX6-vF01O$UtS#d7}H!vhd3-H zE*Jb)EjcaKVyZ*G`o`4LZMz;b|HZ+x95RsI?OTvkQM~}ux6Rx4?dLVqmF>QtOM_y( zGXd-8Bvz?Z+)C;~o;z$d7!!mCjB8S_>eVN}PY^G+p9U0Kh%ouhhm%54gIt2fT@wS; z&G~31P;XFuJ5ElnKD&FVEhJ*xblM6eIEXGtq7Jtdzu`C&BWYcyiyUD{^iG39R*PkSE$%eat|0l~V=-MqG%x zOxZH`pPd#V!J(gGe-K<@pxG`!%$AQ2su(; zfsC>1MB`)|Hf`0G*_{tJ8f^=Qu~LP^~|rAw~; zZ^mXoI0UKy1Z$#l3Go71@F35mY)BQts&&*rxBv~ak9lMm zVf}i0q4(k8Xx`7`2=k(sVeU(qkw2bA2ab;1R?#-$YR{Y??BldDI=rmmT+|NEP=Q&P zvA*bzHJXvFTx4NVtY<(_R8ygN->Yu`%n4t?IP6PFUJ=7q$e1&1KBpNYbr2J;jP0Nl zr}x3Yb5qHCr1WYc`B!N|Jckq%J8hSWlVq3KDfQhgM8$~m~sW-4Kw!P_YOSJq3t(0tOU zz*Szd=G!f-*s$ve?ZPU$rh(LmVX+;N=ltp=lTB!>HyvJEJZ|!8lXE$66!)*}Biz~3 zxc2b%a-d=#ggDxOi<^cRvrySIY%b*WFQw`zGY)C@;DFnBxQ@;kz-mFf4?u&e-?{rt z)l=-Wr7TyGuKhCcv=KH$ ze9@lL+qa#HXSH4_KYO<5hxz7JYl*2F>0$M8H5N_~;fIQrM zxTfnyrC0&s9}HRQ5fK3zZSr;b5ukp9jOdhv#ZeBa2g2xzYRI#!&aht9=7>D|kDXhM zL5=s~`nu-}v!+_@(t(TN0C-INzom>#9uDl?eXtt}{a6li>xUGh#iT*)XcgxaKhKw$ zTlR*UlsR&iR(MF2^DA3}ZEw;$q`_c3 zlfW)ir~)G=fC=!|)s;fMflrj&xW)?>hU|AC3s&m-e*$W3IZWZY%p9e(Rmz-d@d};Cs-?D%mC`K$>duC0J_xLZWav<(5~6`Q?6o(buFDr1>hO@J zWyhV@*hEyFhz-W4XKY7@UbLconoeO-uzrQ*m8+?X*h{A4Anmo&aM?!^vx<=F-hMXe zMc}jmbI`70)s&A64p|yV`@|X)8t-s>c@z_e5;5fi`8DxTSHYN}pmxSKdY|;i|A>a_ zIe#3w3JNSKh*apqyLDCfPd>l5p24KdKL>-b&oIeaH3eoYy!evGHv=#Q4VLO!|irY0fq_@f)4neh{s) z11r7DJrB37TXRh~%t%GG7uVHN=n$*zkI^<8LrZtpec~FW|Jd+EYKMaGib8=$e?sA$ zs_?AD-}TNqp*EvJavNKf@*enrVDPt)@fN9a%=~fl(d$y{umo?BQ0yQw8UJo<(<_+K zYys}`Gh*iUG;fq=*Zb*zP@&f{VUEh|OC{XKsW*uAKHudgV~y;>nS(~e+&Rs2D!sOK z1**duN2&Z;Oyq~AKjtQi`CeRLv@lRhn^tBcFh`@U9y}&a=E2JkqNZt4ySURN(0NFW z@6dL8+_`r4X&<;i1Vm_^tmDLhHDgQGpjtV=+rEg#+4yR2lPs-sdJa{z6?xtq^F}QU z&efOB@vaG67WFD{3xZqn^p)D&M5lXoz+BO12q)NX@do`}EEXy57}y@^9a%AM+eX_5 z+yBE4J5+!BB^K;WI|RPARhM=nSvcNr36v9N z#Jx!yhLZ58)uImZTH=$YrJwba3aN}bftHPb&OWbqbbGYjRpueP*c~{Aopth@T!!}* zn|LNH_$ranDoRAP>174gTw}|b7;H(sN}nb7`0&+=EC8LC0+RVmJ(;lltXNhN{1LxS zt=$X{UE;;&b*dF>iaMUs#lc_cFaM{u9k9VLW;}t_Uf-qlVFQn2dnE5j z7H@)Ip^Y=iOJdaJ9W;Jx^jCAK$cVarcFD#I6__Sfx%b2BtP?rg_gt1(2CnjODFLiI)df?1>fj^>P1 zY`xIF$c=#M7vDegmX%2Y``c1S-?X!J%`Ion4*P)mDb~`6)t;hs!os`0f%y*L=ZUw?*8M9j7xL6?IcB;;XI11w1oUv^&^4MF*m97=pKv9))Ey zQRX-QUCg^MFijO(5a&xit!dssK@}tsT+;KU@uJAp`TT+vTsD5`)SW!4X?C0u5Rba3 zua`>;iaaREjIg0IOS^~_OBQpuZN$7xB>tRZ<11H+=(NujkhcSDlymbD7qUcWDljMg z*r?Wzv$gao*rit_BaLRq{G;nVF^g~;W5a{HOZiF=P2sZqyx+MiE5vlD%Tl-a$36;YX%A-s zz3cjSzb}})XUhiuMjS*E_f*T=OlxnF(5pU`{!7g*L1}MS+K9h$;j)ToS6fkMF|1$gdy;)k7%Vimf(x4Km1?Nv` zKX~*SomRbX;1ebt`r}mRnczps2P{j%XbwZK7|%MDL_Mu-7SUf+pCHsWsYOk!E2k;1 z8T&#CcCy=nk00l>tx%(rfbBPJC=7QkyWflhpG$#SNdu9|MUZ%p9x2voZKdezzK*^G$-1WLP&@=H)M~D`*Yf*3!Iow0O!R6 z^G4BUyawhhzGi;knP6m(l3aD&EHQzGNy=Q84lalW zwQ-9&YJQCJcgF7z2$oh3#Z$alcu-O@Oq)nOE^2E=f>n_NLI2_bTaH7!uuzHXCPT{I z%}J3*=M+XOfi{jf9Gv8pze|xT4VZCz@T(~94E9~E9ti%|SR-*gmNv{me?_&J9KcMi z3aIJ5jMBc7Iu07gwQr2F`Zwf`#W$C>2f;0%mOvJ>YP_AN;!b#>lV?gdDS8B*jwfd8 zA|@9P7D~aukMPIIeBH}bbJ7ER}dBOte&a4l)NiUUiQ zJC=Ea3URuyki(cHB?6F&u0HTJ{DKlQOAPJc#qh@q!l9==g*+^xrmk;z))aBSbC}f$ z`RhA)WC#TFciL!e#AB}X6KZST3enyW1H;(0m|Du=l2){lpn94c<)5?b*d4Jn$Kt-&QO?|<^ND=a;zv38+>HzZD=XTOn~0jg08l}| zNKW>%gGR&pD4El+3!oB4uA2O{Ffw=MZs4~#kY=%PX$(1A7fNQHfXpdZ=_xEV`iv36 z3oQEH=59k_AsLRm2mTCf)F(=J9pp0yjEM)b)q@t#$-{G##cmzCd{05IRJw*2+vFac z#(qRRUXxj~rE(FqLzGLYVz;J4xh`zVMhB&@k3FvcY8cjs?oL>w<~Lej3&(IENd4Vf zmUWYVl-{)_EDCTm?g$)Ewu4+v4aKr?)j}&e@stHSVwpze_gy(usB*OY86zhW$m|e0 z@sXmzdtNO5{n|KZohBLInCR9zv)>+fV0RMNP65{qjhf}CZ4eDyoyip$4Jyl003eQi zEQ)f1|44{yWR&)adxN}dLQdyOMq&DXfQ>sSHl*px-0{M)H6dRlgA=e%@1F~6QCC{r z#AeaKm7YtXCio@nZJFf}(B<&pXS2xiTH`YoofcnLn64mkUN(3?6Y6@6A&ZuqU1uc5yJB6L)i%*bcib zl^m#PIQ(s5>{W?olo1@8*UMn`ZLV%TIGwe?$zilJUyA`SuUuTS(n?q7-lRKxx@ zQi_VYE55B1F6|e@Hj>~AH7kkOFlD=lXVxe7A?|k~rOB_ueMnHauT{|jCE@Z+36@J) zcl)U}1K|wpmaF9d3nbm}wlulAnYfO7FT7IYh{y4JjZth9O*((~!=Y`MU7y$MjhYyZ z0D88szpwm^&m|~#|2A(Vclxra{a*>SZDNZPlp%A?e!B9;A@i)A>D&WHcdiudqZ3V@ zn2Bt#Q#fQ6nD;U=e7Qmv$Ha@mEH5<2zqrY<9*_8YUBwU9D3avt>*jA!-0PY1he*e- z(R_twh~j%G}r6K_HQ1qsXw9aytjkuzC@8Wr{ac!L7z?HAa~2Qa}C z!#1UWb!jn@FLV;k8lHqlI4jpj7(6Pt3vH3hwWTjE9$d7a6rE2u?-TfUl|IFU-VoN< zWwZ`Cdow@Dej0fOO5lPgcdo zEsxKvg@vx1=Ac{(|BSjTB4|sBHUzdl2Lk;-CB7P)UZ@}Xaz#WANbj?nSHpNYy{!ej zVTA(uf!j&@OqP9l+1udTlr{3N!?AQ*W7s{duYd% zZ)T$fOiJh()ZvO^fba|QaH|4xIt|fh_^BTu*OW1~YT5P_=f%_bnN)XtM6h&UyYHKF zkmAB(Qf9C?uovltzsGZkdNISzjXdB)IA0kyePxqeNggw6fXL|c2VnwN^Ju_CKB20W z0R{K>M1}7N4O5^gW`PhJ>opil-Bs1jHlIif^p0B3x#+bb@`o7NO1MjGFg;IK0%Gz- zI#yu(@7d}GBn=pANcDjwSfFr7q-nlra7k+B!l(8f22ZKDr>(9?)2hVU7*_u}( z3!A8KP!wS%mDY;IFyJkG-M*~Y)K>AbW3FS>UN_>b3Q_lzUT`+X{hnnywwD^OxlsEJ z^>rhdZoo1*80!Xur{SQvLrYx1vki_hH%EqS8PAWkgep_tM(>q%t;z}ui>wpvplITG ztPv8ZRstwmMoO2RFmfv&P*l95>+Q+Bo+0WY{)gb%1=fVpk9$e>XaFtk?G_3CTWpqV z9`5RCaXH1c9=a=Tgor~M+UAAi0RZ*YW1A_?4$t3q|F z?WL7bD{&VzMEJT9nNL*b2y}*Y+BY{gA1d9$5BdStU2YSDR+T=8_6mEJI2hWP`atp)o=35Vqv2`x7pFdY-tte?LdzNKFDoR3 zC*+;xLbKwy3(}~a+wqBEz0XNPbOgYy7U5;%4e~49XS-lydhzS2Q{6Qo#3{rPdgfGD ztyHi`5bsn=hDXbmB&-23umnB2*bv|vrX6$jV!_CM#0zdb1M+{Yzs}og1)^XCnm2*ASO$U+wK6O=QvCWWNf-k|FOi5gKB>gbD^IO@5L*?Khs=Mz zgFx?Av4XLYm*9%kEmqC3l3(&d5dXER?@Bv|he;KEr!whC-r0E`#dEyu;gcw6>4GO13O^m%QWcl( z(nqf+VcQr(=FG+k##sw%1R$^Q(erwX6pL}~mYOGZnUe}6t8>iKF}8*!^*s^<$o4~K zIE+>e&_v)B72&ou)P44pCF!!xf)!1AX1PNh^{L$^9>j`i%8IVM?5iTCg!iJsPnl>= zL5rlo#@46hzx24Ckr1AbF9oddNF z4;B`Ldxl66a|M+XuL7QW6*Wi7%K?u)bbdt4|LHV9-@iM0 z?V|2;dB1Wys!jP#pn(cSIA-OK5H^RQoh1w5@9LZ2EeS+&l!eS!2e#m5m>d0#UBy>x zUGm`x;G2+Z%EV4e9RCmzv=TjOs;TdYb??kV;&URlgz3 zlV97DLh7m=MjVw3Zihi48hfxFp+DwNJf~npK%BS8x60dt#@9Z_vS?r<9qNA?dynsP zv6;GnBz(J)qGTyE+j=T~?;8BEV=;saHbveQ?8vx^z}juHXe8J=Etn!Q{LIV`)+bsH zI=Pflw|y29p9;hN{v=>D`0UuW10H(pP+UJ4m_taPU69}Ls)+)M-9pGQ)ClgFZnb=A z;)RA>Y_xilbSl1=+$wfSsE5fWld!i}vk(}C?4}otu{rBIrV?aw@rg;kbeZC|BS!Eb>}r#=40wV8cqSXu;=x+Nb_JLMWu<131<+$=~Q!MEc_Vf9*PZhzKduW{4@Td zZ!{8>P@D$hx^y%|NQ#WHh}H#T&5q~PE->lZ5>^$Kr1HQncr54@TW10j1QDT4M}p(%C%>=3BO0C4q+T8FE(Ql=m7oGVU_NjR1|QI+Ao=H z+rKU#+eNTe)csRyoPgVMhaDuA;J-(HM>a8sGv@qI74-n-2^JVZa{~*#Z-dDuCa6e? zT3N>`dvp=3APc$;dL;n=KLEg8xQS@M!eNj9WJD8~(BZ0G8%dBV)8KEUE2)mW%&%VK zoA!CaE~b9Hp{qRfcIgZGeP;7iDeX zz5b6sfi0BzXu>FLFIgixL#Wd0ZF%mkC(*Fjos1#iyQ|YOX4uv5NO+_Bq^xK4)PGa* zAklt-mA^2vR0&)N={G|)6pFZs{qq2fq_v$w#+lUAjt{A3g?1jNOUzVKLM+;y z=I?u$zHH6h9i!u>VGl2|3jz_ho^G*CyGPNFt#`F-zXYnH$m1s!t%Qvm++V)o^!z?Y z@(2wk2sH=gRs_9N$}xm`;dh8b{$?=bY;~AcLU)zp2v`v5(fJz}V`7=zcLbLc`T_QN z_7lki8)>XEi3G%v1R(6HpLJNO4a8hLzPi^Y>0S`Z%67k(O}sM$!xStL#H3OqGbp6L zxM4zsW+wKLL-Xh^%jZ^RYdL|4W7wAsu4MwBk%*A|GZTa5Bn8;k~@w{EfBX9<&e6%7Bf!K4m^*#d0&MuCBss*szTLH2| zUQxu4C;uIBD`X7lAky-vRt4H*YW2iy?v~fI+@VOd)5De|LJ|-$wxCw-=dL+wI4jd1 z_lgq+@coM?P2-?*%h@xbl9r{IunhXl4ehoZZJN%;silqiP2i>dIRh@MuI-mRV+aIz z2bc$KI$kK<=|s7_1Jx@usHgMeTz=dbmEQwf(~zh!jRXun z4!2=KxicY%AFA2@vwl*o6W$AcTF5aM%jZVHg>&O6*u|Oq`jjYeUx8F!DP)_*$OTB- zShc1rzfOr8@-FIpL;;Y|q`X3-FgyYN%U|wE8Mgqbcd-OJe}+H&L)dJ}rgK>V${e6^-qoC_i!oM|$eHq=^u* zT(snE$4Po~2$>m(k&+DBkqPvA_`WV*ZwjGtynGQ(AHkL#%bO`z$+BJn(>Vd4Cb>G5W zG-iWc4KXv-`3aqJK`KJ*21i*(xrDreGwfysW7#`NfJY}dj%UWag2zJwcm(Xs2N5@w zO-3stt~Zz-Qde%ej&x@dw}-YaFr(M6kQB&mwJk~Hl&OJnEUs!NpyU7^HI;Rnftn6m z-Pp&)m@o@vaftvvHJ`r^F`GH*K$Ti2gj3cIl?Ajb$iZVH&F#w$9a3d3l$S|;+eXs9 zP}ZOaQ7HZ?og8Ceg<_-ZU7@Z0z71HYe-TLvF;@6qwwlUe@DJgJvV0#?%`mDE2JiL=8WT;EQ{9`_6HyMO-$!4$t|y4=$!*5+3L` zH!`LS;@d~Y?ld|%Q~fnApQr8(5GnVX9773C$fqFLpH|!jK z@=;Qr3aLL&I^R5Fn5!UI7RG%Z+e4gkks^cDClB*qqr#xj@>KLyZqtN5!cpuHZZr%H zoW93bs|w4=8wQ!9iHJ3Ci1}q&3V_r3UfOIUQ$L=Ci60&S6p7=1K)V+R19W?RZqXF} zIoG3&DqZ#wWb?-nu9Ga(qy!a@CSpN&abW&R+zg`I=U*$-0wbmrN6PB)GKh|`?w(-J zj-mbbM&u5(x6bu6D#Lw8_Ycxkz%BV78dDrf(WEY8$}3@jz>3J3BXca>=zc1>L-q9y zw^;rYVZzU~-1M|G7R8wnG%TW2?&$;7dDhFYFTAPjtKoO-paHXzzfX;XvlbJV#g8(g z8}?aXRQ`vlus-ZjDb=`PSl3(#m=Wx$M4C`7*X%Dw>1f z{_&Fg#1FF&ZN0Pz)^qSjFkimz+$4#3`4OraA&qb>&}{sPXqctL1bPlVa5vTy3b4UNSM4%Bf!m0&z;a1PAl^Hno1R+nxhPud;Eq z;Jq5UO62Y)7zE*AIC8!2fc`cynrXRq%XCW7SBN5VbLZi(X7}wdH{V#-(~~X^&OgH@ z+o=Ov=P9U}h9zAyQ};Ql*LjkI@LSP!A<-_M29uDOJK16YcFDmK1t$ z3>3bk?L%o~xSLVE|3qOoz_OyZ*!lcG59BSzFb`-dUb%HUdK(9!i7Kg9~*Cm(Eiu74_?{THmbb>MHjeYftTZP4Cj!IIGb5>ELfK>cBD zO%XK0@z#3v^!PYqPjMKl;EyqJROOv(3yThk;h`}nt9_1GO)Q|%%d1(?(w3r~9+q_t z(QTU;7$C;lN@*;Vvb#@&w-Z>pn~&2p!wFF3Vqq@7O=^0vW!%k5|72xKzk~`ng7j9L zPg}z53WS1fyiUu`Kcwbfv1CV8Y43g!npDUfj%KWJ629yQ+2|En+T_$%m&-{CAOl;B*7P$57X@+^!I9Ci!o#%nd~9|yCL&T6sKxuI3&xWQ6o zjoDY)AoCgG5zd0)*3z(#`rsN<>O$BOsM~LH5*C;w!l8%dq@79b)BK zJKIO~#RWJQTV)Gz$bsYA;k}Q z8s6(G7^)iRJSyPxNc<;(Bbc*WW?bK#^&{k9y=HPF-0@H4<&auI{oQ}g$`P1mi7CnH z%y-%Xk+S6%X;W;amn*u@E?q*)J9t??ft^9yV`Y}j&VHMVYi{i7l?}kFDGks=YAArs zKY%H_zxnL?1%3Rn}I()f~8`U2XB*dRzF-t=~u_ zQawDr-f`}>xOZYhBLp~*4kg!4F6|7L-2)bsWQ0i!l5{bPm9&bW8ZmkhWaQDJ#(uBs zRa))1d@(l8rvDQJP)IkyueMdp^>>*G$_x!(x#o4|wovdaoNqbYBaTG&f|^4Wz^Tx8 zn(`OD8|A_81$C^?`1v{vk^OOKE!t}WB<0Bsre0OtZ|p8}dkVWwhV@R=e_*PETq(`a zn3)>*qVHZwhmJtcxWrw}*3$3*(EC*k*J1&J#F4mkHP+Rs)581hZ$n{sJNk8V>!(KD zUBNXZq+(2q!!CSq;zL`aC(^m7^Tpjf3zi_R9j;%|pz|B}MDRi&2W673dCbLmtA5@F z`u^G^$mrCbbX&a0%(*gTd2BM0|}7?4BNq9zf80b0m+c^B*~#-ezSuqQTo zxuJvs!HSOlQtWjC_-LQKrCB=dyK^(}F6HYlIkDAjvHf12P?dYDi4^;`u@!9D zRHH!PC+vKDF`>~{r$t;qtGSJfrrjuV6G<%>rp(A61|&Y2vDBo> zFj6;nMNA}iz;$CO`GrYTK&crj1k;}}HNfnLn#UEFc*EMA^kOGK!G^{h&DDK#Fiu5Q zP5dBT35_=SD+Dlh1@Nf_#I`;r{`+uBjU%#^J2BR(uM-MljBhli)&^y+;M-vD{#V(lM3TI7KXdLcpS$!R_Q;k!_UX zn__lDA2|yCzeCjoe**HOZwJ8|R`0_LhtwG;GcC>bG3mRXyLZH0|ZjF#szJDcK=gl ztq#`ZEULVB=(f#Ysii|640u*oxW>o3O-|jnKnqq!R371u9=(J0IuY~YrRsqfc!zsY zfh)U#IY#zd&%EiR|K5EZGuwtCuS8h^)|+JIO-Jno#+k;fqh;>0&ORgT@C~d4T(4J) zTPu740&neUK0zkM;%S>nZB|{T!Ji<30#>h8;Yrl?9M^;C?r$b_hqwruS1XvvktS(i z;dZK`rd(yUiTXqC%e%qb<4*##^aQdyo_t22#;+3v<0XzPV52AAl`JLyQvQ1-L{Y=i zv{c6W5$uv{A4)-?;9}S(t}Q$3u52^kHofl)2#SQ3HOTIi)A^V7h5~pO%t`AB;(Y#d z|J9)lgxMcQ=<*?AF*ARKXQP>_V+Lhy3#h}*Y)Uktg2rVqRPmhnl^U2`-P(a^;ya`k zPqtOlf*n`9EVS>ztPY_pQRblu!L0MMGu%m^t8n55>)RaWgJ`cj74DI4ez%^Lg+qQwtG8YD{2#{MfDL zMr;+7>kSQ7E}_ZZ7XS&bh9s}dFm?yCk}`2F4Xd-AbT8|6mi!c@EPdE3&>-3Ffm#j;&Z@U(hi~!sxu<8awh)PpE^2RY z_HA5-e9HyT^mkU_8BNW{7h-{+JXPgibxJ6 zN=scC+nTWBTx}-d2qC066n0}P1R)thyoWUThf0DnRBGy$!>32)I*1!5Fg#`BzbquV zt$8~jit~~~Y9oywCBYHh`cREcb^mjgK0LS9+qNlYEt!10GoV&Q+QXDzcYz;EcP6eI zg8@`c2OPX)tgtgXzqLM>S2OAV^l5r)?&WdtzM{&oOtrmJ?KEAtcY1)^_y4?ohbiF>jxtKlQi zr-J|Vs;dd{BV(z=p%5CENVZ$GP#=!Djp~{PH^pW^X0G$T@iO_bI%g-mgMq5Co62tH z!U5~#kuxKnPilL?vY0<2;zgySaRPeht*)~)6A|X^rB4mpP8DBVYv&I+5wf%XDY7vs zH@vm#dmw~yzMs(DGCFG_4Z<@Y@nqDEy-S)bvmG~sWDSJmT*418+JoB4OXapH{B3X78AVIOT_n8HQQb( z)e^}HH}cjax-(QHw94z&gs6xN4vpzs@T?K6}@ zTgeSBj%_OfYzTcz$?*!YX1IUTpPe*aK~rUa98@@pDZm=V>2V#4qa0i6w7*kn1UcS< zN!&5M&f3a-Smi|WVzkH+`AIG99R^1jrm}QOosnOM#IgD@b$M2FoDEfDM~~eg`GHQ; zn&iJSFd|OyJlC?RACGz<56j;4e&fa-haXM8zQ) z<4XblDzOWisX;F%usKbNq%8ymk+V>C#Vkgh$HtvnR<>kv2gPJ*rV{;0~>>kG;~-Ml@Jg{y*fyVkvL>15&mStY^AHlMjhZO^eG(f{T#TxSoQE=5f} zKC?5&wiomsaL?CVyPsT_V>YOSys+u-9VS=ce2wk=?x4tY!lQs%Ql@w(*y1*i-ClsM z*U*6b(w)jApklc6p9(+a0FdKHN3i%0ZhjecEDyCX zxY#_2&j8mAk$aDWEI`DH76V%cd8I*64f*F23p*N3$<>s$m9`)t^9Kucdp+-+m)6}F zBn^q6uYjDE@I6Ow;NF(HSRKG`uUl{C!=4IK%l?EKV<&Dq&!j0=B%BQNi$Kkx05z!b zD~dAWl2D#}*#&|MLL7o|)T%`JPNae30pcaKSw2Ln!3ok6 zwt|804vXg|H?;~ptx~>Wr#G5s2v_5RmeUbY?LTfd8ZFz%sGFZluW4))h<){zaJcV! zB`q7{v_Oc2`tvuIse2SaOh7x8U$GQqbO_#Nnlm|-Oce+G-oX9M{$*LqQx<^Vm|JPA zB@_$YWA6KzCJ=`1GpDU8Q#FBn!VwlZ->hjXHZ2+A+uLkl0QoHPaiJxy_%Dhg1Oee& z>U!qMc-Awm>hyhgGXda~`c%3+&~OXew-@hzg)gr2`m@(!#R=n4Z76l%2HdR8 z$G|qdMp@?*+*PxSdlKhKO7oNA>CHGa^)4uDRM<4iFkd|Y=t^xW%1$7|7|2%C{v_8V z+gTE{L@kSk(a#J%Wo5$6p5w_W#S}o<_YbZ0s~--058rc2CpCOeZx>ZDKaZ6=cUHbb zt;|HUbzOY!OoQP@6_Mn-iF){c2-@1^UKS8v60+ChKFQd2xA;$GHQg%l6A6H9)QfZ=iy z4X3_5rpC!L6(gZ?Pl0IF!UUU_@<_vlCF%zxG}GqyS>eOS9$8*GS1=U&TqLcqVR}9C zVWRDPc@~I#G~&U2bpk#Ju4(GemyC0JT2#j}y zYQx%BUG`yhy)L##>eq3mSkeE3L!C=AO@&&sHCM?fkIPP41*{>q1xB6UJV3cvABDey zGP|QkK^v!paBQWBAEJQkzJ?|$c-dtkwMlvkU+oYwtIj2CXAcW~qf9yx;$FSp|N2oA zHO}36@QvmcQfHOEvSYkzi)@6NTte$gBoxJ3<0MxMvHN>~*y>{gxrN$6!;^6CT`Vq| ztE)M}$^jP9fGpAGK|?{zIYtk7@f;aw*|0FYaq8^&uMAFjyvD0h zkunJ$AmAIC5@!p1>zM17u3|R#@Al=^>QcklB{9>0^wQ!G#^8cxZV-Xy&i-b4{MwJe zKHJ&J7qGItnH(+AIbg{8)K!z$88%$9t4NOe+1@|QgV-RTLZC1N2Jg3CBl18m-nuL3 zWNTit=y*I7Vx`iP5tyKDIIUy|gBvQ+K!BxScU0*OqWYXm80Zozs)h!F6nuyg_!KI#TnlHE}hP>-=nFA0uJ+RNa2Z>3LMh%)y z%Bt#DMr@yV--$#P`^#xx$D84Jp)t5|gGwF45vto|QR~U}Uub^PzgLKuw4wP1*|q=( z^Iqasku_6%)#%j06t!+~-;y`-M%`rFp!Tr0 zf$Cl`;KZDqXWLTIf-P#&D%tsEl15`#PuDho`q}f6Ou=%+=ChE7j;t+ph881|dkv3p z6%Z{zVfL{}`;yRtx+krVB#@(mo&nK=hA{J@@$+Eg$q~uhRutD@@*PlIHMQ3d+M+ZJCU$=Z)}?0|1=9 zG>YsWet6tmdxLRBegWZgDk{0Ls8$K}eVj1R_PcnL0iUR(s91u3fPI0v0sn zAiv8`n|HNClo(q7a%tNYd`wN`J|42fWrYLR03WbuWhbs8plR=5z2x*}EKrBM5s2WJ zF`XS$#n#@Gh`<=|Dl0N#Gw0dC4u?#MD$5YpeZqea1j^4%(s&N9kKA`8lFA#0R`2x% zv?-dCv|j7wqB%|ar6omoG=HHp!i=M{1Lpnrvb=L)KXCQ+SE$${6&WR{VH99pduj>PpJuUfy$1a`cqJ9*qSIFz;^jhe(( zif|*5$(7=_{a{jg&AdaCZ1c888LcWDlhok2iZ zQh%Qw4+3u-pMK{=b|imG5^1*?;_u1)g|LycctsuCq2JpiUg;34BSvqMP9r-;dE1$|l#whXygH)Z zZyfO8+VI*AJz`=#i~=-~vBXH-QK42wXSS=VuR!C(uo#W20)gQ&BQb7COS%|zBFN2H z$)>ixN?x7FTm5_p(d}8`!-l47ck~6p1yT*+W!rlLR_l z4aT*oBga-mMw}tiF#V`AKD4JgHv4UVtP2(iYB8$dMb~-@D)hp|0R@tAAvzun_y_>B zRp2W}sctENbfypXu6@8-#+$GR0_yAr3ZTq$4`Da4B^0F%$&N%Xy9T!~+THy}#%FL* z`_Lsx+KR=Q;y^&NFH&2pOTv(h{)>3L^ESyh>rl5uBSXMA+I5^CQr>X?%O=kT(vK5z zMJntC&i5iPoTj(1YK+p%Y5ViPWz))EA-CQ3!UMKf<+xwb7{G9U%iS1|2TXZ0y5ikp zXHo;#5^yF&0K=-Hi^*)3%+SlkL>gXj9%If;$oB)OJgA|uoTOowhu$sFzE6)*^^)E%RE$&e`3QNIXz_E`U&~P;H(q`1P-(j(Tc#xPkW$aagr3SSDmTX zETh%L1DGS73jJpp%Be6X@w+3As#t_I7jD0EWv!r|`sa)~JJ2U7O)Viw$Sg6W4w64Q zEI18XHN3I67b;|Ua(@vlU_a?IKxq=rS(d?cUBkm?WFSW%Xl4T&O!BG$?Yq*7mCxcRubWTi`sN)LW1HC+vO#SYjm ztJy>h8*<#WR{IrS^#b_;Tv53=I7hTz@DCiwp`fcEq`}p!Gei9tY&-C)NC@@4Grpu* z!mcIfhaT4nc6?QE?NX$ag~+*1D(Wf*R*PwOeb2~bR1gU|@ttL$hMuzcWOkZFD!6#x;J*&pWjBUG^zzhxxb} z_AMNtt)r43xJKsRe1O>5^^<$Yty7e)oT3Yw?^lA)e(u*`_)8dMdauW8o3q`x9mmHF%Yr4xVL)Rz+{ z*9^%`ZbwKJ1NxRVeGYUng1hLLRJ;E^UDxJ3qE@;25?Y6+5JF0xH7}|-?ShaZi9kqZ za1uZU>Ms9scIgFP@JX!}PaF$Xw6$2l+d=J8A}yN z!;5M4nKzhb`ANm={P@jGj6hl_YG6$*Iu99Ya#Lyux{+2Uvy&D>$ZaTSN{I?;!IDDn z8=^4OHY{+y!ztJC3^d)|EF9F4q!+0e)0Q?cmL5rGyDUIxIe3?i?%$YcMaH*IWL_Ny zIC>lrnW9T^-Y)-4af{x4!-UC4F&L7J*11}ne->i%52RQi>Hhr1bd7-;nqon=)Y#~- zbsgvuih8YSHvA#iur!mjY(zmZIeGgy5uEhzVrzFF(7P^eZdLHzI?vKOew3xDn!*gX z((_+QTu;!~4lW-JeL+p7o+Hy`^5ri*gY07-xJ2CG1CVq$DHDXKfH_IqDx0JjVNXbs z0uO0~W|unQJw%B!!6SDd>{Awe(x4@|CvA8aHT<&IB^(x!6_z2!6Uy6+^hFgnFY!2$ zs_#J`Gg{kvpy--(5rd%#5U;mzRy{~>N? z$|URtuaeI3ex|iTsCOu;VzR=|8Rk4Lbty+$3R~y*1nzU<3dF($wd97lpwF>@{~(-~ z$f6;%k>yw-$(8!=@de6$$nj8YLy^=5u*d4r0qFE|(z-Fs8ZdGdVUxS3=7Z`V=@mJX zmrDNm4zoX~{=?9?GW6yd0rtICiDd9U-DJ4lI&Qule&(Rdk0@!5Kl!-N;rSt+ZTN2# z%Fhm;0w@=~ZFpk-zTFHt2Cql##`CpFwaV1A?cd4XFp4hrryLwy4y+sskfpR%+4BPg zAb72L*Y(}N{gJogAzWG{!YW)k;%!@4DZ?7gOL39bN0^<7uL5S)-K{@&y7SeVpG|&U zfFXydYx+V)#@-pg#PF0n9<5zSFU50e>SU$Dy?B`P({8jW;&LVpK*!T-@0NkYTNu`r z=uALxNV1GugbE4e1L?s<>{mMj`NfFm5{#OcG8>;;gU1+d^g>+6y1ouI`&^L+L1XT! zZsiGmhn4tqTZ1*mly=P%?S;kHd~O-0fo~uHQK_BOrF@?X>NRj${*{@HypCuEM@p1p zj8*__G5PLALrZo{>=RIk?O7!;PAhLe@N&_R#`&;CK)(uzUMrSj19lp689X!?GI*X; zj8*Ob(%jSe3MSE9KP7Q1_X1R6ObQ)%ChD4-ru+BHr@(~BCUs`-ZGknJCrX$vXnaQd zpf=(~@PS&}8l>BSeA+MzN_E%M8#q?a-GtrkR(Zi}Ja348BWA1+d;0~d=#~9m>P-Cv z$+6N5iM3I7_i)*F#1xEo$jQl%k5QqtMY^;9?u*^arf!mp zlv}T3Yfg?+b@@V!N-A>nmWk955eoe)qa~t*A1?U9nJQ5D$P?_yOMA7fn|QX&fArC_ zr&)Sh0zm|(J&-&T271MS|6yxkRj8RthZGD&>L-h`B2cb)48>+1hDayxRNH3q)c06K z87Z3eb}Q@Nm#zY0!c@10R61^7%s5E6%laH)@)dk-TIl}jnKG;7#GujLcysHlvhAc0 zO#!~$1eGYY9@n&Tz-9pLmWeN`&`%~0TQNrOR;?%RP3JKP04IycW1mO7a^Xpe1lrzS z!oIIL)bwd4Dw!m&c5Vfd<9VTeJ%G1 zbo0ijc{9$sE$fIt&})+ccl;1SaPisBSGNx1b5nyr1yG)`1~MsOb3tg`O(CkHZFp+fyX-iDObVPFz!zqPSpmq}*e zT#Kp!i0A)Nt}+N{EI*2{(MXjgh=Z^GQD`w^w#2u|8FYrin1P$pBwuTQXVVCbgLD)~ zj&FTY%9sCizC$kO%U3jYUJIxK*=olKLf@suD^Rld;wbG)F7E!oB2u=yqMnu?(U0>P zOWz=EdgT#a4*kxXdT@cT)yq=e%TNe7JWKaKDx(x1Sb|nt$y(xmDj?HcQ(}Md=x5|3 z31qKfmiJII*w%iEK9J4SExNOj`f#Bl5!AJpjb@${2ts_Idh~FT$vXI}82M!Iu)SjE z;qUWbhvZ`4=@Y)~FhCOU@WXxQZ{!(TtrhJk#M+gG8#w8CHT8|Us(p-Y0!bm!2EcDS zhRR>W_@P+$mt`x*_|j(>-WotPy;Az1F9;$oD2RB_BCP=aE7~EL1rQz7JrM{Ze_X zepw;l0V?|ocj;xfN}$A}F6CiPmR4iLgqy1Z)J6+h4&;ALu%G@4AbD2Om7M`#JMlXK?8hxpa<(Hb_d;!h{r40#;)zKZ6ym z!Mt-XE&?s4uvEE}*QZ%b!uFYQx@=?&m~M!vGEXPwQ9{{eYT#%}AMIaA%`&Usqk79~ zNg_{DT82m+MCcUQvk}QQOaZLrkR$fv@LyHrwTpOXTr+4Ykczw;SWVMV` zci}aDsCHrKDA}Yc+Y@fM# zN?ZMLU*pv(k3meFtnCZ;-kOQh4aILsE2O|~b)fvvC~U{$?m2_Ktl(7L__R5KeD%7X z2eTDbfw+YG$&)$-Jq^i9e;!S_5bT*OuFYuMT5vW+KMWEa1AIJv6C|l zaW6?;a0>@P^@s!WCmHXl?Ij$co$q=n0&$R?yu3-n0Q!&ok(r5tSz-K~@LO{>BjbNO zIA4$%R|;+|GAlh^i*xm(`G3$}88$psSl>#mXz1M4Oq!sPJ8jP|ljkLSFf@H1&p06s zzQ>nIaX*z5Zb3zDD8Ob|5#@Ui0krc*-cJNdF+17$J+YP&V}R4p)+j4Gt_-}(k)*{D-jdP7BCf?GFFrn-RhF|mD}3aPPfP;inC26eYKwU%3>d|~--@4k#O+T( z*h-VokY6x_>Dqi7T`{Zg5kEwH&X9!D_O^|?-nOp4!xr*#4FK(!C` z+XgF2C*Q6@{KE~aEmZ!@&&Sh;fM6NFa7ca)%6ZLEiy|3_1WI+5VF!r*BnI__(MbVp zIU%SU2db)7xT$&SV%T`e?8P0TMvhOklP4Uv`psT6he$9548 zU3l!p^jE58@-awn2+{%_XtG)yU^h+=4Dmmo+>uH*wX33dJrb)I)HBrQ_j!ZfaYKGpXe#6UvP>Ki9u%&6M33 z)FM6rb?H2*22%RGouU{MaS_lo<;jd16dBR8WYPRoV%{O}e3C^dMkT|T?8z^eA z4Kg^$UPq9qsKyamM|*Or6F}YKlqSJY#X~Q{e|$5{us@4Fw%>c*dqp2lNlA*=n#*uI zp4Au%sD+smyWJ4mSvSzL3qyA?!k(EZ*_nFkv5A|IQ+O5x>+B~Y6lk+@oMnd7p{+J53K9Nk0jmP)rUFc+-9=xFN+la+$eA=2{ zjlVK5M8McXcdqJs)DMjrU!u5nL^35wh)vN9iK-#0BVcd#{ImZbXO59Z5d~&QTiS#k zf4HJy!FYiQ35@5esLJyz4hXLWF|;0}M_sJm=<-0(qk?Lx|M0VN!(Z|Wm-_<}L$yZa z492w`@WwiQBs9${5(jmR*J1{PWVb3#i(I}JcHE&UKwGdLmAd#|NoDO==er!D2EljT zJ&wgo^KsUZDb@$3ic-ygNK(LZ#{l6DG&dyN77zF*D8;0a#vaaYvx)p-f#u?e+ZYN;$uz56W*2ToHwgT$c_y7{uz>wJNm+=`BT28Aml|&e;g?7+n{BR zWB2qE{_>r$Ly1|HEC8*3nLf$AK(=8WlmP<8NIdG0wvmKJtOg3h#TwP$NLiQOV!=aq zB~Y~QxGO%Gl0%7F?YA`J^3vmNMCkh8ZX&2V*ZFxTXU=3a|MXHdzz;3AG)1dXTYF8I zJ>szZo;@lOIUfnw0~_d>7+lwcWQ%<8-=aNJ*JMX17vDwfs$5^96lgxk3UZOCUP%|8 z$%ue-Cg`n)9l)2zk>0-w>>d7OUTRO{98%Z#%yH%fR!xs)14Y}dt+If?*FVcgmmfA9U29HL%a3G&=+71CIX zFx<0i;WtlN-Myoe=xRHGMp{=tvo4Ky3Y8&S0kpC<;16H1pXV^3%vo6uH>X>`pIttZmm^g1Xcn5vKgUT@5`GJ=a(Mq5lbjptVT`k5 zKCD#`1=!UEqNP*ELJUOW9PloT8aRf@0M}hs_v02mW|h4W`61GfgxoYM^7cnwToP$a zX~@70e%*5ZZ)3aKl==}Zqg19qF%H!|Xa2Fpl6*04VX9incee>xC%^$Z`V%8pf% zVTfq2a^76MWbxI@C0H|F8z_~+i7o}^h3@-F%la!IQ}``by$$w@(_4m+9O-ZxExgYd9s%mrHRxjN7aI0;2G_9?&tXuzYN3T!gIuQ6!T?>spRaDR&QY&lg zI*F?H%d@Y>JkkKy!OyA_>`Zq|Am5pquy(a&iN8H~Is-u@+;1k+ncgRI1mMjmks z-g+E$WVeS{9Rya5WIRuVlQRN=8#qiYhuSB1aGXd)_~);N&5{W&>s?it;yz+Er?-Ti zKK`&v^@Vtsl~%&utI{u@Qgg*6wcoonT|;aTT#K9hp!B}7uAz9IO=p>7bHUna-T&#@ z)Eazz8~EP8MW=g1Khl$e7zw+WMSgK$f#3lCDfWcF&CH>ZX3c_oDzUt%p!2a#=81@^ z;!+w+GFhZwm{b3Ay1LzJ_4k1P4?c-k!GtW-e5hFpBNw4Yq zboYYDyWfESZeFp*ZiAX6ZR6@BVt0Q|1JaQoaH>F)+Fj^byN9l2vh8EtX6XMf1OC!L zcRoqkT-{u%`an&V_h?p8a}6R3MRlQ0{nARaT?fFAzGN~p)?Tvha1yv(3Rxy4J;EA4 z6%-x1_3YKqaJ(e!Ht0mqK)#{$JZ!iHSA9Mp^SWyL))^VpBO=a;{H#d)4_TT{11*sJ z@jvj=R9wT|x*5<8ebJ3&b;H|wrq|fDd|4|>9`Hs+1`0EsySf445M^LOsh|GNYO`N? zd>>t+e=hZ%TuAofwg)wQr(~}OYpU_n)`3*dHyW9t;aLp|pR|uyg^-Vc*`I1O2V=%| zObzTw14tP5*~%vPyP@zyXdb1|GNu6kKLEguZjqJMLd9P%n6G|E0-j{!XJKckdIU7( z>>daXfZ&r_>Tb_WCM9(LI$bIb_w$FNS>Hv0aRzA9fYc`D8-7Y(NqY`WJ^Mwhki z_h-uKw}#aW9FJ^i6BzFJgD2CbjL2M}6AZ z4on4-4}Y`UNSVIXhM)mz=~3Dy&Rz!RQqA1Ra8EfZ_Dpg&zB~4T%)h|jcns~IBZhGd zX2=E}G5PdUX;IMzzkDAQ5C?!(Xl8X(dvP?C+NGXVc#1(ZATT3aXp!fggl?p`W={10 z8%9cC=|pJYT`t9M-Zz_jWz3kCoUj|8@y~4#;Uu7UU@>r6a*oYU6}m=$Qw;6MrltR+ zlP>*Lkd-uaS+=#MTMa&X1bBiN23{{_QaIqsV z<1hFZT(LSZ(f=^*^p_G1FS)^(n%{gjLW$1ra3qLWVuGgw4S@BJhEAvKP)rE4E&m?8 z`Zux$XezjE%Esb=i`nt_`-8W^?`Pqi&=&DluUYu72#GiURVaIuxoz9GbVrNWYNPej z>Xj|E=jbsr6Lyfb%q^g!=~t?w&q-;4M@_X2A0~cWm+qA+N&D2N{gVGoB-C{@((xkM zl6;N-`(+Ka+{0;)#V+!iqgV{fB6)OP|7X2r)+&b#W8?2w+VKfb*s0DmQr?VUFEiaZ zG)ucEcn&po_b8o$;gAC;Y;*mWQ7s{iG~{L013d5PYDkK0YEw%#ct{#na?SVD;Ho73 zQSc8i>=b=8aHX zMJdv5e6{j*jjO`u9mBRGbkRvRGMhfe8&k7 z?0vfv+w6Gt1XvE&i#SoM)RA1It8#LTxMHDuo1nh~-?{Vs-!}t=6=bITjpC}qAeA(* zGhQ3hM8+4|ad?)6U6|wQHy~(Estw7z;weg*#d$UY?SK0yE_1aY!GaE;z~-G)6P8R0;l=2&;VH zTEO63h^`=BMOTCGi>A^Ym|$H~7{Vp?7}IW#09w#qMJtC9I`5ZY-S1NnbWpZ2GfdOG z-mZT#WkN+*n;0Mvw_}Dmwpff3iD}HZar@FsEX;G&ZUJ1sq5Mw`K9$A~PFbNVI;&p> zF_NYtt-KFOe5SfN!LcT9nVnOT!gH7%2_?&v2)Us=mNmo~FmYm|cw-DV#&Cq}r@rid zY>U1ymirKx!eg^gKCRX<05>Y8(8&0ksfr$o;Yy$v?~%qlq`(4-6$>-0DLziwYKDEy z0k(%Rl8I5a^9&gwQ8ZS}2ALO1iiV^J(vTgCCfNSONwyp&d?Vmv)Be$|q_a$YLJb0wv37D>>il>5NLWrXn{CXU61C zOfdl5)Js#y7AcKxE%k|==~A#=$G~u2m_&hYQa5-0g1zBg#@yV~t5tbbSaRX(-Ja5) zG(0kSBsB)-2OTraoUg&OY=vbO;e(!*J0Ec9g$_FXIud-1`6$o|tBtG4&|dt#!DfAW zDP|f0jiPn@`wrw$J+syR=e2>o4H}#Zl@}AJw>Snp1t6_WWa156O5nI>wXgNm)5>AJ zLB9Kpauv9Vsh=%Oft-s1@E*R#H-M{u%dOr59s>4F}H>4edfy43cie_}TlNd1D{KGIo*GyOBHbq0mqL+TU^>i7H=gfL5p% z%#AtX)Dab)w{&jGaA;Cy?70TM0>PtZ=(Lt!jQ2iUJh>%%x|wLtIR2V_DWvLu?|5St}b#)Vs!VtNAPy4G0zz=u9>s)WsaWnN?Lo#~Z=87W!tJ8(m7YY#z3 zK^NWhj+kFS$-#T`qE{?1{8YTQAUM!8seZUicw*)&i}TqMFVk8(k=Bo(w)I2MB`BPx zsc&>@zfjy1_}0q#WFvs>KD2GAXdxcHwcBi1%vHh|sr~3~d=VnrBQ>za-P7`f11}`l z9eAT_IYm1HNiFebO-Z&4be=3EpXd@f<#Y7=UlWrwBnEbjp-<57eA}RHQCv*^D;6U%Z@@$ZOk$B$V^0yxcugFuSsrDHU*tFi ziLtA513;_!t&)s;c8SPbo8etySkt2T=6Su1Py>=gVHTJr0g;xB6WKS^E1WDkM){Kj z{R|x8Tp8nlvce8Vy3*o<`h&L?*zq*NaDchH!v_>fviH{IaWY)gqI~F@wHqGsp6<8{R0FNO zQU?6#gz{?XWFM8kvZAvBrjo?#A1vB2EMT`yJg0^*hZrlbu;7et!h?e*gXwqya6eZL zQRDXm9q-{bqGG-jg{vAKekj^$s75&bFs4y?l^EcHly9Hlyh_9&S93IN3pHC>6%J9Z ztW7<>#|inhquGOXAg8AUHLd+0Cj17ikQ48L_A;itFvir!7aA;!re^RN)`}KCj}$MN z0Qwopq%q{PB%rLU-vc_%6evcSBRmi%h*k0${2*gr+W{Z4~@abM3mt8S1fRp@~ z<8jaumCnXp(~${<%5ig_H3>lz5t;+giRuc#d#=C6pU=#r_aC-8vBFQlvsCFS8`F8f zm^m_wk#W?-Twd$_lqOj`Nsm?rqV%P#K?+6%`>f5;;Sa4HCD?kD;J(KeH)aX%T<%aU z;%G%#`%j=f+o)K@J1*)UsoSUPP_{||TGl-ZY^2YJ#7ZHtDmUlD_G6i5@rG;+*KFFN z|NXTbT0aKnw9U|2rIE?Z^Z<)Sp1uh80Vk~ZR_8I$D@!n3K4hJ>(O00*M;&Ude%NJg zRv^yvOKltwYeaz?B&9y?v0@k148SUD9w3Ft-{?1zJ0xP5bEs3r3X1+$ATPBdINbCNBGzxNnp@SJR}bxe$IKSNNCBJlKSx9QcCKFu?ooM*6ef`mU+9@@Y1 z!kY8b*YR~<#aewpBeF=E6vgt@Q7y;QYxk_*PKla?c-0#Iej5b2(-ym`zDcNPW)~Jh zEsXK0R-mDm)y5@fhosS%-FE-ohMI=O<7vQffy&E>QbCE_*5;r7LYMRXtA?M_E=SO$ z#h$^+&w#NT$F}9cJ^~W;HiYfS5K2j^?L({+hG2F4wIgcurFBVNRG&Xharyv6KRri? z|EeQ2&i0~mKo+M66l(_F;{7&ahA`_8yNa&hgf}u*i_=YzfDzC^Y*|F-tb6uhCp>+o z`{*VUv{O$y@nf_z5E~xIe%;bs-xWit3D>nE2{9QECmH-`FN40MGUQnuOX=!VSWV^Lh9MLe{bH9S{J~K;@e}7>=_(2 zTB|b>S|v5hy%xNobR$Pfg{NkALlZ!IzJ?e{GC4~`a6WColi;Kbnk((>5jOmre)6QK zL&QaO2HLgw8hqUg{xti`wV$Wu)COw?CgF%2G!0%-^V1CEApc&nvYikqH(=+^lxRP& z=)_^BN>iy@i_YXweV-{mc>%27#r7QlJ;RrN55?x^r=9Y|+C2dQ=7CS``T9R&!L9Nk z)v#2L>|2+B>X3p-B-Na*<&3ZDJBGnZ*k5bPk^sIGYOViB5SNHg($Wz#6Ug7Y*LHD3rO4GxNfw1#yapNlCbys`0ZxuBLz-V*Aq z%2Ib8+ygLQYY5q$`T2B9S!^`IDpFryJVR?sOmxuY(bFEVo-}|D9)2Ms-?FY)PyS|_ zIoJ|Ty(8{ov~v4E4eR;#jt{#A!h9?6NH0|by#gAh*l)w>9VTtyzo(PP(lYZ){&Cz6 z>JM9UJB-R9z^6{XOI#Me@?2jFuPLBVR;bCk$p3g;Ly#83HrFltjh~a%p)v_|nzWgi zx15bL2Yaiv%$dic=f;<^1shZx*D;TKa$Zxie4OYv0C^y!thpo@=~jrrq{^`T zI&r9%?Bfa=AaKl<~}#8j+3+Is5L_no>b#Z6ggPdt%WC= zTBtH4gPmXCNM2Atk-wc-+svb79y*anJmU~QgR^iJC{8)z!F4;zG$|sa$Q)cjTUrh? zDkV+=y-+1^uoVwA5s0h0NHJs$jFwaPsJvgNtN@gBWEwc#B(T+}1w+WJP^FE&(qTFk zydZ!hlhdtidlxX%`q@}Y5ZM~H-DwFE9tRrLG5VbKrYyNd2wWu`NSLwV!dTWz)2K!Q zu#{E{O8iB@Rbnw)NypP+G7um83wpS}%08elW1w>^f&Y`t^%x?xY~28p&nOQ_j+)*~S=) z)wO~#9@3pKuaekRep<$EQ$c(+U%8P$bNR4Q+wlZ zIgV7wz^pCet0}*jVt#pCADC~CpA_~*5Tx?nT9-hC#Kdfn4M7Il$67t)2(UAhj*nyh z;3Bdoa%-X)HLSQoz2h6Hwq7D%vlVW~iBNr{P(gH{b5|SQYq=&kUvcf%`g-X`0z$%a zE>Os|>n-8s9zC}31v1CbOo?gAQxh;wYdPA)?3au&gK)p%+S4@^p4$cr5~$y= zi?W#GM$`LdUSS4))}~v#t+tjJ@Pg_Q@4`>we0R^kmjfpBoRs;y zT~p(SSID(xY9H9p+rKutu2GS&>-b5Ie=h~ z3YHX<>b@O%%DDKO#dSCmdQw%}G@F+xU2G-oqoRyr3TluWg>e&1ri&UF=~iKie_74G zs80HdXZ)kQx2E%5FK_@WMj>;~@&W5&?T$eVr2!aZsNlgm=f&T>yWPicKN|22%YP(w zi%{GPDNN!Q*3_Yya^p?aZsIA}{s8;@Ny6H~1>jpc|8`MPUdK?Vx3kG?+!LVEDq_TP!7<(?jUNE@V7M1fbelQ1NQ-RvwZF^ZXxF>xNsVdhrZ*zbSa zMbs|H!}n2}qH6BW-X!V^h|-nF2)l2xsIEv!&4z~k)wUU5iVNiOS{;KY?$rs_oSt5@ zS7=mDnTML?{vjI)Z!qW4LPu>{mO9YwHEMe4@m>kj*~Z*id_7jpj%gQ6E09sd*Nl@; z`9KNGoL2@K>Ubrvvq!wNwSu}ym}4cU%a2=MEGP2G`|yV@4#-^WlAfa(!l|UG$~xfx zH0QdW%ij?S>mI$tNfa;tAEEff4xr7Y8P+eW(`Rmr7M7_hZ8}m%Ii2v+5s?S#c?XGF z{SrCm+7uaCAi@p{y=*NOB@G$ywE;QLICH_TV0NB2R*RpU1X+Ix4%E$&qf67ZfMpjl zHYSFL8)T-}WT8aeS+07TK~+we+}oH*jO5h;wJOGP#KYMYHp}7WZbZ6#%~CFws2fy>EnbjcD-c+ z{OoEtX>?1<FGWt7KN}e?>_#xYD=Rf<*WEB+nml7{)PF zyFCN0<3(^HnLyXV+qet`kroBcGUr^A(!lVSNH=V&Sx{w-GXQ}7iouOR7rQ@gXQ;bD zqvldTn)f7pQXxux=u8NRvF6So*KBN5W{sD{d?sfhu(#IX2ca@CPeR!+zm1=8-F$9x zCIpqvL_#3^dV$f`n|?H!eFzdh_K^L(6soFlN&`--`!LN zqSm|^{lt6;V4bv%0{>$$l6fVeZ+p+$h;4yjIpZ)G>%Y4mkN=Wh1a;vyz6@K@%l^E> zA44M=UIjsZR}5OigooYyFvV~1XbJj@NDxmBrmTEq*wa7x`)+!SGsyyL7gI+3y@&q8$G`;eYK*(-slemVy_1iw zY1SN1g+iDO@3C#-Hd463@SlbBuXI)Khj6aHaargL%1WiY`|&Iu644uYF%Sx60gog2 zr`L~A#7a3*S7hLK397^|&$BpwRn%K7cGnIbg&P6pSh}YOiY1ANr$=UwGbdCt;u4an z`ZMN>&;gl=XDH1&)&yQ;>l|ZsxC3bDr<%M&WADt2C;VV5Y%f<|MKzyT0x@nuQNq~> zI`=c5*cCc#1?{hy(V?yz`7IRsq?zc@9Ww+LwNbxoL)220Mbl1e>uE_P`t4ng3JI`z z6@ROltvG>YO!!{=WFJm>N6M44aA}05m5yK)272adFBw{LLl-64zEwsy%)I`G;G1Cj z)X!&QtKrm+&~l;oP!kLva4raM+zaNwd};WB_qL~-{KJ;r@Me9DgupvHzy}VEem(r~ zp5qq!`o=E4%t01aA?@wRh1jwjvEk~sn)Bz~eBsLb&5g1)b}&1*D9k5y7#Ho!M*; zynT-j($&C8L&Mft#OR$dO?y@aMYol7B7)bUm`dPH796FVJWPnmmrjHXIktlWnUC{< zdOS%8JMXcey4p7o1=)a{X?IqG$mxSK$vx8!->)r1ln=s8M+|0^%0)OWz83lynw%MWp;vNdv0*( z=h@EKp!~mnV|-3mSLme_b0I1&4NOkz*tus?G_5`n=?Mb+vR_{7i8SJ@A1fXxr*S0dD}j2uS9AR`G$-P0SygBHC+SrQa0qQO?!b|MtF-bdx9_OWN~Zq3_$*Mc z7V`3$5pHR+vd)+2ZTsiqFf34MqwlsUN};3mqg77SWr~V;Jc~e%cc`xKj@5@9H?;MD zJd7aJF;+mZt!d!U4#+Mr^dS-UMB0Tt4zhBHYvbv}dv}_CE|{EbM>kz5&C_Q4&B(CV zKxq+g`{n~Y$${f^G>Zy4dKRQ~TJ3MOlYeni25!ESh^YkY!YObcBNa=rye4IIR=c?B zyj$v|7ub;IEM6q*(Mx{tKFY1B*4)Rc`nEy1gZhtHT7Lobb2|Fd>R)R2dRdE)tBf?~ z%LAB}-WSFGSq`&jN`@I?Vqc-PYVmNc&s3c!7e7uM|Dt!p_V69q`Eu2M9rqYgz8Fv4+D+h&TlnS}q5_izIK%dLaWY+xLhGb@v&_->5+OJ*8oE z8GB=5Wme0jn`FQ43Ao75R9EYz+8619~*;pfPT)~=2&g{A;>^;CIlz|?9f9i#>Y8m+c z?f7`p7s`dE-n=tb4*XPkOtQ=kx;VW`3jBA6I%y7N-LMYj^9$d@1M{9ofSBH`osgC8 zQ5>U2Gsrzhr+pCkDck!B`67!9L0`xn-+`>hc3(}cs`-`_Z+{UWu&Z(go$h6?<4!|7 zDxt-Pa|d(+y^fgyyX&&0|BU3*C-v#x$pyC1%s9MZf+<9Q#A-lb#n3})_Li1w5d;4` z!7yeV7@MDA-&;dVMPXo}6r;kqE;mr@6F0L8sg6Wbeysae= z{ON!eSJfG4kI-Q$D>xr>KaVNFoA$T#V5zZ0*62@8yu;86IbEh*B<0E&b+>zd_Ei6jB_1js+WEZ%*G-nqp-b6RQ`Wd;3lTtoS|$j+ z#zo(L@!m<|#7mh^ctzKu^968V6D5&)sKi7k%lZ_bt82VBmrhiTG)^>R`ylm|@CZVT zy#HP6Bxu+@BeeoA&Is<3=&@|I?{>Y#=Mw`jp5M zdSfBVco@h2)9WqoNhSNO#SdRw*Ro~(>qm+Ok1ByUIJu@=fiWKkywcw>W7@wtdYIjt z0jn6A!(XsD$W$iuWYULXHcP?=t z{!4QR1A_5I3D!wC#3@>wz^)ks7Z5Zyd8O%Vy~)ER60UH}GVU}WNZ8+$JtDu2IX^!t zQWQT5FdMO`7k+V`!>ZTP_Yi4dF8kI(^Lvw;oA)=rnfoc(b7Q|>XN<~M4i$@spRq0= zV;%){Scf)X{3j9u-8CJ?j~2>SpQ4!jvV=1N@@vb3Qp1zNaEgs|059W~5Bl-9vXT!T zK{pM_4-^VxbM)s^HpuY5MH%`z5+NS7m3-Fe)+oE%4Fw3D%ypi%PFlpak_@_v40?U= zLf2$=fl_oxkjSWr+FzO}O7GB!)jJ42-U9lqFK+{JV*WuORDSErU|M$DqU0FKeG%PN zmOpWU;~E~Rg3wu!HRR6cLQ(p2ne@uDZjRHvcyXytf+$b1(l#B;VaC;doZyJN)Wz4< zV`V#5q4dVGZ{P3goja>17~z^mC0?r1Gztyui>Cfj8Liw`gG3Sk0$6%@DP~cK8?k|- zPwLd%Lr*Y<)DYP#x{CB*!?>2L~)))Z`5usyai z1@BXhbe~f*DS#>reAqebZ`%oMZ|_22?@BFOdxAInW0!&e&CN-Vvz(rNaUg=$a8s0MRQs7XpqXc!pOZ-Yr*uZTAVle!f8&ev*sc zsXa=;YX`JpH-YB5kniF|Z#twty2T7mfu}p|cR_Z(Zms{wr!jOgb)5e-cpkMptvhJe z^?WqwR%5{#5qh)pF54*4Pk7m6N>!{} z1=P_&jEJCI=QJO!4$i9zVB{f?>&Mi}JWk={W_ve~H$_S!?E3e_9~Jo9+CY}SF=8fZ z#?;cQR{1sj4F%$^?G2B-y|^haY91fbZZw!aB3c0A5d zT{kXFo=Z3a``Vk^kg}Bj;wuawM><1ubGHY)=+yFIu{1VwYI59I^Tn7zd`Kt)^suLW zeF}6MOvzfccN?!4O#z%3T4JNuZs%38ciV{_$9V1*$XHg(hj*%i%>$2CU@_LT?6S&E zv&tVL-u-Rac3kZ|S%uLKiHXSeyip08yOPc(bE9##YLKt21{5>VbGhwC%{7L{@dJ`V zad^^^fq1u%10$zh{6t>}F@K8nZwAhxZ8QNJJ>-pVjnz6+ph1#0vPg-|k?_**t#)^m8;rqd9~^o1#QqrO$GS;!h_H`tQ$ujI#^+wxM- z34VEH0N_SBql+n>_!kq^Su{Dq2)(W1@;Pxsn^+X2wo>;4J&G16RpL!RQ#jISvt|o7zE)8?`3QKwao3-XE-zy? z;L>_i4wv_L++ID0E+;VbI1n-^#gEKe%WXoak1CiziJp;}d|&9Ma_wRx?SxG3GX|@B z-4K_ZlZ`IR=k5jPZg%e=MmQwElQOQIB3-``J;2_%vOYxichFLA&^u|PT=F?*W;#HX zHiju+6oh9{(@VP2pY9x~RgouLpr+?wEJ_TPD<2$VyE0!pesem6IQtmwqC||CCB+EX zPUE&iQE_R4`{4hj{yx@J3f1!xv=n{xep(xfX)8v*QqC^pE{0~may{DRflYLp&LMT>@Kj78`)+( z`6B?M99=V~JN=83@4s{X@sUXTPww?3-igDMY}v%NU$tko^n4ZD8OD_o)(uL6MZ3QB zQ1+jw_79EUX>{XK;K6mwRST=!ZJcmwC$7YeK@;(V?skyRG)GEQtZk*%1DW$ z8qU~MHIHOdb|#n7CgRo*xdl^!a;NSA5EP^VI*9K{X5a=26v7way8s&J;1saV^RjH!(CE)Ov>k_$#MId*XCFnwj$;pp4y%r+D}JDE(Vw-;mh3YS#Pql;*VQe zYXBG$l!R`J$>3eRzmE|BZt;l6aO=my+g|4o0o;{tp5`oHAfN!%~pvhJ#($zG^{Rl@;;`9DJJJIerz@MMcD=A$IE z3AotqlckqE_jxoJ2E?-zU!@4G9$Rx0LXH}$)mZ>$7my}YlHNQWHDaHZi5ZNkkZ`75 zQ4~^tD&$e5E}1ty-`St7p# zrFFN#4VC|kbS{$Pjn>@zr&d|*;8A83`ipI7HEah)r!EyB^oWkbfdC>73b!cOl#g_` z$(MX0Tmh*28{ewg*V6lOt2XwRjJv`W4ol+T+v+v@qj$u7rTiE-U>Qn4FE_61xv6rb z!GjHa6wCup|1Nv;U8+p^E zXe&Pq=fba|yN0>%QXc2@*PB>9)t8+IS$HQZW@v$OA}Wk$G{ucK_HuKNdGFR#38d?I zCJSZ$=S()_q%E_4~_ruH#HnHJ# zdxZuC-C+Fp;O$4#_Ex&40O0H$E+p?cVXD2O9<*bVI5iF+obMZ6@#45wxo@NhRcSK{ zkt8pnir)$bP5*xa`#09N7!-+pf;dXXSCGtaI~-{7e4o|9T*dM#DxJ+h>v8e$<5R%J z;~e#+!IVsU+hE%=;^i(d&OSo6z#qoBzlXV+^zIpJsSYfziKLL4LU^MtQ?bVk^FqT&|v$V5NvCMWf< zZqGjD`iJ$kU+}nI$(ngZV7GaS5+tCP7kcmq{03nB5@iySuB#ndJZ()4DLMUTlzRt_ zSe4v>dtaPr`ccm&b--mz(!sU%Os+bQ#ma%q#0&pX$h)Ulg1akM_g(#V?;t%K(d|RB?&F@ek3!85=FPPKI>ZLp-0wmkaFI-Tjk+!_&lw5UBkKBW zyH?^sdWt z)=7>a2h&B#*HLjv^%SXfBk=Z*IG;VXhB;BGcAURyp)dpn=fsZ_m*IHOqCi)%>gRXJ zO;FH)xEhA%Tmsp*q+9M=IMIQUJ-q0px~DUiWC0V~x+BiE68`ntvn#dlxq1g-b{F2V zqriO}e)^tZt0!vBUz6hA(72!o*dPGYGzb5Aa}!kOe;HEw7rtz$2^vXt1ocai>};e4 zYtI8+=n?x&RW4l~RF9A9j~dr0j4^Y@*r5zRWhR2dT3-sP1l~CMt;Ybe@|63fb@xHd zg&k3Yo_cU(a@&}%BTWQ1g8mnrcHmHexaiG%3 z%23ctL7ubYFxPeC0mGDin>DL2#{yJZ@3Y10e;i5Z96eXUqDPiS%6D;iA(J?`t>+D- zS1MxQ3&*0snHhq$N=uc^9AbhuA~aj+IP_A`-?I#%Sx}eC(%VnOd6t!}f1ZMU5NmZ= zkIIza(H|SvSihr~A`w+W{b=Kt3jG-*>3WO8j#K3J{3H8*1n^RqUaP%>Ls)6fb1`^z z{4o=O{1#Imc6jB?FBc2bUh6YAiSS;{rK}>IsVqs2u~Z#E(Fn>B(!czqM#S{+=)rSa z@_1VG+bW|lGqBUOH%%_h(&jj8aXYJzp`H`k4z@{FRE}H);qv`#5 zngPu@gg6h!P0h=%JbP0V%Yp4#lZhDHOpbGvTSAPhe04>#^BKK1=x4 z&NamU3^<2WYwhXZNFqBTld0Db;x)5|t)wh@~i= z>Q(Ch^yVMkXe4J2shyGajlJG%q)~mj%_JnKk%{x9E*8GqcA(c`ejKM+zS5W+1M4)q z-opv_stCh9qBYvGz|QJ^_}zUCh9Q|mCG~r9khgbKL9@I7;yk$R^B)?{ap0eeNM1^# zk1;%u@_O8aTE)5h3ht{n1JQ9C{XH2O#kdXgmvlA17ijV?d@F2~6M3SV?SI>~q7~sj zmT3cDySC}m*$I0`$BQs>g&DlN6gl1M*yuUM&}vMIAb;V$t6)Z9xS8VJ2~XVIc#6Nz zMrxy$HPQtDKNqA^i^|NawSvta*nY@5F(*THz*-{5Ddc-LiyUT?swMiyeq zh~zY37Fs1H&uBHVixqR4vvpJFodKt?lk2%sj(`CzSvTw*h%d?R`6$Npl6;S6HMFdW zhcb(QSH(cAPvzDg->2^o(gfZ8!2#w?bF9KQBW~yUjDUT?4M=ajeq03BTA8Sk?QI6q zDPD!ta3tI(=gkH<0mx>0e%TlE%3CyJ=vFoV{cOGTB61jzG%b!+x|rAZCzmQv$Rz!# zkfi!`)8N~q||EI5Li_|W|C(Alb)y0*uRDPUqv!h`idJDsX%QM}QOzQ!@h{e<2Rn^-9Vb~E&FFVd++Nx_o8eY+5t_MQ^ z9*BQTDEfo5#7ut$zpAM<@2f9#1&MnrSB4yH`pjNzB#ZW2iqjnZ4hE0ryHYJ_ulSO_ z(T0^bX?Rzup)qgedRjj0dy$XsxPSVLeDaR<@>$RmPrYfs%X9jh2>{LFy*qG@z6Wl8|EBG+#qwH~x$jqPcdAXy) z!dr&EUVpkoU=e`2Fj`L0Rv8m0Kp032mJ!}y4`R6q`IHE!UwR;?X~1AIuq6J1NW1LG zt_^bjXvfp6oplpJA=#Gi-vI*=2S9K3alV-f9SKoIB}9my_Xk}^_4SD^`y~Hhw{rM0 z+D+9iMrnT`TG;m$0oyOCI4RwGOM%TvaKG6)t~zY4ja^hbp>jpU;XYL@oeV^FF;WBy z3k;^3r>bsBOcOqM|(2#C!Aj^XbRk_oYtD4;hAi|Q(tcr zeTjV*Dou+1sf%H1O~<%6_Ar1M5;_Rf$!m3oLt!5RHNeITW_$*m^!Ys*u$^SQB6b-FFz%8z(L!< z-ij_2v1~f37PwLO`1)i_s75>y@$`$OsB4EH4OmlHY3$(s;}nL`%I%60>yaAggmqYX zN4ZlN*8yE6i@WNwdEnl+-K>9aP|6fgNqu=xtny=-^$9_rH1egWyQ6bFa4H2pf+TN^ zJ+~lpjp|LoqSZvWEvg;?S;w7bNTI)dQ)m#iaJI#Rue}g@Oct_&j_+*(?%LBRfH^8&MbR#Va^spre(cY|`)owzu0Pa!M(0N|cJUaP=>G zMrYv+B8HRRSyp z0IDPHvCGD}Cxp&p+s&QkIyq0MA~W_HAgS%ORb|>is|ccy{iUVJBO@TknO3p8Gu@buIX)&l zcKQ$a9bWt#^%i!3s!G961iA>MH0gTi}`s2E2xKJ@Ml z<3Qz?1k1=;P|9vDZ}NLQIcxb6XZg?ffu{pl1A3h3g`Sv77>Dt9K+4pCkFhP9_CwfAe=LHF?U4dHu$3OHoDzP z3D4xN=3vCGzNNM%HxGxYUh2v15lZ4Oq0ut%iUv7!ds_BSYkhXen)a%8o&@;wQtjE# zb6sxr1A6Si5sTrC!W)MzNHa%8W=7DS=4P16i_SJBx8U!LCt?EWBl~cs`YgsYs{&`u zR<{^nhRBPZ!&!s8qnwhv~gqq*wu3(Q?Tv%vSYncNBHhgM7w zghULC4VE{}^GpsyQnH|m$a`esUVL2ne-I=jkIIJkL7T-dG+A`M_9b;98-&r|#?2 zfi1!a6nE!I_wv2ReJ4%^AR6q&VF^tKL3FfQVI%YXX09NQ6Vif`I_-Qv_m$cum}%Mk(CQsDrCohR!00U@7}XxU=!7zG+{%VD+N7CYY8CEi>je8Y5?jqY6QXwg!*~9ySt@cm;6MvS|AObtaz+uMKn2zRUchz-IGpvxKWJGM% zgbg9n7mP~@wWWew%T%45b^Km9k>6;<7gi-h zu&Ch`I1tiSIsw8-d+!1;#*{;3%)1-(DEKwnEoF?5LBR>G(Z1u&Nkv)G4Ti~>2y874 zrc}9Ir2)^@z#KoBreDKY2h!MhEjyYU^pz@gR?t|{G`mq5`VCW^rgHV zQX8YLnB3raZZ+hfJMe&G2SB~h|2$JJy)%)+>25w(kc3Fnmf1fhtYFj0FJEp= z0o+PBm%Ke^h~L2r+Nc(E%W%{G7i67qc7QJ)tT|oF7n|0(>u(--Mf}AGz(0w_B9k8} zs4J1Ph=euofR4w$o5Qk(7@H-SYhT?M71Yurb2}(gqbMz4@$p)-7u%9u%7D@bKwnfr zDOhdIl?&e_masRq;T(tqH7kdFLvO{a?35n$OEmPfJ;}Y_1-NGb6L%%W9Hcjj3OhCeB27!;`Tj*+jz-$IZ>6eGh`+^SpfFK46aIE; zvIsg){T)BRMurC&;marQ*THVrYfb45wF7{aj}!p^KLEgVC-9$kI64yqo#h0Ny7f)N z=gKecbffbQJ|veO;0D1P&kLZ+V-RS)iF3C zA^a{!*1&jbVlQ^?15r@}x3QFs@B}g@>*g>sB^@5+_Y7lmo<$1UevJeKJ!&rvCPT{n zhnQhPTQyGgA@0|dY;u)Ol-6d=-CTG3D`=t7E0O1COgDibrW$9cq1YRzWJcNp6k0hJ z^7g+(8cS7Q`XA;yX(^iWFO1yP)tkfHFid>(6ZS>ShJDsH5QQq9p<;ABgzC6CM`b3H zHs{@uGROQc>sCwDe_M@#A(~iYD{m2Nl5?>%xOf!$+_O~`A zsyGZ6gO{VNzA(xfRd87hYYaIX4*`8UMb@jgUJu3?ROcNTjT&11`v}NpUldwTo9b;j z&I2QKw1rB9_`~3BZx?`COvC9H`8m5}sb3Q5N3k5l@Wo>P8OE*@ zD6y0w-mE}V=t&?43RDBb;#rm3vIeJRvxRxj{L7OZ`9MUk7x6f=)PHYvBmeuU1oHyL z0=m&7gl8%CmFX9^NQD&}(FiLO_ZqK}uweIX9{polxo6*VrLQ7>OGWPIRi=%(my&(* ze+tilIe8G*42PhQ0;%r|5TeVCy$5`6Gf**(4aQ{gR68)0kL9@ZP)ZFxbW*Pm?`Rzb z4Uh{cTLXkhbA7E;E>!5n!a1DW$@r{tPD06NjwY~?DY(L8Sj;93bkAH4m4LcdQL8v!|qj2TAF zOkh>=)-RjwVG|~VaP1Qf`Lw`imbu<&<-a!L6kfrxD2||ukL65taxow+%id&IloNT$ z^&D0&4b;KTlcn9zL*~=Sj3h=p4E3rB9B8SF#0oFDk3eNzMvP71#7&^exihYi%3D&x z82C8w_q14_6RR^Wbp#hzRsQtGlA}6-rFvG~6DZ?Qt9kx~UOrOa9Sj=J=y__XpB%>3xR3F2?x_!2s@=|0 z$)=^`+**5btK7^DZd1!K0rovNMAV7;wNmH)c{pQG$>)BdnT{UjPDCfKT&EPLy?i+<&+ry;BevLf zvl2KxEqYs@SQAVwbj*yvp-k248`_nO&abq$imT{KB;0Sa_S{(b`LvL*+CrqAdxG)u z;g6o6>%OTQ-zc17Mio7uimHWXPi%~0#?l#eBjLq+mZ-2tBbAeTkUck0=Dfq>(K;8$b{>t2>S^K7K1sntU4v0LE;@a&XP+Xxid=7TBlp4k zc#viJg5WYq=%5oWZbNbZaWzhpoums)n_yQa-%RM}fZ_tI7d0#>3A1XHV>T5b+kF80 zEt*YAAO--KW4q3EL#jO(t5Vm|e5jTf{jeNDMSAhO({g1GR{6#*T!w~Z$h{kjT7Ov(zbk8%Uqartd2C9v)J?O|R_8(YMeS$Czph0PZ|o+BYPwNozo zqLIzl1~m#2SM#sIF1C_EbT?j&dwjMv$_BTlCY6tY5#|zF4En%(3yX0}AoNyW9Mjzy z;d}a6h6~4Lzp!=4umelu1?uLhfj)Q-jebO~2uAbkzX#RnndnzQVl_H!Ew-J)Dn~Zq zm=3pZQ7pTsJm1t%uCuUuq-y{`I?jJGD%X_MD4oS>+W8Wh)=5t^U)z;NQ@me91?hnj z4tEBv&b$TvJP5DXl7#CsXznHt&wS694SGL=DuKYb)R9#ms&%aqxi(pvNYfv9RxMjI z%Oh#~9WZA``V9uz{-4qMZu#MumhZwv#?_)Q|82SpNRT{d+x`+VQ@D2v2KFft57Pk9 zf#2DEcPgV@t?ymUq9=<`(?~Nx4|B^Gdz6nXh1s*Fp+i{=MTkxm`a6Bmo&{Mo&ASg0}Rtx}2!McclMUeh?!9P(Ip0;_SSBJq&JCX2>sr2&6C%7^3ZezdA*aCdAN z{Q}!!-Hn9|U9bx!aO8Tn+v8;HlJJIUN}PYJNU|3KLh`Z=BC~t>T<}!l{L(JqJtRoe zFFIq~zQ&F^@6pAyQabn#7*P)k@eXs8Nl0&~Ipxm`vGj@-Ia!Wgfu05%oFabR#v=f> zYhDt1r z2#|)tF>Ez6QGo}b^HUYs^Wlw`Qge7~0$a&c4M6d&$uMpG3S8X13`X)mF`D8w5$5IG z%Cq*cwGlr|2~kL;;RNqDN>}PmShVs^H^ab39b}@)CN&A$WcRF8{%H$`XfEzpm>mm* z;#o(5D$k$!mz2uU% zvAUiE2*NI5rHgTHklI{09nn>{Mvc?o>T<#kcK9iYX%I$0aw{EX%-_R;PFJTgi~rA9$JvX&kVoHYoivDO7aKPsvXNAe>pFOrQ4B<4L^ z{D^I*g}^!=$SnV(9rckd4QpPfCit|SiweVX4yR(H(~WK0)zzPOPs%_*mZpGKyIPOZ z>lY(`p@=7~lBtr~b|h8@{C1C2W=i`Thi_Q6o)gH#0;Y%;X5YBf=@Z=Q-*Q6Df_4H} zJF02uPLMBx4|5zJl`EOqpL?2AM(onM6)?H}D4VN(C1w&Ow3du8qexDiuM$-WrvTx^ z@|qn|7Ls~?Su7w)V*@q(*ZxLwl#Ez~1}Tjj-c>An#DAZtw%Ec!VI*}!!x)Y2BVV;a zcn=d%e8H6iKx26;Pd0lDJ}yvc7v9Mj#O> z;Gj;6nvV&PIqVz&yFJQPXfyo--LOh-+50oIuc3J)P}&k|9tKI4f{&w;k7ich5X)ql zHZ2s{9PC^ocupbAJG?7Ps1(Kev~Y9a`cyoMY_1dz&}1D?u*E#N91*3?-L8YGn+58Fl!2-SAgNt57gERp74 zWS)j?Sma%nj|%4ad|cIDe++z;OF5Pgy3hWvcHJ`9YJ12&HB|uXnwj`}ooE!V`BlvM zg4%+kUm6;GOE?j(v7f@12_L%8f)Y3)CS;SK$egV*FAkrBdjrKG6zcz&lz9ou>@Lgf zKYTzrf#Tx~2L8qM!KI&!Ha530HRspQeKLl;?&DC?^hlE57CpdO1B@&`3+d)#^5QSgr|6R zGIARD1>i$RLJv9LqAlC=S3;R_49Pfi%pt^{WVs59TGWI-S{6{(ubh=ua8fj}n}Wy4 zAfK{Zu^HoolXK-uwU9rZz6{e}s!cJVder~gCYm!+c$PfwHL7e8(L0<;lFZ5#?Fl6D z(4sR_F6CLapM7-&){brcc0_ybCf?+}CI+TR* z>IRe5`w_?+br#?mHi}ge(#ec(izTWITaHdEk=mo^?|R95u*0XkLEtDLV~7?!#yM#$MSVmaNifVnMk!ce`A`OCbCS`?uLZ zNf}Pj{BvG(09{`Bu}R^|);UA13s0V2@^|GcP+4A-&Leq-O9Qn-7!FC41e*`Yu~QtG zNKY4Q*go7HBVmTc84CB@%7+Lgop`7O;0D}TS5;CRlma_tPvz(*ex*U0a&!r|g07%! zRravP5zcMl4GUNGZ6&V2j`^FxOKgNBMIzU8dzM=CP)Ioo9H9Cf=i}BBn`?X{@eZx@ zHlIO@HNTjX!?wK;VPOk6U$|&;Dr#T2q69F64s}t#MQrf2Ye8Y)>IyvL!wM8Y;xbc? z_8Wo8=Ke_`1X1=SUWpuyziR7T^Twywtu26~)CZ@Cr4(aA-GQbyRu|c=@USvUK}zuP z^+~hXbN)N4yg#)iQ{sd^?b(Go@OeYDWC@NXioYk_03?QnChPAS*>F+^q8KX+MySvq zNTFE_bNDbvAnTBQ2X2zt>oLV@1dh3-gmN!FgWmY*!ouFWZeNgtb`2Y8@z+^#eKWrV z9-$~$G2D3cpmz<^+F_QDf^%>F=p%?DK+t=kk3xhP7AT&(x>Nrn)2CNu8%H2D%l4Q( zuiGQr4ynm3p@qPZ{rB^b+cUQopShm*gZrp^@WWt?4;es=cZX=k@tOw@Gy7y_lZBox zSl3H3v1}Qo#jfqNtA){E`^JSFU9cQ(2q7u18hOS`HgfWNArGOA2PRsb;zo7TF>xf?Vcg}ZXbYWpT~LvT_f8-`MF>kb zJK4T;CB~lHw93|#Gv3%ch;Mkzb_z};A{q~vYu2k|*=~OU+2Y~foNOjk`H6k~s^(EcVtAKj06?|>-o3;U4((9y$Ccvct8qoxFd&HC z335RRxtSwn`S^o*-$GPx58Pe?1P%(SA8;WgqQ?2w!e57GK}u{NiiDgZy2_v8_LK#-WlkPPOWIw=zFiB zA{p}Wu*|5y-twc)o!j93j!wG$Tf}YEjAJiW&bTjkPOKcWwLEPn+OdcvjuDa%`w2@H zNb=;nCMQuertGjYPvV<+M3;eqe<5+;Y#-^eQw;#(7pPDiBM7M`3PQ;>8QC3t@ ztGtM@DbLSh^5&Lh$oV=UT5H*2d8Vw4j}F#zjz*JUd>hoVa&Z{x&N~flhZT#4Ui&!A zQ{&mJcFZ;MMS>bTz!kz;q}G$DZ!fduioKh=Sa^_Y6>YWFJyRG%l##UpJJCnG zet?X=V@4RSWK?P(Bo_w^<->um*vv=cRKauu`)9`MoJ$Bx3tk`a)COd>>J4EypMT(P zYLfWzSFCKwzC&m?;=c>UnjjiAAi|DT5-?h44fX*#H7EJ%CT!lT$+D14N)8&vIos{- zd9MsvANEV&(ocYRw>7q1fL*83eZeM6a=+XT?Enx+Z;9UGrAs_wt7@`8y%33axYwlQ z+MMJ(lt~Hl-zmJnd8cU@$V|aw0Lt193z0;hq@^TO096}2zDAM8T)&yVeXKxWh#p4F z|A6(SCUE)9C|MAZov`)giZ>IQ2e=AkV1eum!nqD`-xpCT_$6?4zPW$nCfcPVm6E%cU*fAr{<&^{|w+a@S`Fxi5WSEii0$OUIIE+|+ThG&Y zdnpyVeLD^Y5!48GT$_%@BE`_ZxtiH5DXWHb+-a$6mTJq62M@N43^C9h^ay**Ws|@n zs&$L#<@op@fKrU^nbqbZb|-8D!&%tMjY1Lt>>&67lC0b9?90sNNeHSkR#Tsah-_tG z#G+p;K_2(*X`7Kkgh2}4R`K4LN1VI(-ZSv>(=3*g@#&3%tuJU5xzj&*m!zh!=O+UEr4@92TLRk$5~j++aLscc3Pq?^$>?Vuhk}H4m45= z>z0X6^J%hkSBwSDe(NAy`lG`qvh#`YO5BnW);I?-GERn?af-j$F<$ zA?#dtb10^SRCB(c7ocgysW`)t?H%_xdmQdBFuIO5V0Sd`m^e|w6z6397&H%1`lQ#i zTywC-k$6}4OId}vMjWrz+O~XBPu1c*^=$`vqiVzYT8j2+EzFn_N^kNq(=^H@4{G0- zO7DK}@zOSG3a#(kGq-JhR}CrvkujKoT4jnS$LqQbgsT>k+~EVNKzkU@ijp>ZfV~_V z!XjdPxMv@352(Fo zUY2(mtd^2dexf~WKWO)BztMPYt?%i+vvvC-=9cFLzg~~NEoo}~BRt^|W$=^9Xr>gl z9R82~S)I6@X4RFC^@PcI31##WdSlf_w>6;d%l|-Ir#myWR!?H<=A2u`@c}fRt}Fvqz|Xt^H*zO8~qPVy9Jur2KHW^)QGq+Zg!U5I=jOHItamQ7YV>iw6cj+Cr z4kg#yT+BOK!(cG_=7!5uozr_;XR2TROt+R_XEW}Zk9&LC1=1H(@oW9R@{un z-Apj}1YW<207%!Vs>T|Ib{6Xrb3%+P|vWN+g54lq?ygBHz%2Om=r95u6hc|W$sBbfV#vdo72u0b` zP;Q4|fr-^|&u+k_|7A1UXC(t;1okf^{vA-i4(#cF;E{xg$B|o(SBJ&1jV6hKwq#E0 zyr6LvBW_03v8M8@4bqjTYOa)02uMbs_S&~gjX_y}<+EmT5YSTz=h7IlcH(w+ULEYi zB}EY8AI|5narPBiLdHxInvd4tJUeV%U@*u`3Bzq>Nh*sp59H3R@d$9aZL%a028qzu zUpwmN(7B0QRm1+^so)qS_l3LE=DP^RHs=SRT00(jRC9 zPeY1&uGt>j$x;xoug-~%KJ>9104)Q;1_1rbJ~%jaX|$#bMoL~AY9-z1DLj;-0UX-K zJ*#uYjy(O(zIu?#$1APe`6Y&mw>60sBGbv0qNxDwP%cm6GLFy{=7Y1`PVD6NC!;_J znjI$K_8OBaXU#11t!XcAR?!F$_hm8_hQhODKpljHv#kZ)HvS;%riXSsvHZVdxeT$LRee75}~Q99m44 zq_DQpP1*ks0fK6x9}zjsePx`V%)fxWO)=L^Om3%@pENn^=#|@X11L_e^T6)tTDAQ+ zw!tti;59&H@J3u$IH1Lz*YI~V+~P%kZ*y= zvqnf}Tl~$!tT)z&c)pu|N+;aww%effT1iYJ)ievx2rPJakMc15s``dK&1r1Lw2T8? zDJiOlxKmk?&~9ICW!^{d8)e3dnKWKKCr2#e&ecS#k+ZX=Up-nuOj*+z;+BdZ9!XGA z?1vsmGzDW6f9o^eSlU0Y-_A2S-#Zs?3R4yrf2Djvccto?Um*klXZbZijf1d~RdHlq znk=#S3BdU6RbTDzFt`oH%KgR-^0O*CzHq77{O7bLz$4)o`uCJs*!SdVn%gj8iBk?) z*95?lYX4TBRos*$J8(>YG~S$fRur+T`Ne)yFZV)dt0JqJ3iUks0^c9=nh?rmqRs17 z`~!e4H7T#=DV81gcFD9@POj?P$wq0wg{m|V8*9d#*!q>(m8?6tmtQK59Y~6M2D;~E z0F65D8&a{J#!Gew9u=1fsA~@U9!?LvI!ireID12eXw)MyJmEu_SzaKM0w}MnpatyT zH4Rk?W%H>RPR5bVHUjh;^Q1=QyGLvS9ri$=?pW~YLy%BSDs-L1UiFD-{|X7W_0-5K z9vcrZp(^l-+&=(vxHEO5a7SIWU~r)4ZeRSJiwRwOnSWL#KnX4t9^P8Wt|ZmVFv}j@d|AZ^bRL7e&#goxMH6}Z6BW_$ z%(V8TfHh^Grl%iD`Pkl)Xb=Sx5}84kek^yFnQVYb-DmIeN<6Jj7`{ZVK{Q%ft2n3( z3&QzE&(YK2tUSHnCB^)Fw`v|Jl##??HqI|*e5*Nqs4OdO3{XNJ=LT;(Y>?xBhGKj3 z#Nn~zg@d>g%3K~8X4oD|@7eVF%tO)4TwXB%Nxn$9%eEgMV+}rW zaO?Xg239yvgoJ>M?Edx)R?sa=SoJ8L^stODEOVjb6S9y%^`nUFV&xTm@&*3*-{~F= z@}w}#kKK@@@@9$>(^&(g4I>9P4!-&HPfgJ~E`$^6Ffz;FG`dAT5{$HBT|oDj^!`#* z-j2oM$6R%PP|OHU1WN9(M<4^x9{0{EJ?QW4Pn?shm3^j606fvl&5(=@&-wF=oW5ix z^WBt5XRPIXUY8@4muU3=(QCy6yZ7Vscev@8!?5tj+ zU*!_`xDxl&{QQ@702cb&0QJN7Xc$~PQQQRlI^$K!s#(GK26%SLj|XXSm=}iEbip*C z4V&$T!P?AZ-)ZAJfW9K~%49rYsi53?rG5vG>M}LT2_0Cwt#u^?c4ZdNwN~8Nz`hUH zmlMYc3I|t%?b9LJ#ak*n&UxP!Kp4liA12ME;9xQh$QZ+_jX*t@_?-sRIz&dK1vJ1^ zYz(y}zA4w!+X7E*LOO5N-cFt64%jD^(vc1)MX&5Xxkl37mQu6X!>ky81CPc?z{tyk zia(HmIH4=P4@WinjBcU%ZfT#*PIR5r&A;ZVM571umBj&C*ygt|jbYkx9x3&pkkR#JRRs~FO86uHbR;(H67Mik}2G-{ArGP>j(E=T+ zs1Z0TC7R61R+23rS_H(98x!T&g?6-^iWX3cwDz_wl~vo~{0L~p+>VV_Wn==uo29rg z1TMhkCrkG1sh=Qm3jOD0bd@WvU{zl3{y%*Sk`8N2OW&$?(q<*YQ! zBI(lzSYa45nVKH~kg4ot721B7IigGdsKwZt#c1b~nKt+HLDeKZc6SkANvjY%vxopM z#$)@fry;e z0Rean3W7Uh5gn8{wJ|0yUX+m)BIRN34-BRYHn1ky=yh2cK2O@GYc)s3-Wxy#jP*^W zY|AKBf3Px!z4qnCw}kZ@2|13PTPiScS1TsGecMbSF#&?;(82Fr_A~s-)S!-7(8qov z@ivtdneSrPN6jf&l*IDPfqg5X1F%p%``l000i8urkHM-HEG*xzAm1Pb4&@N6LW$I) z(@PrCW``Pa1>#p;ueY6~lqTOSHHvDaT3WxC#tF)E&gP|kpAd;zb~=Chh|X_oyOGxe zMDzxx=1yr?d>2*73`adKy}fdu7WM6%;)*9M#bxv}_5>%miGvhr*LGOo7gzA8iMtFD z+;?{*LiV$s%1-dV%xhVvQ=tDo;h!0G?A4Nwcm zYV)!2!~SELcPy#cWw{n`ZNDupG_t$p+ut>Dh}FOR6+Xt2oa~@=0e+y%gQY7FFHyDk zPX(b20UMigPlW5}8{|YmVTX0`%Ab2+m~Yw=;w*v-#>FUGl1Vh%i0sg3GJ-T%*?5Z9 zg`!)2cNy+X!MzzkUu+?SHKL|zB_xtRebRI3o1^CM^!8IGcgRrl7Px?dn((| zow!aH_AH#7B!xopK5H0p)m9R-a7O*u9c;`9{BEc(y{B@>@jku#8b5%<)xIYc0J&#? z{j{fzV;^J9RyNWU9n#Z#>($Fy7AwEH(tSigN;l>-eomrm(u@<*$gx3&nKp9PK7|=d zBSk!)f$A^ZfYm9J=6YB{sm|D^Q{N}sq!PR~d`|EayS7MD+^vS{O&{AU^4?h{^y;v9 zdgMPB1GJ^sI6gWqasn)6ko;$DG$Lg>cVn4*)2K<}p)qUsc^}|lDhSzR1YM#(fR$;b z-l&7YMZsSP_Z##n*H_aJAhzB%#8%iICA2dH&_>FvQ8)(XW9`{q@lux?(=sAo73OfWQY1=Z4p+ zZ`=8~qF^9AC{Saj@cg+?<>mtF7u5aq#&dUny_d@ca(a!_2R2!*ayKp z+K(M7gNq+DXHn_InPnq7@khHCMKz8Ku8(gDF_(p<8u`3w{YE{edWrDaCxkRmvs-z9JI zDXCC?Ci|=TXTgYVzD9i`+j%3U>v_F@y34pTjLKQor)&y8`MCc$HdI3`gS9%cF_X_P z2JEFi?^kEHH1D6phzn%sy4ml}Ru-h;w|50i98jqY6U?fh9Xqg)@q z)MxH;AX~Src+!<%8JlJxZsSPVv!t!+RbL;`v8I64gy?VYnZKO^ZZdEl!VTY?Y*V@D zcw3bKiNn?(E|&qJ_W-N60I*n2226PNhUX6eJ_exbQz)Q-i&doIXn>q4y<5YSkln*OWnue7=30r3)xs zQ-J9YHBAg^U@+P_ur@jn5s5XUWe49}(FBmT2Qo}PR=wXMi;YWIw5)*Ib}wJfyf61Q zc|shco_jqKWY*3JM+LSlaN&tD-v*5Ao~qLxXotTSlPF9^*D~JX7Z*j`$8ke)ZbmAS zQ$W$HfOpqQ3S-49{?^%vr1}xyg>Gaxxo_wwNUeU>jOCJCLt5f>S{{t8%(KN7m1_fgyVs9MVVsH#8_Yn z8`>q_vV|Vk+JUjon{#B%s6UvBi5vC<%4FimN*CC#m&4O^kNpQbV?0T^ z%$DZOU6VwJH;Jdyl<+tlD#ZNdAk;sh1aM8Z_!4& znpC8Gh*Qy8I&fUpR#jBSX6YGNLxzDA4FUSLoYppj^g`Vor&xq$v!>))fc>e-{N|j+ zPItCpIz`(O42kN}a4L0O2C&~o<6=^!E67*LfG>~J-h*=#T1)wgmvBU+EQ1k{vu~-jF ztt!vdM|ow-J(~kKpf`Q(>16ZB?7@yO>;eH@=4!8Q?QRHtX`#D4lp%y8Kwg2zONUB~ zD87%_PK>7on`Ih4uPYZL6=_7!L-0rYbOyM1bEhuc$W4v}?Qg1>MD>1wZ_Ui~2Vs^?S$oH)>sy zrIQuD51k6g=G}a5t4$N)X7|;vEN<5rNSmIvV4V@R5;J)D0UcF;(b4cL>z z+Gy24$M%NQVTqS2EPC)ud25w^YY@X&V0wY$bAD9h9=x(f>wUobwqrk&@0_w{2(R>5 zDMt{BRV}6sE#oOo2<2p3=$b*Id1rKyd;Z8IZap2JI8L<;)sgy32GN)N|ZVT;gZMaLaMk9S_9CPdS&9zUI#^DIDT70&$OvBQbi5|Q8+we*Gi#w6Pm_PK{ z#;Ar=D7_Qun8kg4PIUv~8>Fc)^ow=yEkd}~}k119DwMgfU2NRO}vC-AC)Ru0k*P8b6{oyxS zGg|Nb-=QUB550&e=4ax19~!9VchZf+hdq&-NBP09!Ly@uvVE^jj}}bI-drxS>{Dh76q4{RklF{>WHPE2S7uNUzr(jngdoZh;%7%v zzz(BNpaCi4@ux0AUl@te^Z9J}#ccs(h8{;3Xg1@}dm#AF-Lfl06#)e zm{E`tv?-i&Ys^xjlp5+kdH%FJv-y!O%h)xE34{UPIg|rWW9Qe9Cu%Zds%4=)A=x0G z!C2P!$cs+HlnR7kZ&~bKz02i!XAf0l1~p)^X2&+PXxYw>;e86Pr%tmBHPgasLinf7p%l_>OV^^UNHI&yriFH)+>vbjNC5*N@nGr0 z&JA-fjQ7?#;NrH_342;pxyx}tVCRyUl%Gac>gTq3hzyvX_ToxHm^ift=8H5ENGWvH z`#lDHXnw#k`y47#`vfzb1svM>;rfbdk^X#so3DCcdk!U#60$M5s*yalGRzD4*oHFd zFYRn?Qiw5&v-G$Mc;hNHLm{LSA1 z>oLGjXc>+$Crvi&&8s-z1{ylcC-*vgr@Xk4vGOqgs|ja}w%|0eoE!rh>c=7yo)V3P zCo9+{O-4!xz*1e-;X}FC^Np!By$Th`yC~zr63>fw^>)UE-7*nrQ@+P$z#@qMoh;SQ z_;2=|h4i!ZWFEDh9+;kipt2f@46b`P*-WutHr6cAMkixcMX2xub(`;@Kgg{MI<+2d zYO%tO{ivG7#_=FigSA!A0P~&xK~B2H3CZClxM ztzlt`K$UaTVGdOJs9ic}Nh1k3z{s$yc%?_OG^7NWi!^xC=tk*|qEhS|%|{pDQD{{3 za3=YSabTn>@1FdOgQZdDQ}9YA-$v^zo>GD**a0}V#i-Rf<{5CV)%^5hokyc&LVn%V z5^1cW_GWTvmd=$9m}tkwL*>GBB>$oXSJUXj2nK@aPA$A zN|w1KoPt(`GC8u3m!)c)x5N^A*sh>dmAkNt!8@1~$3f_&5A@47#)|SAyAF+Wu@snd z;AqH2gyFR?tt2wR&9PhWN}~4avR`}l313d6OB2L^moX-4IaVCt z8@$V;SeY3m6{H|qj6}Wa%YtgW3yDlI4P$G)#PFNKWt`8hOE{`XKVnZ8kshPP0{@eK zfi-|lQC%a%Mk%C`d4sQaYr?LQRW*i8XZ~swoFG4fw%L3-+}_ml;x_)(tko<=lZ8Xv zDivI)icoUUgVJz8IYp2HpX}_2QN1M+10>r2A3Ke6` z00*n#3x}nPFl__=e|G@-k#oqt7SFg&z{mEL>lZFumjEP|q#Y zO{t1Y)^ERoY%gzd!>ZGd_p9bwGAxxSSM(4kQ(cbj=Y!UZYaouqZmze-lGSQdOJCwa z)?Hm0vUmq%9?IGqWBUdq_=XfuBfHJWY?w6JJv6aph4k(#%nfiJ|@JFkVmy% zo=GJE_M6Ezsd-7ne|KtSeRVR7BtsPZ%8Ax&`!kv2$&qW5q^gdhE(C_L0~Ps_;S09c ze_v_rNekjWBwEVyi~D068cv9367$5mH}GTa^|_ls#R#jP1fifq`l7!S2*N^11Dz!o zY%{$jh7dk7x8Y2BD~pu2vQggGpWGZZp_3|neh@&oodeg!=0Q_Yd*0OJuxlTb;8|0h zE5ACZBul$L!3irwMr@OZHPd9%LUziL7y(>hlVUe6rZ~~snfHr-A!5-x$&zd?&pJTb zx>zUorIUTaU6-P>!{I2R`~@vHwd92rdmL6stm7j+K2eNEAZ6bOTN;L-*ES`V!T^|f z66?O8#xn6?x0AR!9I#39KxVc+P-o*^fqhY}U5FYZ%pIgZUAXeUY31idJ=1$_8^S8N z`xqFwPyu@w)0Ar^8||-4mRMt4 z7S!YHA)DHI&8CH6#=)b-$3?Gy)x9)Wee!R&d7~06*akvME-W4pl!Z>ElHmeH3obju zOg9@E-egR1T%NmJGP-23lvMI8PJd5y_doiic`kzm3PxCjkI-o3#|EVq z^_pAk>PTv*8M-KKQbsTt8Q{AX4jQZkaHVq`g%Q#Am=)a?kNFkv-yT$`r+Q?!l_*Y8 zVvQ4`Dn;~B1~h>1f8+LeFe25Snrf$+RP}9r=BJp;01-yo5o|$(NNsim#|!Zz?3`4$ z8Mey29CjGpIA8)`xIF1o&urAF*IG4?6kfDir?n?YmoVz!Y| zU82G`4V^*AEm(<4Fpw=>m^(g;U78Y>Y~(0r*-~BlEjwQD2`94`3%UOw(Ji9xQ`d(h z*6utmjU5qqM*;>2i_6e2ikb4E554|RBG?F0FVC3~!(pi>QFRFY5kgqSc4eXn`%;*I zt9pBOzkqS`=l4GrYt> zMvHW8Udsi&P&1u0)^778Fc0lQDP_N4_z!o;p!UP}M_qjvKweYnGbGJdIAhSyC>IPE zyrh#TBOX%bV4<*?h(skT61l5|FdXk9#l;7o0;PFkINq=Evl1D(ZuaNgR9zjc?f>^} zEzOoF=ecb}xU%Wy{R1{iWjOP85H9CvfyUn)$D9U%?KIb~=JA;teYti9ASHVpb>#w} zD}6=ndshAxTk7i@3E9RLOw(Ba;-5aU*qUCFkw_bPi%xK0 zU8W61tciSJ{MtYRs47&DC3{fkcG}%8>lKJRv7I!*x4)kieJJ2%qKko!Roa`RWqQLY zR8nDkzFkuM11lm@cn+BqDW2i%6VHatXo{nmBpc`UP*3ia0ci}$u|G}3aBN9(VX(OZ<7kT1$7KXKjX!$ zY%`q9QpuN5Q*UG?(9XLOi3OeR7yXoq?@1{1-lffAx44!7oy*CUu-yMqypHbee2nbc zY(vQe<+0?F!wiv-dh#j#los>Zo(J-y@^j*^AFBCcf~^Um28Qre*a4H>E|qix)u??u zuQNhMA>8SOBj$HGIhdW6g?UoL5EvxtAvK;<4izf6ybt;BukAOoEx&Dkg!84HLZvvmjAeJZ*&4B-YkbDw;))M9?@q_Not!q=9E6WTQ zkzN6kY?nU-mhOhTR2hh=2GB7?e0|T*Abig;_eNG{_mJH(Knabew>BVZF6A zXJ~a_TT($C7LVh1WWrpC3$;9{0JA;7>a_z_t%_Rp-M2rloIDRDitlP98wYv`Mj8wW zI2jiCau+})fqG&U@`5~%9G*4Qk>3tNhg$EHYGcx{$4Tz53>+_m70dIKD*8wMJmGH* z!DQb;LJeX;!SRe)RY99vf+0Veknt7g<;GK+^VDdbk%Xc^kpE;ty8O|nUPQfFh1D-( z2X%L!_nSB%RI9kL!wbr;*}<=i!-yUQ(a*s&`2ol{YTBZMOtMwt{I0QY7I6uZWWjon z>T0#EBY@tUe*cbd9}TrSBTIiJiM!vAaCr9TMh|sntqO_}luK;DCPt2`x&(z~=z{0U z!o;zW5c54p5R5PWlAOm~=>_>{`pmYt_}vYnS?Z&plM!SFlENiV8)d>1y+2Uhr$^)3 z*Gh*D{&;7O9Ej!OHoMEUt4A8-D1_ptMANquB?wfdilfMFI&YIb?63ogiam60^T9C~ z(D4r$B`0jIjKA;@PS1CZMe9pGlZ`$L4yo4iZNqN~Vhd46yf4-!yvc z9$+g0!9&+pMrB-RA=`gkef2KHC^!rOKz3np`^EmX8*%4J?65Braj5L1L5ONfwNgvZ z+*m6e>0dZ}b9+yV293v9KGh-&&SKz@lpue>jd^I%Ol>O(9G2C6CMw#=05E!VAg%&` zf>WHVKrJdYqP))roe~idTlV1aWI6)2fDHBhDTi9T0lAE>qJTjIkXqQU09;Gt!F-2n zgrNW)tnUw$a?V~hluJqoNqr;4QXJ~Yh3t~vn!KLEg=7z=grc8E?^ zFULK2vW!&Im)B_dOyE`_&NAWy(GPnF5Zl<9`E}?u&?kvM4=En{WCH0@$oR@{Q~dQAhbi%h8MDhF;#^ z{K|KA0$o$8iuZ}Wqx+Mf@Nmf_z-O~Q7 z2%7WKDAuspdp*j$@kIF1A}C7-TrAP8c&&0|nYi$-Y?Ep3IZvA`pKmPwgl0>hqzjht zSWM}}iCwklyR+g?&q_Iz$Pj+sFOqjm!}=j@#i0T}BFGRjlxjF!fzQzM-2td9oit-+ zhs4T+@CvXtfdh^zZ+Y7wI$3HHg@PR@ex4{v#!1+ zBF56H`h=ocIrcu@rIh_|8Brbb2hZ-)+dW(CKpVicY7w>qpqZ=pBb2m?CAz&1s3tet zD%vdeCx@TplC&3xmfIICk7&d4#vW&IVlHeCW?^%BAuMk?t>4Pn@XEbq+W@L+&T39` zGf2H9+ADP8H;m(P|nFksb5G-h4 z*|=-CR4hCfneBA95(1o3IlL#Df(nWvx?Bc6;rhZknU(lpJl}j#h51pN5ESudZJ@Pp zJ&`u<(k`9D7&hfNR5OaR8G_wt_S$de*8OIHcNJsOb(w|?N=v1Fa-U5djO{|-NgOTn z#mKk13qfw){;%F?3A>HK;66THi0oru&JL;h&sUJvZn}#Pcx4%w-Zf$q6CA+@2LZ== z>J>g;Z%C(ry^EK0=CQ9bk_n|Ph~xDHv&AckX5!`V3Ilv1J=WT6;MRhA>>gL-tg1V+G2pEBqdNz<5}B7RPPwU<3HKksdp#y`4_AA7T6 z*|-ib^9Q_8Tnw}tTvH`Fq=~_m4k}x2=%(LKJb<#u#{XvIE`|XOZNMo%-n*5@NWYyU zWoo_Fpuoi3lG%|R>G6|m1OJrcs|{%ij8P&{-{UVal8dY`<3ly+gqgYAC8wBkx~8`U zd6U_6?JjeQIkMStE1sdtS2oPYW?i)2A~2xJ8t=n>M)b8i>z&0Eq2}6~W5$+Uf81q6 zwI%U+*ym~<;xc@5O|4_w+7cBro2R0_njR|kPW`O8OBUqBlJJ{;SR6j^4>0DZjnpF% zof@{RCOnT)KjqmeNB{X88zEeCrQKlZ2~SpmxMLAypwqtJsB^CaMhMW#p+yd>0gQDE zaFbM2u4;zMjP&*7Vqciar_~4prI4EZNmx%FZZYaARHkDhVF(_6R@| zwdQ6VeKTlDWa4JxSD@5sz^@;m0`$Y}FhO1B>2lYBCkC`?og+uo@DO7czWK5`?d4_6 zM_Z7TO`K3%3b0m^6xyl#>_bW%YexrX2HkYJDL47HDM7zHLMK2auB^v}#Xx!TpeHU&h6&WXj8FkkXl$br{ zxlIhV?Q)Lq14Q4$QB_dQ9BOq?7D10oz4;YahIG$smBI-OmQyFt?ofuoF`)s!NyUZC zwsl=K_;LyCK_}=k>gn6j6V(APP9oo_IcU8dg>x~nO+ptSo*Ng{#o_tXPfL5#bbpPI zQG$T#oCae4QddMgK z<@t&SSO5Vnj**t!sZ9Nk#H6SIe!Z951)!Z=C*tg zK^WGz@M%TD;r`mQjrz(qhEPe7rLvTGKSEShAM^?5e|MiGQ1&MSjF7Cgp`93vqJK#Y zWHtE@qu1r18U|rG{>%5p6}&fsoJZ>*IaAOuqnTdA$O}O$TP%Ld&&yd}^^`$U5Bv@+ z<0Y#TY=kadtG8<4c^7MZIpb>y@=+r=9Cu8dW5vZu6cHOrTlLh4uPpdNW0ey-we~N2aqCJ#<$aGFF zC?F_;6(dmLg6<7N61Sx0JQ~@sYR-fHs)%2%ycQ_&iAx$0!p~wAUsYj+-KDa~du)5y_o+{bCoUrO4mN{X zl;`k#O>I8S?<_b6!1zm7G!0iL)~j<)jqGpi2T6CN$air;z>qUqhxM8SNRddGFvIW< z?613tOt8V%RIgltmCR1Wy2L#-OJylC+oxDWLy!K~s--x#~Xwl;cq{bq?Z1K8*W7(2uomts$rj?YA3y12{#fASyVG@6-IB6y_ zQ#q3xy(GX`I<c-Y9_rP~K#dm-q+|tQU z$akmqSJi%Wy(jdm*D3@8(eXUEG5J6895sbRt0s&gf0igwDWg4>HKsb!e<;2Vc*S1t z0D%m3&iM{xyWqY-EtnK%LHC93@J*s?n+aG7x&kZ4FBGKT)4XK zlu1rI%)yO2uuwlx+uomA|2T!N(=MmE>{3yRz~;_qv0qMb%!iw2u)G`}3$2spcgM&N zi;J^k^3d}}%kMG3+mB2lq1TD7$29Bv&4T^AHQt^QP2w*KjyafIuF_r&ll}WHEwKk9o8YDE~;Z1zY5|}-nts&D{HTv?Kz6_1UCub5zMTKz-42w4s^3D8^ zo2TWk)FRejKg#vda{FNvQY}cA)H*yU)dW+VSf_O-)EKrxuE3y(Mu9O2_`m0f1^$mn zKlRTIJ-83Sk^93A)dMuh@O!@ce@pmtebJsx;Xs)OA;XDu$A8Vq zWk1%6Y%{C0o<=`ae$0i$Q?C`=465w@^~wD<>wLzd2i1$JHdLtjE9v%hFpoq7H~6{; z6apH4_LrMs0|1MBZ&4E@eAF8P=AZ!vz+=(|6S3QjO|4!ahRR!!32v8bShJe~1Ltkxz z70s-zX|olj-Z)ITSinpkv>#H%5=oTD(0uWHNIvT(p+M2fVC<`Sb3NoNPUdXmsIL$0 z@EjlqE-NEU(8*$BC7XAyMdVXaYEUU*+~_cpcI0!);oC|G{62ev07K`HXN#6nF@4*< zZz8JJq|)KSlZ-gYUhGK%P_>Un&lf2K&@I#Tq~4)gj17QHm6xcj|k|rnKwV+dAMPw8ya$ zUJTH$aXI+_`g20+a-*0!YLPAg<+TSmlpoU;3J?7&(v;&I8>D}qAN{OabjqRi7NO51quC|1bcK$11R<*u&+BAiQb1slGve60;_dDn9&es@E(RQ zj_sr)=0K- z<%FY6hazlZNuYMh2PC(seWCmXYRU0*bnLT}T{U@rEHCmSU%TB>%f+mX{M&1OgcrcM zQM+k7HEMEkn(=?6On|CF-UrsdUAfvDFq46c4!J32{EGy@*1bP={%V_g51l{Rat6iJ{$+ijYK7P1nFu+5G$D0@^S>0qga?6Kmx4L8@s4 zPEKMEt9z->j3(MoL-qJAIbENEUyWF9m@G?>n^(XI=HU38KFvdH10{sJQb44)O<6Y5 z=-|77aW^W`JS;zY4{B7>I9WJ9+0}^}f6WE?oF3gG&#+XRM{RMN;WkX6@vCgYDiGcs zu7h3FMSujPeD^ghBL~8FF$O72X#8ynCC>e&j-!a{cr?y=r2vB50`yk%CgXzGdLU6L))yj}K&pFe1id zAeB;O@FWeRaY)!X8wJ{ZEmccTUXN%~ZLtta<>U}r7J%(?ufN^1{FuaX{`txvgt*0j zRP3EI3_~i0-a_mmq=#{~+B`P*JKJmm|tc(x#$#6mBMnPz}Q@xCJStZFZ3N!ubJstXLvA&qnw0d zsDke1$OkBLB|aAn+%n!kG~B-9Uy?2afHjBbY;YNXEoBfS_^SsoeQ4)6+n)=u{9-uD z%|l)+fEu)^C(2ow4%&>cAmR?>kuZ;TQpA(Ao7($u1OsmUz>9pN5%$fH`VQtF$Pr*7 zFU)O3f=-MIF3(i32MgurL}?lQ2kc{hB9|Oz=1N3OweY7?m=w_4p_6s9?_)|!i?>Kq zLl|^kzAYcmK9sA*q)epx!h+{C#*vnRD?M=oD<6j{zM1T-ON*kl7Ij64(v77~ENuy? zsEdm8;%9cIQfRe}Bgeh!<9)A0eN~A;2q%O=5Xv%{wZ(=bQM76ng71Q_6iMtZ@rm$oe?gqVl9vRksF#|IY-t_LSd!sdW3s;!8LpeRbgGoA zovei&w;>JaDzr>?-?;D3L>9?mP$&6dFOTrT{QxDExDxC z1&ysRuYLns@IU2qRNU9>U!~R5r?ch1(udX@7eSRS^3aW$kg?|X4il@_iEYXFWqXr0 z^{p$?0TE979K^|SSwWmnTrCXpii&SxuZhv2$l~BN31dBNWCRa#S=?P@!9rnN4MkO? z1|pmre!7@^Qsn@Xy!d5EkY!jg%Pt?@ZxD!mB#mcULXGNwtOd-qs6?{j5e3=IST=sx@-kYad+Ph} zF7~{3ABm>w%-DBdp-3W1m@IU)so(`PC6j6yWvXGu%Wj(iErKn{)AxAGnFn2JPE!lj z)NGZf%sM+rC&{f%28&c>Ah^3a#C<;xa2H#EiovQfrSN>&Yr?cm=_ZqApXXmi@BWZ5 zkcI~tD<00VnzbLxZdT`0&g}#H6_|@_PS82{#_mEiWy7|l*7mYF&QOhv>A7gZ9lHT? zxt}S+&6H-K@;?_z>k$kWDG~oV2N5J1t>{G5mq^CssEqYIJE${Lyr{S$)St4m0W1J2 zs`9hUW5CwbB@;x6Bf(~>#koi@wBWuBp`Y^yJMA-)>nO7bADI1I^ljmgccB%4C`_SN zk|$wx#PD^DDfCXXL%#m?BCFmk@^!;)uLGTnZA>ecW+SLYS%)izW}oq<*0Ko#3POkg z>t`jkM$OLK=BOW04-)AQT`aew;=-@wW`)|@xFz!I-_k%FW=-4!+bgmLcc`#t0Zh{X zM23$lM|-MKAQDCYe5o%O?0LI~5}c%uSbmJA5QeE4gK6ZzEIRR*F&-FT%HiTRZ{f_|ncFcSJi1Gf}csXUiSthR*;G^&(K6B~W z8ZWhULhBrxrP#Oc`I=`roKxql(Bwk@SeBweNB0w1-H7 zV0bZhL^k7YLCaLtVJzX@NJ1B=rg9xy`{vT68C}0SNuP98zD!RSZn%(y+~%jIC>PJo zk*2mnMSH@@r@_JW>4VTh>e;}dsPlQJ{&=xv=#_UUn_Omkz7k5IUa1SJI}}1UA2E1} zl-I6svC;Zfa?%m1kzfPqOi;N|afLEACLB&?#aw__DD7Jlf#u%;9N$LgGl~QEdwf6; zONnQUb&c_V5Cvq#X;fC)#lS$0*i2P(h~SYx#g=gAi!yxN9S-Q6U^)iPS-|OwDQUt= zadnH*c=(#g^UJI%QmP+yr_X*`C!9a(`K;3okyzqQo!VWMe(yp`M3-%J>wAh|@aENQ zXj!lXo?9Eg!EY1@Wfd9Q*R0`0??Hk{*wuScQr11Hd8-Uk+w=;gsjUj^uOa)-8-~x) zJPXVSx)??B3vkcf#G}YLsmYn86KUXHia>%2o$%hjYO zk#URMN8G(C={H}j&m!wN|Be+#9lxyh)qrcUGl(iaH(Hzdsz6d$zblz}ELaeES5fY# z!^Yn|2C3k3@jEeV;jI(kd%vU6~%Ur zLI@0Jdx#qnggCKH=GhcP9vkee$+B~at9?S0)%>=XhJ&f@QjhNi zkw5$G4Ssx9vu)NjIbt`^O^ox1Eom~FrM?<&1_hOkUdSb65jL_a2HLBjSwk&%fi^$|37mozb zt;w~5E|m?t-{EY>A~WA%d`I!Nd$b`~>nPs}VbA_MF4PFy}Xe*d5bwr7PY{KNUy zNl5!kM?_)523-+aq}*y#_(~+g-HBVS#XP&t%hxS#@94%{edqpZr8cqJn5UUOFeMoMDk;(8yjPa-$XjMN!err=&d6O%{K zg4B@0&i5{#^`VNi&hWPs>-=iL=rhM)_^$PFTP5^?&5n#i!M^I0>7MQX-P6?)Cc=H@ zxcc_v(aIu4{Zsk3)hLZ6u(yUP2U{`5eOqKRIbOJ3vJIx{#NwCOd_W{XEbKdjvO zGbq)cyq8LIWMX0__vKv)^iFc(Xzs2KzzC5l4&oi`ZVcbxe>i1n)M%GOqN*HAw4C6% zAKzfeuOo?4kzGW7qr+Y^`FD0JP1ysO4mXNjK41k$X{+^suhd8rCzmbnrD8?4{PpLc zDQ3{1L|(221YBV@7f~p&IN;BZpMT7?!Uvj8X=Y|m^Fg{|?S#|R2P2Ib9tmsLDj2;k zzBs_D^ntW|`5jbd$(2MowiU18|$)o0bAr=g4;o3#6NfJw!Nr3^hGEe7GOa#2;(vjFIodWML^pl_U%^1zmn< zgMF7O3&rvjdR0;>-Bz7N?5*Yg>?QFUFyO7KyO_!JyA8#v zl{k;}ZS)~YITZO%&WVk-qb~)Rlr3LEawI&BJ0WZSEV<5W8QVN0dJ1vb8S6Uu)3L_h zVca>VV4Ra&>E4WXDF{=f=3ox zbT>8u18S$L1wS&obmZ@i$;+W*n31G0y4Cc41=?NS=)6abx%ZPcpA)-vE`C+{WXzcF z$bo6`%C?kXV{)i2_i5G2{9WVoFR!4q2#{mwN95;c9nA;0FH@}rZd8O{ zk2MXlKtnbaLxzOm=9-~IhXZ5}&W@?d*qcV%R$0B@NY)@eG~MUQhk}?X}!5b|RYCMCv}MN70E0La5K=AHKpC)Fi@b zbQ>svGkat8@13~kcBM$RB-$u_G{r90X6}k558Oa@f-dk0@Vy~DSF*!v*|JQ4ql3MJ zbflLg?b1;wI?vc~hWYcE?#0Sx?&2s% zu9|6x(k^n~I zLk+567cxVV*&E!L=5}}IGm26FM7MoXNa{1FsTd%Q+#6wx$O#+1fBp;-T>M00NAeWD z(^Cd%vCNxwT!KR;K#S-dxrjN3r_+W*_irm#Fq3iaY*tv>xyCSHadvZU2iF$E9~52y zHX^H3Na$u_t~(WJpT9cbb$56O93H2};^hJBfyYOhKsTiX;IL0(P4c9um5o+jGK~y~=ARA4X}!Nv;2xtU4|JtE%EGBSyuUHeH05T1 zl2?{go-!&qt?jo;aRr{vo;3!(4^I+&0JZv>suSbIjb zB;SW9FDZb3!pW?$pZX67@C3cv(|}&`k7Mh8XK@@I0ln#!fXUjIu$46REUOZ+TOU~B ztd_ENHhoH}2-7C5NZ4Jy2x@vOU%B=a*lKh75SMN(QkkWoYn0njLz4g@ntD{yj7HO& z9{LIp;!Q(!j5hq!mr=5%G*yP1k017Dxv;9~aMDGMi)tt*sBq4JT7af_LB%p)jjgB@ zfwkO>kbpP+>OC1i2=3=NIn#h66woHtZDC7^#M-T~{0^5+>X#EPHM|eoa!B2IVrv?c;4ogZ+nYp|d$2oX0I;rPaLxyGw|uLCBq0B@M>DqMTZrcBiJ{oSFgMG6UzS zt!#G9|Cg9ufjNAJLs`i_V^KVnp*O+#Y(HnbR=Y6fyQ%%e9Up%ykmLzF16P0q1kcpd z)!X|m*<#^oIB4=&YW_MRRiZ-#N!0dAapHsDe_Wn4H`s2j_rxxV5bCiKPC$&*^?n;0 z&C=RFHmiQlD;$rUl$}Pxzd^xc&&clD9l_u{i+0idRV@NvfumOp^Tp0V*gN@Ukp2X$ zIu+DN3RpS*Jm=+)b>=Y|R%QmC{#mh2) zuk~Q3!R?3qzl%~bRNA@%Buj1qgJO)yjEf`z!iRoQrZkeYVt>JvwPI2}aj#}d+j71v0aTHyi*uWttF4=r znO{ea;MS%ocrnaM+Hue83?$v|ost%Np6BPm`$l`4HY60I^`2q7Yi^K&M3Awhc&UzY zHwn9})1&^i%W8w2cGbVc#17++cYLveL!00!;@q7KwxZpD)>vz3>2VH~FU&ZhbsIBD zUbXLQe^IWwq(vpqI^vS_0*hgN+6e(P-X}WnT3&}A4OCq;QYVPI%EjUTD-5D#aoUGZQMbsx@+wgl-ar{`S7)B+5Uqt{5bC6IPb!9ZaOz%)P4E~9DaVYSu(X2c8KPN7p67r&~+aNK0;(U6EuCN>0TFICdR` zXchB%(v&)Ugfe|V6awco?M8Z7aN70h#1ow(TY9;MJ%aYt#2m8_8k+}Ghzqf3_)Lrr z)#)FELrP94oEkDHVJ9)fTlmz61dlC;E3)thkEP||hU_mT z+9W-uQ=GI{#c*17nHWVAd^YfWH`WHDX)SJlA(y6ke03TqV|qIWi$Y3e=?C(4{Cc(?H$?Jk1g&DBudy*M zvdE!e^*Xkn#DLq567$s8>+~MnJnB{(XZe56^kL3bN=!=j;+n(zs^jVLp$ObCaro?( zJ*dQJlYghCi{`F0=p+8x-PYSBh2x;oOp^9#!x6pny^8`(zmaQXC-vK>-QTzJMh z8io(b&o>w(E^le`tp`zPK{XzHEhlNSYZ8Jw-JCz@<=A~zVg za{Qe4KHBsiL@H4pp+D#)#k&AHZ!zfZ*r{0}QZwv0VIxNjO+vh|*kxkms$593sZ}*J zX0EgG@T{L!vtrTEb7)Ao9B}z8Qs%7I8Pav$A!!eI#+pDV^4~>+D^Z+aE^qw0eytIv z9CH>ZT$i<6g>6O!wQ?H$q6)62lie_XJc6+T^~>fnxbYGte8DHG>dCFv@C!l{d>Bmb zfBvSUX*>sO-k3^&9S*xa`FAkFV$JcZYg$p&T6@SMUom-byvE zay*)er@A3BFA?IqXw0L!ra-^e!el>TyXaJH&94=F89PqH$2s>qpB3~Q{iqd6=9?E(1=J!L#qySV)N!l?Y6Zc05(jt;~daR&LQAnm^UW7$yz=2zg!4Mv?ti-2O~O zIlfmgu}PkLA*sA0GyAL!n9Q=7G6m|({vT|z>9L|c12r!0)R@&Ovs9SPU!e-&~-Ym?|xA zOIH!7H&}JDBS!__`kOT@(PUzR*2J78OH7-BQHPS1UqUZWWJN`bR*=w8A9&VynNV1o zajd+N)U!Jw!-Vp)f{PIskkJP+!`+Ko-vqyeVQoa# znT^(!FYChg@~7uzb4!-*_o69bz31Jo#?rTYse%+@cBbw2@mC@=nr!b+fg?Ec(B=8v z09esT7C*Y-LK}DpWslnU-Vx4rF2`R{Dg>5Q?>b>E=dUoX4YDoW_I%iM zQ=Q1%BfYxQsqYLP8={G-pRO%!*-RHXG&h~rj+Z92gX64iRTxDfM?nd9MtyaRoOMWuqg8r05%)))U+Ju ziUis_lKtX0L~1e^+?>1SXL6PX^Zu01of*-Qi4Poy1csMIUcyp#c+O$W`icNO^N~Cl z$8=#E@_1YVTn0GXS|~>UXJZ0l=BYxsg%VP4IXRIy6P7^<%_24;2h$AF8nnUhAY0BW%sm z?I>_f;5qEJMsBUR$|3_?No-_jZP~_zA8jce-uP@GP0h+~WK218n*?HDDh*$>@59`N zI%#aKk@12q)ARK9@rDW4pD)bq zfDbe9ZMM8~WDOo43gk8MxZ2zuTTdlPj{n zd}fIx&ce}{&I`Q6e*RAU-r&;ur|mB&H<(*y1E!QM zzu92xq0xwDPy8;qs%DupQqQlHTx`>=VK{LZ%F@;<`Z*9HPqyK6oFQlRBBcNaow2}Y*_15hesh>rc-r?y2pn)_tFry$s=V=~Ce=E6T)+jU zBr1gk+KZrf#mGSKF&~%xV4}-w2tB{-a9TdC8fEDRvw%&mf?X4lPcGEug$q zxm~Ts;QRDpPhhm8)4&!SGsNGr`ot>F>bCQH-cZ%|1yA{u9e=IDF(7Gf@FnMdC;{{X zsTb7w*<7QwvMWCFs$@&$2V0xercuI>VS30wcT{E?h39chp%3`UjZ~eLbPvB9nLxvR zvJ8;WV?$34$SZuA*ge3|^O~vop7u1K!%r(LiT~W)cN=HdvZCtvNF#BI45gz|K_iOX z_clG|=ocKVxNGB2y}osCk!SvE6c1&5Qci&=24$j1YW~+O!X0hA5{m)s(Ps%oUR3wy zJB5>)cc9IKgqQBG+|q1#{hpEPD_`_l4(9N>uD~vQ=H2RElypz z5R3H7AdZA;%Qm1r?#Cy=exiNWHbiq#5=A%2TH?~>m?B`vtP1Ddf<5m*)FLs9#>fM+)5N+hjQ9z6J%I_#g_( z`dJ=GX$K^0D9or^@fMvFYZo1!DAs=NUryxc2f9Un7!?QpdnvAC=XmWLy%94*7g6Kg z23-53`1HUjaSKeEeQwq79FhfgWCQotW|8EvmwUu!E&rvv7GzO&auzfd&ZZF1Btq6X zL`u_p-BX*J2M3mcyG&=(jyb=kRYs!hR5*M7oFD+Fj_lrK{;GGSr_mo&CTLIK=!V%h z1fpNGhmM(1-7HAMcH%@whjCPpRW@f$)GiVU2K!QIM-(X)0JsG`Juu1SvY!xL)rW59 zL6ZIHvqjb!D{tHqFtO$qO)D}~Ioxet+$K&J*KX*tfUB5a25#QLN!e2F%*KP%7)T$X zqG7<6gXzwCEIJJ%YdJ%^QuvYg9%FO-)_8U3#wfQ(Wy11^n3RQ6dA*uj1{pS-N3|z1 z=3z-GhmcEsd|9YjQt(=wU#5cQV6j!$@8)cdjA>{S5=Uy9iElx@_=2y1Jk)O$d9u2z z4*cOEccB=d3s!24XVgx?YFx8a2=UN!7@a z+-9TU=j0trLKQtfV0vB^l`5gXp{#E!!qOW%`oWEX$r{YnGNyl|smfpe@vjXLC!5Gr z>s^j!M3s?d7|Icr?T5aM3!(=e9aQgJ@tb8WGG1p|xL5?ST>XMLXYgHE>cx)CrOWAd zy;T_T{;GX5Fp-Ew^1o5|xwc|{eWGFgRg%5qukE&4nFyzQ7(0xT5%&dt&H-RrU!bhi zEcR=vB96h~vh{RZ!c_mpARg^(O6`n4U-8HuJAKw$AOuZp9>E@d;_S$Qzha-|f&C!C zQ`N>6y&=hHpT=85!jco=Ex19mPmqeH`41V)xA1u$N|UL^1PVp(9v_^u#N~;v_vQ0} z)hEuHB;mw91uuZRK8G4tIV<|}MupWA;cSrsvM+?H!pWyy48Zw$`{;Z{x5z+}uE3xb z#^$4(!OFKe0p%kDby=U_mA}dn^*kSzamE@*^Ya*@Djq*yMLi;ohjyFL$gZl+auWlP z64(jzST{LtMr~BU<0(===o)UvTag8glLdmFJs2QN#xu|!2BV{p9y;9YGeM(r;Y#tS zfp6%ZqjKz6l3c+fsM!%gT#KkjWef;f#x?!-y#`KuEu+R8@`S>~<9q`WfqEtI`m^r~ z*XI`iZM0hmTHVd3)RyCIe1z{yxnEz)eq?%z8mQe`zRxJQrPJd?GNUXjRopnvPz!cG zKiZJ~hx#mA^6tVR*(&bQr2Y>T%xGc{!e;q@nknv%n`P{R;J~ z4UZL%gvI6t0l)(%rBbtk5kpgp@1mWJ#(*f@M5?W78<*%ty@QjgkIRkX(DX9+5OuG{}GEHU^(KIflDGDi~M zc`D>IGZrAxfxJb6Gvq&}N+XES!x!=T>fqy{#*g4l*E5EMXxBhjaVE!2sh+N z@^;p%ws0|4sS0i4Z=94F)QbP*0)L#s8eXC%!N}JU>$0NoE)tARVCIZ(m{EgE5mxR$?*Bd-Fxy*3WbA**}y3@HDVuo3vX%*`tsH69;6_xT_b6Ze+mg-B{s=hGL z$9@qPuF5W-HT#Z<8b^A~K;xRB&X9iPTExt=n5iclg;yq85ga1x0qP7`u+Rkvd3phe?-KOL+8O2z>WvZ;~vn8`6_txE3~IfmK`^Kj)(?K zpRE{NpY9fziHCEzPAdKzJyx{JmZMT+8cZx6I)K>i2u%G3v2HVP*xB8+#y=6PreM5m zq(RzJf4a|ZFXI%sJdePGKdC-R_sxmvltiKxSGkxI3?ehXkqei=pHc&( zM!aoPSbH#>MNS=Lh!w;{jC2CezstF`ysDLk^>>O~L5(vs@?^3@&q#@%syA$< z+8y3+=|rB28Pes|@3^Eeu2d(X6C(v`kzeWxM{y0Sj5^njzw=|+nd}Dk%XWC zy3f3fM&jZ!!np`XmvxEp=or#|!M2c>=T|3~-Z__cZaj$}UTfX2vDdB`Obr`g#H<$u zHB)U@)-6s79~qee@uIg?#$2$Cn)VAhz&D&3^u(O?|KRb(+{9_>BN;3AkexB`u=a}; zJMM5((k!SB>nT+_^&8-wx7VpnJ}vEKmY3Iz1nk;9*wMf!-#%u81gAA6+4l1A{>WXy z!^F*!^%F6rfMCxTX`WSmJzf+}+aQr_j(gY856QnfB>FnrrprM}W=NyGK2B~11`h`5 zIfMwk%C{}*2}r=KOCW6inb)5MGxZ=(4$q8Q15&dhr%%b}eHaJI49l`=vCapbFG2F= zY2&ySPyiRi_2#%l=(`-5wFlvZKf zPkU&7nlIjJU&_e>H!J3|eIWIpZ)srh?RN|>;qIb?b5ynV|;R&d4)BtwaK=QH%ZbofC|i6LmPwA_FIupWZc~p)3EqTB-OlQz6Qd! zL##CER5Jbz@WjVjyFDqRdJP7qk6=IXh9X8?Zci^VyR`L@KH=QSQ}QoNqJ>nB_J3*n zHE%}s)}0F@nkJuaEZ*~;OQ*8AZ1AwJ+I#W_dMOc7ao?)48`7wB`ASuudbjXC7xBZD zb30(NpiD7>ppM}{zU`Z8uI`iCe{Hy88p>m|q)XrW5e+K>t5MT~hon5F;q>T{#f#N` zpG}SG=gAw`5Wx8`pIPOD;*+bFST7FDMiEE;80?)qE<&i-=xUy^T(|&pMM$xXE0HsGzvK z0;dgNnk{h{yW}&ol=c(auD8c(^0CO^ zQh5Y6ozVkj;p@F3#w$$YVGsnMKfe) z37p&5`!$S)ZN9k-;$)RP!zaJQOA~QCRB@Hl-oDJ87Ouc29zledJeFTox2m6y)pht? z_}==ECZ}A=1-F489)$G)G|L1Tc-7eWI^I<%PC4US6^ld;nb#;9LgZe4E*j&kO*0Zb z+qDFa=et$+s*XC0j!*e@sfM=|$cxNj)}WvrF2V`6roep8^_ZghDv>|0URSID*-1$VK z`#<1-c-P*1hB`teGTCv)G8_WK&NM;U*&p%))|xv%1jw3jULtWJmi6vWY5ZD*X<6dS z*I$(pTDI|Oh)JK%oP@5Rarle6)}qsO!=00(!O@}H@O@@r2jG@m~!G(tCrO zD;kLtMS?OOlqOByZG{qR)~B%Wb;}7BI%_55-6JAfu%95_Xf?5o)WQ(UX68YF6v}u@ zpTs!UxSg~7V?gDr(`&R7;$sNtRGGVn4Y_<)p!zo1 zmt}JHFUZ|1t!?SPfur5YUt`TmG|x`5;_h7 zk1hB4T}O&?7I8r32;&GH*jAaqq2fRM<72GqQBecF;se_ds;_H9ojKzNXX$KXh+)RX zs%ZkCic~M$5+Vg*E-Kk?_97L>t$2k-(2 z%iP7(*T`29l%r5#ubL*qq@pL$nP@R4&Xis~H&eA^gO|xw6Kxj}^i<@o7AL2AUSk*J z8qZ8b+j5J%tyP{>k=D5diDvuu62^(JEjI9;Etp8Oio!y!R)yB+Y@)-lCtz1%3}2y1 zAA)_zcSvNonLkY}dsH@+!pE1?W-bO7Aa5q}=$eO1@c){B`e|KPO+dx6sHJr8!B+p} zVE>wR^uWMY4h4_)`1`3PSf3)9u=S_O$LV@Pzxv>o0Dn7{usJ!o;|pyp-*YcBln zDE(s8E_u@6=Uh^}elFq*_O8ZA8n9M0@Yn!ZunW-IV;lYJ)stiPcKt|bff^rF{4BZK zA6)+Ry&NFmVA=?A_$$#8J+uw^Pu?RXciX3&Z3DI0tw1DySNhvMK+$vOGktgZmta0|zOjgl* zFmNVCYOLQ?rMVI_?me#OtZtowN|V&)70W=HiV@XrJvOsxiF^CyiJvJyTHCwR6aCTb zM>AA0{i3^OqndhF-o+|{U-4@(!{c-uvfh zqA!?P<1u@XX+Dx{bG}I}AIa8w{`?vo11Yk4IZ^A!TI1QdcrbKztX%N%d5nZFzhvzL zCqw@0{5o+$DjfsWE8;#n`OFzVpF+BEErfYok@6f}(Uvo)46E7(NoOHCx2>lw`hSmy zpTsZU%%&I%zl(iJEGZhc{-_nz7W9cH2BC1FN3xUuE>0bqG@m#=xdj}sG+Gn>AFgmd z6BIMcI8{Xvhb1Mp4W(YvxOnQOyc=K>o;YH1Z_Am0p@U~4E9^+Ok{Q0dRV#^yk@8-S zq}Ea4&=g88FWlls=3;zQ6VMwJ-Mp`3UD;ZEHMkv=h04Xnh4~Hwp`nef84@2J|05rV z=aRNi8HKNDj-tl9bhbtz;&gxru7ffoOO2O#Yf2`a z3#`Bcs*2?KN%2%+^_f%+wsdpu((KP9tysi3bs^G6!Tr$;u?oEY%kJlFeZ$)Sqo^0 z55Pxrk6uD!1>f_fHy#)1b_0&;rV*)2{V`Z{xHKHWOnvqZ`V;;2)=yF*+K-#p+uH%N zez&0)y$hk;2?DxnY$zD8mTD=I(RTnf;Oc$8%oj0pyjo{%={t8Y(_2uaXq{L2%XZp* zgCjm&M_22amw9DvDek!0$rzn%N<}aS_fQ5=QeH zvQc6X9RAZs*g(r^9uU@*3n${KiD!g@?a{|8GiHq}FFj zl~BdiDSTl(@?f*hrIP)j;+5<#`w;JVRTJpW?XGVUX1kn`(n5+>vWH&ZOu{T%dmm~v6 zTF|a2j-~DV86`C+3*{SevGeXw%%Tc+srX1ePZ>oOYjq8%C0ao5jn}wI7GYB2GT4Ry zbv;q+&S?oTg1MW39@latZkfC2aI&g;i#dVep?tGpF(lzz^k;FmVMWCR3Fr*PD5ifz zmwAwI^Sqrn{{z{!weQC!fOE-4u4~dCeqbyM4n_`m1r! z%k(^zpHQB((^1Ln0?m`{XiWGn7S*@u{_iYhcgkWTb16JM9qzA!d;nlQYiuK{`(I{E z+p6Ap3O>Ru+Wn{y0uS%!`p5=M1^a-~j zZ#P%G*!hY28p5odc8MDVqti&`u4X#(c$h(}Bn9-vdc8*XD4;VSR|Mii zw-5P$@N}_X6X-K~t76hl;O)m*KRn3xes?Fqb$==tcbYXs*9g zYN6ag(ryvcrjh<0Gw=`?!g{4oNb9??=SGzf;$RC4N+>z-6<{hq#QubtEgZU_pm;xX z1A1xA=5`@7T<;<}W)>!+q7E1?kzj>FbuB0N;v_?f#3^lAF6x-YU1S;kVK)a@$-pzN zFGnztDbUpKE+Go!EuthbC;hpbP!vP_HPvk(3h?Zb8_3DkvEu^q)k1s7drt)2g;Zhe zmPtKFEBcGzMM_QGI?aKXVwXU9(U`Q4Pri&#kA=J0hyj%O7@Rm-z~iLL0y2a@exYVi zGoU=iUHq>9YHTIM+;K3LkDd7aqIq|kjxs{I$vwM}J7R6ExQ3YxO(FB`bd;&{4Bfv6 zi4>W3ybPvilrHJx#&ZgN0Pc1JRX`d7SYcrhgw#I{&$Ayn?eUIBKe?Dg{P%zd-2-e{ zc&>b&m@l%0@Z4_mf@47Ev6J04Q%2(NmI4??gly(!+MLiK)!k*!<43%l3##^y`4ceD zXl}6!u}TC3a`Y4a0z3}$mLtPe_Yg#?@(Y0E22};!^|UTmNa1%+JrS=w_y>UQ$6%< z!_+AKY>$}H6psFIo=lOqANYnA>hzv`=1%&ZMaCwEOR(L=xNoDZm}wkR9shdK*axwl z0Q6M2cNVP%Oo*scg{{hiJnkZ#aH?j%I41Z2C8N^&6K{dk4umJ;uIoyk+fTiDq7gK_ zFDOl&0UdXhkHRks8AYiA&QIV`y3wTmJ^@qD zmsa0-DxCurtIurxW$UzqVLG65B`nnOz76-Q#FoYMAcDEo_ccAjU&gFJX}icFXw_b5 zo;>X4{~UGPUs-w6V{k06FpORM(D+;nZ|!1*w&?8T&^u&L)VHAwEu_$k0&9O@(`efv zqDZ-wn&4cJk+9S7Ut`-(|i;P&bqe%Y#o2B$%(tgbG|V9 zS0RR+@#(H%D2uXx90UOHyB{D-DlSV9sTyC0FI>PS@F=^U za7J4ioqv$^#x~lkq$UCAJxB5>MV$WMNbYc5K2Agm)K1!pzUbZesOj0L?!$rCc7+w!?dKTb_ zgn-1P2|fcG937M*f2uh281Tl^1khrChRx+iycOY6ANIwq2sPI+oDrK)bXMxvWEoLd zP%S`)QeZ%Oz8b;JIv?|YZ?g17w?r1g4?o$^w_#9UPQddGd8+Wn$6n4co0v%1j3$n; zeYUIqXS`wc+8S~F<2csTzVly5y!9S*HIy35EpZW%$p`$gwY8i9>3!0U|@B zj*`XaA1a`3=D58_6JL_fA z^< z1Ac}YLP3Z3MB03)$nlBq$V-eyozzNvuz-|NNUo$i0&eAe;|LaT67G0Teyh<(z8>I` z(Tuu>K6o76XprZ%vh^S$(HpCv)wYtF!){gC;>g!>T92hDM+1=L=5{m&xE#kTNdUdm z-fqWAoW*Ojhl{hseyaP?m-ry-UQ(>};ynArSnH#z0@3%LXJZky z&}q2`e=ViyhlbAf*%9GQN(69ykwZHMbo&AcV z?pBiObd+rwR*OicwPBOA#!_r*DB!qvR(hzr`1XDokVZo-m-x#BHK^qB8lp75NQCs#67#Mr;s-rX*HeK>r#8vo0#|s0=G9l2Ama&=UH|$0#+Nd;?Obe2?rrINV`2mOI5!Mam=v-FqTMp+N(Wh{ zqk6ki{-&4aafS9?)Rp?`0+Pg-|8B-f2+8Gl1GL`mek_W+mew(Wm|GGpMy>vEeUCvnbRxg+9{$&^Uu?U*8+G|u00k}eZVDq zoZ4qXyWAEW|1X2|42Y5REP`D{9XC=XZ?QL8O{5_$M&JF zLBs9gbhF6mkEe#Rstu1sA&j`h_vi?yG64yxN zq=!q#Y-bR_iSe=>iXgqOoSukklorjyG;j}2k2*&eV;U`E+(`f)jlGWw$vqk>fsQJP z^cghY&EYiFe!(MwWgEzpQs!8DS(Dk&B1Ac|0w1_t)_T+#t~M)>`DOe= zEe$0X_~1z>Z;39pS*w!Pj)ng(U?oo{Y;&XPuT^UDJ@?MjHcrn$1n%E{`ZAu=;AZcdO7wnXy4*u$2zj8c8zUUWpH5IglUv4pwTii z*NBLyizCjbax~`{HT-4*L`=P(Nc^$vn{(#yHyuAk8h`(ASvUP&c@ol z7H2nq>ngP2cMXe8Zz{bpJoam$^h=>N4w8w6j`+6b>YoVI@4e6i`}%sEaDQ1H&UFM<$RU1j4^hAH5O1)c}nxp>;1>1Q<=p5QO z>SyuR*NdD>W6?^rVS3|1ATkf~`fwMG_?I^xEfB+c0+A20male%4a7@L7M>;|bW_kOK-KXNWEhBMdN~(7(Ubvn4 z6K9vJJJNkcE@jVzBFaml&7}R4jG4Q23V)-dpCU{Nlii zhx>*#3fO#Dca(=9z2I*C^6n6oV5D&eS$s{QMMIi)-8%8gc{qQr2^eKx``2)=>!aFt zN}D-9sghLnF`|Vqa=A~JnpX(_mUGC7DYQbokG+`q`@9zKM}9AIQ5Nba_gQQN>y7mO zlw*99-{yA%zjZ>!HjI5?|E@Yhiu^4OTO0(e%B??y6xX3bGNGv5ll%F3Lv0dtSzW{Plvj z(gANIJUIG*tUV`;+&U3T=Z%OlYn}36tV<34l~lg*|Cz}^Yo3OrWx$kh!x`ZK()T75 zk^bkTlW2(DgD5#(UsrAkFk}UsDf+%1466NSmcH#tgTuOns<`&ggeXW(`7AkS)DY)P z_+XSEA;=>&L?!G|&g}&A1>(v1rDz&?W%?C%kv{y8N$ zw+06bFHfDI&Eq6L-wnj5@{q^~iBA^9FmUjL{`LsWSq<6A&o-hy?HD4VeLA-QMp*S$ z6CvgfT(_(iC7v$UwyT#BKU>tDD@#Y^E$bnlH69FL`s*8l*veOXM9qQ<0H&^qnV`h@2UmdzWSK*p1OwmVzTH*Zrz+7Tc(ug7#uG52Fm2(zttWP zIVN7vF}eSl(f!rA?_5Uvf6ess!-3nSmm*^(&(CE8^{R<-Ok4ulD=eqVgP`PK zA6NBrxCK7*tz^@T>`Bjb{p}b9jb!TZi3V!SAA$28H{6A*9R%C_VY)p&$mw$1F(XSO zyTA%ZnXH9O`1NNX>)_)j`O<(;e}M*uG`4E-O_R60q(~r#Xv*f115A2mPbeMO6!Z;?hSLgPT*Fh@Nq;q zymHw_ypp%OKM}fis#L`z5UQbu-fC=MBk0w&!9mf5GB?hE(cU5OJRYZR$sNDa1^439 zP<=tnId)?0s7naQ#Ro81vBRbXNOKYjH?gaPu9Gs~Z4nDXA&DQT*l(KbdAlKGj(oIY z?UKtXNzjBr71_f6(*FX0jmmJmco?>CVMQF;xx>GQ_IwpPV}2#$=3ah4!HvcJcI-pi z_i?f^ci^g}Lm{+PzgMoT&0{hyoO4AkTy%Rgov*4aClWB6!pDhe_2dTV`-3SkHvO`$ z=nE_jz=3AkU_?3|92U#MCg0fWARUsKDU#H>zwhc~ zU4bmQPH$vKkZhB*QWq5yryk^;H0nBRTE4wh)XOF~k^e^W zici2MUMUx%leACM%$7JSMBqLW?AE`Wm$2qq@`5Y&3bk?VRh@kaGMUt|VETxNffBFZ z%4i_?e>~QX=RK76`Aj0!Bj%{_WiK%F1LC>?t%Z&3IS1(}9q_45P?9pJ@*eDw&rJY-^L76D`!cpCCyRPg5ustw+ zVQCgOXvi_>7WS~snnbtw5K{2?9O~BNs~-QD=TU!d0Y1R}=WXZupU0@W4ek0?qC0E% zF616!*yI4IY}P11mAAYnyvgVe&bS8tjw4Xn?LdK16jrAd7j~)cOqxAd(WQyx4$bL7 zM$J;=jH&Su@$Xe#1@OHC6=8X1i-6noMZ36nbGs9^3wS>Ov17F9WlY5Nqf1s9L4uS? z|M{;l=QwCYxTl>EiAv+q0Ve8$xWcWi;BMGM&VMe-+lNazU4#MY|L`jx31d#+s+!&i z-_306MSm4N`_ZZZJih{Ew;Mn0j$iohQZ)FrYJc)g%{7}8w|^?Lgfv}U{DOZUE!%0) zv23HRx^a#r<>bRPRNh6Aln2zw7nP8b$4E3nc1|pxe7c`o<6iyURfIn@j3QIW@Qsi4 zT_XYB;bw7nYs5y$J*=Yd3@*s#m9ako*#{mm@=iOlpa70O4d?}de4z@Fy}HmZB$PG$ zbUO&5PtI}p?KffZs&LX5_ZZC?@oD$ZHh))gM?*V=-46KB8U~26dhX?&bMJok$p^bu zds+S$zY-lX2_=OS>pd&K4hgT!){2j_)S~=QOB6Qhnc1!olH$S{poQU+nXg>)wJ~*r z=p{k?xvhxn*9L@{HXrivwo9Vz<(TJrt`itG7XtxI14E6Vh1Tqu(f_o zAv?+IB@fL{IkH6+b|&O9_3L&Rh%EeTYxJ*bOGa5*ZcI{-8DRiZjlSijvaUbd`*VA4 zl)XYWT=7s_t4P8Nh1CyAWgIL(u)I|L%_{`l>L|@VKP%j~#W}!a&21GzkAx7hz9pX4 zN~X5T_Q`^1R$=QfN@ZCF(o_3wj?$-B%2;1FF!er@JmO zU47xI(TrPy4B!|hHNjOISZ{NC@YuPR#*J6vKI8sEU@3GWHnCLF2#iBu08z56_o}yQ z&b}mbk61kxFgx(ouY0Pu#3zaSlvs$YGbxP1(@f2JGL8(7!4GvqNHcUI>Lyu4CZ|l* z?m)O1afFghl-n=Vm}k(`sklm;&$b`ZS|a?s$t87PpDs%|A2nyRS*u&Yevr5((&F_M z*`gRf==w5ZJ$6ygNIp_(G!ta}*QFBA>&hjhDNlfb`k#P(DqOvMB~AX>0ilf(+d=*} ztMm=@bUKO(&W0^@_9UEjsIOhg{r8-CDB4O1UKr=i71;^K^t3^l%>Q}!=rLuGZC*Qc znJq!A`;Q)_qk;0!s1Zal)*4dwDqJ)#w_q5jSsas8<`LA3*WQki`b?9%(Ac$n^yGVv z1WmMQYZ)K)&WD&Pp}t!h{g5Zk`C7jS%tJV(_Oc>a*NtT^TEA;oG9Gv~1{MID7#G|D zu8z?Nj?YDq^I0KOSZBQl<=VKzL@6;!=sE`yYFnvN`yjWx8h~DNV%Mv^8Ntr?b??%8 zBPa!@I1R;BhG`8uai$3u> zq0SO1X4diTi(t#v)5)H_a`2Phfh_-R0@j`gsklTNx>XqalBd2*D?#i3pSG zb=~Z~ME5D`nu3HtSV>In9MY?FZ6RrH!%_46m>3$TUB2w5nE_ctYkq6`(R1O0aD8RW zvQ68_DN6QpM0!$r8Tez^oH#Mz7dlIQ@zWP&KbWhfnLnR8m+yjFWr>y)d`RVqPku{> zG#q*=K2(fRrt|7m{u;cJByI2djl5_=5!;{mh2WUlWHbONf0FNgm(^JIN}R)u5- zJY@w*ha}_{!-tGVKdo~SD?{7!t$^^I_-RX6VjHyi3R8acrEeJ*ZGBMYXdk8?kQ?WQ zT6+x>vI1><@-zq)1cbN8c3&L>?_$_0J7O+B`@d>c5B6uVqwW||dKnt6kE&92d8kot z1%vkUiM1g=}Ve#@-ik}P3 zWn(bP&TcCcP>MFO2Z9@_q7X~@S4BdedeLF>%Kt)WvTkz*4LSlQ${U(EsPsQdo1`V{ zlf|eHS;ns7HNC6;DJw-00#UK9bNjxUjgkfyirwvS0xcaCj^cW2hRGKe9$6Rfo!I$u z_{4NA-98zXjq|{dOSUDtJ~%=N3o3fgbZTf!4_u!%YX`j?E{@9DQfLxrhXCRN}Ch^Nhu`#!!8LPjchXFaF~{P z(ec642gY;0L$it=A|4}U?rA7TDv_7S;PU;nsL@6N%M?=im;+x!76KooOQ1#b#iEo( z)wmK?dYX!?-8q7Di}v`u!sGAaoeCQ2$e}QJt#eVrL&3BLkmwiUL^C_Xi3BZGkEkXp zEvx&;XYOXHj?>l^=Ng9@8Y5Ilb>KBgne}7hE<+D)84oSrZc8fjz146;im&V@s{6-Z zzQ4uuxNG%(>1w1?2}_60|M$h>URxRhLlc(GlxAbMzu41@N;A!t-AHX;bb`U@!9P*N z^3a188b*z5zZFkb2AC==tAnYOOz9W?ua#izYGb{Fh9g8q;m;*`VjR_s)S)g7}ncg~rvv5a!4HmCDPE=u-N z96P~DhbjAo!e*($lHr2v`c+iyX?_|o4F9o(K|~GOy!Nx2a{C|?V~!;5=y#oh$~KQi zpIy0%{b=#pwDJI7zsj%&6+1|sh8|Snc1O2mvt&w(9}h11C29yFm=2t?VFT{Y>zSX_ z{q9}Us*sM}=Z(vj9;0dhwqq`uO;%|Jpn;|;IG89}hgIMv_=D=r6dSsfBN0se>!cw5 zk9aL4t*Ri>PwSZ`nJ}60KfN&jJKD%WZNy-^$Z=o7r8z=NIjXLAVb%|y0@8S_eBz<3Ho2z3y)1jLLY_LxjB3Oewi2xDQQd=jwIIK-+_5A zJ|5@`ywOxi;{Dw)k`SE0>y?KS1+}C99N%_Ht3T4UkJw|jy0F@3-6jK!dd;^AZnm85 zXkEdb7YTj`84LO;aK9Y`#b$M!tc*c12#*4#{70%GT4l<6*jjnOg(eYAmU4d$(96*} z$|wT?bg)fZ6IZyK=3M!XLX!FIXLhpUn7i@9;&Z8?p3_UKPjVTsME(FqP-z?*Tq5%V z>fSVr9xrxy%SU);H;5DwdJ$#RTP5D;Xj!-)V%H^>Jy>MPCZgM=Kk~s^MkP zVSDX|YY`R|A7D}pg&baE&e=*b$F&?DQF**0@VR!^%7DsT9FGiN`>wjehp~6$$;o{o zeK;IVCWWGt-radlF~R!q>qTppJui);Rvq%xKs1?(F(t@pw&OsgP0XmvSw%{I;^ zl?&jqu|z^rhd%|_5SiFTZFI*Mj*Bro5>tYqD`V?;#X53sQWDzPM4-w-8s0&o$oIQG zZY6D3QUpov^UK*=ZP6l_v~D*Rz%M6C-k)Ef`51cmrE<-XyU@5nkJ%D6+YXCSiEiZm zYFmR_$6U%2-#4kGO3wRG;(JzAoyp-EfgTM`2?JOGyR%A<4kHutPKPhQJE7zW2Qm1D zvDwQFlAPwU(C2Yu!T_*2!l>e#{9e>en3+HFp2xv3MRJe#Ir(T?NVf;;VXm`li1R_8 zy)E`zO1gmQ5x_IR%A<+aQ{QG2>zK5tWSi-`iktPBNCCk=Z1~`GJn?_s-^HY*C_K9Z zKf2jE3Zr<}j%cf0RpjUK+n@g!7w54hMNQ;BA z2sDFWar~YJF5bk^u-ngj7D|A>s_b)YA7#qWv>Jl!;37c&1E}0*XAx@!`yx#qtl4M? z!|$Qpxln-~x6WA_OvnKkpHU*Y4|*7c%{EvY>;Ws?-7zt2d%)JKv^-kAg=U zv`NYN#&U9r^UtGoo~CaTn=v+4;U?vaR{i05V|YPge#BIZjE<`Ky&Mnq4A=|BKhztH zGiWKdZz@|1X3()V>DRil2cC*^?Ie*K?A(!|6(1|duD|8&HQ`Q*?MVSSr4JnR5@{Lu z26Vi_F~J&ZIJe%*5;UVoRwc3-p=aL7Qa3MbcR}{Pq~oQo2ax2Len+@~cI@cHyi^J} zzF(%7oN+pkl~%e6-Gsf=7S?Y}P_Vb_JTjaH7v^C8Mc`rMXFdsJxfwJwT>t(~f{P5V zcpwz512I2*8mydTPt6lgtFn0D#G$+5?AdZ}p{I)!R6=tBiMq%6P9K|boBl1#GtacU zwVIIs?l%PN@$rW1T+&z+_O_t7dc}P)n0UawDJ7S#svZC!H!V6dmA-+Z0(EOsNV4h48_PeH`L0|WZP@Cuq_saRfFVg zU;(!zOU^FHc@vZ{!URpM?3#cY^$IW%5B6 zpTWkG#^yt;3xV7a(rVEvC1&0)e`+qJImUdx50p+w)LKZ=kHgI)c(&SSlbpCH09DR+ zW0C!laM}9JigiRus0eJqu4`#fC*y->B(*eG9qwgvT}MWlW3Y_+E2A*~1VYAv>QS|< z_nc4wnkQ<*JvZgW1~lX8Xj4>XpDOjDm)K?n-TF_Y#7n1h;wWA_gaY-~!4KTeP=F8v@%y88I^sw195tbkp z$*$}}S*ek7gc|c!ncqDL7eLTo<@kuu<|@|9ke8RJYRL%oP<1E55txBx2J4;=v(TdR8 zu3Vl>&QiSgo%!dhog#Rgnkjb;s}vSJbVpK?m5+saocw8}fb+2Uos_3n^Zak!9u8n&XkOSWfvD+XJb`^+5?yFRSa}bFLtTm#yuBKX?D1* z$;4EVBpf!>Y|W~%3ic5lLt;AcJNZ$P3F!tLT+p-ale~`MOD!Q8x`OX*KT%m8WI1|e-}vK)l6U4+`q?#uu@nguw?=*9OR0p*oyZ5VK{Tpq#VJe zm3(HN-Ha22Al#^taT zUqBj;#0!kE>5Z-#asV5zrTpb{rZu6zPs$72)Pj#uSa=IngV`%tHX|;^k;LF+IRKCB zGZm;V&Imzpe)9j>tQ$fDT5g?=wou_4@w!P64)MA1d#<3}fa!F{BLoGbn-?hQa}z5d;7 zvFR)5^Z@#`f#j)SXyiM5n{flW*2Lines$u(-D!}#!BD^7>rJR^xU~u%?Ub=%ZM_&JyFP+ zFd?-U=&j}ipvOHSK5`4%|ysE0En*?sVj_;#LW0W!raQWOT$Z;Q%f4%S1N{69nM-QAvbUX@ z^ESf+9zpLrDFNXbl|PiknmHod#q_jb9_quR@q{_Xn}lhN%Ve3E1F#yDv#zymaL&&9 z=NZaSL%UeHWagMol+n3HRN4ro6;5V6JI<7ctjt}mAt6NPJfwuLs4zpsb@bO+=KYnN zd!|fg$R(4MDPHGK(d&&7H#qdBc`J3FNPfsfH(lW zCkckfBlXR(aTi}n2vw~No~NpdjG9HplDqHbr}X@*V)@k0g>{^VHRFwFaZTz>gsh;xVu9d#wdx4t ziJ~p{0y)W@g+(}{gbLkn++%>LtL8y`EgRgj)$fIo*NyxLPYhofXr;VxEDz0sf`O)k zFmSZr(yxqP4^zZ^=i`}a z7#Xb$Eaj`ALfskcHU4y43*cWBb7_J(_ts90Ao`pLZZo7z z0@SGc-B(?m^HTHZbR>yE-Ixen+WDTloN`;LhbqPkd`us~b#Zd=eh?}}Ir4B++MniZ z{$e6-lA59X&MEzXFsUaw_7KSB^mpNgFX-}b{)6lR!#Zx^acs5UZ~(}&=9nV^FiXk7 zA1H;pBMrgnwpCRGR&R|QGzya}&anRVeW-PB*+6jWt2tG+4t{(&yLlhG!w_vgsa))~ zaW3d%L_#_WnLnxUkOjcVY5`7~*-Q?f^6WHoC*iVv!F5hWylys!$Kq32#KNijrqP8Q zj`8<$*C3xbD5qvg$eMsXft>GcCdTS1IM)!k1Gh;u6NAA5yA3|ol^`2^~@TLM6{m4-5;f(on2D{jnuhgIr zhPWbiXWc%acUqF48yNjG%z5lSxi|;fKsGm`KpNs7r54+t2N`x`{JYpCihSiZAA)0e zNvtM_7)V{`*Sb;&cYiF0p8uplCCrP|>(B;o#Q%$a zeHMA!rof-&I+DI6U6!;(jXVAl)K4w~;QyrAN4$Kmib}Z@WXYj;{k7RobfV-(2E*!*bjvt_%mE2GFB5G=kyjd+x=+dEft>>o;n4Y6 z#ZUh1k&Vb+qDnS1X6CI*2Lz-ny!q5KpgSq;p?25EU+Wsdx}Z!VWB>i?{hi{3awisD zX{wFJBkw(&CtICq=lA>iciFh7!Jrz3G-Wf|w4b@%bt*kJJ?D0^;z3NSh%JicQCDdV zvNwi#Bl=jrIv*d>-4I!ZgNGvXGf?HA$Z0Ne1cnj zk7NM9+?2K@UvRq>tRLSoYz2l?e4$NKR*Yn|$ds_?BEh;KqUzHjUzfqawU69)*AWx) z259E%8Y@5AI+^@!nn>2MRRyZoVkZfebKo^1F|qGS6^erdY2x=(%ZWvUZu5G5|2F$>80NAaNWhS<#EVK6_Y?| zFjZc_SEc~FO{%i7E{akzO}5qfzyZrY_gLTyv?G~)oT4Y-*#K?(5k4OfZO%1?d&41cM%to(YFPBNnPgGF^^E{i2|x(V-UvH zlV(XZX-N@0rZo#-H`D%~o|-%g53l+3-{>-t<~qE#u(feDul{u9AO2ceh-7|)rY=|s zryrgWMUy#k^lc58rs7u|_wMo{urJ$$sS*@C9bH+H&<$7>UFk+=t_7@2CW%gFk>2s#0q|>~@xZz@ia~M+_IG zLmU5>$M9>`9korfonPhV_NZe#tr)54j$2g%G1C5LruUCem!U0u)QcGytW+IQRzpjK zlR)fg@s2lA(X&Sq-0daD^c^MExL7??)~pA!>S+{I@m~5+pUh&~_P9YX*kia*XPi^x z6%4D>H+dpFGW)UPb9P6PR=R}fL9$yjDWgo4foVmO%WiW$Ruoaeu9~M~b_ImJfxqZD zBOn?>pfh-;`-slnOOej|rH;I&7e>`4N&Jk;{cveMl;gihP54`N{d;ybdjMlV6+tOl zULW-TUeo?{uT3DK;E@(36xaa*g?)7^sAa;`@n$Z*$aCcjUmb#nOde&Z=3FN5C5@Br zhfw^Y29m3W!)YQei?OA=;|2p5iQsYJ5x=Am6zKUrcC)rV2Ms@HLAS^E@4w0uV2}(4 zNnpfNN4LvN%KEfD?$Bk8^7|RM!oXwF4^BUFtwm%-mx(gSe*ICU{Wwd~8~Fqm#O{P= z4SUtC66wQ*zB1TvEdABk$n&`EecO2iXmjAKQBOj|+b5OShvsvZf)FI!-@LZ7Kdsk0oV&XXPKXavu480I0>O`xa? z-#B`~BEE>Pg&dD1bbBM(9R~_pE-7?B4+HI?XSchsp_(k$&n7%MTEFb{L9+kqE`slm ze3g?PMq>llT~x1nMC&^Z!dugbINaH3jS`6<6k+$OX071H5M=8V9}OPX_Kd?f)}eCf zS$l1x#Ej{?y-xjYypOKsiVEaYbnlbz21P1Hh=5$1Gre(GLc*0X8pd#Wbf!a2iw`Fb zG%0>3?iAn%g%9l-%s#azGz#%e&KD=?&M#fW8<@xfdhMM; zZZ&h?{7bdo-@BO~#8H1vf=98;$R~dHRozG1U%}#ap@Fn$T%=g#g_H(JaSEoF+EGqB z{B&$)tT?!%@ z=5`g_J!t|%nd4hg za~fFyatz@ESN(V511mJ#nOA8#(~)%nKwrs37UPkH2~=CIN<>|qG72q~RZC+ZWHLF{ z_rFPsYR4*dp=RJQLC{FuE&+MzC5;Vqj+sC%Ncq$cA>t>+)IA-E(=xDo=K;L%Nm}0k z5bzR)s%+imn(C8gJii4;-X;{0(^#;&SC;aQGn*!5c{pzTb5 z^qeyV%Sl0G4~Vy}IKz+KhkPvTS2!n95aeo-QN{d85)6i_4B)9OA5t5|%QCwyG-qc9&9{lD1GrIv|5MVk^g17UwivL>&0KF=v%EgZ{4zZ3#A&I*&PF{RGXtNe9! z;<(f7=0{GC8;XLV-X-YJo7~6koAVJf^fnELmoAVViIX}pO_?4=XcK5 z-Ck|QbM#c%XYtmtWeYJIj6mlO4^fXP{V!7x5ZlJ#Pk|6(4S0fc72@aJGC{tXgQLb} zLG#5pADRlD_VyeKh%buabfT5NlGTFgA2Xj^-FXq~{z5R2NE%3DX&L6X5u^>>rBOKW zFvr{r1}I4ULTqr-gga53AF<-QlZO%ksit+J=a0&o59ey)9Bn&Eu>G8VqMJ>th0*9n zKsku)~~WRGE*(kDY+nmO!G#30RFQ79e3((V;qdg-J|` zUB{9FEr|h_|A|!^NwBn+UP;Q4`$yp#^X~|AFe&&LX&NfsNg%cG&UOIASfSbmuS2i5 zEC;!VXJ8rs93AC{n)>;GsZg*TG~#qzp-`6^veE;O$AG@M?_f}Q7j=}cdjLHw=hcuo zB`2suux1QH;rrCuGUF3DV~|p&H!)wnm6vd|a2I|sJFN7{1Iy%&V8N7NtyfwbA;@`~ zdFUZpWdQ#_0Ki%gdNSCgrnZRp&3&s0RIUGkE}6HUh=V0EUsbGAfKg%&F!;@4j986uzO3S^yVA zJP*}O_^xJhMq&o_s|*76GRb7O5=t+kAvec_pbrGPVDIuh!9Z>*7fuIjtT#;9_ zU75G39>Mue$9!nX-d#Jo;j{4119__%Tk$4EEF9$yI~WOsa@f+}`Kb*$)67iqDFpTt zs$A5e)7sX(NYqH(=Kq0*ryM+?3(t-sh*PI53LK>?PLW&e5=mf->SM#Lm+RLkAzU7U2<= zd@QiaW+(jF;JnscMU=$P@W`lx@hv|m6exxenFL3A0SXY`d?4HmkVKL3mp*TpA#Iua z$nkf+S6W`CH#tug3?USDbGI&c*n&axM(2;cb4CC9sa3@EGi)W2B0)^n9L4~fX~mTR z?8HLQXPg7lvGNvfpuwM)tx%P=gs=Lh;yx2-=oH5IkW+zVm&G9C0PSRIdmd&5z z(a9#9S$n{}mzFEr_{O|2gkd4~ONfT%2IW=BsHTNanH{9|NIlz-#f@^C@S1a8nEAx4 zNZr>faBmGG8gujYwI{twm5eYp`KDahzy&7-^>0D}l-q|lDpOtSeOXnqlUIYoj={yB z!Af?zqP{NrvHu0=HRIWNp1`;y&_>9#Y$jRzDfpd#zb9AJVDtz;qFN`J7YC|*jQ;t; zyGhO{&ji>ZF8DsINE-H=IGT zX|%pmGUDpjh8nEH7^bp)*8rDGg(Vke0VR}Q7=Jw*^-S{{8?}22`(TpXQ z=2jaN4Z<)W_1u*S4@_*gi;x~|MSTnASDj{6jE?fFlQ7ReiDc(M>)M#4{5>YJc1{cW zfmU-)bvb6~0|pK_DLVx=#Gp}xS`(<7e^q3FMSgNbcO@{Bqqi?pOiQ>!y>}j=PB^97 z$Hh-wRPA}?-2I`(r8SXxYaVh=F*+%}BnhyDJ2;>f;LsZF6g4LlmDQ>5%|+0oIB0nH zB(rgcoBzKtWn}wxvLR@&uHOq=cV^}#f@rTMqW=b}DsiU=gkK3&#tIa^kytK%nB)HV zC2~mL_d=a+$aVunetTBe`8=ePIlHRf4Z~iBf1P3!mY2JFXZE(ZiLw2yOU?b8uns42 zO_IbNX4u>LBaTKpqBQC*Jaq0=5XL7}{jqqOq;vJd{`cK3c^7|pXsHWU;97ZBWmony z^z?!TuKlI|xd2N)gkNyyR^)*jyvPu&{Z=xO()xd&T$*U1iPSZ6V)=&Bv5a= zNGRu?+gVmXYyGt;#rN%BKwNc5oy)P!M(#EHz-r7#*ViPv_;FHy z^r^lDk(#52CUT0n_gqrjAyg%SyO9n?y!vVRziDGdpJRl1)qV_#IT5t~$0x&qTiMC~`JjBkl#YN?*Xr_hZ@1BFzm}8g`?Y zDd=8!IYRk)KXTu6>?Q)~xK1oCezl|lfdV}JiqYp(F_khRF5hsih9*l}na@2gx+zkT zUxcD!pZHSyFUZ+urQ|IBS+zi9N~vg9f4FZgap2Zh8v7)AemVZzRUl1>aJzXbO;0EJTM^#Y1 zYIr=aQ{gDgJe9^Ns^rW61JwE03-Op9&99tF#c1)DBN}Ti*L}3@ZDWx#Cg0jyNNoUE z;{1E>%Dj(b(8gJF7#&#;^8HLOiF6)~T22Xg(jW8=96_0%E}4W*WdCptx$|ER0DUOs zHG{8qs$Ar;v#u|GY0WsMPzRu&subzU&#wo`Rmm27LJP8CO7A7 zs0euimXDZKr4EL-8lU@xOL8+#x=pB7$=_LRZ5idD$~xlzB@c9d@Ln(eKg+{Eit9y3 zF>6|bY4$nH0>)<+kC3e|qfK1rR9X-9nCv{ALnk|n^#Jtq((ZVju=N&^N*HW`U%ggM+W~F?@J;qD{Em>Y8Y06w^#-q4+1Z|H3 zuyz3-c@OWp>J219HE+K0Um_|TjI6N~uhO5}0$|uF$t#LukK$4&c6XpqNZsSAXh^`n zuruR$DJtYDefwoocNJ1@FoGHRQLn>p?l|ZwLNDPA%eu|Mjc>kk0#{?iQ>GmRU1nIO_g53X<}5gIeaSxBeKhf zNIHUNug@sVy+^aWL^Vy}l$WP@B8OPsGS)YKK+y;E1%s4sk`dB8|5wnuQ^2*Ry);#2 zyp#-qh#hAu4keGaJLhsZSN=d#6Mq|}AeO_mN89mNj}o&Wpb2^eCsGM(25(?Z!iBbD z?acccERA!_?IJ)Ky**$6Is_J6GFh=3B8w7Z`^>gcNuh07gr3Wr0nFz1pB9ElQ2MMN z4bVI9q)$_v^f4+9A_XA7vmIy#W1Vj6>i(0(f~-uW?p6!AYvdyoPD1Gxg)h7 zj~#>+qhMB+j3*O*%?Y8M6wELC3b#zXYi0XYz@C4H4dCX7Z>GCFESx)19%b(4 zd|rGN+dMTHuhWa#QV6j3p`6vEx+A8{mfUvQ@yL>+XgSeu#APS|uvkPuGv7xyM zcy|Y~;{D`jLx}8W91W1;()Sh=@f6v~8Qcw(|FucUY06}HPyC8O#@qB$QdHmu^v4)F zxPyn6W@_EW?I`r%u{8d_HdJHq7?3pCGCY(CfCmu4TzD@#)|0zy%FHY zo`l_`_Kg3$^eytMz;(_eTarW~)oCSjau$`2|I! z(U|@fucgy>82ht%=LIPhaso@gxNfVGd}sK72ctks-GW#>;(N9Hc{Z%ig)H0-QzA^t z__tRbDCFiFa$byDjaNpq)d-=;Tz7f;M#`xnX$%@{!^d>@R?JadkdLD$4zKQ6;Vxia z&MV|$bams}c!{d>p}*dZ9r`i(Z5*L^(lSm5@Y>csA+*@Vs?Rn!q+7uT^|(P=->pLk zWuv;PP|H6<`5hD%)((6&SnapR_A8hugn8%5rl778pfukgNPX=PP8Cs7ALIKyE562$ z9>;$oNA2+q0{XlJe{H-@Qv>uH*+2e#u%iFggh^*nz>SxHHZ8-TM#Ni_(I+nW*hZFX z8-i5GEM!INCX|+Ez~Nc-+(l)$O&_GyS*`rsOaCo#(~*^2K`it;ye=P?wq(zzu0<%# z*Pn~gb*D`1fn){D1^AI{{T)Xyg$-%RXaXATi$Wx7<|NSIp5(qM_sy=^6&-?sZ8c{{ z2AxNAra61BGT&)r(zo=~Ea_KnCQkEB$F?CpWG~Nm0bjbMK&-fLEMV0EgvX0Lv6!{E z%36`nIxX(uoRTS8+V4=0n!G{RQpKVc;sC+7S6$Fduo+GiW7OMCCk`&l>%{bu$93jc zI-+tfIf%XumsRr8S1Gtb?p*YLx0eOvHYMU!pL=CYQLB?)-VswviHtCMwz=1u5v5oP zZW;i$%F@Tv5Sax!- z=J}wLlsY2z(hG-ZANDxNtsh!_Q362f?t4f)5G8iAGgl1pg_7@oYLe^?eA^&UKR{z* zf(T;s9UQT%aSj1;La>0M$hbpc5Gub8z@qd^D+RXGqDW z{s^UHG#61iJPQb|Ass8z$REe&>cVObVxft%HW433@D_0Y!OoDlh$IlX@TGsdnZ+g+ z1__l)jHO)`PM7&#C95X@W~z!Gb4d%TPb#DX$f*_iVK+Mtuh8QK|3>EuyGJsvy!3QP zinXWoEetTy@Zda3`2i$gv54Hi>R?1bzaCW)j{t3ZAF;+d8!igXS96=mQ3)?EjZgOG zCC}YDPgGXA)P`{wo!X81te{~%fY=S*>DJX6)?m*+RKu!j&!x(UAewOAtb#XR7m*FZ z$34jYHKZ9M1^femx&d)PY`>W4j8LaeJK+7`-5xHTf*Rmdh~!M$2>2WhOCEnWL=HKu z8BT|+_~%$9;sT)tbK-Ex5x8cOk)jw=D*3wQ%{J=~_jZ2N;ui0q|51k*Kxgw?NKXHD z-cV@7?Nd>4s`n^6cq{_ZN@8oOx2;?|Y$k1a2LnnW`u!$}2mn1z6g+{M;Xd{*p_xCP z|NJsq7vqMgp3TR)b#YUM9yN{0N{BnJjNG2Olw_t!juNbeO#So{iof9|wBV>*uzPu#F(dK!W#^=j zAFC<1L1T1bB@UeUwDj~7nn(#Ff3F62OR463O_x*h2)07dH!@?gRUuX1yuPK`Z`s#t zsFcPpg0F!0P43*(uL4wp60xC^ovH@$U8wZ~qZ@VK?hu0;-|wd)YYw7cDIF#5keBem zs>{TA<==33FD8H@jI}!_?4VzXE6TW=Rw3?FS4}veW3QVY%0_Jcb*v64c@0Z&sfe4* zPgh4|u5P}S{kv2AqVz~gi;p`d6?nT+5!*cqMMCj5oiBXZ1^FXn#C9yW-1R9FGw6J@ zvi}=l09Ouh4B98l`gi99jw7U}&m{~N-4 zu9*(~I?P1qMbzo7s2OB0U^?5c7n-R>uUDHwRHy1)3f-X+nHbJ`Y|a#W25da2e^07& zfoDWu!Osf?#^UHG?8RPqi$EnY@3r!XF>H+O6=550oD&N(H zL@%$_Ai^dMn*R0HU5~qt5Sq*P(u2ppT=JSTyIkshH3ueZ2x@JBZqhfnskTn{Nt#%* zqxV-6KZ6~IwQ(b#FKzhjC_?GFTvjSSMamI8Taq;}#NwW*AP1bsF8^8#87rsmq^iNR+m|Sxcz3w zF#^|M3h0U(#|(4J+pI=xPEB%vUgqKd51M>m8%<8YJ&RJ1pF-`i7|XH}Qmo;w`D)rk zrEQVpEP9Zdfw3WGFB06kK&nliV?+6PH(*$-o3rlT!U74G>h5ias7KHpE6+`KuYYG4 zte|2UKHD=6G8OlBf|KbUU_jw6$(l;N<*A- za_x(YyvE2RikA5rnT-)7xly+87y%3QHgC{=_I;bt_br!P7{(rsY=I2LtB>-yGbvHO zr7ivJYrx|{LDK1pfuecp*^<_~wEPkL+~N29^hC zmdz@*-EvsQC=>VAEE%*FXDjEL%m)mbmuu18&L6X zwCx)q{Rhw*HkG$BKuCBH}GFUcBCF6j3rUiRHd2Har^eIq}y|a{0LL8?Z5{f6x{fC?MowsBoH^scddQuGP`&)0Z~!c8wSCkPu^UXv!fI^7|=X zQ^@Kh-lStqDrq}}X=ESJbzSAn#^e@(!VR>@WaVMa79~_+Y2O!!VQw-LynIHY z#$WUpSDZ}XjXcHNls!NKq)p#&}aoB#W*ON*r=RHQiZ2#QI8I$n0FJc z=^E)`g4hy1_(291;J||jj(k@{eh$*Di+dm;w_^RZ^Jx_-peC__GQvBkH@gkcXIXl# z$*gQ_VRnm1McBOg?2pLUD1Q!ci2cJB_gcaCgQmqNJSY40Th2cGQ5In2GW1t$URh4g zV***Gc*Tipt>ez3^OAKjMr+8sP@!CN#J5oIZ3XtjkD>;!g3M-)-$$KDzz@YcVSg`{ z4X<>l@aQhCmBQsXm&xlMu#y=(!oCvwzM-#^($r4@&`yFiGQYLU=QB(FUKJBWD%bzwh& z$+FwG3Yv*i*j3rSateRjIylkrtBxiNqmhTTbD-24g>z;tNopi^LZ=K)+PICu5DC-5 z9NPelWmAiDF<7D|Dh~SO@`Li-pJqa*i}Oo~{1ClSzFrFk4CA;1({1$f_rj|mNmWa% zJ}$si(8Np%_X>wIc@L}f!(H3h57b#4TnDHC&Qsx2v~+y+lCPuA#y_8r78u{r>`!EG zdW^HF)=QZD9eQLmjHuxJz8&-nt|kZ^c3#l*GO9L9+M~Jp3X&5^Z2OFjRQY%|MUp0A zbg%@XyaIAjr0=swB$lEoIb?}$n^-9XO)+h`uHgg3nHK}UDEOR0#Tr=L*=9EhWGGa8 zbXR#e&;U%CIHwh5870SBWlV za~af6ovX8ZfT7d1M6B(pFzcn>F-r)D$a{{iPq;KgNvJNS5B0`?m{g1~i&~AZ1cLyN z+|K)vSKzO-*!LH>O#}*M{M8;JgaC=m56Q?wP2sWEr$!?1UY4qdTk?W0Eu(EY$v4b; z%HwoVuqZMis~ck4;;BKV=*;seAtDcjpo}XB!A*j^b^>T@55`TLQ3Z|T;^)O5M6Xc` z2jc0@`vB5G@A_pK{kYqmBl$=l2!F$SOClFpM%1n1eW$MjcHqFAVFiL?P`G{YiPJrA zN;hc!FfLda|H7!ux;m`5TTn?$augTkga~-N_Gn9b;^AO!5u*nk-KPedivz5!cX`6N z?N9jwxwYY8)r|ly!kC$M2S-4b3#g^s?NPJI)j?m`aPWm$dQ=q{Z_}0^))Zzq?+wGsTKPA0!;F}K0?0rsx;v`Fp|@px8C@@w zPGp_N)V>XJ{gF3gD?He^UHcv^gJrohI`*QgmU~}ZK!4FzGZccT9`IwP_sGLK@J^_Z zMmP-jt)0QQp883E4DoOeFN%?3|9=Ag!<<-^JWu@#4s2Zct7ML)dHE?;Br{iGnkiiL zxRI;z$$CuyP|&8Q2RFEhv&)~+H)UpyBn})Dn9!`-#%gW4OLtnWC@CKOYcUVYCbc!D#QVQKjA|Nc7E>1N zJUcXONxl1O*L-COMw(mZ7Vj3D9`-;mEJkr~K4=^w$hj^Qqz(wCrWjI=lGY8LWy^NS ze*D$rV*Qg)PeUEIg3QDAkM@FlYUs-+eNvq# ziI)5U`E-+iAr5-t|HZP`j~J%<6)- z0Qc#;d(Wxf&De^ zGF{J2QU0@@1`!~$zzNdt=hThIb0Bo$SeJ(!iqOm(2YrRaU%co+-y=u5qDm#?Aq%6MmkuU37wlmKp^}-lYS_b zzmsl`USC$r#%#Z?^8iZa3^na2VcPMYtjSF}pahEoJL4Q5E9x%(jQjrAQ5}t2-sm>4 zE8}@1@Hsbh4ai~3BgA!fl%ur)(RV1$7jo#Cw1ETl-iPF{9rCx`_<38TRKr&J6(6Hg z?c*vU4X-`zl;Z>^h^@5mcP#PeGHd8V7yz%BW-qxw= zR~+IjhHG)uHu{b59i&l@WBe00v_%LJE@9O#wdW3 z!UuFQbo!rU&j^70&(E2^7-5k*lg`(yIGhI zEowgyDNS_U@^>*o(g^VYebUoDmG<=9wYofq)bwr2JejLpdNVj5pg9yciHqm-t%(0_ zakq^DY=J@{j3ZmX$Q{|*RUjX#JY`vxh>H|r2MD5IuujpM%lRvs*+NKXyQdJnq_TEDBe$PqJK%0d~;^P-=e z!(Tl704exI;Y#Jd+nz!)gUR9pf9W3V3&1oH0V}M=aVr?AaAkBQ;S|$x@<5VP5F;7v z%e+bC8l{jZ0;1{&rA)Ng91-p98Ah87s6xG8Q(|C8+FMe?9?#jmOl3^%sQ@{-rc9Ngia@RN%r0Yg3dJBksiyM{lW2t zuUMeyc7;PreUR2C#}&4)+|9ewC!mM z#UVxY?hMYpUXFPim42U@T^tn%L_6?$puPdh>;zt$rKm2hCo~CD4h0WJ>IfN>oFYXcw9?PTvWkM4ywu9%+ykDd>j@6ad&@pg` zccCJ#|FmHDRR%(BU2cx_7ltDrDMpM9y(o4&mg7kNN5Ks!14b>86sj*5kJpc%G@e1D zac@8`SF-FfccJa^q4vu&Y58ieuNLZ9+2`FmIo6ezZlp7PrN2}EjLWl zc#mG1UCO>NbODwnFc`93DZ!VoN+FqPV5NN+=Dv|L{iuTX0raORdo6Py1w+A0ZIDK( z2t|xc27Zky6zLyj0jlL86x>3uie4uA17lygHRClxy#)P4rw1)lG#bvC;(`(|*AGzu z?Q(A?M(qgnl*m&s+~N|gNHJN7yXlDSlo#zB^Mlhe{R^l9_1!Is;@GOymfq#@!_xbL zQ?3Zy9zg;Lmcm?ftLw2Q7~3UXgzQH{ZyRj|nC@=a=2tGd(m^R*(n4f+F@vKPRo{?Z z>u{TTtfFoU#NK@UcCZw|yk)oXWe~R=(V+JauNbXoNh$@xM5sRS4<5BMhO&A@4TYqNb~Ur!}*wc3w)A5s{h$y$_^7>_p(WE*yOKmZVKf zcWRFGl(4LRvM(^#ExwO9sqbbVgD)ngL^RNpFG%HCY6^yD0-Gz=baf&CI$!0z+qCK@ zH^$=Yi&g!f{gT>TVE;NYotVhKUnnOBv)mb{I5~0P4R?_n_{xx~R@cLQP$1hgSfZ2aa47ax zW|?AhM3ocel=QuS*IQ4`^W}#P07GTRYm1~{$W>yXJGfXyA!uYfMSsmuh&|4-m;FYd z3`|pH2^Ee#of#|L6x`(Efz3)C~qK0Ff}fKrd`=#tLTd_=KGCxQa*K>WBa2l}5Eng?TvgDS{k285D&ly*oY&TVyzI z?g7HQxYmeR+Jl|7CU-@oO8}jbq~UVzR-eu2a&7~A1_Z$N&nnm?EtIaJ!y(^A1nG$i zgY*lbbbwfi+M>J;)E!>orhg+BA+yzE(SzkoM@}UdyvjW+S5SxLMm*4jvF>B&L-s!j z`s%?^T6(J`MgcN2mtdlh5@igl86=;U^b@L{1zUAA52cUMO`m_Tg6dQ0V0Ij*1pvE+ zRpnKQFPNnRHDQ}RgW`l4FGwI{){wRM-bPm=vn|Qm;mKwoazJn5b?tY?SkoBphA!R6 zH<=!dwyP4fQYmm&j??XkD;~%xIqBZa6{Cao6w!l6!+n+oj>q>B3{ z(Oh_mKOmK}uQCG*@zP1}(Xp&A+{tT(e|&MkPx;tHiFLx)$|HP(nKjAMyrtj`0nf=< z^)=*6OI_`z;`=LWmpMb-x2BDGbN8Xx56k88S2nF9uezP(>1>YOuityg){8_bs07za z5dZKANRlbkWErKJ?C*EX{!_pcFrq&LYju;Vs?CA#`@mLi<{2$ow>LT8Qg4`nK&?`E zlTm};wD(~VEj8RK6?z`YYEfA9;Z-q1A6m5%D_7^)NBK!;x=ut9g8Ifv+o(*0s%pt5 zAlqjdUbIYaTh@^6B(rRxaz}cxY(B_A3jD(C_BxPYYUQUh_-o1PIlNd$Xir3Zn@X0a zR;Yo1pz%ZWB+fcHzkqvX9$mim6>Log0(wpfY^=C12{}~$I#Rx+H=jW)bU5m6KlEeJ ztJ*s5J6qI|kp1gIlZ(Y_t=1*7dC{s{wMg-=O1LC6_}X<`Q=B-7YvWQ9NdzCZ21oIB zSyPA4@yOz46>8%56Zl40epG(Cq%0DXc2isJIWrRgXM#A<9h^Q3h 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509234001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509234001-Diff-Config.rsc new file mode 100644 index 0000000..d3758a3 --- /dev/null +++ b/MikroMaster/history/20260509/20260509234001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0