From 64585d6ae222e13d771013713ca1c4adce727967 Mon Sep 17 00:00:00 2001 From: bmgjet <50484759+bmgjet@users.noreply.github.com> Date: Mon, 23 Dec 2024 19:49:33 +1300 Subject: [PATCH] Improve Batch Generation --- ...305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx | Bin 111368 -> 0 bytes ...e87aa50-72db-41b6-b336-4fac08fd4bda.vsidx} | Bin 70636 -> 70636 bytes ...c75de1c0-07c3-4255-9f9f-669fbf27c14e.vsidx | Bin 0 -> 112968 bytes .vs/Ruyi-GUI/v17/.suo | Bin 80896 -> 54272 bytes Ruyi-GUI/Form1.Designer.cs | 120 ++++---- Ruyi-GUI/Form1.cs | 290 ++++++++++-------- Ruyi-GUI/Properties/AssemblyInfo.cs | 4 +- Ruyi-GUI/Ruyi-GUI.csproj | 3 +- Ruyi-GUI/bin/Release/Ruyi-GUI.exe | Bin 41472 -> 43008 bytes 9 files changed, 235 insertions(+), 182 deletions(-) delete mode 100644 .vs/Ruyi-GUI/FileContentIndex/305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx rename .vs/Ruyi-GUI/FileContentIndex/{f7acd8e8-0e14-4221-ac25-ae7b073d1ab8.vsidx => 6e87aa50-72db-41b6-b336-4fac08fd4bda.vsidx} (99%) create mode 100644 .vs/Ruyi-GUI/FileContentIndex/c75de1c0-07c3-4255-9f9f-669fbf27c14e.vsidx diff --git a/.vs/Ruyi-GUI/FileContentIndex/305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx b/.vs/Ruyi-GUI/FileContentIndex/305c4e4a-e65c-4e2c-9ac9-9a2318005983.vsidx deleted file mode 100644 index 4de952be5cfe96e1ce038fc5e44a77fdd2e973be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111368 zcmdqq3EWjv|Hu7(PUkvTN>oB*xJp!rkfBgl^FRa2P|;kH<_u|0rD&2=rUr^ise}?z zWJt(7t2BwI2qEhE{(kFoPN#v}ec#XjxnHlx>$u)$t-bczYp=ET+H3E#AVT7|OX z(S|2uk^Pr1j}u)fs#R>(xJTRWJ({)Z)c%IH&3bgXse9|T&APYk+NDRc%Wvw{p=_9A?9#o{S!cBFv43u<@G+|rGpaWF z&vLEawnvBdo!fRlF#FP1Rm{%)w{vaSy-WM@|3M$fsDUfm_UzfAbNhXY8a-R)u>Y>C>0En|y%l%trcl;pEkfb#z(_`kSd>Fj7gRx~9M?TJ|e9bQVDn~dhgqj)kJ z<9`(yOGJmoqJ$DFCLSg9N=7;UMt=(?qgXu3tDKXzv|yGks;Z@lC^v4a3{zy>A}yH` zC+)A+N+xZot**@D(O~77jEZY%Ji0s{<%vhN6_bb(S(eNqy=>(YQNdVLz_(R69vu;9 zE4lHgg>R@_JQ^2|s^qm@P(76N;?43+Xe-J`J6=w!`@RoI+J?00H&kOPWXyI!o727z z_C4AWkEVMeTVzGK3ELM{sbUWC46lwypU0!?w9Cn;P|~Vypl?n=y{zg~rK-uKWqzbG z*Ivh>0m*1bEGp)&!rGU3ber!*ZY)ypU%b2pm8QCCBW6``Xd;T`O}!LU>wD8r@svtK z^Qk#hnO=MKR0Co6!%nG|v>xk4MGhQC*K|kPP zD2Q39hWSyToo$#WiYF`+ZMv*7(avT?gJRLDSX4R|-4lyygc^uP52)T^QU91NRWDMq zhF-~5Q7U#Unj4FHtH!*FtW?@=EILq)}WR%Gv-rKeMp{gQf zn2ZKzN5itB(t4x8O$TpQlvhoom)`g>t1hZTV30SZ`u`z1QoKv=(H1>&n>W+EWYpH{ zUtRQLZOa$wh*sGu#-m+o9rZ5n04uVhhm%ne70=WBqUOl5Uer)ItEf7fJif3B<8N%d zRRR2no9eyJ3J|lckBvpw<*||TF^^G(e=0X^DD0+34p!#zXonYRpkj3F$Dd!iCD|`9(s4J@2N~xC$?1$A()o{#4$UR;sU3}lQEsbf)M~9@!GuOvwt!pcW ztg>y;uI@dyO;*$)84XQPGcRh~(1x^%a!A-XpeoY3s!SEY%CA#^=QCMb@i%Hjb@)Ry zKzXpJZ!Qc?>3hz0#y2_bKiFP2@fm{*O1I^S*ZTEX`Hanf*W*9FKPTz+yv| z>P@3cJj#wm8~vD4m(Y|(t6Un7CTc}hT|9c&d-z+iXpJ|$)smm)TKN&734?W{n5DFq z@*VE~*%-C_g9auOdTrDZ$RviBjpcgIc6E(qA30C#iZv&Z)>8<>TpI@##IJtl8XvM#;z<9Lg?-Ts>(s`;z9a$=>SB~mjm7^h7g&F3P zF}=6$tuiE|r{hu4Sd`y)vxL{b{#N&t%0V;6b{bAo)up{t=U*81F4b36Q8s-I<`Pzk@>a<}M?Omut)l4cTuANFnY8CCH>PHo& z`q{giUM+hw(IWLRPkg#p@>=h2T2Z;_?@ylI4%@JzXBdLH`(`^JRgC}a7-#j6$v^u$ zC=oUEURvDyr;ccK0G0U|t?uQ?(zIv$;w+Lm>16;g!>ZKt3&bdD#m zx=QW1_HKX&LpM-X1+`!4Mhr{Sf5VQaga5lXIz092paS@~H_iX1JDwuLF}U|IS4!Wn z&`VEB?}+NnYiYU?q}xs@{};Qa1EirQ!#YRDqb>Utz{i$BYE8|J!--Xmo=)SJilH6p zmSKqVwQ|z?l}?}eMmzg|xxYHx5<0boF;?64Q<7D$$`-bp?rfG$m=54?9xH6sb1S z-KTJIw0D}VnX~WUi<%*a>2cmD*Y6;$R)*<`S(eRd+C)x0O?Q@bTS9wKo(l|3z7Yiz|?_gD};#-gDhLx(q?{cV3 zbCY&)clAM=Pd(wl*;+{XH@(+eK~10v-`gv~EGzugKI-DsuaUp^>r)*aY6b1c04++` zm2a+J395K1Z82SuDc-New)u?|%T^`#D{H;cJ+X>mTk6KDJ?)*&hQ6)pYK4TC#4qvY z`vvb5l~A{yw2EIQtDL%9vbU(2@3W$B;?bwNZ51N@&edNg&SN(oHDWJ~MK!evzxT2? z+k~Ig5*g!z@(k6O>ZJ=5qpL{W+RBQiC8J&O=%HA&RChbI-Gr5}lIHxOB)Va!gCb9q z$1fQ)=T`}vC!;l4HvgO&i%#-}yFiK6`eBuHt@=blog`d$uTEvCCQ$XN_N>fVQ9j@I zG1>O!VKqUvwZbJThHtCB(kMpps@{0?oL{rsib=bXqJ~ok3;RA=m*L(Stb6B)4%aOa zzq+)Y)hk^*zv9+ims4ZWJHCnjeq31o-lkezondYi74a(4okraO(B?MgiHc-J-QrPG zKYVn=+0f)$>Eh$b8lm zt3lxHtZ1u_DIFRfV;v)pb+9L*s6?Kqfp#rBDw7qJP1t;1ON*(2lt$O%+0oLhXq|?v zgxz4#<=X%a4u0?ARBv4BQ}ODSx>e^X9+-iPLNC^CmqMq>fPShz-tR^^AtN-3zw= zIW%)Cs#OKU{jspu+Cf!a!VZc(I;hpeiD*pbD*y1k?zZ{Xby(%ZqS0Y3KLm6ytN(tP z=;o3xg*?3qqtlAUt2}CygxzwtA@vC7%+tJ_x6gG@-1{_EqU+DM&WW19MW6^(Mf^di5ERbOR7m9a{0R&=&k zlx`_x_Bw6lymYd^dJ_(}%%$oiIxf@}p@G8R%mjb+KHWF|DnaPg8bH++BVNL8E#9lP&@moTdecl!trbdTe|4m2UH_;ee<+wns<`zooq0EF6w*%lx)n9D z>9EyVNwXJUQBA2LS!IR;f8WeIYAxlXqsePecY}4lwxh`huE&y5J|6%z0w|6C4)9*l z(ck38{Bt7DQ17jrsn_04k`-;pj+SdM4^slo17p!b4Mgh0+NesdKBJ)Dc3zT*&h*5}fh~=$?-JI- zH8D^H>L^o8PAr=uRrO8aFp2@cOjX{Rk}?x07Q@1wFmZyVOjc!& zre``FHtODWJbKJ8J+$>44fQICpWt-NmhXvT7KD6JP*C)q)&nb3z5 z))o8t9IvZ?0=w8}p4w2BPj!@!&c8=#)YYM(TM99|<*Srud!?xc?6VuSOZp_G^G?QI zYxF4Whi#~ty@N^8J|{XzjVW|F!byj1#wU zRc9rA)TQ?YW6|$gSGDcKcsZ3JVOKHg&niqC4UZbwz0OrR4ZZ%0Ys#T=sukkV*J@2I z_4X~NS*sGHMi^zN4yR`$$%u$n3$8di4{8gFndV_Atj$Tz; z>%kJg=vJQU*xI`7sk)Y`S3{zoAGKdErCLGBbZQ>#t*rOZ9*kc4Jdx7&$q3a;!&SibgWj7 zM-4nd2hE~As8v*ZbG2(((WZ=DyI;8_?ens$!{HNprtiKcemd7^daToT4P~OCBNWUF zkQ0ku^4in2>i5}E?W|~6A{wm|lRlo-tqC1F8Ua+ikfBc+OZbk5{na>`>$5dwZih)~ zZmC_cs#a&v8?BYsKGs)^nj`KV#xB^i?9P(afO@r``}FruUGHbvS$>p0I*CR1r?2Jx z8d*8$AX2t*Z{k6^{P#gvwKqzI^l?mkr;(?xcStp~ilhmi9rZrF)CoxIPSL>_X9B6u z`mLyX<&9cpM>D<5%1ZMGt=KBeNVU{&Q?&4r%?9((rM2$~dsIe4Q@Hn4)u+>{O!X7h zt$Ik9bd^;C?YOsyJ}lE->qSGPhh?SlmrAJBwQfRvL-nJ2^Ttw)B~b4T9p1;fu*$#v zS0zc;^f2Ku^qTZ`E((G3`=w7aZOJjC5VYz7vk;*n?Zh!q| zc$TMMqtm_4Yu>$;=P>`2R{8Xg+kv3J+KOs^@45$l?}x2Qs7kZDwd&8IO%Iybk6G=Y zN~o*L>OPX|Tnwo=lISI&1+<<#ecTMrodtt06%8y{)yB~0ioP|>#boZ zgO0fU3ZrwApGw9Z5U<^z=lR&Nsil5D#O@p(_|hTZ!<`)hnYWMpBGlGB@Rc4O{XA$Z zW}I$F@1v!iG7fxcjPeQLA?cyad#T#!0{@gjt5|!fSLk5Ww)7N@f_mdwrTdtM(A@CY zQX<-{{-C?-8OQHIwtGNHbe}3pp= z4L2)%-M#s%%<1^BX`lS;zYCs;wz7A{zk2U&r;~_A05VCv*Xo)8tGa9op`poN2WHsj zuX4_e51FTXz7}aFllsV@zk+HGRd430&`+{4-NVehC8%~xO?PcFkiOd%CN`?-1P>k$ z_9pA-1LnX3ZsUa6yDmL)Lm{OXabTN5i5pAcRB4W3oehYQ-r&25NlPaG}xI zMwRrD{x6R#ef*KmEqx2r&!IE2qqPaU0dAF}SLpwK#doDHlQne2qicM6W0O5U&1oK< z^n1Lzj8%8tqx;hOU{S|=$iYvVb`WJ;yifL1#xz|-=-jF&f%8Ns=8anG@X=td8t{44 z`KjFW;Z8$+Ea+$U96cAOPY?am7B!r@O3ger>}ahlpB!o&P#H$YqD9)e>QJMBszv+j zpMMoor}dMUR^&kNxzK5vzJ@l*f5?uj|#a+FA8aJ?Ew~*Nf_b`m|Ix z{nTfCYNTpes;gALy`Yq%ef2@9UTQPs%$JYVGeVVmy>Xt(Op`HX(g|^&)zwn^%+8xe z=iJXcpIoI$kLrFn??1Nem&yNILBI29SB_pY{rAf@^=ZOB<=-#Oe-jLKs8fSyqQ83& zrT-?|zh7578;k6YcSxq=?%&<6M#6BRk=jtYi7P6`FCsMZTPHu@f`Xb%-(XMWuul!A z2d;xI{qH0FqsfCDgXx^TPOM1(q$HY0sWR1(G(PAU^pmnCpG*C|%}BpU*LN#)xuHta zGk9TC*=K*#+x?esGC#IfVsFG^nQQqa@ID_{_;%ISHoT`+NpIb5Sm|C+>UNe+UK)8c zk~|snXQ+IVUsyv*Ub}-G1_Wz*zhqM~Wvh!*8)p5)@n^VP@^go#aB6)G;5oV#;HSSS z2^%oA%CRb>F2j|fI-bv{HNwXWmTp& zq{?K>4^5+sXg?+O)2U4f(jUQOKC7VkznQ4-S1{i%<)c2JYSE6^M)j#{BDykR?WNhE zj(58sqQ0cN5K55P`=OW>J8t*S<31VIXp^HOMUmm9-N}xI`$dNijkgr3DOT!!`%$V} zoi8+*@iTR9GJ4cMG1LSmM`iE>d0EC}KpjCkUei_{R7AWXMXC*Q&TxXv1%)+WQ9hjb?4jc2mP|LQ?!a!Zd_8j<`F9W~q_pWDY%pVMiCOn;Wd zhP1BkI{M}&s87c19-}@pO)uT2?&*m`xPl_G@IN z)J}EszxMv$dTI9Vb4B&WoR~eWr@N7MgT-%M4)z#zLN%y%w%T<11NSfp$GDGYN3=#`?X33-WvG{W+Hl>M zQ1hwYGKLhLq_jvi9ELA_sHd8o<~b-69m_hhGW*8Ta7)}XPv7t#tIps@lRm~$eGc}~ zOarDGD{S44#3Gc|*u`#t)X}$4LU6K2} zbm69^%n74}ma4a_Wj!l>nyjbka-x!Tz3k=yh2d2jbBwVK2fb z5#Dw>wdqa>LxE0J>Js5}qtlSje{@3B;j_vwy|p1LWSADl?8#Ug_I-cV0h0b{rfPEk zYpbwUdLRnH@YkzFHKS~G?B|I`%VSo1s^>B3D^LZ)2ZG*V#`sJu$3Hx>TJ`&-+VR}D zHD%JDh|okrCsSpp!l>Kmo?F<2w(?J3UI0t%H5M)bEa+bbBsV<{=N}NO4C-d;P7PDH z94&#Ll5}O--%my#ho`oD&TQ=x9);2yz0_TmgFk>|-F3hFEg?<%uRfXbr*7)|Mqf;i z27Wl~-A#4B^eW+vADCfxPRJXbuBi3*IsxT|6NjHN%EzPAbkO+~u?9eU1}t2vd+n(bI_a1S z`XdA?fQIxT8s4?K1~Cn@VYE~~*Vve_j;F2H$sFIjV5&FugmKE#H&I%J z_aRFIf-<)=R5+}3XGSfOI%-rWYCFBcqY))lS8*FFv|a6cch9Q7-lt!w8(;REttw4B z=x^+Ac=>p!lIT+aB7I0-;5RXr`n1Z1G9AKUMx+^tf1s?~!epM${go!1Xngl|B&w+6 zd=));qWeg;IWL|*>e3r^66KH+w@0aU0II8~0DB+S3h8|SU#pt;Z^*U?kx75Z#IGf_ zx=OBz&9SLPNv|}UBKlRf=Fd7_MtPOqtAeGfRGYK%=p%3cw0&x7b=?%wwnCRy7uCq7 z>!5VWD|$Y;ety(ce2^DA9Mn29sxZoSqyNnx*7}>jK1OL<+V>ny!?d~vXKhjS?DLZl zIpD8yNR9TIwB&jds~cF!wRH_~YH07Sssv3?=c-@nf#JW(%Hx-&mnNgzy`q$ZE&%nV z09}@<^;NNIHSM4tkAK*Epe_om{`II&7%{vU%XNyQ!f`t*@zz${CK(+;m^{{aPI3xnH%c z4on*mGzg^AWR6;4(~9w)|DWJH-C>RWdBq;SfI8_}j#PpVj}* zm-_d5)KVo-*9eHL#v6C(UpFH1J(gfQMkW>O4uxfGr)l^OKIU361HnE}U z)h>SS%l0%ncI=pnM=ktuZjLWcAOGhqsPyXLp0g&L1=Xe1Gt(ck>sGMO99HRsPYIHkGvxQdS#%#jw;aJ`3h*s-(QPm1L;huxnM*k3*@mCwt zy%D8Zn*Pp(GVw`>3YL>PD_NdiDqTBhpw{tj8`5VJdgyMyK_lTO+>A}AFscWwt`74- z_-IdeT9je9+2Z|5wM~JQQiadBl#Ba@a$?a+HFx-+M=`1#)vDg8JYg!RF-i&26SmYD zQ(Lhd`~phnN7Y{U@WG;nEIquGdG6N!`nEK*YJAhYXq$iJG03-~4ITUy`jz^C8rsip zN6NS*h4yrqE`R*!P@h)|Y8t6lvwL)@b8dD2q_wzusdp-s zP?f2QN-E8MFF#T4AE`9DmQUZ(@p+D=@iJ&$q>5GH(`(sNUb?yA`&GjmQQcVmN0(7? zPo`^Cy~)udtf~aP@!GTRbcdJr!gJQ{*gzDEret(!%iJTYWcC^LRYiKd)~&2JY8sEx zyyZ`y!73jOaYM80cUts*ppR@*Qrpt!uwkRRS`QoDTb^{m{oxvp zPa7+@aN8>V*{fpw77+E|lTWL$@BpM2n+asXk4Imm!&8~-8=dL3bT{cmRfrA~pM-07 zG-&I+#unY#7!;3Y>v2;Z)H=9SC)#oEQQCby;-Z=<<^|Im4Li9$x77P#J}&jwS;pI9 zsfH2tAB}GsJ#>RYo6~2w$>=gQbRs(0FI3eWx?gH@_3(&@-lSi8mM{H2ywND9tn^;H z=AFAj~oE^8vbk*Ftqmp@8&Gk%l??Rb`JeB|60{DA| zAiqJa)x&gJjiQw5lUi}0C$pJMc=^S$;x(nrRZQk!qF{Q4pFY2&4nU2B+BM5R!BJzC ztO=oy^NT|*c}&>Qpilt)l$^fJm+md9ZMBHsi`EA^N~s1)7bZ7m$A$K2ss8$J5KV~N z$gG=i1dNt;KlX? z>SpUz1O8s+jQgOZ3Rk@LR~4cd1@+*%6}*{u@abhh`X(%z#~ znW_-gyz)^uW}ff+5^~m3bp!oXQO9_rC|<+SQcXWpKiXfF%`Z{)46~m6R8UoPhL_52 z9fZqgeO%&`y;uF@sAq$7eQr5fy_Pl zTWR-)`bO1=dT%$t{SK{)t=Hbc!Gj?(nYzQQnzSd!QZ=b#Q>WM4R9y-CC}+3N*GT1q0;h1RkH1QEq#_+Jr*4iW-=LfJ983tx>uPi z`_sses~r=Tg9cu;*Wr=(v8<@PPAjP|-c}A9(m)j2H)D^&e(nF)?+aOE<|<)qR6h^5 zYW)&bHDI%j%$II~DyXHp;py=@3e>*VA2fyblAou^u&z2a+W62h$UDFK)rhb(eN2UH z{T!-|+E(;le>I=f{q_*E-(PJ)O&lHs@`HDHcuXiY`_(C|q$)~t#V~tRUrM#(PCqG> z)zIgW;lS6na(xp+b+BYS{;j7d9`G&!eHo+(5S~&^`S;v%<&plP42yvJJ^OYv-;QX z(+EiGRU=Z`oA6 ze%nL`*WSp~CWdLp{YFrA#rQGUBK=&P=cX1f5l-0$uC5Wxo5m(%e%+`1JLrA-!T8jt z`Ab6%8c%ej=#vFMeOO`AXGZ_5#3s5v*6GOAsa738%`wlX@pbk)*fS4@^n646qK>4& zP&sFwXT5l~x$x3x;NyV$n`f+VHIWsOx=lg|i3-37^UIr>p z4ZLB9)-=oy0ky?Fiq~KjkMvYPIp1!M*H!;86nKnv#eI(sO-1$&x#0$pr&K@DY1Q^)&* zG>EDHZH&=Y*90OwOyEmq>sczG-to(8UCVplv&lNoV`u8Bf69${{PE2-Yxgp?tw7} zD^KwdnPpEqCk~b%ou_(K`n`sfeS(>bGT!H8yx)5j><3GZa`3Cv38~K@G{>;<%I{j_ zhWSZY-J82&I;;2rb3C8y0y-~{gzWim%ypetwTtoU->9sQ7=-|x^>V3k>c97iCS2tSf*T3mBXJ|O} zGU!@hXe_D{X4jr`7*y5Ds%ouu@R`p+HP_Y=D=M0>)6I#B+;1v%;Izc&?R!^O)oHE2xEKldqV?IXs&}xGCA>@cQ=PU}f@ypK zz5k!T!UxL#q!_AIe|BBfYrm$YV@;KyiuEVP4|*{E@AvMX?AO84Xl&2*c=b0OdO8eS zWCYctbh6Mc=ji^7=18e4T;18u@mp%T;iH%C0Bf>W)t`*j)7{E2{lTcFO!VY1l=&5( zx{apgfB({2+Pcojx{s0c#G0Mnrej>?X{O(Av;XuXnf{+HWTVvode+I`+dpz(@3RQ& zi9(OhMqAg`(f7C9eA3b%O1JY}?u`Hf}XJR=#3(v-LusoiN=i&Ky0alP!z6%LogcoBa ztc?)iH?>5&b$uC)5AN4P#Vz=n7kUXE8_BW#TJ&%szbT!mLl z+inxWO|cpA*AZ@xEr@SLxV5zMwIgi*W{l;3J$Aqwup{1x`cT``cg8N#%F~T-ceH;u zCZYdt(f_u*m;Sfy+=jiekF@3e2=~VUI1mTn?b6cg85+-TDBgj?q%FUb@Lf0pN8%_P zjbl(hg6R2<#d}Z>r+ECmI36e9M7$60#|Q91df{KjSaB6Mx0u@ORvWf8d|E8~30!g0+LrbFNOl zuFj3FPJV6{>Ky1{-I8#1UiS9Xt$GjZnI{ixuH_z1yiVS}T;HPgexVyG9@alI<7z_d z=`|7Xus$Gkbr;Ch>D@g}+W3=0xHy);lThbp&+in%r3jZHtdH?LKRxf~>N5vVuWJJj zpNX1@cvw$>xo4w3I`FVQnQ%3Q_WjaK!Sm78rkAr4%PV6pR>7)R4Xa}ftckU-HtN=- zZ?`U9f|p`Ftd9+_Azp@;;}zHl^#Q8qeNoZBSQ9 zzWsLC9N6+6VDTVLE3sR z;xgi2BD`E$`CcRbb>iP3yprW_6aNnJ@8Wy-K7N27O55(o_$hua^D2J5)GOM68*!7g z^)^c@*B0DL{C2`Sq+Zca_%r?@ZT(-R)x#fzcgrk=^Jt;o+DAifmbCQx#NWgEjMTTQ zyGS0^6{s&i40RRc@%mDmt0zHRee&w*jwGxb)gFH|@%pzXe0eeAkHh1MKap?_7RM5J z5|)&D*>@D&(!}fDmv8S>JPl8mR*z>AE+?%X&Xw6xKWpmiU5xrgP+wk+ur45dc@3(+kXP*;yj#>PvQc63ZKSja3L;_9Om_Ykyyw$}2?kB4FbJPZ#< zecRa6>-#^h{;fdw2-K5O9zGI}!lO~&ZuaHJpuQpRVf}ErdmJ8*dOX$RPsAK7jwSFU zEQu#eRasPuaA_C*VZ9 z5AVkZ@Iib?T0Kt2srU%Xr{Q#b6d%JGI1^{#<2YMd{!b8|i}P?kK8XwPDSR5Ak(SRQ z!q4Jjd=8(-7o?rPmJxmlU&iJ53ciZ3;p?~p-@ujlCccGl<0@(8e3$Th_&$DsAL2*& zF@A!d;%E3det}=&YFvYB@he=1>v02a#7+1$ZpLr$Tik-*;rF-|x8ZjD0e{3D_!It& zzu->%6@SCuaTor9f8uW3gVyMNp2axk!31WZzW(6pvr!)mdst5ly7@3a>RY8AUjPro z!%<%X^X2-9G*{2ux<{ZM-}La2coZIu`UKXOAA`qYF+2{BM}1Yz`&$l{AYT76qvul+ zPsUTQ6qd#^()z8Q<@EJVNBxr}9zFxl#B$QopH282ERW~nd8nTc^?WYC3aD>udi;f` z-y`$z#aIa|V=h*~s#p#6pp&m(18ZU})Kf&hybkK07x3^Ucq!IHJtytU8(>4c3@^tk zun{&!J!b3cUxioWHP{53Vl%uJ_2nsFzd5$Rme>kgV;gLX?XW#wk9uCv^SuE(;*Hn| zJ7X8@irug~_Q0Na6W)xs;H}sTZ^Pc$2m4|_>@Tgq4aD1tAB;nADBgj?q=ts*F2W;l zB#y$-I0o;=v3L)T!+WKbX9D4gcpu)658#9N5Kh9$I0dKT!}thJ!|C`aK87=JCeFgg zaW>AuCvYy#!}<6mF2JYoX?zA3;v#$&7vppIJidTS@I_pT%kU+98JFWL_$t1Juj2}Q z16Sgk_!hp6tMDCs7vID8@dNx2Kf;gk6Z{lE!_V;x{1R8=8eEHC;W}K88*n3T!mn{N zeuLlQ7W@vs$E~;xx8o1^BksVT@Mru5cjB-38~%>F@DKbGcjF$ki#tDWqaMWduzvc; zO<)%4s{hvDI}5<8!b$mOwpE>&x{m3io6@1xum6CgID= zpuY3u;nVPREQ@F0nOF|b!n5%lERW}+zPRA|pN|({1=NoM`|=C%BD@$YVP(w4Dp(b( zVRfv5HL(`zD>A-4J8`@7@fvJ` zO|cnXi`QXuY=JGY6}HAU*cRJid%PYy;0@RjZ$$mrx|h2%cEPUL4ZC9x?1?ww&3Fsm ziuxzDJpbFUH}=84*bn>T033*e@OB)GLvSeGfx~b(-ideN2pox{a5Rp=yKyYugX8dC z9FG%lBHoAh;{*60K7^BSGETv%_%J?#({MUIijUz8oQbpWah#2F@ClrY^Kd>si3{*4 zd>Ws@g}4Zx#l`p>K94Wp5_}Pt;xc>*U&iJ53ciZ3;p?~p-@ujlCccGl<0^ay-^KUv zef$7F#E8x7xCYnaSGW$>;|AP_oA7JgjNjn5xCOt%?{O<`!|nJ3 z{)jv9C;SB zy#5sp_juHgRC!q6;&yYeIF`VZP|vD+x|8t~EQO`944#Vmjc;G?bS#T!;F(ws_3K@p z{%kx4%S&sw^9Y|$SU=P6>Gi9XzFc4C_VC462`ghRR>7)R4Xa}ftckUxZNCm-{fh#= zolEditS2p91H6p*%Lz9k+*qpXMNJ4dMg3l*Une$~mQPD;&GI(b7TaNaydFD9Tfd{! z)Hdoud{^v--LVJu#GCMDY5CkrxEJ1ry|EAK-|+Ez=_hTy0jMuydHn4-7>D3cyaR_x zTmMcRLHtM@g`;r{-i>4N9vp}IwHYtRc$|O}@jkpCAHWCkA)JJhaf-C-`$q^*!|C`a zK87=JCeFggaW>AuCvYy#!}<6mF2JYoX?zA3;v#$&7vppIJidTS@I_pT%kU+98JFWL z_$t1Juj2}QLt1;kN%$>%TiS8*KH(4WL;MIombU(<($cRcycX9<8{gOC2Hc37@N3*G zEx&IGZ^7^IdzNpL*6u$N{)y#36W)ox;Vzc{fq&v|+=KS8iJy;9-&Xdpz8mW5#|T{g z1c$3H)w$Wy%AFepcqi$WiMB4LMR}j{3wfXYK z(&}A5;O^mTun9JmR{m?Txl~g}ZCTzpc)zsuCJ~-2 ztz1*_5vf-+OMmQmcpPV=e!Y~s(6Rv!JRgsMUeuR&A>0+aVR!6-J@F>I8E?T`v6r;{?M=9kw0h`I z{6OLd;q5pWhu~1W1Bc;oyi?kCM&KyoN8=d08^=mZKaTLdI36e9M7$60msb9Vq}A&q z#81QN_$WSxGjJx(!pCto&cP?7m2V#5`S>I*z^A08dxr2rT!hc!Vtfvt#}{x3zKBb4 z8NP%s<8pijU&Yt(bzFgO;7WWG-@>W^()v*TF#9CMz z>tJ2H1TV#USYK)i5H*(8f3KEmx~PS;^0kvTFK92VTpgsPyOH=#*crQESL}w}u?P0V zoA745McVPvTiW*e65kK|;{Y5eE#2)ng!rL^he^wC1o0zr6pog*{@r+wwEY`Tcp}~} ztsWl02k{}Cgp+X!PL-D5G->6SLHtadg^%NGoP$r`T%3pV@kv~OPvO(}3@*e)_$)5Q z=kR%a0hi#5xD=P+OZYM_$5-%Gd<|d675E0O#5eIRd>dCuYo~Yded0gB5Ah@X7(c;J z@iY7!zrZhXHLk(6_!X|h^|%2y;wJnWH{&<>EpEZ@@O#{f+i*MnfIs36{0V=?UvQ_i z{~|l zu?kkjYFHg>U`?zgtsHgm65=n#dc-%7HvTr2Rv%Zh{2G=w#cNsKg5@o-6}FbPy|#qg zVSC~`5WWFB;*Hn|J7X8@irug~_Q0Na6W)xsNZX&=q?M}=@qMu$_LtUvw-X+WLvSeG zfx~b(-ideN2pox{q?O}tY2~`?;C$ zw=Ca+-x0r+@HWCf5dIN&NXus@%YVaNEdK-l#ND_Dqx@lfj$s`0U;?u+iP@MJ55atx z9}mR>c$l>PFG#o$7RDp62p)+?;n7$WkHKTH7#@em;|bE*r#RsfcoLSxlkpTRg{83! zo{FbQKQ9nI3(uCepXCXkD{cE15Uzj~iN9D{`pU%TVin@6Nn5`r@wKov*1@`X30{iz zu)ehIG?dnF8WG=E+I+nk%df*0*h<>=+e%xngS7Md4cHNHl$L*IY3aKW?!oe&($>F~ za4)<~+IoEm_a)q)@BqSt2;Yu_afr0-4I?}p@5H-s1dhZ}(#kWI@I5$AT6xCfMB?wm z`|$yM5Ff%xI2otlRB8D>g42nA6d%JGET2XAah#2Fr0wrK!t?P-Tp(>bPZNFy7vds( z78m1l_&mOVOQdaY8R3@*zanirui*+@DXo9JDXm|UY3a91%l{|BJEfIpx3u!@LHpq>3&*78pGR7{e8lI+L$QFg zbcYizh=s7QwCx{B_$X=Vi{i1w7sKQ5csv15#2hRxEuWJJm&B9t6f7le`=?@AEXVS* z2$z>uKNk>RL0bM7;>E;Q!pfM7Riw=)YZ0z3ZT-4J|{?f`Zi1^!aFw2MH zFye>fop_hDa*vi)Kle(@Z=$qv-;WRCBx&_B8K>Y>d>9|WX*eApm6rcZ!n34pXExzE zgy#~Thx74CTp+EU7D>zRIpUwk7jOx_h)bpI?{aDDy+-`&(#r7$;g$F%zQyuYgx|q; z@jZMWKajSaPY8dCpW)~D1%8REaSg7;uW%i%#|_fTy@~MGxEa5}Z*hyX{oYD=8*axR z@JHN%KjF{#3+}{U@i+V(ci|uSC+@~Q7!_b#!??8iOJY9a^W&jd01v~%u^<-0!gvH0 z!6We~JQ|DQF?cK%!{hLHJV9DJLt4F@Ev^5b zPy7W~0W0E#coANVm9R4AN-KX=!qo`ZAY2n`VQs8~b@39s6zgGqY=8~%GQ1qGkTwoo zL%0bx#b$UdUWd)G1-8Ui((0=n;r7z@vjgE9up{1xov<@@!LHa1yJHXRDQ$bV67Ge! zVQ=h%eX$?*#{oDH2jT5F7>D3cyaR{faJ&=m!Vx$UN8xB3gLmUtY4tV^#}hvRC*pm0 zKR$pD;zKwIC*u^HiVx!>(zZLD@T2&cv~g?};m2_{&cP?7tv^p%`US*4g-_!%xDXfN zv$z z&&La}0#?KerETY8!j%Z;60U+(u^Lv#8dwu+Nz1Pe;ktMUUW)awJ~qIHco|+UEx$&D z8{?ID70a(7+yt9qGrShB!{*omTVgA0jcu?kw!`*#y|nXWXKCYFH{!cv5A2CI;mvpp z-ip2OHtdakurKz*{y0EdJq;p!I}Rp(DB(MB7!Jof@h%*JBXJat#xZy|j>UU$9NvrL zaRN@n`|y5z03XDMq|L7$Cj5xB{hW@E5kCWG;w*d|XX6}v0_Wm9oR3f90(=UembU$c z(%O45@y`)n!t$krUuOAod<9>{*YI^*fp6eSY5nV6!tdex_yK;1AK}ONiL~;5M)-65 z0>8x7xCYnaSGW$>;|AP_oA7JgEUkXF5dIFo$E~;xw@XXEgYZv;cM|>;f5YE#7yf~N z;%?l7_Rnbf{Ths89%=QHML3Dsm=_Phe3%~(#R7O39*zaE5EjNGum~QBN8!;}R9g9t zC0q=T!{hM;Y4ul}a0xt#_)`d%!qQjuq@`~nZF|=d z-<O=O?Wfjg12HXyiMA6`w;Gn{jfg{z=1eO z+IoWt55b|t4sY($@c6T6xwHzaBT>M%*MV{kMd-;CIr>vz72R+%Bygzp;E5@qgf-xEuGN{gc~1 z?qMABU_#n{W)sefhhRR;FD>0+gb&ApSO^Q_5m*F|#G|C`Ur}lMf1I>-FHZbP(#l&B zPnNdb(uB)MTd%CNe9pwP@EmFB&y$wV`FH_Vz>0VwUW6A*%fE`W{HqaP9cy4stcA6) z4%Wp>@KUUY^|1jq#LMtLco&YqkvIxR z;~2af$KpLW4)4YBH~}Z(eRw}UfDhtBI0+}?6r73=<0Ci?r{kme7|y_%I13+_*1zTu zegfy>Je-eD;sSgMpT=i!AuhsaaWOuJ&*KZY1Yg9ZxC~#ymvK41g0JFh_&Tn@H*h7s ziErWCxC-CFckw-ZA3wkk@gw{gKfzD&GyELCz%Ow%uEDkV6|TeexB)lfCj1&V<2U#% zZo%*Hd)$iKa6A5hKjIGj34g|4a3}tXzv1t=3;)1BaksSo7!~4tg>lS-3CzMIW@BDy z`Q#&<9}mR>co-gz1+fqo#v`x@9*IZc(O49Z!DF!)9*4){33wvrU~w#gCt*oE8Bf7d zSX$bCpGx>NJRQs88F(g^!?W;gJO|6;xp*F)j~8GCtcVxlMR+k*!pfM7Rj?{n!|KxZ zt0v)ESR3nLUAzP@#d=sD8(>4cOj`a|5N?Ex@k+c3uf}Vz2{y%Mcr9Ls&9Mcx#8%iE z+hAL4C#`(f6YhXFU`Mv02a#7)xj+l=4hceqtry=}wo#Q#Wm z2mT~&yE~g-OiDym$!a!~A$C7Lc|-hZ8P{g|M)+@*PF^ zXe>(nafFY@6YxaL!Qxm#+J2ubE#ET4pDL{!rxPxVXW*Gw4$s1~@f<9V=i+&IK3;$o zup(ZF7fCBeCCnwh3gK#mt78qU$@1ES>tJ2H1TV#USRWf;L%a+x$1AWAHpVOQDrw`` zwbJUfCGoAWHMYUF(vHg;2zQjW-<_nb-;Mb0*aLe?OLsHjTkuxwg||sd*N1Rl?1%kv z01m`KcsmZpAvhH8z+pHX@07OP5jcwY(Ktrh{*7b#c;Y8WA4iFwB(0xLCHx3Zmv&q} z%JP|nXGzQV3Bq%69?r)nae=gQK27);T!@SCSzL_I;q&+cF2NV2?Z_yhikJEXP4PQt(9Z}>azlD2=l3Gcz^2*zEEV;)Rk7A7$p^Wq_x5A)-pSO5=` zw*LhQ7sA5Q_TwnRM`KYu29K3i|0fd8!Qxm#TK**opG>%vwEaJo_|x!oEGuojGx03q z&&G44t$!X?kXDXLEU%2YSOu$MHLQ*`uqM`$w*5MI3GtU=J*9w%88a{H)-wDlkiP= zGv0!?VlTW6drPbTzStiJvV0KUj)QRs4wbh3;nMQCi}(>Z5=Y@^9D{e`SiA?v;k`H> zC*VZ95AVkZ@IibCC*fqAf>WiH`w_y^a60ji5uSlFaTY#~vvH2J`j|&}zO?)oNIT9K zO1n?Kg!rY>#?NK=626Sf@fCbkTK+2tzkw^Ie_l%XJ$xTOzz?OB<5R+)Nh{wMguleq z($cLXydF15OTUTm*SHzK!EbR3euv*n8$W)ORu8`s|GTvP`jhZ(Y3cG53H6h}ENSIB zgm6A->lMI)(#lsDi%3gfR9ZbBgU4bqY3rXr_(aUX;?l}-3gJ@H@;iSp7XX80o z9?!+|@O)|Itbi91e-U1cm9R4AN?Wfg;c8eNYhX>Rg|)E`*2PQkQmlvdu>m&3%kXl% z0vlmtyi!^@uO@sA;il5+uQ~B8uqC#_*4PHyVmoY)*JB5~0XyQ2*aCb`I8|Cc)1PvQc63ZKSja3L`goh=tMDCs7vGbX?+1iGB>XXcil4Lm z3;YsS;~HFxU*S4jj~j3!Zo;o|Gk$~L;uic4zsIe(4Yy0%pC1YDApA4oUvMY>iofCS z($@b2cN4!yT7AZk4C87ZY2l=_^m&Ot1oIJpDB%Kx4<}p@3lV<=;Uah>9>wyagpa{v zu^1kQ$KwfjBIZat4o{YL-aL)?)3Gd`foEblJPXgpbENI}xp+SD7f2iLE+Tv}R>I1d zi&doMQ;l$StbsM9_U7u!rck?lr}%;O?)5hi~Xc+cL3pmI7nJKhp_w( z94@V$M@uWu7`$6r`f)gc_=(c$`9Z=D;UsC>og%IOOqZ5!rnG!!OUr)_K7n&_9?qAx z-qZLj@r$M9|2*Lr2){^pDK3+?{wsuE#n+^*zk=`^xDwyQx1^Q#9m4P8d-y(nAT7U- z2!D*9;HUT*evV(@m$(|&NZal@Y58s-ej{!oezUap+DiO3+>Sp;+y9@X<+D>-zQ414 z7yiNW-GujGbW~`kn6&j0((*}4%Qqj(^W&k!7bIK=3*!-31do)K-_eAN5p4$s1~@f<9V=i+&IzO?dIAY75~MOaB%f3HTk zhO~ZOlW=XUOZ+8xDb~aK*Z>>iWq3JWfsL@SwDMg=_-eccn_yFHhS%bC*c@A6OKgR$ zu?@DxcGw=T#}0UdwDR3ZxRbQ{>Q1-^_Qac{wQnzJ>-8qS5B9}=*dGVrKpcd(<6sk_!_>B zEAS0miErXt_%^P>cko?&58szot`7-+B&~maF0Fj4@hg_E!}Yj<8TAe@Cs%*MQU2U^j7MM* zY2`hda8W!4kHuor@;e?+Bt8d=V+lM7OXA6R3YNmsSO!nU)9`dGi)Y}OSPsv^v+*1( zkLTifcs^c$6|f>+h!^3-SP3g*E>^*+SPiRV4XlZ^ur}7gx_Aj*iuJHQHo%5>8D5T8 zU?XgdSK?K8HC}^FuqigfYw(Gt2fP70;*Hn|J7X8@irug~ z_Q0Na6W)xs;H}sTZ^Pc$2m4|_?2iL*AP&OYaWD?Sp?C)l!{K-*-i0G@B#x4HyxvWC zEZ&3T@Ln8`6L2Elhxg+H_#i%nlW?-M?LJKS5uAq8@lkvXXW&enC2bs;O?VDIfpc-5 zwCydBmi}qtpTUK=2%p8p_?)!$ULd@L@KVCd@Fjei<*yKa6<@>GaRt7CEAdTy3*W|7 z_zu2{@8SFS0e*-dNh|*+(#|7a62Ds7d1Rxs`q?Zk-M1{?g5TlyxD~hIcKktFK0guu z8Gpf@_$&T~zf0ThAB6wJ-M9y%qMYwAj(ISFS(wCZ%qwmG3rH(xL22`gB7~2YR*qu` zA17@dbv)r5Y3rXXEnO+%PnDMLG->&riRTbs9?!+|q^*Ae;R;w0FJ$?}gezfX%*85L z6{}%&tRZbXwWO8%QsV0o-vBQo{&H#Mzmo7(cr{)lEx)GH(lsZ(1-8Ui*c#hlTWp8z z@p@_P(UI_t((><0xSO=?_8{C7Z^E1L7HRACCfo=6Vn1oy8Ax~#-j0KD2o9CD-C=}> z=+%L%_C?f$?@!f)bR_%^P>ccg9qJ!$!TMEuA2 z3Clkt{JFGrYY4BE_Pe~B34bGP``ZX_#~-AX|0lvf<1e@qf5qSMcie@4;Geh~_h58P zXrCCyF^{zEC#CIgUg8fSoS*QaSO5>h!?7S1l9taAgp1&j((30J!pCAUJPwb?6YxaL z!Qxl~Pr{OTGM<8^q?M@TVP9Ug{`p-w#9bX9?`j^qaiasFv!03ab4~{-0 z`q1dZN`?3EQsF!**B_nhkBL4u`uN;`LiF#WPb~HPQ%m{x^jv>N&YzY0&&&Bgyu=ntbmivBqIljztDQ*TDE61{5lYSEvHUcHq4*DRI4*UI&uFJ;Gda(>-X z?tZaUJ#m9vzhSQbYR+#Gy=ks*$@#BEFN)qGdduj=(XG*KrNZAH-I?p-rR(MLod8U35+qoR*4 zmHv;(`QPRIaXEi{^a-WX?@2j-a;fK@n)9bcpB{Zi^qJ9TMV}pgPV~9a=S81i%HJ2{ z{DsjMMgKAS;^<4FFO9ye)bszG^Or~eCHk+?S43YKeO0OWy|&czuaCYl_umwKbM!5_ z|F-BmqVI~nyOe+L&H4LFwfi54{zvqK(GNvG9Q{c2qtTB=|1F8&o zpN)Pl`uXS=qF;=DDf;E;SE65y{#W#C(XU6p5&dTLThVVvzZ3oM=yyw{&ku6`!<_#l z=VLb-?q4-}^-}Ni&z4HZpNn3rRDNAM=hul|H+sG3FO+ikOF94L=&wYtAH6~JhS3{E zZ(PdWo96sx(VOS`MLEAksc@4*@&z7=(F1jn%FD>Q&ZAv|VAlHxO{6wke zmP+}zn)6eop4-Uz>F8$kO!RE@T=abOLiD!L%c8f7ULL)D^bV!M|IJeM`tL>WRLbr@ zDwR)nFJmQGPGS@#9{dDv*(a%Od7yW$n3#H1_S4ySR*K+;qrR@Dq zu79tTyC3ELkE1_{j@@`DC;zLIy;sfo)pCCIod0z68m0WdR_vU7XRcSLta$D>ycIyw`bjm|}P zMR%79XCdc%O2zxuIloPGfAm1~VDwOQv6MeYa(*=D$D>QRz8qbNo{X+WPes?F>(Pzq z>F8$kO!RE@T=abOLiD!L%c8f7ULL)D^bXNqkKQr*8`0m4{#Nw2OU3(la{jx~-z$~B zcgp#lOO=DWsGL7K`nS=?ME@@O*y!U*J@{zLQy(HBNvR4V)z=lmt5!uhA1|8uE!=hZoXP4u;; zo_l@H-w=Ic^i8Gwd21V@y+{`X7y_v7eQes!o{uUg98 zHFAE*oA=(O<~*U&{F}=luFPzd`hd(Hli?9R1Z&;ch8q*DXthvo-g( zMQ>FqUORJtB03eFiO!YkSL}-Jj?PCHqI;ryqnAW4jqZ!yI(nN@`Fc3#N1{ig$D+rh zC!$Ny<>*TEWOOxpD!LY3k8VUyM>nHqqGzM$qUWO*qPLA+7QJ2c^62fOcPNz)zm@af zE|uQDTPk1vZ?6AA^bezVirzW;N6|ly-X(h1=-r}skKQAC&rl>d*+^}mTeD%bxu=Z`5>Z#*&QPl`S{`jqHXqfd)I zJ^GC3Go#OnK0ErH=yRjbE0w-4%=wF={}_F7^d-@kMqd{Fr|3UNUmpFJ=)Xo^5q)L! zRnb>RUlV<8^mWnKN8b>AWAshYH%H$ReQWe>(YHt65q)R$UD1DwzB~Hw(f35(8+~8& z{m~CZ|0DXr=!c>oj(#Ni(dfsb{~7&w^b^rfMn4t(bo4XP&qhBN{e1Kb(Jw~76#a7a zE77l(Dvw{!`8T59jD9Qn?dW%+{~i5q^n20oM}H9gVf07QAD1fkV>d}ZI(n7pRijsn z{#5kp(Vvc9BYMr~&qRMV`g751MSnhe?dWx)*NtAUR66`pse0#zxqhQk@54=VezWM! zqgzVF=c1h7B6`c{#nG+NZP8mrw?}tGcb4*RBIlFQspxccCOR9Pi|&f-99@Z?jIKscMc1P1(T(Wo=w|dx z^lbE8^nCO}^tREbAFfTU88r4-aUGc=slxXMDG>7GJ5ameWHI7{nO~5MgKf{-{@aN z?-#v)^e>}-6@5VTfzby=A6zQF56$_*qJJHIc=Qp`M@Ii9`l#rmqkkKHO!V)fkBvSq z`uOM*qJJNKV)RMTCr6(WeQNY+(WghB5q)O#S7 z`AecNjlL}UPtkvlzC8Lb(SMD;BKpectD>)tz9#zG=)L#^{@(Z;rkt`qt>% zqHmABBl^zhyQ2RVeRuTVqwk5nH~PNl`=cKyRc=0*^AANo9Q{c2qtTB=|1F8&opN)Pl`uXS=qF;=DDf;E;SE65y{#W#C(XU6p5&dTLThVVvzZ3oM=y#*v zi+(@)gXj;VKZ^c1`jhC`P1CMMuM)j#^lH(cie5eX)6r{0uNnQB=+8!fE_$u#&quEv zy-xJH(d$KjA^MA@^7of>{wvYzM{f|lVf04P8%KXNdXwl)qc@A*Jh~{ zdU14XbX)XRrQXw>IUkQsL?@$D(dknChTS=zk1j;_ME6E7iC!Ar7rk|<^x2>D135pG z^Tp`l=#l8r=&|VW=!xi3bUC^bJy|NAYdK#p)jv3s^Rv-&(eu#@(c4BZi{37JdGz+t zJ4AmyddKK*M1Ql?IOq3E#sB~2`X5C9FxT&#^FNCIar7?HyGHL8y?ZJD?wRu|qW6kk z8NGM(KG8pk{%Q2jqJJK}Z}cys_lw>?`j^qaiasFv!03ab4~{-0`q1dZqJJHIc=Qp` zM@Ii9`l#rmqkkKHO!V)fkBvSq`uOM*qJJNKV)RMTCr6(WeQNY+(WjS6=V#{pStd9qOXp=Ci>dw z>!PoZz9IU?=$oQ%j=m-O*67=!Z;!qs`p)RPqW>0scl6(*?}@%Q`o8Gek%Iu=x3szjeair`REs-UyOb!`sL_XqF;^vSM+Pq zuSdTT{buxA(Qik;6aDY#ccb5nen0wy=ntbmivBqIljzvZ(oRON61{5lYSEvHUOoEL z(Q8Dn8U2~)&qjYPdadZsN3R{dPV~Cb>y;|EznJr1ivDu+SEARC-XMCz=#8Q`F6GZn zqBkqmF5RNkJmf7)-QOC$RjKRSqdTHIqvO$u=wx&%Ivt&f&PL~=yP~_J^U;Oqp6K4_ zC8g}!m-G8Qv`*@exz3x9?X15yA3HpDY;4Q_|GTY^wm0_{FB;n@-lEU9jvXr9R)3M3 zZDTu{Ty7h?thlrOZ5bOMTW+otC&msIC+pvqv8iypk6oMUYg1#>eY~r=yXYKen{&mP zzA`g5U+OCIXST1*wLiPY7V66GzP`Kt*geM2`M$o;#|vY7>dL;pyKn50K0eS~Z;J1& z>;9Ip+l(z1_jj!Kk1h4_YLmLgf=vW`@D+eoGw^Yof!@;qW#Y27lQ2TbM z-5<(zelCtltHt*7a9=+>wpLe;v<*kbxH;N+ajY#r)~R}|{XgFBm)hl0A20Xua)+|q zS5`Xol|DY%ww-K0Pj-l_?Q*r_xZ0MiwGV53eXXBbYnSWo&w7Wx-fq_0s`asRW#LBK zywS&}+n>`N%IUs-x?OH|?rpX|o9)A9hjOOfoDHS$ZR;P>E2<=J8M{|sxw6XIuho+) zMRs0Peyta!`9+n!$BI(#qB>eGN|TG~2*v%PJS7$v)suV>3uXOikv&TMw&H5V)lZz`|Hj4MEe_Q)~+S*p)MRmp7gX7Jq=C0;}=E3GtbGfj>~wrt@m76hvhPmSTe!8~IGpL@*(Q6Y>b=2* z;&i*8uD9DUo2T3T^w?YKhmU-zav_LTP>Jv-me&bQ0?wr9TX zxGs(heSM*QSZE&>+VX{Vd7H|ytyQj8n^O2dl^r}+^hT=<_cs@t$C|D$cA6jVyK2|1 zWwGl=sw8ghGKnj7?9JU;C6f;;&65?v*1CGSxY|CfR%zYZC00%gQHe!XDYwWfr57E0 zmC-3Ugb% zr-z%XO?U5AW$;#I!?rGq2b#y5%gxnpNp>{Hi`o@D-8@^Ita#wL;#6Osu9$AG+?p)z zs&rzpr}mGXDjw*&2P=QJmsQ7$j*xGM+n*!#^!CaT{v4^a+FtIan+KbV#S>Lp(A}jf zU3jLr+%A_Z9LMf1w}mU!)@`qR6yi#`Mea|Q6}ZtnUsTg>FI(Als>0u1zHprjmE`U9jJTZbu+DZ^=iB}HN{1bt z13T)e#csK`cb`DNU}u$?ot4_#inD!JySuaAor{~?@2~qi%kGoK#k#Yze0Tjw*|M|J zP^>hQr@WO7#rz;^vN~yOY&kk9WS0msQhs%&PIaI#JY8 z<7#ugdAg{LM(?GT8kd_Vn}ZuxX+iL4bE(PA!Ll8>^wuNav^D7NVkxdPhbxjuH;QTuuJ}; zXg$yJZKHkI=x5btuCPIwM{e{hP?~6Y$E);mbEe7#vf)gwto0i?T~wkcT5nVg%A<+$>tJ)aDReo7;&`eoMR!lNZ>K6%COUUe zh-;N%6ZP*vlW+0}g)SE+>WDq3+c#-DQN9R83L_sj>o2lFJ%gS-)9G`z)A?-GoD)^& zu;*-9gq}UyZqD^n=PG6s)%wnl-7>*ET-BXxj$KH;VFF^&vT>yfQO0;O)a3h z$=&^x!nj;i=issCTJd1tJyfYNSx=rXDhYU`>8Zo@55?$k zcl~&kN_6FT{hh3GqlMIp;YM+(kC*y*xns24_UnO6mcPtc|v6qw?AnIefZ(&^9?{|7QK0tRty+wrx<>wd<~&Yaf&f$NV|hsdQQ8 zmvQ5c=5V~Pj`eW0PXk@oKH!1o!RBJ~aPwGmsVVkqL|kjGH#eH6i{1%5TU3^i|Nfy6 zeYxjEBj)gmy>*6?!wDqnX&o)`Ot8LrWE{(&z4^mj~8il*N@6Pvi zee9{eio#v!D+`?tdep9XYN7A$sq#5h|IQTEM0liluw#9&{8sbIyTy7trYdfDwDa_6 z=hV^8mt$>@_HnApwpgF2@`iF`sogJk-mO%*nyPft5N9MM09ti?+!CHv+ZWKN#bmi;z=Aou|DVb7`Ra$wJ`)WOusw-U*Pqrl| zs|-(&RFP|W7b zS9Ev2(r>0q8oF|z?J@S8snW&rLw#Mjnkk#uZ-hKk_gp#BSB`c{9;>{VsXXB4@d_W0 z7ndq0XDZL6^K!dcsnBLBMfkANVXf42j`?u1(@L*?rpknF>|Dtaa!^ z3T|{-ZFY#8?a!Ht!Aw2F25qramS)C}xYYFYWfddu|G*u6ytlcpd1XM2Y^BTo=3zcfI}8tDh|w%S}F? z?i4oCpDio-uMclj!?rX1tXTr@46D=$$ff*MkMAwYNAn8aB6AgH?k0=c3w7{7>8_r} zjiPr2my2>37n`Sxd`0f{Vo}cTs#52wyWUVa>e%~;+z&k)qX=WOBh95I+YVIvqw9|F zSWykHWSnenHqRB0_VuG}r`hAVioa5Gq7=D5QE53>_Xc{(n>bhZ#QkKY>s*yBPpx*C zs};^%=MlQQQQ_lCbG7IVN9lIDv)~(fn!L|)$vg>) zm%4OUT|HJjQTKP%8?;$8(!r(TO8rA|F+#@qCL31kIpn8t5c2a>#RlcDF)a#Zqix=( z9C6H^jdpXo{XE^*t%mF>JM^m>m5X9+yo|y<*J&bu%{Xv#zO9zadgptK z^4C1&k)nE4jpnYpRBw9V$v!?`)Eh-^)TQVteHJ`ZR0eRhs0^Sh%CFcvmY=xP+$gdI z_t!sfD5_hPU=;d+vVV8I6+4@(I@FdQs?>J8-aJ=Sb0VJ)H;sRHmupt(&7ix-`?|K$ zu~3XucULYOtH^N_J9D$UE0_7a+Q+B*?pmGiu5!k zQ+T#{uIQabJ|3?8MX@+quI4M%JaxRoI#FpqUwPz;w-V16m)o}Gwr!=J(~tM|oUG^O z%P;nvDxYwp>8>%@e4X!ave4D}@|P`}9g3E2zDl-OpY2f8+Inv+JlA*icqD9Rlp zSZ%*{MV;lkJ~tjOdb3b1Wdvyr$rWP@JYV!4;n0WJR>$%MxlvCWpSbRQL9>cx2jqcc zJ$PIy9x7{bt+-g%7OKRYC>}3es3Ui^O$+5(E}9=kcb6(H@nli|0nNJ@SuAvZ;L$pk z!YD+o)k4MXaMSTdhiI)~q3*2~&sBP&XZ00PSn4P%?R$$8^;fLa`}%!q|1HHm<+mAu zjpk<2+&i8uE|v{@${KF0And8DYeh56xY+cp^{+jZv&+r(3e&phCB4T%I_~e(JlH(c zTy3s3*PENov&CDNPnXm)r;9APq|%%ZW?a!z=DpEfmf%LyQ)W#sDPPvdF0FWOX>M(9 zYmPT3n^Vo{=1g<8xxaa!d9Zn?d9-<~x!hc7t~G}cH~RQ=bF+D-dA4Zn8r?O2aA}pr z-9@Vdmsae~6}3(KYKCopksJFYCYlGEo5cf_JNr82_f^an>)4Dvt`#rTed)N|D|1_# zw`tzCsBX7!Vn=gd(HpnFYC_l5hx&8-o5QhrVl$Mee$_if^^{p33eA;jX|-40CoKbVuk521SQ$ij@UORw%`+S&n+!+GWSwtC3KAjcw6WNBi#4_Q$wpe_5kP zd92a{J!{Pihr3e1SXlbXWvPr}VHFIyJkg<_=<8;=U18x;mo7a4$7-3S$~~0kcFQ2& zmg+C^bE$1!YM+-nr;NT`XNmn8DCL){lq0Lmq9Z?-J1**2$I@-Nty<|6Tj@L!Pvc3J z7{8-uS1PrTuVyS!xc2Ix_zpV~te-hHmuj^RrQvG*9ah0n`g;bYvsGpkq8bc^xYp^g z)_J#9XRauvYi;>jmq7g@`)rhdtGUPq<4xq7o-ir{*7%S=>PEG^XYE(OZA~@6M!)N3 zQ61|kZgeVn#xa}KFvwc<3<}H2APQxp{-XEAEH1ihtq|SSD?rcc8<>ffZsy1KSGh47 zIotl9%@uC!s6g@6y5VqLO|M^wQuus@WfgE+b8pdnFFLlef`^*J4uXw7_VjrDMQcQ6 zdU2)6PwSs}x@bia7mHSe&~-JT`NhLcPni=M#_Yk|%_u_*-96s+pXjH|45;hH(H=pR<5ta4UvH^%U!CJvYU__7OVluUu4rZ! zwG+$jzxiRu>{s$oSVJnC|8dOzlYLDs;h3Lhj}O$7vrRdnmO$Z}p++h1-ABH9$5AZ2 zi9Ym$bYzDH;xCz}oU4KXA!x+l3xO;C$CC085$K0FoK;i0b zqU+|al`V4z=i9dPeZ?w_J*PX0cCT3LK3z0=!V^uS4eLL+Sv3Adb2jGG(NpG1&Ee^r z@Cy$&xiLqD=1S+w7z-eu>{vtgY}EJwFKb>|JY8=a&NP+e)166mYP0WJ z|IlNW!e=_I&a^#dP|eG;$}W_H^*qbXpd$B1uPDAli*>&5npw5;eQ$GL@#2b+9k_ON z+lPSO3Hv%xpUy5$99)|5)d#@Kih2UxNpmQ6jp0&LSlWH`tajh-A;)$j*q3pxD4wXN zZ>0#&7u8Y2dIDM%pY5lNfXq6(Vx|-MW46o;4Ij)3pt)ybcl4AIIkMAedl-r8Me55K ztD#wSH8>9Ak0X67M12P2zuF9keyG@u`b6A#Cx%kb54&u+MQMAe?L5?OjAC5jk9rKH zfZ7b@i@lFH-Za0w*twt==$N(20ear32hCbpuR&I+(@=hhJ5Xd*9By`t2wsD%2H1mb-s?*S2yB0>HIJKE$xpu7Wv|8cVQ)b&x+ipCC zLeZ;1sidrrQqy?K?4DSkX!q(jV@2tsmP6^k)Nxm{$ph(Zz7APvKMnHPSO%q)-FwIf z^%$~K4Tfw}gW;LtYQG)EHIBKrf{Eg?+ObflIaY@CJdpp^!juX2tKU#st+hW!G>(O3 zL}MOP8C&mi!Vbs$(c3}p)p96(%z&X%VV@9+@9Dm-rgF>%V*}*pW~av4_UCN-Y<5Vg zl^5nuaiJ-6eH*1&i9O#>S$|iuw>5V(_cr$x)kWy8UHmxRoN3NB=bF}3?2$(^w)VoK zc^Tsz)Z3OWc(`elKiZ`(XVh$HMCIFqVQ)CHN-gKz)8g5i><$^}WcDbMs)rUCvsh>E}cG{CTnuAuiI@WI6JBGrY>Ud3c=u#8m{M3_F14B?E z>t&-dsPBx*&roA}#_`Y#lXs)O5+C$CP$=4J?~pjE)ltf8-%z@ZS{UW$P{kG5rZqre zslAY$qnb%rY628HZ!HcXN?~zD`Q;7{f2EST9r>VE*9NfAyZ~}@xZ|k5>R76(+fnQe zcUXrz-;dO|L!WrIDR++a8!?P*hw$`rUFXA*E4Qf ztQnka3yoA=;g9|^^5RX+s^e z&`cn*&2DpK&wATqd||DZCB_%So_L(=W2MFX9kN8LjO?*%9a&-|g2J`_j>0uBfxuA6N&&bNQp z{0bW38=>ORBNL{+|ERAlhK{WjsN0bx(ih$J&J8K;%-38a+Xs84mHHW#(<4=`a9fkj zN2+Y2bTdzg+^dK2%AzlA)%9#MV}RVKhf%897llGP-d3rH4_8XLYu*p#g0h9;rCvQ; z`5^_Y`Xe`Lzfp@~mx5z4^?e|+UoU#JW6760j#;HIjr`P$wpt@Z^%x3KZHDKI)``(w z`&dTnI(o>CxmTY^LAw?0f$Qbad!xp+$Xe_4sJwaikcGzY+Dmcw zuAx|%lSgjO^s~yAu@jrUal<$Yg{~Lvi#|DJMgXOZx6F)^XU)l@KDhof?r839?knm) zqq};}Xa-6j7|pQys!~bvla* z%MyFhj92X~QUcH%m_2U8E+>1ASUB2cU^Ye1*4rf=^lXoG&lWGPW2?&6aO|G8QioDQ zj}*HlsIZ% z(cR;H*Y{%9IcAzin=I7dLm>|9A8H}T>{AP&SlEGs{IL(m+=O(~uR~8+gFr5q+l~H* z{;T-vp`mzL6+@w@qfjX3?osUQrbA&_gBYz7pQ<=HX8Ea(ogJLR`Y{So?S%YPM@eg? zLQe*jiuHcG^=BMgAJd;fHW+oI@~mfq(%CM0yihd8M_1HDC{@isqExlQfnw^*KwKzV zaX~)l2_S#$>ON9&=Eg3*BNftRMdNyN+SUIXOI%iH!JPPH={@t zy741&Z!Hn+#k9_ZY_`^9ZgsY4H<;Z*$f{xH)hN$Q8j%g&Su}U<%|-j2 z^&gRM`ZXvNy$q`Y?2&WG2k#WJ+#XT%O^+C&>&8vqSkD?0p|E`YZD;WACjY$!$SURE zY@N`}9HD2u1;|frG>WO2F8d**k2k`qBs;wY)-Z&w%p)I^eDsu_Jes#QbA{|tp4Bo+ zl(~A8Cidu~(lyjU`ooU-;OkA4Yv#p}C3?juc4o}cU2EkiE@wJD&$dhRT1U%A`Kv`n z_MhuKHH$u4kI@SI#gx6p?d1}U8h2K>!&l?J=yhHDh~7Wn#i2bQj&S&f##6o!LA?pz zbs$UaJVtvEm3;fYjS{TcDIdO{c@P6sP{j)kQkgF?|~#$lC4C}vbpnpov9U%0h-X_F6T zD3Kd8Qph*&4w@_V?%=tiQ3Vd`WM*0P7KeTra-(m8>>S=GEsSG+syk7L>Ym}fky_lC zuRyjP?{v1l=AJ8DAe+5+$OdiJ=)GNPS7s+%;nMswvPV0GQd@o?`~AuW&NP(){cU8A zUN?GH?-ThTJ}BkQV51Z>3xPs63xW1!n~T70O{ru*IodmBMgoPXHb5b$4N!`y4USbv ze74Wr+`Tj$X7GjWm_1rXbNXyv>vuuT;CQ&sDs3MsUHb62&}4%a5c%L4WRKbd*u<6;z`e&?GVf#_NL1dero*N$Z0DCZb-OCO zEke-)Lwnn;#3KK#Pg?o$g@d_J@6|AO%dLJAYR}AIq0qhWC|qwk3f*`M#a$n8=!I#8 zSgwzN<`%UE$fddm?SGMz=(>~`EJBvJgJS2GE0D_*9hR?ckJpjA<{P==#+Pn(+wjfX ziYzy?hf>(P!$-F1$)UJd<+VG|?srAF7S z@1W~SEb?u$OQJn0>NV@AW{1RZvMF@4J*dnojmV82FiH`lR5X4y8b!5*KB4bO{SJg* zkvUPl+s&di5x)#^s%X6f9Z%Ok;{k4FD_*{0(O#Lo@r{MK9J{+v{q0)-yXIZj-y7|F zuzSev2h>ADEz+<8W)!CG_LSZlde#UZg{6mv_5&()IE>C&Xch#yG=G5H829Tt^G6?F z-$yCaGaC9qC^xj>IJCw?YdN$M{8TH*F?-^bZq&Dv*2snvZG(14S!BPS9`fJUU;2Wx zO;0F+qi?{}=Z?8I(}L1UeT2iYxaiA`#$#%H$L^}J@qAG)4&}Ac2nx%bC$d}}i_$^u zikn5>i{YhB?)BNwH%w|&6kB~qXHblo@w`DwI*a>|^fJ#Bl7=0@yn8|aGP^|6Xz zZQqQ?XhlJ5;aFR3t^-$^(#gmL#m3H2^sI3ja_@_O^o^56yzlmbIhZ zb@EBS!Tg%~!Z%6i%Mv_S^p%EvzCMxeADYg_UPjwd+Y!; zuHN1hU(cgB+5uwt1o zuAsYWS!9p*9zCm+p%jpEC@ixU=vh5LZHDW1RwEzu(70o*mIC=;M24)@`$E3ifq=rb z4*|~<%~YT(dS&KH0kD%u(QY(>HT=BqQ7O#E}2mCKRIH z7fKC%FyvA@g+nSxTQjSul$xEu;kq>U?I^md9zeEjwo9#;k?m|#=t>4E;eOQ-S#qu| zIalw!WA^y!2F1c&3X}_aUnupoeaIdoL32z}TYHDDpRdsL=65u&EUInL&Juml<;r7Y zM7uE2Jd|HMvo`69xz^D-rP&h4o?<0x|J6LGm+Cj7{5laICd+2u3T|ooJwEfOs5Y8v zf2P{Kc~m=ecQuU^rz<_R6XpecA!>GDy2%D}0mC;*Mk)NaOA7hm>l)PWQ_moq^$d{D z=39`@cJ!mTsEbfs>{v(ZOIGto>$1jIj-`Os9Qk0st=T=_klVG2+^DHg>tS6UxzYL~ zOU%KdR5AyPa!n0}6HViCH5gvn=?u6b^h{>G=srCx-&2fN$61L#@vAIN9DS!9tq4L!?ZWT74fn#nL$K<@QS(Oo?_ zZK;x@mx0340;`pWHq%`#8%h~12J*+-FHEIfuHukRVq|&rY%m9l<4q;O zs1w<5t`()28CPG(@L7MxPO_P%P<*?A?&`_laLfl^#3M`2c8=&_J7$S*Jcq9wQMkVJ zG=DAq?Hon#zA-#{N}mUXVs6&&@@{MHZSHGcS-iO1m|x(=@3115j#lc3>b+~9lo7x6 z=(p><(`L8Ou3xL&s4uM6LS;ePA>Y(sXr!(NL%Yn>V0gAT*?y|W?89?c56XTEcYPCQ z9z?5d%@?(VvmJ^xUt=vH4qus@GqOU-y{~MMKg0K(R(V#c_MdIK>kG)?OGLc5kIl*X zz7VyjzAQBVA_dfYDAsB}6l-M>#aI1?cJlhh1-Vq4858oyj2ZH0n3GkHIrfy9F%)C< z7;MQ;Q%U z)Cxn2qPY039*2GNuB!2ndo>2 zk!|Wv6ffT^qWJ1vp=Z^lW-XOfyIe*ynAY6=a*$j*(>|Nqx1KT6Txbf>ZdG3-ijf%{ zG%B`_1^H=C1LdzTagcB7QuCxcntO|CPSg`uPx|FSGaPD5G)mrCzS;NSogOd$M|&W~ zE1ezdua8&kP)@5SQ9pXT(gS@3=vRhtx+%t!?VBEh-)*t3?w((?Lcd#s?pi7HJq9=C zPmqOX`Kt73Qc?nWaMJvzsHP|Kn96WTQ_y^bG;> zLH&tR-VRLU-da4ePTh$5LH0M<-yzTK%s@Vv`7t(gU0sJ$&D~8d_2R5A3Cr3JvezmH z4%gXfeiT_~&Tp9QL$;YwLwD6w$Oh#YrJ=bKBO#WUKR|IYE<&j^8mn=++@;#6!m)Cq z*N>jkD@0{!)SpsL^ixop=w;w7nin^vh8_fZYqa^ue{DMo#W%%xN%PX?zNT~-wQ1t} zKP`-7xvySFaZ=Z!d{>8|d{J{Co7E7gba|(xgq$6viquvEqo@3~5qfLt$Lt(>#)Fl5s;&sZ zUIJu^{gWuZ#_z};`v*{}>dm51)cMFxzsQHqv;xwC<cmQquf3%6GrIg37)!@4p*VT~7H+7?O&vN5s+|$%Mw!0t2SFaL> zUG2g$UPiXbGvucpCJNC`NaRvmj$GO$XLV$6lg;*|80mS|C>XW;R(9}wQSFL+GlOSM zhW}>p%qxqRd2V#qNEX>|z7Dz3-$T}#b3&mT;o@}DUE?#o4C`!aEtG?LtSCm>Z5-N9 z{*UU^;Vyr?dG=MXU)rGAc_E`TF`h-1*k_4+FrG!RP=}yU%vhmk&F0~@=6F+iv&#sj zvzh@tWi1tjWw*1Mj(aPr$bWr2WP@E9>cPn-OZ4SXnhblV)CrE+qaHv{`E40s$7@}^{Xs; z)y7X|H&6{e{Bq}9KR5anG4-w$QdD#J&7|S?jqJ16`|wuc&^tGGWtS)N**TtRvSIYC zwr8!JBAWUe1WrEN4HX=86c-bw*a_^2A;bA8QtGp>V zT<6kSE^{>G}^Ub zr55?aU%xFSr<7IXgWu_5hcr=QPxU`DO?*(kkxP5F^a*w}_cr$xjVW+j)2^AVZJqIj zeuJIO<7GeEGhqaQMw~_vs0}xEuzsvxFj?u3p4IxGafThXXnf;WoY8f=YEi9kr#*7x zS8`E_uoKVN(puJBrH6Wl4}Pl++29vBP}=ytI&|Hy(4qe;$yj6bt)qEk$6{m_1;t1! zhDLQ}iRH1dhF^g7PC1sIW{go-ehp&uEsBwXV|R@dP_M|h!YF-=2#{}fi6QsHipbC> zQ@^;vXR|0M#q3Z*>1M_l`KdKTX{9wp{tr7r%_ln+Q!OL%Uzx)p6e;GtMk#6TMZZv5 zX&=#3_CM$;$|Lh9$bT~@Xw|}A2xQN&1JTYkEreKDBSSW8J(11klaZaqDJa~bT~V?f zv(PS>Vdse6s`RnikMm7#%p_}#gr&7bK3J(hDQVsq-8G|+Vlt=va#oo|uQh{w0U zdPUCc6F{}8y4U^&YgXGUbmV?#m%j17uAeW5_&i?a3iWN(*yt@(W1|q&+o=4iw^5lI zdSl}6SSV_8ln>)=p|wA)+CtM)_8y?8CMzvb3QbkbjavKZwn`mtM;&Wt+8%RczM5l+ zb{&N^*VpYbb<9uuaL`@zMJN{5rSu)8^PU`Ye`#MaPi}^hh4vvJ_x4>Y$1L<)O(;fY ziqKQ)a}@ari=)Z|ZPliJBaxr#c*2#T~Lu9gbHNeUX8DP|A_Z|M~jIYLl|2K1XS&o*K~8HDV@!e4tu-o_mMu<;87gS zI3auNc|qaoA6okwCXI2uQC zZ_4S{8ZwQ<)gHbVnW8@FH6jgAm8kBKfxcKLDzj7Vl`AcU+A2@&}HdD)ikcm zHs$q&e!njCTYsTy5m$z1rHOeJD412^y*QFX865(ELZ0v z`_=i#H?=)_O1~ZXq_#&TL_Lq}SI?td8~RnlyDjZpkuQr?uI)A7*;MMR8X!B>`6z$& z+mW?a`bT5bqiyHtODXa7>tV=FH9vZ4n1R)AbIb-i-;hgf0g91PKMG}7pVJCBR+5L_ zAs^LHp0Z9ls;#V(8aXRh_TD1jtVE!Y?Z{NGc`NN(ME=+dhuqtphf-h7 z#UQJO@wvG*vrE%WX|5Nj-rUlZr&in0yFXf$60Y7pvPyp*`K&*WgFnjNXinN2VLlke z*NiMG=UN<860|QU2hCRvvo9!Zr6#&-+^>G;&uBy|9gN#hdXL5v-0Rz_v&Bn0h05xv zKj^*CHla|IH5~Fy>{x_@73|cGAfL_8qx3P?fu7ZZAouLBqh+$ma(#ZYB(qI9rFV$p zZa0fC_-S4pUAH4wsN&-PKt(xXe;&#ab0hYw%R9d(fGpRV;8b(Ed0FwYu9379LyNf4 z|4-{iw;IF$WN7};o(0eQog+K-rmJ+Jne6F)^QNm*I39NGOxN*D`H9^4MKZqvsn0vx zzWMze`<2ZoTg69X7r)q!uFtoh^L=-|^M9eP4!>rt<({Zx^&y%$vzHx*W0sf|G-t{l z``nQKX6aFk{F)lhG|j1~@sJz!p0V7P=C-DmL@kGxH1{>_Mpv7m-h*!|kUzt>>}n_T zwtAhzmvwe{J7%pfGSO4~LTTa)ITWs12)P-3*CoDc9yG%AeT-Q)F3r*--|Ry}F3lUD z)Kin7Fs*DN`;{t`cj^<=dgzOy8rSRrvfqv;K|WhO)Zg0Pfnh=t5Kb06l_I7Db^$M zyYPBav*o{C#m1m>6>C&i?W(wM)*C(5wEp1x8RU;&3&feG*=~IpH20x4^i4HCl_ayn z+}L|y&x+qFHtIyX0QEzVZ+acb5;KG-TyG`v-@A$Iv=70T+rzi@d>g)F9{z6+@0yz0 zw^rUY^PHoS-z3m*xe9XoeNJG{!}~8E0rubf%N7dQAXC(&H|neN+KBX-O- zqaI|B66V_{*X{B08@}%P%{rWKde*+m(b&mo+zgl2&M#)5)nIcnzM|LGO_raiKC|+q z#9I%TX;(89juzBv%xt@yt+ez%BY6{i12X#EkcCQT-{kw^MX5ujNiQ0YH|>4bb4Hh3fxly}W3u3L>7+I(`MsD=PP`;Qm!}+FkFo%FcpNJ)DRAo-u z>I>j-h0mjUf}P$oWW%VG4dshV*5Tl{BlV{lRkj(kqr3WA$RBkncT!&ciChlrRccZD zB(^lSHSO*(7PfO@M{{q{oTr`2c8mMJlhONQT?svFbqTrmn=RIR`|Ze?vKg(D z&D9;$cbIE?^|j0qTcP!TF`=jQg#4b4@;>}x#X_ZtnG5!e{)Y{As-ICGlxuxcZpD@15q;_Fl#ewo!>?}!y>G4eZz=yxF0+sKXIbVAmupOJ0ac;tg$l|Z3* zBjlV}TQxSaT=_?q`}z;1xo;woZT6<>XN#F#3h0_OSv%ADZwxi;Qb*sZ=-VhI(!riV zioafvnYUL8+&gf>PL65ZPwrghDr}(1Q@JUir|Q(5mpwn}sYN zR_%sD^eY-DZG9(;QpuVl3d?3LI;_3+UhWN-@-19QM-bH96K(*LGN|n{3WExu2{Q*4KC4yd_%6 zF$T9A&y`)3!l?gipA*_kvAgroyP)4@2l0HnnJ=r19QbMP9J=CHXK^^@zh65+p;&uD zCDdLWR3l0Sv1PN7IJ#>U+1~N3&23FztC&SZvCu}KnCjc3r~G~)4*SmeX?%@B)SE)r zy&b;u(cd&vhpzaN3%Rss7_H=J5ADmS51o~m9YyOPxOeQ{mEx;oqd!-xgKOvH=2smKzIew$SAOk(^}+uG D5o+dY diff --git a/.vs/Ruyi-GUI/FileContentIndex/f7acd8e8-0e14-4221-ac25-ae7b073d1ab8.vsidx b/.vs/Ruyi-GUI/FileContentIndex/6e87aa50-72db-41b6-b336-4fac08fd4bda.vsidx similarity index 99% rename from .vs/Ruyi-GUI/FileContentIndex/f7acd8e8-0e14-4221-ac25-ae7b073d1ab8.vsidx rename to .vs/Ruyi-GUI/FileContentIndex/6e87aa50-72db-41b6-b336-4fac08fd4bda.vsidx index 5110fd350485ab6a24ad53073cc68220683888bc..002666ddacf5b6156133847838c8bd4fd6bec55d 100644 GIT binary patch delta 21 dcmaE}oaN1OmI=YE)84HtdDj@RHG*-9FaUWG3N!!! delta 21 dcmaE}oaN1OmI=YEs~%diJ2XaYjbNN23;=7*2(SPE diff --git a/.vs/Ruyi-GUI/FileContentIndex/c75de1c0-07c3-4255-9f9f-669fbf27c14e.vsidx b/.vs/Ruyi-GUI/FileContentIndex/c75de1c0-07c3-4255-9f9f-669fbf27c14e.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..b531f1d0c05ad703e0668804681188379c097eb7 GIT binary patch literal 112968 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 literal 0 HcmV?d00001 diff --git a/.vs/Ruyi-GUI/v17/.suo b/.vs/Ruyi-GUI/v17/.suo index 625b87594b869e0a57ce8b2669633fc2927c9db2..c2663b1891e169720700084bb6e4d08335d55f55 100644 GIT binary patch delta 4144 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 UM1QOx^VxrcSq}5`EMv<509NnA@&Et; diff --git a/Ruyi-GUI/Form1.Designer.cs b/Ruyi-GUI/Form1.Designer.cs index 658c494..8b6b0f4 100644 --- a/Ruyi-GUI/Form1.Designer.cs +++ b/Ruyi-GUI/Form1.Designer.cs @@ -72,8 +72,10 @@ this.RunJobs = new System.Windows.Forms.Button(); this.timer2 = new System.Windows.Forms.Timer(this.components); this.Batch = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.panel1.SuspendLayout(); this.SuspendLayout(); // // pictureBox1 @@ -140,7 +142,7 @@ // // SelectImg1 // - this.SelectImg1.Location = new System.Drawing.Point(6, 298); + this.SelectImg1.Location = new System.Drawing.Point(6, 300); this.SelectImg1.Margin = new System.Windows.Forms.Padding(2); this.SelectImg1.Name = "SelectImg1"; this.SelectImg1.Size = new System.Drawing.Size(257, 22); @@ -151,7 +153,7 @@ // // SelectImg2 // - this.SelectImg2.Location = new System.Drawing.Point(276, 298); + this.SelectImg2.Location = new System.Drawing.Point(276, 300); this.SelectImg2.Margin = new System.Windows.Forms.Padding(2); this.SelectImg2.Name = "SelectImg2"; this.SelectImg2.Size = new System.Drawing.Size(257, 22); @@ -257,7 +259,9 @@ this.AspectRatio.FormattingEnabled = true; this.AspectRatio.Items.AddRange(new object[] { "16:9", - "9:16"}); + "9:16", + "4:3", + "1:1"}); this.AspectRatio.Location = new System.Drawing.Point(93, 372); this.AspectRatio.Margin = new System.Windows.Forms.Padding(2); this.AspectRatio.Name = "AspectRatio"; @@ -400,7 +404,7 @@ this.Seed.Name = "Seed"; this.Seed.Size = new System.Drawing.Size(95, 20); this.Seed.TabIndex = 31; - this.Seed.Text = "17"; + this.Seed.Text = "42"; // // Seedlbl // @@ -440,10 +444,10 @@ // // GenerateButton // - this.GenerateButton.Location = new System.Drawing.Point(6, 495); + this.GenerateButton.Location = new System.Drawing.Point(6, 508); this.GenerateButton.Margin = new System.Windows.Forms.Padding(2); this.GenerateButton.Name = "GenerateButton"; - this.GenerateButton.Size = new System.Drawing.Size(527, 30); + this.GenerateButton.Size = new System.Drawing.Size(544, 30); this.GenerateButton.TabIndex = 34; this.GenerateButton.Text = "Generate Video"; this.GenerateButton.UseVisualStyleBackColor = true; @@ -452,9 +456,9 @@ // PlayVideo // this.PlayVideo.Enabled = false; - this.PlayVideo.Location = new System.Drawing.Point(8, 527); + this.PlayVideo.Location = new System.Drawing.Point(6, 543); this.PlayVideo.Name = "PlayVideo"; - this.PlayVideo.Size = new System.Drawing.Size(524, 24); + this.PlayVideo.Size = new System.Drawing.Size(544, 24); this.PlayVideo.TabIndex = 35; this.PlayVideo.Text = "Play Video"; this.PlayVideo.UseVisualStyleBackColor = true; @@ -463,14 +467,14 @@ // timer1 // this.timer1.Enabled = true; - this.timer1.Interval = 1000; + this.timer1.Interval = 2000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // AddJob // - this.AddJob.Location = new System.Drawing.Point(540, 458); + this.AddJob.Location = new System.Drawing.Point(556, 451); this.AddJob.Name = "AddJob"; - this.AddJob.Size = new System.Drawing.Size(101, 24); + this.AddJob.Size = new System.Drawing.Size(101, 31); this.AddJob.TabIndex = 36; this.AddJob.Text = "Add As Job"; this.AddJob.UseVisualStyleBackColor = true; @@ -479,17 +483,17 @@ // JobList // this.JobList.FormattingEnabled = true; - this.JobList.Location = new System.Drawing.Point(540, 6); + this.JobList.Location = new System.Drawing.Point(556, 12); this.JobList.Name = "JobList"; - this.JobList.Size = new System.Drawing.Size(235, 446); + this.JobList.Size = new System.Drawing.Size(228, 433); this.JobList.TabIndex = 37; this.JobList.SelectedIndexChanged += new System.EventHandler(this.JobList_SelectedIndexChanged); // // RemoveJob // - this.RemoveJob.Location = new System.Drawing.Point(674, 458); + this.RemoveJob.Location = new System.Drawing.Point(683, 451); this.RemoveJob.Name = "RemoveJob"; - this.RemoveJob.Size = new System.Drawing.Size(101, 24); + this.RemoveJob.Size = new System.Drawing.Size(101, 31); this.RemoveJob.TabIndex = 38; this.RemoveJob.Text = "Remove Job"; this.RemoveJob.UseVisualStyleBackColor = true; @@ -497,9 +501,9 @@ // // RunJobs // - this.RunJobs.Location = new System.Drawing.Point(540, 488); + this.RunJobs.Location = new System.Drawing.Point(556, 488); this.RunJobs.Name = "RunJobs"; - this.RunJobs.Size = new System.Drawing.Size(234, 63); + this.RunJobs.Size = new System.Drawing.Size(228, 79); this.RunJobs.TabIndex = 39; this.RunJobs.Text = "Run Jobs"; this.RunJobs.UseVisualStyleBackColor = true; @@ -520,51 +524,59 @@ this.Batch.UseVisualStyleBackColor = true; this.Batch.Click += new System.EventHandler(this.Batch_Click); // + // panel1 + // + this.panel1.Controls.Add(this.Batch); + this.panel1.Controls.Add(this.Schedulerlbl); + this.panel1.Controls.Add(this.Scheduler); + this.panel1.Controls.Add(this.Seed); + this.panel1.Controls.Add(this.Seedlbl); + this.panel1.Controls.Add(this.Cfg); + this.panel1.Controls.Add(this.Cfglbl); + this.panel1.Controls.Add(this.Steps); + this.panel1.Controls.Add(this.Stepslbl); + this.panel1.Controls.Add(this.Samplerlbl); + this.panel1.Controls.Add(this.GPUOffload); + this.panel1.Controls.Add(this.Offloadlbl); + this.panel1.Controls.Add(this.LowMemoryMode); + this.panel1.Controls.Add(this.Directionlbl); + this.panel1.Controls.Add(this.Direction); + this.panel1.Controls.Add(this.Motionlbl); + this.panel1.Controls.Add(this.Motion); + this.panel1.Controls.Add(this.Aspectlbl); + this.panel1.Controls.Add(this.AspectRatio); + this.panel1.Controls.Add(this.Resolutionlbl); + this.panel1.Controls.Add(this.Resolution); + this.panel1.Controls.Add(this.Frameslbl); + this.panel1.Controls.Add(this.FrameRate); + this.panel1.Controls.Add(this.SelectVideoOut); + this.panel1.Controls.Add(this.VideoOut); + this.panel1.Controls.Add(this.Videolbl); + this.panel1.Controls.Add(this.SelectImg2); + this.panel1.Controls.Add(this.SelectImg1); + this.panel1.Controls.Add(this.Img2); + this.panel1.Controls.Add(this.Img1); + this.panel1.Controls.Add(this.Img2lbl); + this.panel1.Controls.Add(this.Img1lbl); + this.panel1.Controls.Add(this.pictureBox2); + this.panel1.Controls.Add(this.pictureBox1); + this.panel1.Location = new System.Drawing.Point(6, 6); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(544, 497); + this.panel1.TabIndex = 41; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(540, 557); - this.Controls.Add(this.Batch); + this.ClientSize = new System.Drawing.Size(555, 572); + this.Controls.Add(this.panel1); this.Controls.Add(this.RunJobs); this.Controls.Add(this.RemoveJob); this.Controls.Add(this.JobList); this.Controls.Add(this.AddJob); this.Controls.Add(this.PlayVideo); this.Controls.Add(this.GenerateButton); - this.Controls.Add(this.Schedulerlbl); - this.Controls.Add(this.Scheduler); - this.Controls.Add(this.Seed); - this.Controls.Add(this.Seedlbl); - this.Controls.Add(this.Cfg); - this.Controls.Add(this.Cfglbl); - this.Controls.Add(this.Steps); - this.Controls.Add(this.Stepslbl); - this.Controls.Add(this.Samplerlbl); - this.Controls.Add(this.GPUOffload); - this.Controls.Add(this.Offloadlbl); - this.Controls.Add(this.LowMemoryMode); - this.Controls.Add(this.Directionlbl); - this.Controls.Add(this.Direction); - this.Controls.Add(this.Motionlbl); - this.Controls.Add(this.Motion); - this.Controls.Add(this.Aspectlbl); - this.Controls.Add(this.AspectRatio); - this.Controls.Add(this.Resolutionlbl); - this.Controls.Add(this.Resolution); - this.Controls.Add(this.Frameslbl); - this.Controls.Add(this.FrameRate); - this.Controls.Add(this.SelectVideoOut); - this.Controls.Add(this.VideoOut); - this.Controls.Add(this.Videolbl); - this.Controls.Add(this.SelectImg2); - this.Controls.Add(this.SelectImg1); - this.Controls.Add(this.Img2); - this.Controls.Add(this.Img1); - this.Controls.Add(this.Img2lbl); - this.Controls.Add(this.Img1lbl); - this.Controls.Add(this.pictureBox2); - this.Controls.Add(this.pictureBox1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Margin = new System.Windows.Forms.Padding(2); @@ -575,8 +587,9 @@ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); this.ResumeLayout(false); - this.PerformLayout(); } @@ -624,6 +637,7 @@ private System.Windows.Forms.Button RunJobs; private System.Windows.Forms.Timer timer2; private System.Windows.Forms.Button Batch; + private System.Windows.Forms.Panel panel1; } } diff --git a/Ruyi-GUI/Form1.cs b/Ruyi-GUI/Form1.cs index 8e7fe05..01e2189 100644 --- a/Ruyi-GUI/Form1.cs +++ b/Ruyi-GUI/Form1.cs @@ -1,9 +1,11 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.IO; using System.IO.Compression; using System.Reflection; +using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -13,29 +15,117 @@ namespace Ruyi_GUI { public partial class Form1 : Form { - public string PythonCode = Encoding.UTF8.GetString(Convert.FromBase64String(Decompress(Convert.FromBase64String("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")))); - public string StartBat; + public static List LogMessages = new List(); + public string PythonCode; public bool DoingJobs = false; + public bool Not100 = true; - private void SaveSettings() { File.WriteAllText("Config.cfg", Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text + "|" + FrameRate.SelectedIndex + "|" + AspectRatio.SelectedIndex + "|" + Resolution.SelectedIndex + "|" + Direction.SelectedIndex + "|" + Motion.SelectedIndex + "|" + GPUOffload.Text + "|" + LowMemoryMode.Checked + "|" + Steps.Text + "|" + Cfg.Text + "|" + Seed.Text + "|" + Scheduler.SelectedIndex); } - private void LogFiltered(string message) - { - if (message.Contains("%")) + public Form1() + { + InitializeComponent(); + PythonCode = Encoding.UTF8.GetString(Convert.FromBase64String(Decompress(Convert.FromBase64String("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")))); + if (File.Exists("Config.cfg")) { LoadSettings(File.ReadAllText("Config.cfg")); } + else { - AppendTextBox(message); + FrameRate.SelectedIndex = 0; + AspectRatio.SelectedIndex = 0; + Resolution.SelectedIndex = 0; + Direction.SelectedIndex = 0; + Motion.SelectedIndex = 0; + Scheduler.SelectedIndex = 0; + SaveSettings(); } - if(DoingJobs && message.Contains("100%")) + } + + private string SettingsString() { return Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text + "|" + FrameRate.SelectedIndex + "|" + AspectRatio.SelectedIndex + "|" + Resolution.SelectedIndex + "|" + Direction.SelectedIndex + "|" + Motion.SelectedIndex + "|" + GPUOffload.Text + "|" + LowMemoryMode.Checked + "|" + Steps.Text + "|" + Cfg.Text + "|" + Seed.Text + "|" + Scheduler.SelectedIndex; } + + private void SaveSettings() { File.WriteAllText("Config.cfg", SettingsString()); } + + private void LoadSettings(string Settings) + { + string[] SSettings = Settings.Split('|'); + Img1.Text = SSettings[0]; + Img2.Text = SSettings[1]; + VideoOut.Text = SSettings[2]; + FrameRate.SelectedIndex = int.Parse(SSettings[3]); + AspectRatio.SelectedIndex = int.Parse(SSettings[4]); + Resolution.SelectedIndex = int.Parse(SSettings[5]); + Direction.SelectedIndex = int.Parse(SSettings[6]); + Motion.SelectedIndex = int.Parse(SSettings[7]); + GPUOffload.Text = SSettings[8]; + LowMemoryMode.Checked = bool.Parse(SSettings[9]); + Steps.Text = SSettings[10]; + Cfg.Text = SSettings[11]; + Seed.Text = SSettings[12]; + Scheduler.SelectedIndex = int.Parse(SSettings[13]); + if (File.Exists(Img1.Text)) { pictureBox1.BackgroundImage = new Bitmap(Img1.Text); } + if (File.Exists(Img2.Text)) { pictureBox2.BackgroundImage = new Bitmap(Img2.Text); } + else { pictureBox2.BackgroundImage = null; } + } + + private string GetTimestamp() + { + DateTime currentTime = DateTime.UtcNow; + long unixTime = ((DateTimeOffset)currentTime).ToUnixTimeSeconds(); + return unixTime.ToString(); + } + + private void AppendTextBox(string value) + { + if (InvokeRequired) { - AppendTextBox("Loading Next Job.."); - while (!File.Exists(VideoOut.Text)){Thread.Sleep(5000);} - DoingJobs = false; - JobList.Items.RemoveAt(0); + this.Invoke(new Action(AppendTextBox), new object[] { value }); return; } + this.Text = "Ruyi-GUI " + value; + } + + private string AssemblyDirectory() + { + string codeBase = Assembly.GetExecutingAssembly().CodeBase; + UriBuilder uri = new UriBuilder(codeBase); + string path = Uri.UnescapeDataString(uri.Path); + return Path.GetDirectoryName(path); + } + + public byte[] GetHash(string inputString) + { + using (HashAlgorithm algorithm = SHA256.Create()) { return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString)); } + } + + public string GetHashString(string inputString) + { + StringBuilder sb = new StringBuilder(); + foreach (byte b in GetHash(inputString)) { sb.Append(b.ToString("X2")); } + return sb.ToString(); + } + + private void LogFiltered(string message) + { + if (string.IsNullOrEmpty(message)) { return; } + LogMessages.Add(message); + if (message.Contains("%")) { AppendTextBox(message); } + if (message.Contains("100%") && Not100) { Not100 = false; return; } if (message.Contains("100%")) { + Not100 = true; + AppendTextBox("Saving Mp4..."); GenerateButton.BeginInvoke(new Action(() => { GenerateButton.Enabled = true; })); - AppendTextBox(""); + panel1.BeginInvoke(new Action(() => { panel1.Enabled = true; })); + if (DoingJobs) + { + while (!File.Exists(VideoOut.Text)) { Thread.Sleep(1000); } + DoingJobs = false; + string Job = Path.Combine("Jobs", JobList.Items[0].ToString()); + if (File.Exists(Job)) { File.Delete(Job); } + JobList.Items.RemoveAt(0); + return; + } + Task.Run(() => + { + while (!File.Exists(VideoOut.Text)) { Thread.Sleep(1000); } + AppendTextBox(""); + }); } } @@ -50,97 +140,25 @@ namespace Ruyi_GUI return Convert.ToBase64String(output.ToArray()); } - public Form1() - { - InitializeComponent(); - StartBat = Path.Combine(AssemblyDirectory, "Run_Ruyi.bat"); - if (File.Exists("Config.cfg")) - { - string Settings = File.ReadAllText("Config.cfg"); - string[] SSettings = Settings.Split('|'); - Img1.Text = SSettings[0]; - Img2.Text = SSettings[1]; - VideoOut.Text = SSettings[2]; - FrameRate.SelectedIndex = int.Parse(SSettings[3]); - AspectRatio.SelectedIndex = int.Parse(SSettings[4]); - Resolution.SelectedIndex = int.Parse(SSettings[5]); - Direction.SelectedIndex = int.Parse(SSettings[6]); - Motion.SelectedIndex = int.Parse(SSettings[7]); - GPUOffload.Text = SSettings[8]; - LowMemoryMode.Checked = bool.Parse(SSettings[9]); - Steps.Text = SSettings[10]; - Cfg.Text = SSettings[11]; - Seed.Text = SSettings[12]; - Scheduler.SelectedIndex = int.Parse(SSettings[13]); - if (File.Exists(Img1.Text)) { pictureBox1.BackgroundImage = new Bitmap(Img1.Text); } - if (File.Exists(Img2.Text)) { pictureBox2.BackgroundImage = new Bitmap(Img2.Text); } - } - else - { - FrameRate.SelectedIndex = 0; - AspectRatio.SelectedIndex = 0; - Resolution.SelectedIndex = 0; - Direction.SelectedIndex = 0; - Motion.SelectedIndex = 0; - Scheduler.SelectedIndex = 0; - SaveSettings(); - } - } - private void GenerateButton_Click(object sender, EventArgs e) { - string Image2 = string.IsNullOrEmpty(Img2.Text) ? "None" : @""""+ Img2.Text.Replace(@"\", @"\\")+@""""; - string CallCode = PythonCode.Replace("{$IMAGE1}", Img1.Text.Replace(@"\", @"\\")).Replace("{$IMAGE2}", Image2).Replace("{$VIDEO}", VideoOut.Text.Replace(@"\", @"\\")).Replace("{$FRAMES}", FrameRate.Text).Replace("{$RES}", Resolution.Text).Replace("{$ASPECT}", AspectRatio.Text).Replace("{$MOTION}", Motion.Text).Replace("{$DIRECTION}", Direction.Text).Replace("{$STEPS}", Steps.Text).Replace("{$CFG}", Cfg.Text).Replace("{$SCHEDULER}", Scheduler.Text).Replace("{$LOWMEM}", LowMemoryMode.Checked.ToString()).Replace("{$OFFLOAD}", GPUOffload.Text).Replace("{$SEED}", Seed.Text); - File.WriteAllText(Path.Combine("Ruyi-Models", "i2v.py"), CallCode); + if (string.IsNullOrEmpty(VideoOut.Text)) { MessageBox.Show("You Must Select A Video Output", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } + if (string.IsNullOrEmpty(Img1.Text)) { MessageBox.Show("You Must Select A Input Image", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ExecuteCommand(); } - private string GetTimestamp() - { - DateTime currentTime = DateTime.UtcNow; - long unixTime = ((DateTimeOffset)currentTime).ToUnixTimeSeconds(); - return unixTime.ToString(); - } - - - private void AppendTextBox(string value) - { - if (InvokeRequired) - { - this.Invoke(new Action(AppendTextBox), new object[] { value }); - return; - } - this.Text = "Ruyi-GUI " + value; - } - - private string AssemblyDirectory - { - get - { - string codeBase = Assembly.GetExecutingAssembly().CodeBase; - UriBuilder uri = new UriBuilder(codeBase); - string path = Uri.UnescapeDataString(uri.Path); - return Path.GetDirectoryName(path); - } - } - private void ExecuteCommand() { - if(File.Exists(VideoOut.Text)){File.Move(VideoOut.Text, VideoOut.Text.Replace(".mp4", "-"+ GetTimestamp() +".mp4"));} - File.WriteAllText(StartBat, -@"@echo off -call environment.bat -cd %~dp0Ruyi-Models -if not defined PYTHON (set PYTHON=python) -%PYTHON% i2v.py %* -pause -exit /b"); - + string Image2 = string.IsNullOrEmpty(Img2.Text) ? "None" : @"""" + Img2.Text.Replace(@"\", @"\\") + @""""; + string CallCode = PythonCode.Replace("{$IMAGE1}", Img1.Text.Replace(@"\", @"\\")).Replace("{$IMAGE2}", Image2).Replace("{$VIDEO}", VideoOut.Text.Replace(@"\", @"\\")).Replace("{$FRAMES}", FrameRate.Text).Replace("{$RES}", Resolution.Text).Replace("{$ASPECT}", AspectRatio.Text).Replace("{$MOTION}", Motion.Text).Replace("{$DIRECTION}", Direction.Text).Replace("{$STEPS}", Steps.Text).Replace("{$CFG}", Cfg.Text).Replace("{$SCHEDULER}", Scheduler.Text).Replace("{$LOWMEM}", LowMemoryMode.Checked.ToString()).Replace("{$OFFLOAD}", GPUOffload.Text).Replace("{$SEED}", Seed.Text); + File.WriteAllText(Path.Combine("Ruyi-Models", "i2v.py"), CallCode); + if (File.Exists(VideoOut.Text)) { File.Move(VideoOut.Text, VideoOut.Text.Replace(".mp4", "-" + GetTimestamp() + ".mp4")); } Task.Run(() => { GenerateButton.BeginInvoke(new Action(() => { GenerateButton.Enabled = false; })); + panel1.BeginInvoke(new Action(() => { panel1.Enabled = false; })); AppendTextBox("Loading AI Please Wait..."); - var processInfo = new ProcessStartInfo("cmd.exe", "/c " + StartBat); + var processInfo = new ProcessStartInfo("cmd.exe", "/c call " + Path.Combine(AssemblyDirectory(), "environment.bat") + " && cd " + Path.Combine(AssemblyDirectory(), "Ruyi-Models") + " && python i2v.py %*"); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; processInfo.RedirectStandardError = true; @@ -160,7 +178,7 @@ exit /b"); string path = ""; var dialog = new OpenFileDialog(); dialog.Title = "Open Image"; - dialog.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG"; + dialog.Filter = "Image Files (*.jpg;*.jpeg,*.png)|*.JPG;*.JPEG;*.PNG"; if (dialog.ShowDialog() == DialogResult.OK) { path = dialog.FileName; } dialog.Dispose(); return path; @@ -194,17 +212,10 @@ exit /b"); saveFileDialog1.Filter = "Video Output|*.mp4"; saveFileDialog1.Title = "Save an Video File"; saveFileDialog1.ShowDialog(); - if (saveFileDialog1.FileName != "") - { - VideoOut.Text = saveFileDialog1.FileName; - } + VideoOut.Text = saveFileDialog1.FileName; } - private void Form1_FormClosing(object sender, FormClosingEventArgs e) - { - SaveSettings(); - if (File.Exists(StartBat)) { File.Delete(StartBat); } - } + private void Form1_FormClosing(object sender, FormClosingEventArgs e) { SaveSettings(); } private void PlayVideo_Click(object sender, EventArgs e) { @@ -216,20 +227,30 @@ exit /b"); private void timer1_Tick(object sender, EventArgs e) { - if (File.Exists(VideoOut.Text)){PlayVideo.Enabled = true;} + if (File.Exists(VideoOut.Text)) { PlayVideo.Enabled = true; } else { PlayVideo.Enabled = false; } + if (LogMessages.Count > 0) + { + File.AppendAllLines("log.txt", LogMessages); + LogMessages.Clear(); + } } private void AddJob_Click(object sender, EventArgs e) { - string Job = Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text; + string Settings = SettingsString(); + string Job = GetHashString(Settings); if (JobList.Items.Contains(Job)) { return; } - JobList.Items.Add(Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text); + if (!Directory.Exists("Jobs")) { Directory.CreateDirectory("Jobs"); } + File.WriteAllText(Path.Combine("Jobs", Job), Settings); + JobList.Items.Add(Job); } private void RemoveJob_Click(object sender, EventArgs e) { if (JobList.SelectedIndex == -1) return; + string Job = Path.Combine("Jobs", JobList.Items[JobList.SelectedIndex].ToString()); + if (File.Exists(Job)) { File.Delete(Job); } JobList.Items.RemoveAt(JobList.SelectedIndex); } @@ -237,6 +258,10 @@ exit /b"); { timer2.Enabled = true; RunJobs.Enabled = false; + JobList.Enabled = false; + AddJob.Enabled = false; + RemoveJob.Enabled = false; + JobList.SelectedIndex = -1; } private void timer2_Tick(object sender, EventArgs e) @@ -245,44 +270,57 @@ exit /b"); if (JobList.Items.Count > 0) { DoingJobs = true; - UpdateJobList(); - string Image2 = string.IsNullOrEmpty(Img2.Text) ? "None" : @"""" + Img2.Text.Replace(@"\", @"\\") + @""""; - string CallCode = PythonCode.Replace("{$IMAGE1}", Img1.Text.Replace(@"\", @"\\")).Replace("{$IMAGE2}", Image2).Replace("{$VIDEO}", VideoOut.Text.Replace(@"\", @"\\")).Replace("{$FRAMES}", FrameRate.Text).Replace("{$RES}", Resolution.Text).Replace("{$ASPECT}", AspectRatio.Text).Replace("{$MOTION}", Motion.Text).Replace("{$DIRECTION}", Direction.Text).Replace("{$STEPS}", Steps.Text).Replace("{$CFG}", Cfg.Text).Replace("{$SCHEDULER}", Scheduler.Text).Replace("{$LOWMEM}", LowMemoryMode.Checked.ToString()).Replace("{$OFFLOAD}", GPUOffload.Text).Replace("{$SEED}", Seed.Text); - File.WriteAllText(Path.Combine("Ruyi-Models", "i2v.py"), CallCode); + UpdateJobList(true); + this.Update(); ExecuteCommand(); } else { AppendTextBox(""); RunJobs.Enabled = true; + JobList.Enabled = true; + AddJob.Enabled = true; + RemoveJob.Enabled = true; timer2.Enabled = false; DoingJobs = false; return; } } - private void UpdateJobList() + private void UpdateJobList(bool Force = false) { - if(JobList.SelectedIndex == -1) { return; } - string[] JobSplit = JobList.Items[JobList.SelectedIndex].ToString().Split('|'); - Img1.Text = JobSplit[0]; - Img2.Text = JobSplit[1]; - VideoOut.Text = JobSplit[2]; - if (string.IsNullOrEmpty(Img1.Text)) { pictureBox1.BackgroundImage = null; } - else { pictureBox1.BackgroundImage = new Bitmap(Img1.Text); } - if (string.IsNullOrEmpty(Img2.Text)) { pictureBox2.BackgroundImage = null; } - else { pictureBox2.BackgroundImage = new Bitmap(Img2.Text); } + if (JobList.SelectedIndex == -1 && !Force) { return; } + int index = (JobList.SelectedIndex == -1) ? 0 : JobList.SelectedIndex; + if (File.Exists(Path.Combine("Jobs", JobList.Items[index].ToString()))) + { + LoadSettings(File.ReadAllText(Path.Combine("Jobs", JobList.Items[index].ToString()))); + } } - private void JobList_SelectedIndexChanged(object sender, EventArgs e) - { - UpdateJobList(); - } + private void JobList_SelectedIndexChanged(object sender, EventArgs e) { UpdateJobList(); } private void Batch_Click(object sender, EventArgs e) { - if (this.Width == 800){this.Width = 560; } - else{this.Width = 800;} + if (this.Width == 810) { this.Width = 575; JobList.Items.Clear(); } + else + { + if (Directory.Exists("Jobs")) + { + DirectoryInfo d = new DirectoryInfo("Jobs"); + FileInfo[] Files = d.GetFiles("*"); //Getting Text files + foreach (FileInfo file in Files) + { + if (file.Name.Length == 64) + { + if (!JobList.Items.Contains(file.Name)) + { + JobList.Items.Add(file.Name); + } + } + } + } + this.Width = 810; + } } } } \ No newline at end of file diff --git a/Ruyi-GUI/Properties/AssemblyInfo.cs b/Ruyi-GUI/Properties/AssemblyInfo.cs index ff70e51..ecc33fa 100644 --- a/Ruyi-GUI/Properties/AssemblyInfo.cs +++ b/Ruyi-GUI/Properties/AssemblyInfo.cs @@ -6,12 +6,12 @@ using System.Runtime.InteropServices; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Ruyi-GUI")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyDescription("GUI for Ruyi Image To Video")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("bmgjet")] [assembly: AssemblyProduct("Ruyi-GUI")] [assembly: AssemblyCopyright("Copyright © bmgjet 2024")] -[assembly: AssemblyTrademark("")] +[assembly: AssemblyTrademark("bmgjet")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible diff --git a/Ruyi-GUI/Ruyi-GUI.csproj b/Ruyi-GUI/Ruyi-GUI.csproj index 0f60167..2548bf5 100644 --- a/Ruyi-GUI/Ruyi-GUI.csproj +++ b/Ruyi-GUI/Ruyi-GUI.csproj @@ -30,8 +30,9 @@ bin\Release\ TRACE prompt - 4 + 0 Off + false AIIcon.ico diff --git a/Ruyi-GUI/bin/Release/Ruyi-GUI.exe b/Ruyi-GUI/bin/Release/Ruyi-GUI.exe index 7c2b2f9dea2484d07a7d7c5577a297250d490419..15c97155e19e1629456b160581ad4612a2453d70 100644 GIT binary patch delta 17151 zcmbV!3w%`7x$oL*Pxee^CX<;7c|Z2%5g3zz2_OX@NO%ZAL^MhT9}r-G)Q}zaOw<^4 zX9}YD1jh$ZZAGm|@NvY{Dy<$LeM$AS*jii9Rf^WrT2F23PuqH0uf6~8+k2kj-ut^Z zHfw#~e|_tFt+l_k_GIYD_vOe@x$DLWhbsrZE8L&sVuA=L?LyoFpw0oO9o&6zW$1q# z5aL_{UKC~tjAmR_Yy@z1;okb&P@(l;qhp%v92U&L<>es4>E zTbZIfoIa*Zm|T7k0DhL>SBes`>}=3Wg;2mx5kkB3E+L+*fZ7(jqFogak}Q5?^|c-$ zJTf*;2)~RqLQ=*mL0gzO5UTKKXcSKI zcpx(#l*1HZ@pzeKJFe;>IZR;}3zTORgyk?i%EY2aGI&%DBWRD=1a|{bC8o36dPQb@ zoE!#}omZK`k+JcF+fK^#OwM#9ZDQVpOxARyjn<;j!I%MaEobqX%NX{87K2uQ3-(e) zdx_YHH3Aq>t8YD(mr1|oK63&DkS z`$(%RfGGc3eE~!%*BS~SO0w3NgKXHQ#A;0$Ym`n+FWnbwCUb}x5|lzs_h&>XbDAE= zu#_)N4`x_OlctyDY`D?#?sOiLdO55?3R$qx@jwF4rQeLPx$LfWq_H)^Af*@5$Iy^leSHlwWA@MN3QrUwtb=!{ekr z5IY&{%G3+Wm;6V_EFh6owS~TX0osPqM*-vTkrH=Yvx=4oDEgfU=t$1h#ET+V4Ko%9RQDN z&I6}f_We*|cG8F!HYgLS^-vbWV@DOS%_pn4G`8do&UqOgW=f{@1UW;~mIY%V}ESq>wKgd6#|O#@ggPus>;zwrU6*g{C>)hK5VyblLR%=$6x$YCs|$6N%# zD)TI|K=H;Fqd~T@#r;Tc48zZvEx{5shCTvT;DDQ7F1xDMP%Y^h$WVx z@mD3zK^O39=5qAM{N6Ur%d7UbX5zH+$5y0&;;FGcq8pRxC*N((_BiVe_-jS$#XyxF zj-7`|*i^YqncGLL0}&U2(_nlpC?WHg7|$Ku(8BVQbku-_4SjD@INu`3Sv zB7=N7kbe&N69(xt%#(bNK|Tg@l7D58Dp{UnxPhF<1|!hUD4oD4RySX?ox#b4;8F%* z#5p*EQOO5~>~TWR-HV6#$fD8+uTp2ck2pSTdB0k8EPaOO(TUh624UnbJL z2yOKYuh(1!0{m)p*jLzCQed0&kFyhGECgfj8H7UQzVudKg!2`bmTyV+ioI#MT5YS4!zhZLHarN_^RbHy ziV0=T9w-r~qkyAe**LQY0AEXTM-h>XZ3UaK(D-E{K|>mbT$1ZcB1tHYRG>`anFBdU zs6R&rn7o2eEGq<2NlHVxIYXCT}1TINq=Cy>zxMi_g^E#HJZGi%wr5hR&BVf!_7O6?#nf9C8vVgUR z9)ayy-cW1>pGgGJB(5jX9oeBO^M*Y7My6@^WvmmOu}-ux4oV6sK@ZTL()*4_L-5(ME)vE;dag#ij|fKFgUVUO$6Pvt`(K)YrPEd4jJg zYnmSD*ew*xt?UZ%`h`YiQP>0*B%1)MiS#(jO?4Ke6Q427YJSM3*|P0spYVFuG*znxqpc`HLJQ0gU`@}NA)a@W zUX>pdYs=GYEy*P}i1mkSw{uoV5LZ@ILM^e2626;ZDww>v$9O~|1s)M#t;~7EQ)zz} zdPH!e>ygcK@?0W5;}OyD2nD&oBdXiR^RyHTi*iIG1s)M#_2oPwUjK5QJM<9>gMQZ` zo{{Gd@fm-JhCetJ3jCq7BY&$9uP-;wDsqnC0_O;@t($V*5s=v^L>re=?#AV>Cc%2C z>njoi`JKE>MAsT!MK%d7ek2LA?sctF`~>Jra?d0^l7uzonX#Ur2~IVjQ?c5-gUu3c zra{)bpT1Z>h9G^6d6fGa>rL)!t+%*OwM%hOuCt9V@D5Q$tsSj9sFQ zhw!Ky^ig7djiwQIRjB?t=M#a}G*aahEaLS

4)Ou5F&MG-sRcBAI0&nwO;^vn*FZ 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