From 4490fa3b63b55ada0b7ea36ebcebb2f92f25e4b5 Mon Sep 17 00:00:00 2001 From: ShakeFlower Date: Sat, 8 Mar 2025 21:27:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:(temp)=E5=B7=A5=E5=85=B7=E6=A0=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B8=80=E4=BA=9B=E5=86=85=E5=AE=B9=EF=BC=8C=E6=9C=89?= =?UTF-8?q?=E5=BE=85=E8=BF=9B=E4=B8=80=E6=AD=A5=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/table/data.comment.js | 6 ++++++ index.html | 4 ++++ libs/control.js | 23 ++++++++++++++++++--- main.js | 37 +++++++++++++++++++++++++++++++++- project/data.js | 3 ++- project/functions.js | 3 ++- project/materials/icons.png | Bin 8879 -> 8095 bytes 7 files changed, 70 insertions(+), 6 deletions(-) diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index d40625b1..f9951bf5 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -564,6 +564,12 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "横屏底部工具栏", "_data": "在横屏状态下是否将工具栏挪动到游戏画布下方,从而完全解放状态栏空间" }, + "showHard": { + "_leaf": true, + "_type": "checkbox", + "_docs": "工具栏显示难度", + "_data": "工具栏是否显示难度字符。由于空间不足,显示时将隐藏回退等新增按钮。" + }, "flyNearStair": { "_leaf": true, "_type": "checkbox", diff --git a/index.html b/index.html index 5c667f2c..ab56d366 100644 --- a/index.html +++ b/index.html @@ -153,6 +153,8 @@ + + @@ -161,6 +163,8 @@ + +

diff --git a/libs/control.js b/libs/control.js index b64280af..26ea5c27 100644 --- a/libs/control.js +++ b/libs/control.js @@ -3218,6 +3218,8 @@ control.prototype._updateStatusBar_setToolboxIcon = function () { core.statusBar.image.save.style.opacity = 1; core.statusBar.image.load.src = core.statusBar.icons.speedUp.src; core.statusBar.image.settings.src = core.statusBar.icons.save.src; + core.statusBar.image.rollback.src = core.statusBar.icons.single.src; + core.statusBar.image.undoRollback.src = core.statusBar.icons.valve.src; } else { core.statusBar.image.book.src = core.statusBar.icons.book.src; @@ -3237,6 +3239,8 @@ control.prototype._updateStatusBar_setToolboxIcon = function () { core.statusBar.image.save.style.opacity = core.hasFlag('__forbidSave__') ? 0.3 : 1; core.statusBar.image.load.src = core.statusBar.icons.load.src; core.statusBar.image.settings.src = core.statusBar.icons.settings.src; + core.statusBar.image.rollback.src = core.statusBar.icons.rollback.src; + core.statusBar.image.undoRollback.src = core.statusBar.icons.undoRollback.src; } } @@ -3320,6 +3324,9 @@ control.prototype.setToolbarButton = function (useButton) { ["book", "fly", "toolbox", "keyboard", "shop", "save", "load", "settings"].forEach(function (t) { core.statusBar.image[t].style.display = 'none'; }); + ["rollback", "undoRollback"].forEach(function (t) { + core.statusBar.image[t].style.display = 'none'; + }); ["btn1", "btn2", "btn3", "btn4", "btn5", "btn6", "btn7", "btn8"].forEach(function (t) { core.statusBar.image[t].style.display = 'block'; }) @@ -3332,8 +3339,17 @@ control.prototype.setToolbarButton = function (useButton) { ["book", "fly", "toolbox", "save", "load", "settings"].forEach(function (t) { core.statusBar.image[t].style.display = 'block'; }); + if (core.domStyle.isVertical || core.flags.extendToolbar || !core.flags.showHard) { + core.statusBar.image.shop.style.display = "block"; + } + else core.statusBar.image.shop.style.display = "none"; + + if (!core.flags.showHard) { + ["rollback", "undoRollback"].forEach(function (t) { + core.statusBar.image[t].style.display = 'block'; + }); + } core.statusBar.image.keyboard.style.display - = core.statusBar.image.shop.style.display = core.domStyle.isVertical || core.flags.extendToolbar ? "block" : "none"; } } @@ -3671,7 +3687,7 @@ control.prototype._resize_tools = function (obj) { var toolsHeight = 32 * core.domStyle.scale * ((core.domStyle.isVertical || obj.extendToolbar) && !obj.is15x15 ? 0.95 : 1); var toolsMarginLeft; if (core.domStyle.isVertical || obj.extendToolbar) - toolsMarginLeft = (core.__HALF_SIZE__ - 3) * 3 * core.domStyle.scale; + toolsMarginLeft = (core.__HALF_SIZE__ - 3) * 3 * core.domStyle.scale - 1; else toolsMarginLeft = (obj.BAR_WIDTH * core.domStyle.scale - 9 - toolsHeight * 3) / 4; for (var i = 0; i < core.dom.tools.length; ++i) { @@ -3682,7 +3698,8 @@ control.prototype._resize_tools = function (obj) { } core.dom.hard.style.lineHeight = toolsHeight + "px"; if (core.domStyle.isVertical || obj.extendToolbar) { - core.dom.hard.style.width = obj.outerSize - 9 * toolsMarginLeft - 8.5 * toolsHeight - 12 + "px"; + if (core.flags.showHard) core.dom.hard.style.width = obj.outerSize - 9 * toolsMarginLeft - 8.5 * toolsHeight - 22 + "px"; + else core.dom.hard.style.width = "10px"; } else { core.dom.hard.style.width = obj.BAR_WIDTH * core.domStyle.scale - 9 - 2 * toolsMarginLeft + "px"; diff --git a/main.js b/main.js index 53901f52..c923587c 100644 --- a/main.js +++ b/main.js @@ -122,6 +122,10 @@ function main () { 'btn6': document.getElementById("img-btn6"), 'btn7': document.getElementById("img-btn7"), 'btn8': document.getElementById("img-btn8"), + 'rollback': document.getElementById("img-rollback"), + 'undoRollback': document.getElementById("img-undoRollback"), + 'single': document.getElementById("img-single"), + 'valve': document.getElementById("img-valve"), }, 'icons': { 'floor': 0, @@ -159,7 +163,11 @@ function main () { 'btn5': 31, 'btn6': 32, 'btn7': 33, - 'btn8': 34 + 'btn8': 34, + 'rollback': 35, + 'undoRollback': 36, + 'single': 37, + 'valve': 38, }, 'floor': document.getElementById('floor'), 'name': document.getElementById('name'), @@ -764,6 +772,33 @@ main.prototype.listen = function () { main.core.openSettings(true); } + ////// 点击状态栏中的回退菜单时 ////// + main.statusBar.image.rollback.onclick = function (e) { + e.stopPropagation(); + + // 单步播放录像 + if (core.isReplaying()) { + core.control.stepReplay(); + return; + } + + if (main.core.isPlaying()) + core.doSL("autoSave", "load"); + } + + ////// 点击状态栏中的取消回退菜单时 ////// + main.statusBar.image.undoRollback.onclick = function (e) { + e.stopPropagation(); + + if (core.isReplaying()) { + core.control.interceptReplay(); + return; + } + + if (main.core.isPlaying()) + core.doSL("autoSave", "reload"); + } + ////// 点击工具栏时 ////// main.dom.hard.onclick = function () { if (core.isReplaying()) diff --git a/project/data.js b/project/data.js index 3f53054d..7ea77e44 100644 --- a/project/data.js +++ b/project/data.js @@ -729,6 +729,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "enableRouteFolding": true, "disableShopOnDamage": false, "blurFg": false, - "chaseThroughEnemy": false + "chaseThroughEnemy": false, + "showHard": false } } \ No newline at end of file diff --git a/project/functions.js b/project/functions.js index f5b233d4..90881971 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1296,7 +1296,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = core.setStatusBarInnerHTML('fly', "飞" + core.itemCount('centerFly')); // 难度 - if (core.statusBar.hard.innerText != core.status.hard) { + if (!core.flags.showHard) core.statusBar.hard.innerText = ''; + else if (core.statusBar.hard.innerText != core.status.hard) { core.statusBar.hard.innerText = core.status.hard; } var hardColor = core.getFlag('__hardColor__', 'red'); diff --git a/project/materials/icons.png b/project/materials/icons.png index 9e17e786d499c43e2ea9480d3e9ca8f1b2feaa71..fd4d0519b6ed5e8dc2eb5f4051151cd3c1240fdb 100644 GIT binary patch literal 8095 zcmcI}2T)UMxAsm#AhaYX(jf_m2Stifm6iaCf(QynrGp?v6oRzSx6~Y!A{G!h6cy

JURQM?i30&%~oqY3193e7QYm>dZD1OO(D)xAJo+zgTaLFVG@xR&5%Ae03-?yK0 z?(gmGb^5m0C#B#U5U}*a7*KTGfDXXxo-!7PPfAU5ZIF}z!A)NX2V}chuB}}{mz{J{ z>{f~kpeV3GM}F+dtj!muPrl(ntmS`imTRY<0u%?GHD%Xybs)2wHbA0E>f3jV*!JW= zS}O-tY7I5$^#+ZCOfV!BIBi;(68EOM*toB^H=)Kk2WQ4k!+Mn0Ex*Sqg zQYM!@M~%U_ID-r-wRcb)=+Idjh8eE$fOHSA1cn-ijE6~qSq6=0+ z^F^+4+_Sex%(O9Kkx8z&vt+I7dZ?y#q7!>C6-r&{=K--u2%RW=dWl+Rj0juUKmV+( zw;<$euPnR6s0-*AGw2{(DEgdE?Ee(>`&5Ku|0_GW z-6yLg-(>8;f|ys9bk4(Ao)it2#PbN$jE+aYq9l8lKwN`K+u`r&I#!P6><+^2Pbydq z0MpTpzULmW7N4?4tExiL5RFJ2^RJ=^V<;x?oeJ5B)S8xP>SJhjtqI*wjU!JK7Vcj`8=76pUF9+O=|^tgH1Bhpzqd~ z{(b2Z#oK>g=bVZ7_DgMr(8Mwg_i#q5A?{}i>^L`Ell$$}lY@Ic;fXlaBpuoND=k%m zP7q#)<-9p&!{dQcsnOrZlGY9j19*YN3V5BHW|bQ7Ft5h;ZA)$<)bJ70!ro`(b05Cc z?|PJV{$S5#93b+CKfL=RdnJT)y#R|&?z;}hYM=IJ1DA^m6Sn$2Aj&?c@f{cPiJOj4 zM9Fdk4}Pmh@4fVrCM(u#7>@qS>oJ-iWI+m7Yx@R`sHiic@4m=&+l;qe92OTzi?Fko z+T%R!Y*{ov=ulRQN3wsQEP1nA?v`?6yp%T|W|hMHx7L(?>qkBX{L6BDl)e5lr1=GQf4ai{;gTlVMt&jPv`g}*m}W+^ z_+c^oc%mw2XExmu5oPdP>%rrf-vYkB#QGAvSd7Hcqr1w~>n8{vZ58S1Ws---j1x9` z-vfu?w|p-mLU#5X=d!RSveEJOqq3n5gWW+Ig)33f?iNa+5pn||swWe-L@dxu)@wt^ zj~@h6xjSP70IDa!4lr&1%#Xh{%n=io18KPrWX}wo(q^v1dbe#GgO;^wAVo$e^7HR9 z7`E<5T#x*D@pp7`TGFv5m6IivfP6ojp=m8EI-5`orMtP4GMVsH;0_gzzW>+}!pDZ< z!mtovF`44wWV zJaJv9<{<3>%d*!x&JxC?EU(%mOj+oOpukWnyL5|a^@J9sOw6YZwm5zfTW<*2wda)! ziY1fac-_;y_O#SuVU1Jks+8PbZakg$b-QKb2NV5i(WZV)MGV}KbFBavP-XvdG0H93 zvl2*Fe|hxTroC^M8&b8pV6b{X9X3;-O3f6Ne@!6y!(tRR%v@jA_fL}&p-tA;vQzE* zdd$`=C?s<{90rLIoehM6(Xw|g8t=~c8P56>tx4yOq-qv)LLSx5{n3)T}9)a zc>SgC!_g~`Y%F0~8FiO{PWIHzu=#wMJEjoPmn!Fq54g)x)&`N+RCc>}j$hk%ecDx) zG^2nAEoeAPa?%X)n%Zv63Vw-O=+QcE{E)J7L1UM`{th+AO&1_fd+&G$FPfy%EB93h zq4TpPu()>yHQFhMD@;9PUYloqSow^Ln~Pt|`D;3RFL~EQr{vy>>{1|XYg*v}3y;7) zhlMJK<4hsN;8aBcd#87ZS~|z_<*^YQf*5K9pxV7adtpq`*vu2a+&p_wW@3)`h1h zbm?I%iaOOsVS4`3g;HSgM3iBn2qwduO51rc#$b)35+;? z3Wjb%gFGt`WjmHx0T3Gw6vuN4f45hPrQ3iHScI%4M{ta_0axLPdHIuR6~fH3gOJYS z_6SgCvW#hB-@+@^i*2M4P>t;wwgKOuwE)wkhlSBQPIR+T3^SUkt3>*ux|ekdhMC;# zCdg^0(C%^%qp>x(=3`y3VJr+)uCCgj{GQckmlwnjkT0!_AFcK6U{<$|)(?f$5%lGe z?;9JQapSc|@ZbxV4%q02>ol!>ztxAmA}9!A5=X^fLCbYKOHVJbT4g_{7}P<%@nphq zpC>8;kC?z!rqZ_qV*`I{wZI8smls}p8l?x_Stl-mF19Ya8u;wA8jbhv%Vq_`AA>MX zO61_FMC0=?VF{ONuLVKV-*;{-ILc4YjFxHS2nSD0Qu-qFAlv0z@3t;(+FZYJBiHqs zuQJa6H`OHcd~=dP zrIy0P!7P;t0&*(j@$kx2BNfl8$rGxQV@u)%T~n00qRtDhl~jy#7@Fp`h`c0x9P>NB za(PhG!uWpGy;{Uzw2#uw<06p>zV1phdI9m?Vj9O>m#3sUuV0P#$?_+7g{tnF>U&d~ z#3paNG9QxKbUl{%EFqw>IXurk<@8-d$8LIhy4FjzrR5(U#_ly!ZszXhwR&tM2Htvg zV%ojeJ6Pw8dX<~VyZ>!g(0uXS z*`s`Z9CvbnLu5cjb9hC^;&>)nV$buB$2~Cwj#u7REGDGVJ`PV5j6`vfp|xgM4?!w$ zo8iab`u(O092PsT;s7-?lVkV*lmToM*;k;5g+mcU-W-(J2k>2%^GD!iRKRdhCjZ@bTdfDT0F4oH-bG#lNv)BFGQE-gc(4 z>7Vz{Tv0zeaDq@PwA|LQWKnZc1$L5_rUjvlnoaLoJPF@t`9sPeY@(+mA>cLRRpY<< z&S=T@TfaY9p=7A&?#-3CVwv{&0p*<5`TX~n_8rrsZ(j_~{XA24Ki=<#QyNcOl5^f5 z6QTr9th!foTJ`&kwDTtim*aR^ptOVUam`C-o(&rqjHjqq`+4uW`?D;KRz5x2KiJdD zi;g(j8kKRL?DtcEZ13D$O9?vMS&zm9ss7oHL=$ef@2*-IWH=O*Gn2q5Ri7#8-QPrV;@5knv5A1bIk$0UBG@rE$9%TN}Vk!wJxy$@` z*aaN^SU#9r-*2&!{-hCDv$59|q)N2|#^TC(SGkq7M|PjTP73o&u?J$e%wdB&)Su)j z^k}d4(5*ZrvaeqW=7>uy9-_{bvV#3@x#IfIZ|Ry!JaUnYCaaus?sQga)Dj26-I5Fk zNyqV5o|2459_O9IxFX~3)?X_MDjINXS}ZSK_k4Q9ty2`3z+H#2e4h~_8-FCKYXENz z_Gyw|2*+`EhVQ4m_F(?XNu%Y}7l(KdWUIbWzUS7ki^96$e^Wz;XC}S)u?Rr}KaupCJiYQ;2UBfP|3C6IP%T(a!D>kZ=CHK#+Oj0u=EI%XibAxtm+$KAhfC zQtkp8GS|l>uy&si`3u;j2x7I#Tnj^A zm`?ln%BF*{Cbh-#7Kd9)=YN?HME;iv%vb*1gciq(u(@zLz2AC>P=V#^{9L^p{sr(L z^hkjgfC-7yx@{C~2Au1k#DO=rIlxn79?;SNMlR&SAiFOHA;7M(Z`a_~B)w5%fSH)I zX2pWfWUBwnF`+z@*r3H=X7|t!M&_64hRh#ZMgg4WGtkk(oAMp4h80m2l4cG57YgF$ zJRcLQM)IaS#flrCK5!eJUx<7CVWH7A$S?cNPjq(>oD|E5!1k2)`0r{bPO?vP_2vqO z8!8L#%4oGEJ@(Kdk(_0huoh?z2ivl!*eRyDU(0ZS$yZS|hSKvkKR_L`9zqd)*!@h^vw|2l z)GOe895C|J@CT3W`YV=+tvFx2DoNS=7?WUsdj*ZyTHt|_7!2`_s6^cSv2Lvk5ibgK za;ivHSN-$8{ek@HiN80}=jX5-fl(Tm-&c)e&c^FpD{|q}q&?W)?RDTi~@Ib zFwAv3u}Tn4DRgyx2Q7^UB$XSp<=1Z}< zg!I*XdUqp)K|-sS*-&ai|6l$SKH7BT3L@h??#cbru26a1xhba@kCN9c!;8}>=^i7( zCu@;&9Thf+up(R#DY6q^fm5wgi1&(-MuZo+6;$Fx*ko1AT^Nm|+sL`ioXYg^L=8(S z>s`jC;B+F`&BGL;J6-XC-px~&nF!G=!d3iAbgsKh+6xto$;d2Zb%I8`ihgiMZXvu; zT&;x9@Ds}l(wpo3_qqC)P+j|juU|b5mUkMn?E4K~K-H@Pvwt#|AkxmAjeiU9YKGB2 z2H3aZ-D}(QReSO+Ftd%}F@2z##&IT6Nvjwjky&1S&Vb5l6NFTlK!}mfaOQVqMr>#nM=6Cxm_oQe7k(wl;WJs@He37}pdijc-+GSHVzt&m5}imn ziBQb_SzT_*f5Gc+PK?r|gI}tu#oxrY=31F1(SuNJe@S)}f?3PWwb4%~E?6gRM&+_Hg`*Hx8nI@x}|`Nf69!HC-Nm#+ApNckmQ;~z#;SFb+<@TO)VFw9Ou~T=#@~}?R-GNeRP;G6k- zcLBOx0S{}TN{!-#q!U5Xndr{j%^Xd*Zv_I@R3WCssl*g74eK}rGfC^}z2g9)q&4GMf*uG;lt$QD8$4=_>U z1kL>7jL>HY4=h5B8nn!SnvTJdG{6Qz^cTQqGCzl0Xt(|z=TjE3!= z^Nwwm1dkfMNWISaN}NZ{;FalU*H-Zu7jiB^D!voD?__o&x`w+mMQlAqyd68KUUbuq ztC3%qihUd8#w$+%UyEh1(tzYwPjpr|^$0=?XDhA*Gn+-%DC#If-~R>h8M9?}LRAz6xKd3Ys#sLx@EYb#}>{L?EPN)11l~8an%qr!_ zo)QA71Xe72Twe?1$zRuDjnzJLh0%T*!aFUff_rGFT}E)dz*H1{_Nke{E9@sU^ku_T zpd9`RJ8RF~aBm2SOYp&CQe?rs@$5UZk%-tg8)G>pp@_oO*8vZ~ohkcBko2&$#;iv> z(gWuH%!jtHxgQ(lV zJybyLq{P@vEE5$@g43+c2{!k1;uU^Fdt1k;7N_r&PkU7CTumBE(DxB@@xCP(a~Oi& zEl%k3ZuL$r794^6si_fZY4s|2-%Y~h-JnV9i4>^+q1o*YAg+1)ozs|vbEd$N&&$lV z`%f!G%kp|r$~%`@J!eWXTkq#oKtGCk0kvNoS*%y=o9~Wae3*6p>GHy+zy3r&F5KEf zn@vNh%)(|HPIu=l2(cmOygNDzxmU)IS6ybdrgRnnBgk{`pOCn(seX1%deHL`WVT#Z zP4&H@1{(|Qx*N;440e!qkxdaBWA)pR+R_(kK*0tUwCH&oU~byTdi$j;NI!F1(N=7wcml5tVv-}Yn~0T5Ho=yGK&snJvG766~_I43w9s07BYAnWpKB>^oT zQ;N$OJkJ&PQ5?Wgt%7fL#iTa>C&flr|GSFehOh~T+C}$?v=r78pQ9%apEG(v_*ZY( z#A%8kz7+-eQhGED{bG$|ndo6q%kPbl`{;z3iaCIR<;q|`F{T`&qzPJ=CPJb>L#ydg ziR9~Nl9y&Xs*H8;@)0r&Ctvl)4LWZYoZ)F&P#W*MoVNv?exD#Lt)z7p6aX~#?xny` z2iLwB2A-`Qroz+dl@QtP79`7;1`Kq9CNxt~#%lOum_@<|LMdNf0v6qr>aHO+7MSCg z>_IW?w>TfACmFF%98`SeWcs+!9W=(+UhkOImCb~MoG0+r-45@P8w=Iog{)sFjXjmQ zt}AeGrcO)a_+|G%oMw;;pb8(HBMk#@Fi0#SKatJw$0$Gl?eT0S>?^>ck$uStL6G54;E7tN(L&w?BvMp37l9lTwb@WbtvBnl?m zgmIUKty;2M^8yyoiHqSV82t+=<**bO$+aaZf$d@==cy~q@pCemi7SYWaVF)VOQ0WK zB4Q`P|C0HmRms2o@Z7)D*6^um1gSE{n(0HhOD`D5XS_LCP=Dz)7j#%vO>(}#8SH20 zQ>3!<;A?ANzF@$F;##hfvk;C21hbu{8F=_@@!ult3b7$}&L%0@{a86_#DJ|5n9!a6 z!6e%B;MJ$*H)R5!x^5j@G98#SZL|Q?rhT3GtY6o-04{6&UJgT?-R|`_I55n7rm8jv z`Y_j<&hK}=n)cuR{r-1s@pSnI74yHaLZO}W;f?9XnqFsw>ZLDr4)p zO@=WTF5|?;sbaf9>laasv)o0aQPYX2CG4Wy$uK#`HY2PqZDjN7@?!9ph5$b~2dox4 zod_?qd=&FQYT@bK7h}wo{qAnwA=PRWiVseH#DVmGKQg>++Is|6=Ghv%TdTk;z%hT}mXjpw?KNpI7EyXH-^$cub$6)SrFal8nFqtCK322CZJ#TAmO>qHQZyNoZ+S22G?7D4}<@-x+kD-^jX zn}0pg1^xrS9ZyzI{uj$DkjcpY$!|51HU6F79*+M5e%3~T((+L#*tdqF)MG$P0h1zR^Jm?#NJ&uQA?TScl=MlQv~ lX0RBsNxa$6GusWSR28y(m;7d#ai|Vly>wkWU(-7H{{SbuEl2pE)zn%z3`&d?(gWUxSjIl^g&7P-Yh(h-6iIFru$QgL1 zMFW4IXd3MhFT3hJl>MF)p>p>R5R{qp>`WzH`P=V;DNEypHd9om2Mg@4gVSU<6G@hR zC@np+AJfg&{{GW}QxLg$f@@!Lb|H&V_$=0g7+@pLupp&Zw$yiIUJN!uWrx+oz^JS+ zuv$uZN7~8D7r^4Ep6V&GOfuQ!6&biU@PQ0^_TU5Anxvx2EY|t$^VFC;v0j%zi_#US zRnyH3)~XqN!wrKOL<&s51C&F@9SKVMr-w4VMsfo;Vd*4;L}?^~GVnpxeQ0YlbWKJP zDFt)V%X%W0Jjx%UzJys~t)i3DX!(uPV`U~4)FEMkI51MikcU|vu&R#kFtRw!dcM1Z zyjP%I+;^0n%^K9mk?U6e{)NKaVn7<)(#>nGjgPNjEFnhCdNO~BW*N_rK!JoD8|AXf zWWhdZ+jlThS}8|h=gpvYlm0ow26nX*3);dlup6yZgH|DLQVCxq5sS@DQSJFF;93?(WU`?zkb{eJtN z+ev^+cj=v+Nid!M691a74HkSv`q7Z809rfoX*+04#o2?|LFywh6GU99TliH1eD=lb zi5UwDBbm;O8217Ms)siQFa*q|`3|_4);5$Pdb$OdPBRq8wDh3K#EGq#T~t!F`;cpK zniG`b!1$ZIY}Lw%SbU__x5F;!Dze5xPL+Y+2W{iLpLW8a`d=%>lDdcCZQwvu={Pw6 zF2|mbV*Hq8P^0q{$!nrbBrCi6yJL4Z0nDTijzJ|#woS9^EaO^pKN`BmP!u^qCrIo~ z#eS!vW>IfYq+O6`lIO)tWVHPqGqp4m%++I?-4;(&%@=|psB<||46EGSf?yitBGDWq z!tXHk_dpJ|fOu zGjic)B6xzrWrB8Fmxg*@yk)4&QcbKKb5u!5NsTjXqoEc;B}#PC0Yy!H@A6n$F+H48 znP#P6Y7nr)?I4lL9?&b;A@%>Qa5Z=umdbgR+(w!)MpQ;X_Q6N2tw=1*@&mA3EDi7b za$6{oR=b+ohJVa~Fi??8S*if!yc7dV4FfDYGqCJDgr?oM_~%A-ITaWN>-g6=E%!1)$6+-m?t zHlG11(!ntaGAAh9zq8 z$;qq3PSC%va)p&}$eC#y(H92slBoYJRNNFHG$*&|f_PGV^~CBTwK}Use%CQQ0{fIm zlWh2_4e_(n7|W#R4hb~nC;n^AA89n zn?pD3LSw{<`4PY71QnszJ)!8l=9z?(oDX3_M7cLZ8B*9)N$Am_VFAk2gq|^Wg&OXO zJYBoc7k2!%qbg(&6{v6{xLrwV`L4;@dtE_W0d6yACT0SFA;6a&ia$%-;&< zMVr5^)U|Ehet2-;4M-yCiGS}wAMcVIyQP$Z_K&Q4;z?JL-u`oss6dU<4L#Eku7T~KrcUn7MbBbjL$&`Ma^(U%&?eJPtx#=(s#1*D`$wSN3yFiN+9@c2|p0 zOBhBXOI2#uPX|9HD3#yEnd>4$of!8KJW(;SXej$n(ZZU%1_$&T*u-dm_olZJhfV z^U8@$`mw(?TRa?1BHXHK?WgEIR`y1eaQl^+JkHyN$N2(akf=w2b-B-V_=y3EeKo4O zhpk$6EayoP-7cu3ehif%jLdm>E_#bnS}zNby>wJ^J#witX%+ajGn7 z6&;A7w^Ut%Q|mXOAV?2(x1?fQaP)8SQoj3>R&LxaOTgRrpUnnwdwcfdlkBIOyq8?-jJ% zSJ7Q%&_l>h3i4LJ%Ulx!cnp%z@C*W*fE-R(1JsO244DKCk7% zVh54cA4XvLuEL?`%Kl&mQ-=C4s`+07-ue$an@~!{4*pCpeea67$NM zp`Uq_Il#7H?G2|J+WVNgmLNmp15#}5n$LKaozVogn)=J}Vta;p8N0tE7t$AFj=z0% zMsPVwFmirNvfbF&C)7-uB(gnj92lg|yjb2<6i6jWSr(iamR~i&+I%Mj%X(qS(NWI8 zdbse%Gn(~cZqMv4SMCwwv?h1@vZO;x?TW< zO1?%1=F*Kt(mXBDx0m&o&)FK#A|$)m@(^H1mP3TZzO|i-i5K#9vpZYd=BgFE;? zVDDL(?=hr|NE7EC7ON(%9B~*4y+#f(u$Ww!+u5zWnjpL&Mmb+n{v6yL*E^p7KA_8R%`tOA)u2BkIm)ILX_s>It`ZiuK~=tAIk=vazq*) zt0X?OySy;ga;?~*-F?dt#4ZhU(0#lj1b5BrA#vLov43TK*LvdJz;(xA>@Et-lyfb9 z1>R}m%&vy6{iP3-h6y~#Kw5$MZ>ZkpGKF_mhYRbm9QI5L5h4dXZlsL8KI^)5UWcBm)t6Xhs zTzO6vKc}5RYunZGoNISShcVIe6T};WGoK5-sx<`G(s9?3 zBF}jWt3=mj*2ioWHdB@*6Ym^hAL`Ug73^hj!Cl(~cYi6!qV%Y=<1DtrY?~$a2g7Uj z&_%Xr3;vMV7gISVVi4L7jP*Kbk_`M&uoL5-P%kV|vYq#_)yomqDG}*DryLGJOc#lJ zyIuizHf5I4o!ct$1gB9%xzur)awAEIf|yDNJyIt^1# z96*8^YG0l15Pb)51hfZFa-iB`PL`DSYuz1+$b;A5~3+0|(!KKCl~4JsNhS~eNptcjyG;{zia zH-0!gb^r;@VW0DbU?U*5To@>{$!cyslzGs9I1GJojh&*SljAkTaulB4^V0zqTpk{N ziV(2u{Sc8({0;S^`8lcotL*F`A0NKlCaW!bg9CRB*bc!DgNFd{>Ktzzm4HY#%j87w zss}^PAJTFJBy7=XqkrljUEtCLz5O7v|~q-4MfsJiiTc&c>`5G4KLUi zS_M@=;*4E+egeQt&M3B>YBT&6jltX)sdIA=C)<)=sjBk@jb8-NhQa$SvqDnHm>nHe zmS+-Wap5a*!z}fUr^D^$#(g{Sg0K|b{^kYyO4%ulnNS+K`Kf(k^9YHRBpq|nrUflV zZH_~W9R$L&vW=@22QgC1;%$M7>z_H9&4=ITDuTw!91eo;>iEa>Mkni6^&See_*)qB zNlUj{4~0^cJ6mBnD|g!+f_T=8nTG!$OEUQT7UFoLuBKZ{hhTHHPRy7ay)8)ADs!VO zk@mvt4(}66C-RQSY}Wjxf_bP*uhG+Z8~I%TxTqE;b`M|&NqHz*YTTD@dQ41Q{Wt^& zVrU%GyZs2P8B^ZaRq8TX7{w2idW!B*=c0-(@^0I*UR2(F{yT+i#!X!$Q>0LYczW~Q!4XdzAPFSMa=lVy3g0BcinZ?2QTQh(35tMmxDvXsKvZEgop`uFQc@>QXi zqLjh|KO6Xg=OI6n{J+UZtiJs=cgtVPp72P z-kESnxlWy-6uY7cu4P=QKZ(-d1!K4M7{@s$yf+1{bD*Euof6lq%rA4 z>d^gZjaM^Nq6zkZ-9WmvXO)8Z(~Tw;{7kMxrpZ4n!LME&{<*B2!LrI${CJsTMC@>y zz8sPT?HK;O*ARAw>Uw);FSrRW-|bJJPDG~@Kz(=rbM%-clz{A;5^Q#y#7 zNy7wKAwjk2p206_!0){mKTdg!pQVyzX?AkY62(@l#pPau?=D*-vs^c6wc#$;A>vgW zUTU;@EgaeB5$;WCHAkY&XcfQ+?<|>Nj8^MI=7}AA3;V)dqqDMNVLOJ1-AZ-iwQ6m~ zktF0X_*^4MoU1q?trB;)&*$&_Nn)}{9<9-i2V9-^Hmi5RW8OHHhe1EE-AAQCq}-}; z)>G01kp}9Tq4e7hmLfln@IiO4bYXwu`VAf4NmIzb(&hD=5DRQy;T;H|ASWl!0kzHh zEWDP9e7$ddDBrk_y?3>@*8x*r%PfDpFxw9JeRF<_5vMsEY|NbV%$V6Ym`*x)Z$@wT ziMLC~M^&HTGk?b?)XbyovnG{wIn!}<8f&g$di&2h=$~hB+&$u=h?`ZATd(2T-ph?} z#Y^7!G{y2pl|UYT+!zi7l(n7_){b%?Ei;gWs7LNEUVd-*z7Y8P3_OmQY(1fT8crB@ zp1$+d$t3V1dl6Qg`=HtE_)QRH0d$SBSCDSOXt?!)jhD>FnF23Pr41=zrbK?JVi(FL z$A7lyFXeuI<*H0UV2Dk%m(S`Km%Lier2iBp*YwKY2OVEJXRt%94lY5m z_Wkl1WdMTE>%6((JIgr43=9Ez48KqoQS9u)+mY|{(wdMT6ZKSRZGEX|t`E}Ey~p1& z7LBCe;Nu^)06S&lZYZq>e?+8L2R`IKe46}?H%W|N+v`S1k6v%*54h4e5}Tn(B$_>U5>x`1AhwX2P`4ywX0aKJRbluTbfrA@UYR~?{$PGAne0jy`MlOk{Uc#S} z3xb~+@3Rq0>)mBz(Fu-rb zw^x`1mz~#wS7nQ%V-_EYfHf3uDyhv?SQh-kxpMID4E{_za36G~fYdbRK!$!+$fC0< zxoFx|gVe-3FyFGs=-NWtvnm3<|6r~v%Hd5PP&&zl4i0_EDdVCcXrf7Qaa+gmhE8L* zU27M+_AD-*mt0?j+oZf5Ya%~+M>KJ_)h=>lNjY>8rSHJMmK&_>*vR*Bh)RkLbcb(4 zSXP?f@|URRg1u}kn)KK-2Hh9cF@WSOdLB1H_*qObHvcnsA#a>u)%eU7*V0i+)}G9A z!GlzI9q9wsCEC=p@!A}WIqd!0V`TWr{PMxB4F}c!$@*JAW^o%AgP|=sSlGSF8`H=Q8)TJx_Fjn3Lim!!+-LZo5-SAA|XxD2ou=>(qfcw$FtPk}S3 zDiutaz<-D8q)!~2-s2af!@yF*@govVfkl75G_H&DUT3wE1i53UXcVMGg>lD%nLd~J zuKJ+Yzezs~am94GcdMas6`Uy&1fRbc!D9Czi1;llD-d7A+{>ZcPad|pj&6^@cnry) zz*%fC_JY{lls@DCjP&a?!silplZfs5M4f<$C8(HeI(;q%0{btKpIf$ zs2%<@-A@)Z0t06rfxoCR*S;n=v#ZM^k46|w9;z*CLw>&9RxS@)&P9!6$8#d<{0IvFe@C$QzGOA+|2}~pk^zZl6GO8yd+I~B zUh^yW9g+X<3>r67|Kn;-k*EPO^BncVyiGML{siiV1H(4)YbR4fY7|&zOHa!b z8-Eld2o5P;tlxN5;XV{$KXI5+U8eCt8m-bEnF7;Y=t+gU@Jy5VxI9at-QcdqLB#~T zt-BgL4q6Mh%zf+&HJ28@G8sd~A0SqQkqTX+(*-)Ri`w7xgMSt;Y)M%Op#@Av$AL_zR_bii8AQM8D;T$=Rd+ z*G5xivez&F*1aXmrRAneyoW_{NCmkMV`t-v#wK8gPcT1ZOYSdiNV!y3j;rAwfyTgY zp-}NipEkO=r-J5*8Y{Bh5D7`V+{-fW6){_lu{TndmOU5e&20L)ddJ?J63GBt z7QOk3j%tixi!UAi@Yx8BGbD|P>$H7}m~zc>i#y`5Mw5_qG82pDoi8x;Hr6H0xnf-C`X!si?Je>FYynUt2Bh`DhTllrhu#uq%7$v-P!ZP1n z7BB$(PlA>F&|HrskwSM>tz3Fy{t+lN^ltDb8!av4yiJvPPf1YUf%G(quC)CNpoo4v zGa(qFczM7)&xGkZl#^Snq6<7<_I_MBF}2Hza(z%3R_|8zv{8$BT(w;uJInap$<{Tg z0iM)Cy3ka7eo2&ea5>Bsthq}x=fwS>eT#08AjQfT+sBl75a6|7ikNl6C+;mTuhOWr zTTp8*1N;>)-hB_)ZzrhD#O04*SF1{Myr{tM3&xWYsnt(U&$ zHnx|!)i6E>>ylY$>DZ~n0IApjg@hooXJknz{oU9UMCSv8coqY_IQVsZ?{I#TvF#@*ud4>8w!dr{^{r?t#>l>)Y-+qHNwp;VMy?+hwwmoLlL7QB z#-NJVSCJm=)>Se+A+a(-cE+V4Ly?PE8*?mG-wx3}0{EMRAFGp5`{ik>B<*1Y#m2i? zZlF#KysdCigEmhSVNV;1JCiFjE46q9)NNcmmu)%DS69adROi1(A~O@yyKY!SQYTXn zGB7v^2@@aeUo&C%@6S>GdL!EMi6zb2*kDg&PMR<*m1r8XA6jL2x>lUO!yIK7;@Que z3ooj9YlIl>dc!WHcf-HDhb{QpL-cM;$qIRVLq0kVvbV;oGkJUSOc#1Ol6#~K8Q~US z#h$fH{lIKNjJmLK@3`By*)V0us1&7D)Q?-lf`ohJ!56iAsL$xnBhUpGPz@J`w{n~H zu@^=pJFmX-w&V<;CJd2@2uuD_kxXw~HD~TmSD1dyseanF$4>8I-?|{4C`%A&7sm!U zqVfeNvio>nS8QXL+!}-`Z}?a8)t6xc4^bUuS9BsypfN+37}x*=%`> z$;P!Ig0BU|suutkVPy)!R#lWVx^A%m!1gyaVZ29=A?mY8QHsa{f;&@JaVEXh;RYy zBM?8v=p5>;kjnkJscqTrwSlM*ii`edjKc>rmOYdA)7Mey1nbmd{&Z+y9D1FPS~Ol1 z!sa#@w$E={M*5NCVC+qXcY=RcaZVOw=g4_h<}ykHuz^KT+`b6sB|olY`!g}Fb9S=+ zrR_TZA6=br`P00WwdAX)N0c4Delcvj5~6iHTkmyvO4t@_R}MWz?YEo_YCfA_-C(2w zRNAz5Un}jt|Li(qQ@`a(Sr^~d9OHw`EFhvpM@XVeT1Wccfp58z_#z@ViU8E;a7A42btKZt8+MB=fF0Nwnnja986x@pYMq zTfR6uvdC^Z+Fy(|uxt*$3hUkFT0i`9eHQ>|{qHUSKr&17t6;eg1!+?0_0DGqI~~n! zxw_a7SANqJWTEt7g^PPCDN<)kK*J61FKFHW(!XyN_-1CT zhyL?%;d#fTjNdT*Cd%=YYuziOXIs>oHLpGzp$C*eO=?^z1H(C88tFHCqvA7>D_p{t z5!cnf@=w6YMPzPqac6at49R!}N~cYRxF3sw!~D`FB}$on&Yi^{f8F?K8S?E%LDeV0 zHO*TL5<1tGz^VSr#zLW1?ALakgP4R4ew~9_F0Ycqt#7|iNb)_7Mto%r%#h}1;^N38 zfE+Jip8rGOKDaLb=v;gkq)G7#aE%Aqy{j*XWj<1w#f2}e$Q*pW$(yvo)f<`V`2Qcu z@dB`1GRXD#j_wl-v5u^w7%$qs{vjjZ`Djzus)lOboXvli>>Tv(D>C(zJ@4PmlI&DY zIVlKyGcSv`^D#-Fiu0u){hAaPAJ8YRkDuo2ALnm8OD zIQX4=HOJa|mjXv4G6m*L0ymGnC2zOrC`I+A%en6v0I3}>lZB|(!*$5wh n-s`EF<8Qh#N>M?6MNO5t=VkDCrSAF$3P9_jzFLKfE%JW>MR(ye