From a5c4ec90cba72ad17d6335a0e0bd59bc26d4dbf0 Mon Sep 17 00:00:00 2001 From: Naoyuki Sogo Date: Mon, 16 Mar 2026 13:35:25 +0900 Subject: [PATCH 1/3] call _addNextComponent if component is already finished --- server/app/core/dispatcher.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/app/core/dispatcher.js b/server/app/core/dispatcher.js index 453277ac..4b03d041 100644 --- a/server/app/core/dispatcher.js +++ b/server/app/core/dispatcher.js @@ -181,6 +181,7 @@ class Dispatcher extends EventEmitter { try { if (target.state === "finished") { getLogger(this.projectRootDir).info(`finished component don't re-run at this time: ${target.name}(${target.ID})`); + await this._addNextComponent(target); } else { await this._cmdFactory(target.type).call(this, target); } From 23a8cebe48b04d76f4a7d7c8b8584315a3308118 Mon Sep 17 00:00:00 2001 From: Naoyuki Sogo Date: Mon, 16 Mar 2026 14:42:59 +0900 Subject: [PATCH 2/3] add new restart test case --- server/test/app/core/restart.js | 38 ++++++++++++++++++ .../testFiles/restart_with_dependency.tgz | Bin 0 -> 51411 bytes 2 files changed, 38 insertions(+) create mode 100644 server/test/testFiles/restart_with_dependency.tgz diff --git a/server/test/app/core/restart.js b/server/test/app/core/restart.js index 8fd7a489..03e21512 100644 --- a/server/test/app/core/restart.js +++ b/server/test/app/core/restart.js @@ -7,6 +7,7 @@ const path = require("path"); const fs = require("fs-extra"); const tar = require("tar"); +const { EventEmitter } = require("events"); //setup test framework const chai = require("chai"); @@ -16,6 +17,8 @@ chai.use(require("chai-fs")); //testee const { runProject } = require("../../../app/core/projectController.js"); +const { statusFilename } = require("../../../app/db/db.js"); +const { eventEmitters } = require("../../../app/core/global.js"); //test data const testDirRoot = "WHEEL_TEST_TMP"; @@ -159,6 +162,41 @@ describe("restart UT", function () { expect(path.resolve(projectRootDir, "PS0/15_hoge.txt")).to.be.a.file().with.contents.that.match(/PS0_time_15\/task0/); expect(path.resolve(projectRootDir, "PS0/20_hoge.txt")).to.be.a.file().with.contents.that.match(/PS0_time_20\/task0/); }); + it("can restart and skip already finished component while completing remaining tasks with dependency", async ()=>{ + await tar.x({ + file: path.resolve(testFileDir, "restart_with_dependency.tgz"), + preserveOwner: false, + cwd: projectRootDir + }); + const projectDir = path.resolve(projectRootDir, "restart_with_dependency.wheel"); + + const ee = new EventEmitter(); + eventEmitters.set(projectDir, ee); + + try { + await runProject(projectDir); + } finally { + eventEmitters.delete(projectDir); + } + + //task0 must not run again: state stays "finished" and no dispatchedTime is added + const task0Json = await fs.readJson(path.resolve(projectDir, "task0/cmp.wheel.json")); + expect(task0Json.state).to.equal("finished"); + expect(task0Json.dispatchedTime).to.be.undefined; + + //task1 must finish + const task1Json = await fs.readJson(path.resolve(projectDir, "task1/cmp.wheel.json")); + expect(task1Json.state).to.equal("finished"); + + //task2 must finish + const task2Json = await fs.readJson(path.resolve(projectDir, "task2/cmp.wheel.json")); + expect(task2Json.state).to.equal("finished"); + + //task2's output: status file must exist and report successful execution + expect(path.resolve(projectDir, `task2/${statusFilename}`)) + .to.be.a.file() + .with.contents.that.match(/^finished\n0/); + }); it("can restart PS component and re-run only not finished instances", async ()=>{ await tar.x({ file: path.resolve(testFileDir, "restart_PS_stop_before_actual_run.tgz"), diff --git a/server/test/testFiles/restart_with_dependency.tgz b/server/test/testFiles/restart_with_dependency.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b537eda6ccc4ebb49d2f76716fa504b7a608f873 GIT binary patch literal 51411 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

aDA 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%0A0;UYd;wyfb z3x4jU$l|1bf61gM|4PKG%7^1cAZ|BMg#U#E{#tMvf_dGjOWva-KsxD6b|ZFjmm2B8 zCQ>);@G5!%ONTnl!!=F18eebpjFA2`6t5T8<2PCRYh3l^?*-~8BEKRC-^gTrp&iC5 z0YNNl5+nSn%bvRbB1&wercZ6HMUl*E;AwosE@dh(8SN)Io1XnEl!#Yr7*3vl^Ls~x zSG$>NLP1N^O(+A^c@<7P2zR$yZNXfCXQEN|jhCOfqA#_5)QtCReNtHm*nlOFoq!O2 zjzbG{oHXx=-zKeZVUV#@S|NTgRCP0_A z3-rE_*kdNl;N#v?w}V;-p$tDBTWjrf@J@HRn?8c^D%NDLkOu8t^#Y1rSyNQ?n4x~r zFSfn6y-Zqe^$SjjKM!!6jzuOV49{w?N4|8eEPqRG)G2Rs(aw1O0cHh0c^z=C5c6H$C-@}+03Y*v5E;sx={n2Z9-s$RCdyGb>ZH{I6UNHG?|Ne@P&d2`NrOjX2 zF!9N_DPEJrdYIG&irt8WTa?X0tmifW6{Xfkw5`9qNNcJ?4JE8djNp7eBbe%RD+ZV4DzP zIZe|5up=;3n`aqb}^DCF7qA9ch_9X_Q5F zy|18-Q(h9(o6zvwT?B>i$y60-B|U;6QJWmdrR@sYB2?=igw(plSHpj^K3+?soajo) z{m|_RPZCY@vsA7UK?W8MgH+_HXg_W+x=FOs`{%}cwxAgIVmT&XFBEZs3KvL!%jpt*O?4q$ zUjt@X!L_dvrNdb)$=#W+b>Fv^MIs(jDH4B$=6tn`qYzrZ{2T@}@n#sudJN&;%JdRN;{mgsx5GVcrqB|Z{q=?4-E=Bc{EV~{rXv;W}nmcQZh5hWr) zoRjSq?pfTEur}($5>v-8pRX8xB-K4Sh*o=5<)xoi-z+Vj5@mdcra?89w_p^9iEUnw zCOZ3K3Dhg1x*D6G8kN#&KhM~q(Ft`OZKeWUwB)zpM;lT@67erhN;&mtB|3|I zNUNlcbP|~uK8lpuwmwBJyKWoKHGCG^Ciy4)RiTr^!9A=Yws1sWr1lIF(FJGVf^;<4 zZ9fY!qxe#M zQ1RwAhlkB31%K1uHhIX1mDREPdDa72iC*H2>(ndh40vV$?_r z??`!#e+I9sk=U?0PYPxC#~?=0!PKHSEWt^G6UmH2(Ocz~OhCc4?p|@~OFTjKf;#p% znapqtlNwVZhlh}05If_2CKOZ0HpUNseG~q^mzUZYJB0mq$D)#WgoT?gMQSA2$wC8B z?7LtvQN0^`H0M}vztrWAhVN*IyqTIl^Q5nE9|@PHgUhQp?W(4jJkFRpewD`@4!H?c zf9)2lxea{dF5)+{$m-o2cx2Med3%L(6zIJqjswsCcaVs; zv04slF*>Z(`28QOPxyPVKF)61^BW8`dCydkAAXq1j>p2bX!cQ9J>%(rQz%+7hi1uq ztkE<7z~yu+dCgTdOXGLO{VPGN2}<(jX+syj3XnCk-UIew1(h<`z=gRkkQDz9J%V8# zMRk{e7tOheIm@)&dyEXG@+79Rp_ZZwMZ;u9+MdSVWf8~-c;esriBGC55iCW-AOK9m z{UyjM9&(seGIm_z{a%zuu@U3AA0W+L#P@FhAhf3Fz2Oe=;z#dyB^I9Y>c+e-r;WXK z9$%C{R(jQ;%xceBigV+mQ6iMMx&6Yk<}YV#QRK$lv*4P~8nVgDC@9YMlxVdBe@vB9 z%9J)zXL_%>Z9{K^_Kkht)@V1*tA}q>?)PU^MGTFFow}YTD{Z$bZI5G3`k$U81SLfV zOn0V}*g5J-j!N7~__<0k__f8;Ng0G+6ltZ5RA}V2RC%s>XTk#e+80m1HWVDk-f_x5 zVPtt>VujOVCO40t`po3pn;wZ;vE>&_5!?1?OgV^i42H8{d`r%4JNE{hpoAgMNYhp;-0l zSL9w(E@5^2T5=TbI4n(Q!*ees>B+`WS32?( zB>HHFb6ehgW^_YhMi~UbBXq^tLCmZTMU3M%%J=MNfBJ@f`oG%mm()~7mt0`%6AcyF z76D%YmBANM$vMbe0ov=stpwRuNFk#lsthE$4t z$*^dK8p(@3E6P=r8yJ+PTxb2QIx=`umbUCHhhhSJIR?5A1>oOfA>9D@D*$|I8Z-jq znH9ma1|qyDNtK}y%YgC%fEfd*Av;IBT7eZT@B6ysJri!sT>O`vG-umFyE32VHSs*| zUpWK5f+A9CUr~jDFAV7?z$E-LtdI}USET6{k{kmFgZ5y!9DF~}gDrhO0JTE9q}c-} z8O9#p~kul_5fqZBkcDG{eX0w}2Nw%yqgRks1Kon{{fL zqr-%3xjzGAYl(&gbITcL+xC^W?tCH3(ZsgK@1VDR0B>vKD)HYYlsM-_28^eW4ShiS z8enq7p9Uu2r(x$K=x%4l6)hF&GaUjox9LJlhen{Jh5s{)l-+ZZMe80`i;5=;Q-?03 z9X~eXsyl@S%OdoWgO#2nO50MsO@xgN$bb$Yz!> zDpBDYTn^`V_Xk`+Qp3e?Z3`>51=IXEFdznt=hv_%*yDy^ zuQ~?|MKgy`e}1AC1?2wgd`~?jv|$YBCxXdVhG0}DjDm9geBNojdh!e+2JUr|0+k?` zkqS@-VYFPteJ(pUR34Tb3L}TVr=EOsVk`MlA9!m{0;j{w-D|2M@~6H@>WR35zuQkw%ce*x$tjRLSl)<1NSo*Af& z08%R;BO56FfIWU)>0`39~A$BkT3bX9$l!s> zU*N=r`*;802ma6qSpoFBTzVj>r2cXpMs2~uz#AG-N({)^>~)q0eg+h^0>u=rz`QpA z!?4&k`1vPgc%K2hI7EgA5IYbEu)xFs?l}SyA3&!9L@Y{bGT#*!g3_^xg zYLp^KLu==afumnQvh1IKxCkyk!Ug!>K)1gDy);1mzbPkyJD?Bdg3#t32v`fA7Eq4* zXRYu)AQ9$~f4cN9@?l&DtZnnzF3*8Tcds6GwFL}5&!ikWj`bNe3OarcFkb$jw+=o8 z6#C)upK=KR`Oj%jub#nT*UtyQVHk?4=7l8kw zh#OXer4$DlX{UQO4F33a3hzg~S2UYRtmTSw(Urk@_8D|Tc>Ord?_u#}xPG~wb8oJZ z2FSD0tOC`gfcykBiALnHa}=QeNAV%80#DpeApd8-@p3)Kf7vEDkEpRFYlk2>E19n! z26cWu0p{j`LKu8P_y05xfa@GK(PyQ9Gx4S>sUXg(Uh2LYz5 zfE_H;1&h1VqeGzn5YWX>gFZj<|2iC|dZQyM|EsQ%y~wR;00s^rT!YU|utipL4wjYD z;2!`4VYK1DNoqj#Q|~}T_o;p<2VfYp_unEDhN{1ZlIXw$5f)u`v-gl@n$5evNrMp3 zf4wB3@_aaVyI@^dzp#675iEFmu)jU6|HuWr_rOhnGJ4TNr~eYz9|8(O5Bwh;j#dFY za-V?Y&w)V*Si8p_N=>92DC(}2bPp{4ktzWyYoAJCE@32w85<_A@8f_TOuBveI|%MJ z*z4cQ(g9#E%SCjL3Q@O)Y49`1Ja`3u9}j3{19Hz0I*lV(rc4kZ(baql1+fHw1}Gc@ z#R4t?N60J1WHO)>_MS2@dC#?{gn6y zq4XjEW2FJW1yiX1D|#E5fbNd@6d#Ov`o|p7B!TOHo>Plof<%A;7?~+G1Lfs^#GN2B zc$|i#1;#@(Glg*Rp|yi_&R|u-|KB^%Yyt*Q8$-);&_7r*L;*&GqFMwpK-SX%BDrVw zUE#VDCfzU2Ky_zd>Y%BM|Ho-hTth;VT>#~MDqkGz3*rCv7(vBusD96bxh>4up%C@T z4-j=-8z{&j7{-Cp(*X43r~#Lq(U8|bZsY&9H1e>!Twkai%vM3kF!T$Wz#fwkc-2`j zItDu;{3qG}3y*HO|BnX$3y(d1m=R(2 z42Ct_0ky-RZ2m`U`8!i!w3xlc4k0FBp ziBLA6IAab(?19bx2{vqw(?DCnc@oXm9qu>S|1tRYKM;_1!PF&yk2*wM9?Ga{_1LMS zK>!dm1{3QeY0mLUq+6VWn*Ctg;==>@b`%i10$|2_l5zw{id13R9}lY?Mf^Y8qSVQM zQb_$3w%5Qm5>^W=t`%5*O8c+|fRX!VusqcBw!s+s@94n0kAN|L1?Gdny#L!Ze%_nQ zLE!=I|D(O%{vW>HJRGY3{R6fXN<~pb8GVRSqD5pIrILh-2r(ptY}wZ%Dn*t^c2h}0 zsO;-l%Ff7|b?n<)i|Q8A_y zkQl(WQ!xj?>%XaH6<78H~&jx2D|tqy5xK2NC2mt6*FR6|#nr2lSbFC(MA(Ej0nQK0an+9dHd`qWD=G zpa<~QKr`5iM#(Ln1{ngASSZ0T9-xq0g}`z&c;JsD?`i0w1^g$|t!z=3DX0ThkFxTE zllr0mPXaM+!K;okm7 zJFBRud*JxKBA}1N4U)}}M@9z-=W&7&W|t5$gFcARxGgGyaEGpqNbq6?y4Z_AKI?5J zcE2bOKqkYxx9z0^3uOPm))*&}sKpL)GKk>bA6P)1=+=F@0Sqx9GL?#2R@(}kZeVH3 z1ZvE@=K~mhWbMJfDLG$YMKXj<%;xzcy4nqj;Ri8zG4IzcnY9h!tUI*d| zFsh%5`uma1TL!4SZD=(Alea2Gq&6H8++3$TS3mrXhqE?Q0ysA^+g=emZ2nsEgne z5KSJE0UDcV1^5Iqc+R~w!+voCh<~4p1BO%B6p(?CR0J59XbeQhD1-bp@CJF}H;$`` zz*Ou%%~HKv#4Y&Gb^j%9Xy7`9xw?Yz+rPK_#U$Yi3C1Cqrf&@{Zoj;U%_@icHh|Ri zFU+kpKy)tz&sSxZTY-S~)}DZEli>0M%U+rC-g4$eo@yfW4A~?S6%KanT#RI*rEb8Pfo{w^j>b9?4b=}xJ!0za zN9tyF+e|^sEB1gsaEEF`gpAFJ;18!x0p)9G6QIXtMDLS_l^#NO#^hQ-Ka#&hCxJoA z1b9(l2{KO8x55M6&D98AZfOpj6hd#17yr#JvzJz&Au6^Xnd(1+a2+8qC=6bw{J%6+ z4<&MeA@e6YBXsW8423ZA_m!x5FkcFgvEdzv6#gquHlU5)fIJJlo^7T5f5jky2_fqe zj&14Xj|`c;qLHEuUH*Ub*FQ1}=`+^V~ z5EvYgw?WVpd+bRRNGFy8VmLVYor3=#SVKmh<>CD1aWtY${-}ZsBC^e8A4ot*6#Iuw zf#VeLa|Mm0!|S4U;IjV&@EXM0&>$&fnEYrfk_k=0`!(n{$P-_E#M~-{3fOJCw^qO*?Ve`6Ciuqo|z)a-tF8O>c>cz_Ar#X9y+@tz|v3n$#YXw2g>o|S2ERf^M zkbG@;=Md0BnBmr!kqerKi2MNA3ZSVcw-pYjE4Ff&37Mk1#E4|zWMM-nstBqux#Mlb zFD@N>X8WzauIHb_%zvD3dr%v7x#i|=xzozZyFT;Wc`H8*M;j}__B-(iFM5K4J@E>y zU}Q7yV+g2`4A>28$`wCCHnfNXc8VBv` zC|9`f-E+})bLo5aP>CR<(n%e(NirxfeLGcXVqi1Kdu`!1 z)n0oP1RQRUD(1X5YB+Vz?}qirj;>JC>{cW0Po9~spLibJ){4%KF!`O{p5n3#t19u~ zxY&iUPkh74U(QHBIDAnGOy=VvshHdLGteyyn2>4i%t%=4!&fE|7N2Q3Qsy;7sx~eY z>(-VY30KVi%7bY%En^S3oqm`nV}#b@`6-#YxI1elc!C6)E;!(ly?;Fs#<{f|^i1(= zFq3yv2EDm?hboz=SY=YQEBdtaM9j;obd1}b6e~f%SbI*sri(FgJ!7m zD!=+ygZfw6fum6+(_VOlPWGnH6>FOeZ^9*3JP(Qp1BLWooS86sB<0#_(EA;Bx5s}z zP1yINAXX>yxufkRsiWdALq-!ZA!TUEHO4dhle=m`Tp@d{c zSm7qlJkVlQcY6eb;N^E`AuXmDwDz7lz4q2n-_u}vOV zn!RDML8)01xQz~Q>*Rsq^>mwSojFcJ46`L}&sXT*aN7#-r$5ufP-;1ejs>ZHCF}D_ z=R39imHXvI;x z+v|$nK21~p8=AMz>B+et-SGnV@nGhgO!1zNXKoPG-vQTlU>j6FiQN+qBg@QUp-Apy zgb9`>Fi#8ahkXZ-=>k2d8=zqw5?|F-rAJDGAo1Q-kR_3i%zccmLT%2o;1*AVNXmNS zEmskrg(ok0(Dx64g|hWxc*PnYi3LsH(a8myu}|Uh`lOLm2yQ*`T&H3tzdY4z?jU*C z_4B&H(uxdYwXh*9FS&Fagknb=heQNWej~jBXF1TK8{hy*M|_)E9KYy%bhG4@;jg=H zb?@^@l;`^tf9>J-BcDPJ^K7<(6ENZ2!2#$jHG>7wySr~wk=0dn5k&k!hVapg{Kz~G z0@>IVXdhJ)%k*yr<1eTf#6a7_(SY^VF&uMrEKWdsf3W&hXcI7#%Y+O1@Wn~0bH9Cy z2I=K-trgJd!eN2jbK#aiZoOu(VK7qVo37t{nZ3>egJ_h17aGdJmOl1Trx`lAJK%H| zf|UAX{OE5@CPU=SM%bXFb$pSyG5zXEOQF|SI?si1SHbM6s>LP5DyMs;FpqrYNoA!eCGPWwK)G;0026NW zjG)h{HrT+OEBM2bhsh1$eJbKP7Zw9c82NE#gMhYB3{xjaXkXe?96tejb}qRvFNIlb z3CqKMHU}RCkhzgQJ*{YokJ8#*u}`xyT0g$~9BRA#^662#<0sxrSQ#DiaEnm`G6+GJ zg~ei!RSsKRs2w2bdK(Qo38JglPQn5Rv%yo)FBvh&jMOv~$;>+o*7hkOOQYl%Q0=u0XS!L-&R1YcV05wO z@sHpvJBKb5CwF(an)sCa$E4>0WEp`ve8jVIrSvDBA&+UFDlb>998;YtAbQ59VWab|uVKBSiurso~U=!m$uAZIh|D7?Knu41r*o^0+18hQ$hK(G02%S_}OZFxElgoX< zCqN+Qz%5PWyz;4yCt-=YNpDo?JmI>}_ua;&DKSfbRGe1@Pan&0B@Q1Pd$hoWyj9C#*n1|BYJaGE^!7 z=Y9HyEOQe)M34vX`BYt&9f2UtV?J|y4}OHwO~wpNSj{DIzTIJYJ-Qe{VoI&VGsjQlDKmTPO=Sk>>VG%@_(z#xs-G>;T7uW`kf1Iux_k-!vkN|q z-u(F1M5n;gi7`_`2l>{O@cL;St+#WSG;Cih)9%3ACliiWv`ko5^PY)~!BIzPdJe>d zR_<>+0hEzjpUyGPjhl5kOZz{eQ*G=PXz55_l%F+=>c$WXZ;&; z6i0>29myvw@xicLPw30dG9I74#nn#X6l~RInRjsH5(SoSfi`Md$gj%1nHS3gmPc9p z;17(J2Hfk!!a^b?ZPyuU+7Tq=Uv+$V6d#&!BT!T6NXw2}nJ#-; zBHdvPz2P|bH@rxTv?#eMd=7-|n5<2+`HrI1AO7Ar}I>6oPHTk5i&5D7C#gfj3;$S*LXqml=8e zZ{O_OapL&L*r&FiE55{Ey?wfeUq<{2Uni@y!`-x5aQ+1NP~X>x7S#Mr!|vp0z^p8v zn+3$LmZ{f9*5*IH)VA4pfK!G>QZg33>+MZ7tUkJ?A2!H)dGZ3>#y!nkoho)5_Uwz} zDciIUsr1sA$Q7t6huf57d>@T%;LyOSz6wLHc^0R9>dj`~+knnTW&y9i4(7}-W;xGR zy)J!FGmM(}`wAJ~Y!(o9|i}T7yoXKlL}k zanWbcKusLXZ7Tr#yWgD3%6uyNN&mHcVZpl{pWfU|e|nVr>h)_Mw@F9AJdHTfm1~H> zzQ8~qmSrMaFQtG89Ya8hGfc$xI?DQLOZu_@7hvh}KrY<_or#$!aheP1^Gmz1#tGjrtMqH57EcFwHD!}Vd^!jir+`^v9DK%S z86tz$K|HCTj*q?YqxdVti`EL>#Qp#EaI8;{#Q{qu?!_jsNy$m<~DFgGr8K7bX5R+#sie07)8uKW__3l*#5YJm)95UdV} zp}l+g$`7p#l=?DP+qAlCNEpg^c*xLduNcW`wn`O@63K@O9?vGrldl&oxz()gPDclj zX-x1Nn%Mn18+%fjQC~5aAq7>s#*uGBgHr`EI^hnB&0I$ssW{dLeQ(^=JE9YR+B;8S z*#O^ey(jMjPnv!Ax-iyOClBKG-?|+I(3)0TZ8Te^q{3D+J!Kl?GPKx4*^t=+mI;7t zBWgrb7f6<{AqA<0M%pYn3W;J67re3NYk&PNgK_is;q5 zXO_NC1}2N*&M(j3@lA2AH8eBZSn5+fO>a*T(kZ7lkxYH+v-9x*(M8d7<_r`K z)U2TSk$N@ajD`q(TqS)2D=PoG%R!&Nt!=r4NO9l~qvlKA@?4@D+mVvjI&g6tYZ)>- zn+{i^*Wxt5#_Ts*DiOU#XwuLP{Sx2f27f6&pZvJvhn_VcEVZDjm{?ghic4g%c8d3} zjPvk-;^>=C+2pdZ6L_3^{Rz`S(pr`x-fZ#mds2IsKiz%3$2QgN8Dk-)7H zh~RPi9OnpgK+?MMpFGA-c|+#P_eI$MZUd#uAeZ9Xn`&{$b4^>_2Ok5eR^<8DO`@>@ z;~=1GW!+r~Y?k0Kn_Y{kWmM*m?Zu`ePI8owP?6onTb(2hhK7pbJ1> zr%&@4J`P^b|8y@^cbdN8lfZWG*M6%vf;d}KAeQ5E|~U@96lhz=-G{~lm`pg zT%)Sda}(=^KLm;)GJbVN$9GY$LFD@wCS$>Ss4MP<0&!6<(u~GjfBf;$k+nWI*y3Wr1KIP}G;5MVoM0X@IJdVMC-rRufvG>~5sC$L)W7fHZ6gL! ztoV<9LiR1137!Tm%1E_CRso)+_u);dQ9Rak;RaxDFA(zN43df-O0*Uvoa;J%;b?lN z?a`ELpM%~#!7B@LcnzQ1WfecWkBBT4Foz*zW9z@u(6$bc-3qo!2mg^1>mW-%8yMc% zD(?kPNEWsx=EsBMPRnQB-LE|zDZ;!)r1eKCcbsprt6Kkl{OkrhD&BwU3i!3h!E7~c zgj08@WTJ;JMjqu+H@PG9@q_^1c5zN9892DcPQ&Nco@f!K|5ECz78MM|g2XZth0WT%!XR>A#~-}Pj?=qoYY z!lYEnJrBBG3$pOk%Hd~0T7)vw=9fJhY>2_`z4xtpUb*Y#!E=&0m$p_Ew7Hxq0dm-%>QY6H4_GnfFTJNa;Bgx7hM>y*`oCDjRrN)qYhjk{fLdXpao zJaDA%EqEbpyu8KCjh10UWLK4HW?GEBzh)60=zE|fgS zLhuiG!}AqHdO@--^3dzq{(uP1je^i)AHB5qX?Jz-B_0tzu6?@aLA36UtHzp*Wyf3Q zEc_y$0{e={cN8jtudhYCV1|TxuzY5zm6EL7lHVf6zpbz!=R`${>dwn8PEx$NB zi#=k$PP=1vJ+W{7vIw{8d@o;UMYIBjX|aBaygFHDVKid7N>I=i=_XyfuKh&jT)*Cu zF=HVpM=;*x(Qo(Vw?q#wi_h)Vj~YX295B3L zIeqktq7ZJf`%Mh{w4dUK=wDF@F4WupL7heA_9B(HUTI2k3=7zKR$0vr_wsC@w)uj{ zm|Cy!DA7wF_#^qv*>+Cc;;)%_Em)@^sLGS!0^>{oJ5p}Q^BQG9<WxUG~7t z+IM<EjLSPkVk88{0g~r078Oc1{B?`CBeYd3)EsFJE382#T5V*Z&jf%OTsKa33F< zrxykjS`BIY#7Kvh6&EmL@|PVmskMqX7OR*dXOFH8Mk*$0d-x6W{?_xZJKPf0-e9*( zH&CIajNHF&T1B4N|1O)`hVREfbD@1Pv42oM;LTcc?642#!=JYD!9@Y=1A-njr#X;j z!FusNR~w5TZ}4%pkD{vE$Byv?IR}oOt=+|PaXY%|`DZ$mLk1tzhzwMGHrUTI1Y^pd z=fF4;cv-dQMHwK+!4|x=B{a;p>P6r}haRotRcT@GAQp-oT*qPvP8=|vhq#RyP>;7s zr$dn4%kHFak&lkXC)G%4c}VXa0DaP%1P}c0nHGuafQyE)>W}vIu4l-la#YkB%sHH? zJTvX{jNhswlQ63Hqw$-{#A=F+F9wx%x8S|a%=mN7Zlk$yl%*k$`-Q?|zfR&ldBo}* zORmafi=0-G+aZl_}nme zv3W`?5+mKuuXOUbnrFJ><6mo*d`^qA2lP(o1*A2HWxXao4k2E?Qr~@OxaZNNbR{Xh zKX=bTvd&bpLaF#QjT4(L!|~*}NKX?pqd9)7j4sQ}2^(y9z9Y{Yg28~%)Vrh?5z~-> z2W=+vbbO$M=1nzA{#|@gfzMCJi#i9^KhkpoUnR)#p` zXeF_^o}a;)9X*{-M0UQPkcl+&G+BDHQnih=K2l!1|G`Es7Rtd>)E}D7Ek~TOt^AzS zQeDZU)!18_w*SCnjgZRq3f~Vly*54Ea`vO%bIcw_ygexy{kX9#y7eUSp#MRse__;Cb*fTdigR*|t!qwDQ zD%^Il0{vh1+;vKk&mbji#Owap?-?xJu-+Caofh=AOu2$U_3D)%RC4kNi#T;3Rk~`xv(ZG?IIABqXsaJHM-1yL?Yd=I_13HuE_leP$fhy_B!^XKDnb^N{c?JA{wE zbG$W^n6=MknsWYV;|Sh$;Y*oxQ>WzH4n6SS zj{0QoWCpJ(kGy1DV!*=k^*)lf2~O_*lUR5=o1Dm{z^IOOZkAUE=1tW^kG1nz6M2K) z^Kw+nUJ?^;VM2lpRdXm-6B0nS8?1r*?+bzMEU?NJxx)V1=-_cCTGxI)U@>dy5h*81 zU3QI{)ol7DC?RQmGSpJPBUaeRwLp26BW~Bmjy$tnxp!gfo7f3%6e^yhHOT4MKApZL z-DBz*794Wy2CJ%mKCh>hHKET=Dn@ztXtRVt*Exm zitJ%^5Pxt;zsApattz8%(0_I8&3CIgVutUhEBv`GjVURMj>_oFhB@`rcfG^XgM))YVv63lt<8mz?5uX6Ew3ZBn32>Ag!s}u9&}IvDai3v{Wg-`5_%vxdwCab6w23?X0E2!tgFe;N{XHVpP zzo;jgFP>`ds;9ECs_ifr2_03a6Js$BWS9b=2smGpsOVRP^QZ|1?k>du@R;6RMkN66 zGpdRM=Bj7&sEt&Pm}2=egv#ro0lXhY$1eN~B=Mg}==|6TWfbpzm|`f+wY#}Lh0!kd#LWk0)gXYp&9P-*Il z%x3Jmz9}!E7r%<-Drcha#)CTE%W8g6Po1M!WK|=^j=k6cZC`QTmL?i~bq5<_Qbyf@ z2?IckkvIh7yhc}n$8Hm(p9EaNaNeB)7#g@0SPryKI#bbcApaMdJ}cwHB=D@DrfAR) z^%g4Bxf)*g;CyM{@$%)(=C*St`Gq=;%#GxjCf1oO1D!{6Ad_p5{-rCNW*sbj(NJbM zKLDdNnB_*PQD{iX)!-|hY*Nh8p~>3S^=ePQf3h66v)WdPvrwPKPFPX3b68N3Y?tR1 zqg9j;dkV|3ejG>TrHE%J;{8gO(gnguCZDT~2FlJhl$ZI83TE;gFO@D+TKS)KNvj2l$~2GwpU%lbjZoMaNu5ORNh1n7G1HUp>J+?nA>4_@jKGy2RzvtuY+wJXFyDd zsNmK63YW)@HP5`?)y~2es-fEY;771z5Z75~S&ND411Cfj03p{R8=$74 z(26}TmH=)Z#lgxy#lR_yGSD-ie-`V%E^q`E>&RO{ZBqa;2aJ(Tf`S-MA7bl?xZSN` zU55$*EnUYzQ_r1)Q*~E?8G&xaXcx9QFgdWGb279@&Zg{{Mkk42MDme){E&2SdwA%< z-S%%DIbw~rWzG&UBJ5y-9Wim>aZO-P?6#I#~m{$r-O!dnCz$LXg*ejKRKripvc`O6`M7=Cl^y0|`#R2SzZ@7OsJY@? zGy^Hn{9#Tumo?mv#z-b)gS{8}=6IP$hhxg5sB$ncB*at4iysiD#Ho%Zbc0hUv8 z?w_P~lQvBnK0WMjbL~?#kslwucI=p}$3pvYo;_OP2YJ4GroOMd5Iko$(NnlqCSuRy zwiq{hzWe9{?eQ+**zoMDduEfCmt@5RG_CDj#ZA(Z+Yy3R!HhXFD zkdbhjLWpd}-RnfR_EyVyhmq!sA&OVS6YbS~uB4y^2GfMX9lyrO3tZmxC!D@t6C6fz zJ5NgdXl8cSh?;iG4nz7(wsd>DEPcSH`zd+1g4=xJYBgm(Mu|h-RFz_9c2)Dh_j-$o zgcJFuj(M@O2PT^Bi6H>PqQoq21?g&`?_`7SZxgLI=aLfL=J%B4=G79e4q4qmzK?+# z42sZ)X^_LjRmV|rEb>5I*_jIcA)hngLmoTwH^K(b2U+9~|8vOkk73Th$4vD7$qXu_ zH7@bl=V-vJNxBp(v0Y~a7j`fOauBoUU5zL$7<=hMZQHoGdg2ZD^%LC_@}KPb_kT)H z%@J{lx}L*zea|_;Dz9GJc5co=EHt%wKI($E)tx(ePv1XtQ8{n0oHNCjlzKk=v`cIG zqOJTe$-lp|l+TaDeLfkdbgAbR@Jkt!PVvJFBuKr}>bOmKJympCJ>&Q8EQ9z=Km19F z<2+ppjM}yPn1tE0G29&O+^=&RjP(N3u4c(7CH0>)H6A1A^{)*D--+yv#o7K2P#lQ6HR>Cw5F^t^jJAAvi<(n(rl|IK?Cl@q8A;#ZyZsN79 zX4s-VBpR=Jo~oSkeBAv!hn1|(PIoVodK!8?rvBK#q5dqh3L|K<-&Po1@3;_-HRcEI zFwdJ*+BA`YtRaIT5Q|fZENqoPs$C4czvlMY}4)Uy_q2>w&?ET6XeoD z1q;7i8tREMYte%^`i<7CnEIIvpNvf9j$LaOs#g4%_`M}1eo@a?^WF37#Or#8qwhuLA;myvGMb(qaUjwovCQ=eVe4{*J^MLhn}uedoaT z(;_b{M7d7$w`K?)x+J>OHf1N9o_J^=?+#k3Od@@AE-9`FHP63-VX!955DTN0Jfz!Lj#&LHaBJZR@+ewtSbacw5t#X1( z&Hb8?6%CP%w*~U@xXIkT(_W=vS%Zmv*ovUMtdprR6iv8)UWq9`V49-1QUA0pU011M zo>Rg^;)Jg1lET7NQ2PE5>&5pTzvGCN#`}C0=Zf}4YP8tji++)HRl6za;strtmh?v- zKV?5~{Ql}@xZQJot{(&7cE#gihn+_IJOq>)jZOvldXX(64F?T|qLj;;Hx?H)^2<`5(NQhpr$5XcG|D31m9L=f--$Tm`; zZ_6zV{3(=#|B&%}iCd^$iNRexi^0P4JVdmj(536)(wo*F zte6;E<|UM-S+=2_`1Xv7lBKLso6&pCCtYeb24W z3)Xq9-j_-`uc7MJ`?RGiB~qIwM=(o%t>(JAz|3$3=hdnsI__Gi{kq?{a|Uca_}MJ| z{8-V--V$b@JU{)gFO3wP-u3xb>}TVw$_na^v@fIItj}v<3@MxXW;)nS5#NQ0+xzqF ztu@X!>Rb=&RM{60@fu@Q{y~)TKL6!VSBSTjL9su_#Ouqo^Yvp@Qb zTEmmSjqZ~B>TRs&8Ga60dm^?=yR8k4VUBuJf5tazXBbrUdXc-mQ%Nm04Y7|k%9lXOewT)mh9jpiY(p8Z<5(7z1@-7Tthndfy5cXKxdd!o`p(hm6FqF4P zRKmwo2mPuoR&vx8HKrRlzl;-AzN9|BQF(3RCH}+nBums4kJ4G`Cvvv<3g}8s1~AeS3r6Z)a28 z-m&Wx3wQ*hS%Qx3EZzjwL&yT3wpu&I@<%cacqlJ<$!oTF?^xtc&El5(%hss6m;EvuWXKU2(_UY#m5O{ zrFhxT<=Y(5z&>i&ZCD}l22+Lgu+|%lWG@_ZNA-_+A z&z<|~)oPz12%m6DdDC3H&r#8qJJCr`h+Do@#7q`VE`4pThsMbtm*H5;{hZtH)gbok zhzjG8JoY6jNG#%pQR&!|%#^9RR`ZFIdfag}vgwAm#pP5;p;sfw9|~LW{!#;{m#*eL zJ2L&vfw>Lze$%({DEEYL7!qF=ev!Tl#|Ao*{~MEdb)s0e$d0l*?7|oy$4zur^4?V zl%Fp0Nc<4jROPyH(8E&Smc2hfy~t)LSLbXN=|XkO!(Z#m6LdD){wj5A&f$4gTz88t z;oWrE!98+o*7r;wE0$)Sw{9z$O_z(z_t~E(B~LI&y|+AK{!2;|ol&5nTK9t340dw`=EV z-nL*h4l&*!Nk%*)pAL!g{-_!P&)(f*V*gmSTTUAt`qjt!nhE3)oZjZl#Qo1L!d_wG z$rK)!88H6d3V`R9&9eP@8|a-vO%ek8@_Lk0h0iK`zbPHczn|Amc5`0!ANoOi+9Yw_ z_t)$PyOeiF;w14s{+0gs)b;pzQU(-iy?S=t8BYF6b=|$cJ2?VBkWapBJ20(xBI2A? zZtky8w(S!ezFE-D*j>2NNHUfAf?JG1v0eA7dC2AXiNBVNDy&UDhzqv6l3K-iXHRSU zM#=0u73Ih3B~9tePgr_RUvV8{QQlN`ooQw=d*_6nh{cuojP$sDHT}ew|EU67m%P1c z=bOdtv$dnTI+5N){BHM0=jP+eTFc$uJ{QOIRv~hF9N7J)LxB>`LeE77e`xYs9b^0F zVZ0h|;5fU&jSnoX=7N+7`xgrUIlAu*n8C;7f!6;7n%V;Zw1I3OyXgPPa)7iES=%AA zf~q@`90ta#wL9zdyTrFg?bp}92GSDdejaR1sqkej6}>$+kyQTH<&>NcSz09qgTezj58Y;tmr#bu4>i*<vGK5HLRn}-J7MzWmt()84Wk94XYGUn~P-zT#x=FFdQxJ zb1Zpx6lzZKA!YTVjYGOM_q~`PrITn^S1p~suBIJ@pI$Y!O1$j2QCf0V`0Ux|j-_Ay zohBQ1Y)ajcVSU#Aa?MBIr|*dzU*y4x*Ip#f05f?4%(syHqdY(~@-1e)-DUmrE&TbD zK1^@*n;CVe2@fvXkrpRH+);54oOi;cg1SqU`cnH`agm^o_Hx->KC@q?@6`Pu;oYW^Lf2H=E<77Z zxx4S&9b&De71=W`(p`yM)_J_y@o_`Cy>N!pjWhbOh?{$Gpr#F2dBQw9*PyFvd~AU~ z4nA4tWZ`BBjAZA1w!@i&KbP$i=d;_Qs}uHLo58J7L_}vmE7enAQK*OpQbAbN9^`eC zb)I0ZKo=^aq5s1Yk(9@2v6b?isW>m^82vk`jt};X>T3yc1m~~kHxO=B<~X^XkkmR# zKQHGB`wK9pn?rpLNBTT82jeZdR^CPVx(`IEvRw-GuhOzyj1NLK9d-<>``=nxv`C#2 zLuK7Yk9&Jx*A38wCwO;w&>^<>K+;?&op+!0wL|HGte3f_PTZ4umKyj@c2_z@yfzT> zK*W?NJO%UYnpl_lH!UM==o$%@>!+9MZqoD7EsQ`+xt22F_#6+K&*THw8>V39N)Bpgtt zy**$iC=Tz!=5QW+m@NhPaT|#xd3K%pHfz_=rbT~C@RjfT<&h9XsCSNe+Hypy-_l{k zNnt4FVC=1lbxOh7oi^D7p_$G;Z+D1oNIvaL4w+SAKiulB*0&Er`vHK8!U&p?RU$2&mQ z6NJQX72=Sr4$XqS-iOV{0K%>~SeIZPggij)|MICWF+#ura4{+ju~2(}@PB+1rL4J= zrX!vS`Z5=0Z2eRu3$*SA`D_N|KZs~s`tiZq4ZB)p9GhVzkzcz}a1F|u{%ky-Ei2!a z87?gl_{x~FJ~C>%!a5uxD*sk@%@DOSf+!+zP^IE>!2HkMc>IH@jk{5EaWsiCbfx+% zaDCL))0!~TcJZxyyV8D6Rn(%v+L8IT)X^g=ceI=FQNFzir|+CiDX{y8rgA>ar~>+m zO&QC+dvh`6RawuGwDr+%29nL|1&x#eW|Wg;*0vf`#VP=e|3XPEOREAQ2s zUKq_gxh{i9fxo5{4cc-^Hvlw;;&9$J`hQKSi%4Y?;Oe1W4JB0U{fo26&kP^Rw=nx1R8?I`I#_CWt%d*D{p_pB_#+K$>15#d<8&a(98XJ&!r!cRl*n5bX2 z;Z7fBbe0cxXS%{mTzAgGYwpjB-BynpZZ2vqI=q;Y29Ji%-RnhLIcw}EjdCs2r7a^{ z0uwI?r#4!6EQtxsyyaKXD0Di!S!$lQW@|Z}o%I^~_&GAbS^YTN_UkFq>`>iV%d!MB zlwL8{H<>e9OLU#3v0&o)jlD`7o}N4oi8eP6?2GRBCa#+@V$e^R3C_NIsTDfAK!YC2 zu|8X&^6Rif1qNEMS=>yXWEXAc-St$IpY;qI3zN=7gYQ5CS(;62xLMMJShAk5NV`vg<$t8t46 z>KKc6$ubap^KP5$(a~SZBH__r0~DmyNoG z^Q)GRBRuZD_t}}^XKs4Wx4%@i2EYO7_mp!S;ZE9&Mm&-tOgiq`Fh@-0u4dmsTjE)ln>w2bRrMYa0Zw zi@poQDhBp1fQt`_Oe~8hz{Zbmf`KjbKpkKki7ZJ>oD7Zg*IOFO5s=V4#h_skeEZ{F zUt%=;!fx=49qU7SVgr)FH>;%)f6W2uHMAZ7%7s0_jpcjywh*cML0vIp0LwN+tgB zUjMYrD0`kJP_}zv!s03Zo{aa0$tacds=KsaMlGWYFJn72^vj{x?_+~_sc$&vzQxUm zjtqvfwTFrPV9k+-J1SegkKTP__1l8TpD?LJq~CBmb?)dYF{KdormdM2={tKPv!>xr z#%6T0JG19afyVDS6!kXXe#aXgTyk@RjfMTGvDLP7nwGrMYI`{ZmiJEMmjG=9gnhUN z{|B?Mh?Q_}D@&kTK_HTEk#hC_=3CC!mC1H|?B}O=-5hV^#E<>9uzC`fIw1=Uf|xZid*) z?MTQBlI51OK_-K%7{fxT!_CVREUAwlK z?_wF3=A!IsOS>4Y@vZ`$0*){qV@P0p9{gmV`D{L;yGEX8@!>`(-`jj&E zW12>+?|Pf38UU^Cs-Cn7_ewbwSZeMSUz$#wIiZ_)Y@q{bvt@0W--Jh~( zyHmTt>a0PZQMc8Bqp6?n4br^fF7piVmP&XN_`ys0MTna6RkeLwp+Q^`JGQq=Qjb*! zKf_MPfF&5s=FEh~5#{=a;4N)cpkQ-=dRmGsU;l5I0beG7TET&U#-EVOayg9kuelOz zm!CN9hOc}mmEr<>q`q$0yu74I3cVxdPbHSetiwQGrzna%e`zZB` zw6g5)zzlbJvF!wN;$aKJ=}_H{ZERdZYFuM7Tx{0cl-UB!leax>VY}G5O`C~$=ro9* zQ*@VI4@6|h=z#ly|N5R5aB(BC+KGvdV19uFdEp;a$c1IB?vTNNQb(d_M4jL(UO`#b zAlCPh#QJoOMNv8PY{baiqNwJSI7+0&5CgL^Dse$B|o7#5eQ(Jx6X<6c&xRvx!*7UyD$c^MCRs$-$sD;+;3PW@TjW)YYFRj#A>PRc8uu z;iYU=^6!i-rq}gsr1of#=Z>X+9kJpa=kN*whxG-4TV5ubL>Pbtx^OmI=lqXf6j@L=^^84G7^ z9as8G;DMSQxk&>wYB2%~2%d<0$EzK46+C*2L-L4-^t;nRoY7y^;sv<8b~SOCuQ&9W zyThEtG>CT`q39(HoN1i_Kqj>j)4*T`%As+7d%M*{1@Lu8sf(gbK;UZ+QVT_bF->+g zA3kzuW*+(x+yRoT4`#4bVpStlzxln2{&o?!|Ms+SnJ2R1>r1$)Zp4a^U4Ybw3-9do zNwy;g_gMCfQP##jl@_=+W!|g0e`)gWoT*WdFMro1$>F%8l=dTHq{CGohGyPowS{te z#tBQSnpZj`t84g_s}^`$cPHD(&DVAHkwVYH`XYD9?~8HU5jdX)_cjr(u%*;O9_x;{4&iUi~ySXmlnmuc+=eh6S{VcJnR)uQ!rYxZ&536lW z{W+%DomagvOkOaTv6`}PyRJ4v6yzUo(|o?DSJO6vO!30iQG~`@Sq3F1blO>8my8ij z=1S6Lm*|3a*57pYD+g^}zMe_6aZ*ov4gl%$=8_fP{bUtE*59Y_DOCn-sJ-;T33>L@ zgt`3N`v$HI!ac{xnMEQ0M^k!YUv>qvwWS;rzR@iGELzf2H$DPn9%R{mZD+?0P9yK} z!%BdC$Mspp_xpxR1Sj}*sQ_>BN7_(xpt6CWanRWQA9C+Gz=ei@gBjlb$9M&rz_*A3 zw_|;v#T8sW;%@G2r8N;wO{dI)=rT6#MYu_3wb9^g?zkmG7-sQH>YL3p=Lh(#RP$?CBQb9jj2?Nu zggJaxy39RPBG%>a&39N^m?08$_+TNH^lB(yrIxR4-FYzGTzqP_X))?mfM(H5L-5-r zK@Oub<%>{>IE?r;F5xjX{w>?UFHdhU`zy7=N|?$4n>v8z${wHu$%se)Y6t$S zIc+Zik+e{}e?yK?QWPW*{Q$uBDFB&5E-)!x`*2!sb=_*>Z4(D~jCm=CUJiW~ly{@2a`K|<5Gcexsn{_R#jI@P@97k8b~{xj-Hu4zu|7!L z5{`JOCu-?ugXMi7-;Jzw#Z&q^Gqd6}be3sn$mCi>&LL zheJ)KlsV^(_VQmnu@F0**Mo1?ea84L>r28cH>?0z5m*ih;rhwT(_9)Kode*Z(I&9^7k%=tuKpNcF2O0h03vzdP$p31{%>VO z3RnxeB2L#w!`@o_1X@gzZuCgq4PPwx413+m4V}2>Rpi>w?Dn}JuwUVB^E+q0)e84d zJ;f%E$7$m%TWeNQygVbsmY@V_BHsaG&LNdT4PL)&0jOo^@`@cq;TgD z3qKV#Wy_Mp_<=koSRv4=8!=f#O}?EiJg$3Lfu>g(6i7b51wRthyX_vnzn+RrN)TRA zIlonRNImsoajbt9{aK~6%d41%z9H_Hj+>a9^}(1(mWRSs*F392M54*LVVU6dpaxOi z#ZhVHkC)SVjeL_WzBYm%kIM{FZxzfRELr(3%FgfVmIMqx9`#x%UN~pi)(WF3FYl?q^D)q}Wyiip zsQi?~pV9MMx*G|zwA%Nymw{Ivz;Mex0K@{BB0lN1dx%t9rj;`uqInj&YD#WJY|}=A zONJx+oz~-BN*7M;{>fgo@dWHw?>xlfQxJwn6Cbe>xH(#!2D1Q~KXGnTfPY}DS*|-g|5`V4V z-^r?aQf)jFKHXmzS{?LuU0cMZPS6x_klTAgfbE{*J@SzlWB ze_k)DhULd z)ekYMWuU^TkNMj+#6Mw>^$rJkhbDmFn6vgcZW|zYwJPAp=A4Kssv~Vk#rbV z+f94|0xB|GD)M^|ZlqvgBS_>=OvvRq+ENiv{MPizYrwx{cmqWI{<~KI4Q^1odZu3d zzxxFVK>C+c_%#z`^6`o=OLh-O^tMnAGhx~*nk0?dkbIU;o1_E_#~~G_OOzBn1Chfm z#wSney$xU!oNN)4p2c@Wk?V!C4ce>&e($ULV}|f>tb9#}&spnh8>4I3=k^!)-#nzTkL!5`WT_TvrKjXy!ST#HXzY@duFp=jdlR1jya!NM-=&IE3&9 z`vBO_{7?6l3AVUbOc)#yN}y9#37wkr@-`!9UW63(dDH>a<;{BfjyaZb#DIBCEV2bw z@s9aH=&)|LsyJ<=dK|jmUB&IFG)xd~>*;`5bNUHxz=#Jk&FazZ{cmHWh{C-(0{4q| zNn9g#?4CI+iujSI`tId?tO&mzde=9en4elmOTPVdCtLA+#9MP1|7LHTV)tWfCxgn| z=mCT8wufWqB(C?)im*y|K2J%9_eLc2^F5)EFyzgUd*^=2qV%G9+5Z$Act#Ws^vpxx zPsXoj3%uTs8NS>PtE$|YU{m$z-VC4Q(K;{^k+De+m|&^czt_Kqe4xmc_hQcLAnopb zDoNL@>vZw1=Q16azKUp~1P;VD;cjBq_6Lk3bl57LOjD-rl)!K8kcDC5N&oa4+p_D4 zja!T42#(6o{(2M1%}55#{)?`>qUY=&Yt4u3eYJpN}Ar-DH@o{AZQdLJ; zWHPaCE(`q1v4%paiUv<Qi;J{rhX z(smpdZD2J^2(1jC&tHR6Qk9g1x<29>Kn=UPA32g`Y2V*pT>6giD6TqsEA(b*4|A`o z&cVruiYn{;s7l4s&_9CLFd$=63@H3%8~HGX)hMUfhWgD-&X*sh zjwDRO&a&kAT?Xzt)oMk3i+_w?!8;JDuC3ow=viHvehg2D(D+(SY;@t)B@;y*r++(E zS)aVZ($RA}B|t$im)x3(PVp5TZK$C#|D5oof>V@MREMrn=pk7X+uLTVJ#&Pre=h~*a~Ru z4U#>DN<>Y?omaxmvTN=RajPPEAD<1y=IaEjg$$=@BOj;V4L*TL*eX3`Kirn>`g zx8p-kzgF1vXD5}T-8Z?D9Uf+s_(o4kVnRL+q&Nlgx8JHYfYp9<8MSN~lBN+mMABtR z?-|<|cz;H2^y9>oIMu0n_e3PPKI3u1pwq@{v46W??v16Q9~?#pYKJmy=R9f*hBYdzuN@JM9Ot`u zy+dThFZ3W7p`aMd$1l799`839CXimUrB`kB^IxI=5+A!`M1_+n!YqJ8jvBw+x{4yc z;SWvQKoPGap`AE!e?wLt7#^e;__L!>FfR4176F1T{XiY+ACeyo-+=;jupP(*dG-T# zyH?1OR7p(4uC-UDo~X{_nVO&C4|e#Mc!qV&R~*X^KeW&HiccV~DEhH?u; zy@O&=z+?t_+NJ#E{!B7avwI}{3tOD-vXuMXDe|BezEnn z>xlbYk+TIkbgQLe_fw@OpUoJcf_44ru_QdRa~2cRN$Yo3)ItI{r_33S!{e~&$FB2K znxCd$&%e%T_SkdTlmVtd=e=ack*8DxUO|H+te*2_?~xX@RczN?*B%ec`?@rq-FT(` zU-JjIQU!t_8}l??efG5*h2uDebi>+4h!2+aliSLdwfP)^Bb#(+x_5wGKsl@#}IJ^2A|Y9a*nJ8;v3?#&*rTag{f_{=KO!e+?EJfiZuyI2{&WiPASvCkqx(VfE)H-& zKxohvFige(fO-y)L|`X@Vnq=gI>bsGH9_5|_DWP`%GyKP^z=$xd$Mu}*l+BnyIcah z1`mdU{en?Z*Rwe~J&onUCXIsoDQrKNye^);nwW;X%G_(`RK^Pkq&&TIZT-4fp3o96 z9)d~Jw-=~ehZ{saD9Y>QELn_nGO(WT*wGr<=}3AQ$WQrV;@QD$i&w!rxNJ<)!rcA7 zF&q2^FH?>p&zbd%$g!vJx~KdZ`!wRTvz}KoOiRl9Z4Jwf{pOTGVb=S)#$NBtCi~O1 zDn4%*h`9Hg|A4&B&8=TZe_U^WsoA?u84UtGV^H$_3jh=x9+F`9;63%dVdqbb?@E%o z!X)yt9h9=All(~o8NE+EGLQhz7678)kbm;5|G-gSz<4MvS_g!3p|zmmj%D)yXxJu% zyIp3t4w(4=lCX`=kV_1!5FZDS5?_HB0EvQG)4OhxFDD+bYpFCK#Z~69M56+jeT~2bPc*{alRMGwCVbHP?(?PYlm)7VfKuBpn0J?k-pW(Ilp4h2r z_+N=nt_ZQyZ%EgY_^`9;-@?5ibr*2NN$a@=NbukN$-(|e1epFIFc^0KN(L?dL5&%| z+WjFgxLYJ^Q2=y$_wOhMkPpT0mJSAKrnG;7VLHiIVxe`B{1-8b#geF(mKtul&tOvT zU&-eQ%vsPT*w*d+JiCtD_26A-uhMG#ne5fVq>L8h;$JtleOIMQk9t$&IQ5*rHP_sP ztYu*E#lq57Ump60)@V$6>Y05W_XVbdQZ)rrx~hpM&CP{UaRf^5`oJn5;--}f+Xb&!Z9BHnw?|FAl6qaE`Hl8p=2k-}akRom zJl-y}nVdf?VjI^M4x_ndKb;-@ftPSmne6^vCrKkWKLd7j0ZYcnBQcTk9Au@y(&SOg z9WYoh5A@&j;j(USe~y){?%TZ;C2^aL34aBfcM#_z{j=}WsSCgaAAo031jyAP8J@QN zU)ZJ%GDs%403an!0=7{9T8#Su4oDFMgMlImls!;VY|xePd35St%nN@&%&WLtewQkzb!);(S3g|*Ia{fsQ}4 zKIo^Br9;OSc61l##a!_6UXM%;pQPRfp~M&A%r|AfWQyEM^Hi255gF_z4I~+%>bb|A z==r0IarFoe#h3xa{y0lRz;eks6dxp+mLIu2nd=cT`#!*OioIgM;{vP+l`Qf!NO?|i z%$20>JT$aTn$d(EQruZQ6t%ebb<*r<>SN81-bd?_&Qy8H4J@F z`DP8T1|Wz{Tbtv$)S2J>9}Y{DcV-T~y>hsfuGGYs2iC_THLUJ7Dmx1_xhy&UD(%?w zg(nWf=GS3xZub( zoZ#&(C>9Zus})M24gpyO5AFX#{n4nS0!#n_cIyJbMp27O?f+L23OxG}f*2g$Kd1zV zb9x#408&dd=r0)udMeV^4AFU3{NY=vcj3kOBA%<~B;j&vLo>rK2dxyNC-u$Ht-E~+ zI_~G=Sg%iZdmL0V*OZPBngh!*=i4q^4?i`>q{~*0+xba)s7B{l6Y1DxalCg5*CKaa z8Vk$w+>#I_&rpP{C$BObrtQT$xgD*{2}3?d4bbuqbG{Bb5vMXB-@MlC>=Kw-1AEK% z&d)VP{G<6VzmEmoauKShqv@Eh`|dC+X3(L3WO5$;ewSDv}fiXnCou|AN5 ztz!$oRPk+ZXCts4p&mk-yHc;9{vgl)&xZDwYVXqo;Mpc6f}iDoQT{sspoiMp1cF1f zfEJ1DP5`1N6naLS*qA$hLMVE(zvA&Jn>&QYJYhLvzku%PF)DCQB_w&l>pk6?l(z`_ z6zzO&J39;yFtZpQy{_L3KX~udmf!IG6vZ~db~3ZW+HobwZXj-inM$viyWKeL zo&xm^oU~&|5gd3Lwg*OblKu{hx`0K57-KmAKwEq`L4K^yU)_F|oTMIC$ z(u75we6>}sSkit!Mu;0;M!i@fH`QDo$z74On|*L7sxKMm%9~!16YX?BTfm&0MwBqA zwZmHR#L_6)QEqKeo~k4vKR@xk-6*M3`D0NrD_G}%nV>FNmsm1IvDzF9DNo#zjRGut z^krPM$xh|FaE|<5#etZs!aO<|nZY}Rmj_%kEpG6@6-fc30`bH8f_HW&@{6%d$2eCf zr?zZ(HfOsIP&dlCntGSTPa7-*4mc*H*i; zD&35iiJbe*Wya)5H`$sq;$cIgh-(scvDs@kZ-b7}I}7tf#V6WWuyExG2|nWh%PeN( zZhJhUM$2_Sb0hk;iL%A@Kas`9L~1N z$!7%wcjF8cS;Qu(JfuQ(+?|ZqGgwPbW9eUX#_9McFSKNBg@oBrPWjUyXlGki;Y>3@ z+ziT#?9f=(Qca(#^9~eVyCQHydK-B9Z6%6C-Uq)G#|;BqiqRs?Ow1OJ$Qe`%gu<5eP({%f`6N-eF^lSdj|o^d-|AvQp3SuYB=dH zSypx)^%n~LZ=(RwG6Dz4023b&c3pA7FkB_&`)b|SK4h4->uKK(vz)s#3#V&H7_HbR zo)&qT`vju0UhD?$+>3(?A&ViJo^zL054c!Z3<;0s{~j`P36O-Hu#@8&<7a&QraI1! z{hGJqSdEZ^gfKh(!zY5)&E^E$>62XfUKo@n(gryz-o)>N)wUpl}f+}Q`cjlCsc=Zd5GIOh{ zFjnaaV6+S9#o~h8%^%G_0s0;=T6gjZ2Y^|??+Y07_}j<_y~K(L4D&Wa0Q3N8Bl-Mi zn?3-9UtzmL{ z6zbbKxK+T`R}acQQ-czA@r#Vc3rmsJZW)<2rx516Ai)dyjsisYtu1)Pl^2b_mXmkmAMa6UM6zN_D~ zQszN04Cv~QRlcI1Yn05DIlajf?E<^R2k(lggXTzpGWA}%-oy*)^KYH^#CU!c72jQ` zXe=&C|Lyx#1v5oNK_{BlkUijqJuSf2V=evTJ4(l^t^GSNwHS~0s}cj1n8_^84lX44 zD0wX!C0LpN=JhiXeh2yM=E&gPS!O*8(f~!_`WIP}ieJ^V+10DF*cB(Q2BU*LT8tb# zkCIWJx6npx{O0am*NDcHEl;Ub1uJpy>a9%r$&lEmHWHlXfj18wR}5WsX{J{TDSLFp zxttH+qe11VB1U(zZpa7NYSY=|&rL8ppQ@i_4`K2#q@x9Z)dA2guS50gIiqhY`)%VD z+F%wYikodLMCDBMw@cM7U?-6F)EjC(KLN^YD$LPX#vVX~2K-a-{5Jt-fd3p|zSjW| z0^=tT^fr$&3a=#`AQ@N(LZ8uHL$L`05W12D(MuPJ_Mc2cUIKI}Q`}~{YV|9JwzApq z@99qY!ox(~0Iwh>W>R3pZqfH{_u}+N;x9)fTEVux)%q94MZ*W3q}dIh>H2hWCnR3b zT09lGFhL%`alZCKZ?6Acjv=ts%NFHpT6V4*>EV9IPQ$mD_Gd(LZFicehe$^0i*mX_s4>)ELrFC^b5|>3w9mcJ@b&L7m}{ zOP-r_9wiAn%}XEUn`v3D+gxrUHa~A#T$}VB_xvUvu1kRXA_p2Pn0DO^@}f=mgPy}b zSl<7UqjM&|zsR%0BQ)VOlQ%>^00d=RqKGN>fsQBsIQG-DSetq&N@*hPCYhhUr@asw zxWPg6h548EWOf-q+{WIQ1UyuHidxEkJ_XQS00Aj@7W+UAB2^SnFnxEGx&jr$L~_{X7aEm9WZ zfY~Fq`}-z*7rzoIhf_4?`6?!CU+Zp=+98sj190!+y89n>Jn*_>x`$uojS`RWDjf

R7-@z3cVOiKu`t zN6b9^^SUaJkubF{Gei7P9I|m|x+E%d)@rBcs)8}>+nuIv6KOixIG2n}DdbFZ*N3vb z^*$d;P1;SGwpxAo;7fewbnf13vxWN~2Q`W{hjd=EJ`|L=Q8JYHdypL7b001}lb>Hu zbe*=C8$|fHi-P;?WVfHDa-~zWpDveE1Fo`3?W{pq-WpYM_K7=GN9qiV^DnvUlgkuuXz zn@;35CAae;-_;yi(H;^D=;%9ffKE)a@$jN?vL;O;D{^Up&*;@+t0M+wu9QQ| z>%qsAUfyL3UG<-)Jh`06<)J-SQvCh;V8i{I#wJYSFyT^{X%$hzq=T^9pkNEvVv9T4 zPcKI7#Ug)=6%DTCA7-Hp9~pSOjiXG&Uz&SvfqRp!@Xijwi!9b5!}=Z1ZH2fMvfr;m zWBp80!t3rtU1WP|--!XS;1$yIBI+e;~mHI=VXZXLZMDm-(@il@bFDU-#o zYHdmEPCXk0)A;OcI(xGvX&Rdiq8wk2o%JnPDrqc1HtrNR z%CUrg`7-YB-D~wX1n!(d|15bb4SNsS8SFegQnsh&YGX72hMTIUIYblN(JpZLsC(T)J+zl^Y|*bfS8-2hEfk zZPJc`w7k*I60(i*nhqhPV7)x)ly0zoySae3k-rtzlvg#mA$Q#v=20l%p)vh4ZBwqg zK7dDe5BfV$f2}EP)8p{x67Rd+dfseG?X!eL(~WwS()x2u&4ES@k#wNH(aV>jKymJ= zy$o9Qcng`zu^98>8065kp8ss#GIS|^fbYoKM+z%iN?PJwcfp6;0NQtToAP2|zBb8VSWWMe&gRvn_#_CA-t7 z!BHiHp!Rr!5D1ke1o%;^-N0EUqzNQWF+sM`;FmtUu>q0r%Bc@KYmb|C2>)(eaLjM< zM2T@{*zXrniyP;X_X1VDXY@Sx@fd>I;N)SdIl?)wn)~@mJ1>&Gb!23}E6KbEZp3r4 zj#hc^e`Q7|9TNt~-TV0*XHco+>jclUI3>lF2g13Yx0F9 z&7{kJIpwupFUS>nOq~CutBmLUFUEAtg5LT#_i8mTBkRJeyCEH&bP;4Um@oC z=Lm~G3o$r+I!p35n2yKc*RC&;avj}x4hdQ?4|Kc`=1j6cFo5j_fdj%h2fR#?RODs_ z_Sf(e<8P~Fj1>6r7lgicLdXgALV+s))V$jzz?bu{(u4=agOZT;1LpPsnIus_j^#gx zOh7Oog3JZamtKH0L~If`LK|4me{m|ogJ{}_tbJtUXM*%T+8->iSSXiUF&z$>py%LB zT*8d%Ye(hVO+#mY_$M1q{yN!ZT>Tvub2?jokF^^z^jhVIvF-b#qS`0o{BgVIE1$)^ zqMK-PMBnj9!ag;h=cvsz#> zK3Q~E=lt%Kt0Go^I6Y5zkk-^Wcl12rQ+#0(FJTjS{m6D^^vAeYFZSIhT?Pr`_iW-! z-yV??_eOcS7*FAKXee|avA+>9!z};Um`&QYYocEg;P}~e@HD8r*(1}eP5-Io&cP*< zSL+T0d;rmiZ{xxnKF8g;}5+R=`{2Q{6 zKCt_!-T)W}FfA6pj-hcB27t>nKnX6G3Sem$O7+PLGkgp{cme@xOzs*KIcgM)hGJoa zFb^5qe?irI8WR0_pUYr|JLY^*4C9dqH@**E6Y?aduazFr4x;5OUp698u!sG3%^w8C zGsFBEus5WlA!PUos>-^nt!-@EyNK<;xD zEqj;aM4-N>0OQf~-!qr;h_uF)p{a?4K^r_oDx`M#w`ZLbw%u-m%xavKfx}citmJz% zyv57YE2*EM!0%E%_d;`0=)xm!;gcyRyxutJ&Gwhg&%Y=(q=ce|Iwv@F`*vd!_T$M` z>tuy`An>;(AI4qo7z)p7KEAiraaT1V+hfN16TVbZ%ItWN0xDnmpu$UGBPIT$sKLHz z=T7;Lw}bsr?|Pm}p_AG@Y2IAp^5~g+Y>nOojPX*`cY3`J&#x-%_{4Tko2wV5IJd6b zhO1(a4janfKw2)0S7KKUvpcd30DEc+Y)`Og%g?G&YB!hZ%Lj zTdgt3)P8UV#BC<_uy!g~2h&Rm>{GQcC0iXv*mFA$e~6%CV^HZH0EQE-PZ)xJfX*Ii z#oy&W&mMGT3)^H0NJWE*U$7{>7xLpAQt_|Xf3*drTZP=_JBKhw`T%p2;9{fE+OV!G zwO#UV$-b-hyERz{Kmqg;z#Y(bo^mjV0QMWP$=>%T8G)tAqI+}zucyHw$v|urxB2G*~Z$n$}`}D<<1;BGdj-FoEW3Zh(y6wMP%$r zaaj-%LA=~IZFO+JlHuQIqy2%C&eDd5jJQne28zHMD+ih=*rE99;_Jv zELu|}5c2HbM-p&}CSGY32DAO79{?kk(?e%ht9*4ATc7Dj_l_7w}E~SEja&gjR{6 z_^2IV1>GQc5NU5I?3pTgpYy^k!89Y@%+!X&(1aYBzV5X9e(TOF#kL`PF3d=s7x!H@ z=J#<462i%|Giw(%q>_N2C&v7QouYk3hUNCRPeKDGaTDc0uaQ9XvrY$01R{;(Llhzn10U>Od>?$5PSSQ0Tc{OV zheYuktx#b3iyyLekQ4x?@&wYg4*nyAfXm0xbAa+s;g?ng5QEQqz~}#YzbzzSL>>IM z9Wbz9mL7n^g^-GWd8ao!t0tiw7=d3GO%-y@hYq#;bmi>IK^%T?OH8JI?7*YRwb}dX zysUk!X({i%>lUnW<@lWyaAHL$Jg^s6(;;e8?sjQ+kIrCO_tKl@ZhB=3-)rh{EBN&H z$?y$TPaFDho2S`B_qFo-KaNStzFzCl2;Z>B&xac<6aU?(r9f0DSk7I#bSz1 zg^FR^y>+X{Wgk*-*eW9$`d`lojPgAeOW1urYcBk;QG#Y~S66$>en2<0-s8GSdCAYD zwl8nqD4Mw`fF%K1vV9I1pCA~rMD(LqZSlXo!)C`bR>!@SN!1?6D@3%0A7JM?&rl2i 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 literal 0 HcmV?d00001 From 9b24c3ca3e0cf7573a26668955efba30b36cf7eb Mon Sep 17 00:00:00 2001 From: "version-number-updater[bot]" Date: Mon, 16 Mar 2026 15:09:37 +0900 Subject: [PATCH 3/3] [skip ci] update version number --- server/app/db/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/app/db/version.json b/server/app/db/version.json index 53317b52..0144ea53 100644 --- a/server/app/db/version.json +++ b/server/app/db/version.json @@ -1 +1 @@ -{"version": "2026-0312-203109" } \ No newline at end of file +{"version": "2026-0316-150937" } \ No newline at end of file