From 2d267d30ee1b2278f663edd8d2a689db1fdff4f6 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Wed, 20 Aug 2008 09:01:49 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=BF:=E4=BD=BF=E7=94=A8=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=96=E3=83=A9=E3=83=AA(=E3=83=A9=E3=82=A4=E3=82=BB?= =?UTF-8?q?=E3=83=B3=E3=82=B9)=E8=A1=A8=E7=A4=BA=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82SDK=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A7=E3=83=B3=E3=82=92=E6=9B=B8=E9=A1=9E=E3=81=AB?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E3=81=99=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=E3=81=97=E3=81=A6ARM9=20static=E3=81=AESDK?= =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=81=A0=E3=81=91?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E3=81=95=E3=81=9B=E3=82=8B=E4=BB=95=E6=A7=98?= =?UTF-8?q?=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2202 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../tools/MasterEditorTWL/MasterEditorTWL.ncb | Bin 11078656 -> 11078656 bytes .../tools/MasterEditorTWL/MasterEditorTWL.suo | Bin 36864 -> 36864 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 14598 -> 14618 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 295 ++++++++++++------ .../MasterEditorTWL/MasterEditorTWL/srl.cpp | 68 +++- .../MasterEditorTWL/MasterEditorTWL/srl.h | 84 ++++- .../MasterEditorTWL/utility.cpp | 17 +- 7 files changed, 357 insertions(+), 107 deletions(-) diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditorTWL/MasterEditorTWL.ncb index 012c4c938b1d6ac533696f92591ee8e7ccf1caa1..7ea024dd97fc9eb957f2fd0b78e950441df8dfc3 100644 GIT binary patch delta 61504 zcmeFacbpW(*DqYv6Lxl{^Rg_<0=vM@EW0eQOO_lIl$<0ek^}@rl9It$5Q(B-pix0U zkc-9akALe=T zr1&?==kmu6KmG92FUHFg<7JLR!r{W<#^J%?#Sw?Yha(<`A4dQOU9aF!Bk{6!U;F9((Cu)n_JD?`Vk%lwDJ_2AnOxkV}fi>kP{}zg(k>} z6Xe1Z#{wwKE zTj{Nqw6i{&yQGksoW)pC94R=8Wmz9wO)n~y2u1c>O&^-3ewV@6F&xKnoXChY`D5|h z9^;Qp#%|!aiDQtTvBB2WTZ@yF5jY)*V+@WLtnOEqG>&w>y|`l;vuFsl<0ytB3}okc zEB~`4L#;BwCAudZ&)7?mCq7^DX}aa>9W10ihbu%QN$ja&+tQwk%i(bYt4aX}u z9;aGxJb|M&jygE%`mMoNmn^cPp2g80#{lcZl_g1u zU2xhJ$Ezqh9mfnDZ(6OJFG;nAH(xT|`w4!38XqbAbnt>_=J4S2JjEI^JXnDjkGwxT zm|8gOl^I(#s2FSLV;D&(?wg#Ue)4d@H^jhi z2>2*DTS2E~7S#WzfLBmj06t|KwqoxZlvQl;;zBA^= zK>8$1G@Y@M&lSKk1$>5H-C%5Xy#jc)fY&m*03Kc*gQy@7-Hn%k zs5Plzj4KKFG-DCqUrZ~2R}=7M#%{n1#lUL{_+H~nz{|(L>k9Z`;|$=Rtq}Eu1<^GW zh;v34ld%u>6x^V(fcG#*0e&wA-c-QHnBxKeWM9GcEd_jnISuf6Ul+jJ3izw$+kmeh zUeFUAd6wWZodVhVe{=7b1 zAF02f=jr413HoIHJ$;GJ4UZukx?viHjUq-dql8h)NH@wDSw;mT*QjjFFz08Ro6Igg zk7(Tv?ZpzsSR9%%U74Z0rX;FG)C{$Z`eLJE0>98|IVV^y{)ngpw=W zl>4=?@t?^Y}RBq*(wm-TAKp;Lt!1PnW?F*9g(ajx5K9hwsy^1u=0U30Fv#9V5w zG1rydVch@(QoTH{faS2EoSjU(hcj2*FveTyMcSw z{C9)J8=nZYkO#|)ig=Fi)idgO^^%$l$_58#iF~|t zUMl7*?knL-_0{(M6!=6+DM_rd)zq+otuDY(deskT_=IMtU+v9C$#k8z( z9?=`cloHAwb@ON&ldSAkv#NU8C2D$anOa{9t)3vSkXOr_jpC$`L%p zaCL+_Mjfk8QD0VPsIRND)VI~;>PmHudO%In-bAvWa)GwedCJY&W^J$Yq^GsZR@Y;} zr1;yKOLyxY-D~~&Lr!91f?h~Z)C=oLda_zV{AJyCI zUG%PcH+`mVSw=V~F@B-GTwkHD)IYGsK9rLX{z(5=-=uHWx9D5-?fNJBr}_?kr@jkg z@wvW7|3crZ@6-3|2lRvbA^l7J8~vz$Oh2ywpr6#w=x6mG^`G=}`g#3l{eu3Beo?=q zU)F!sujp6xYx-~cb^Uk!5B-LIQ@;gLx})FK@9E6&8S#eSsAY6FUNu&fG`>Ol*7(`@ z#kgeLGSbYx=CkGiXNXEF>5BEu{9wo>>+7t0^Mj=`4+p*p90`0EI3D;Ra4K*n@MGZT zz%PNzfh&RE0>1}t25trJ1nvbS*=@bqD5rGkGa#E2fu8~cz_V$B%re#+KC_%T;LQ}l z4w@SctYeLGs+654?+4n8!_WTU(PH&qwfRS$Tny5N_(xssx>d7rP6~fFqAUo0F2$XX zKOcW3{)&~+BqtI%-6ZFE9`}y1!3dZ+mbN5VTKg<;F7PAx9u@B3zGKy25=;sk+IVe* z`C~I1Op~Zr?_z?|U*&tG)BZpGfBA3uZ~O1~@A`G67bF_Z=E`yvxtd%lD@C+(rIruk z`b67}RB4?(Pj0biqz&GzxUzBCapmI5$5n{yqkXs`g+Z{h;(UbkYTO5LtKwGIh+7l4 zHtxf?b#Xtc=hQ+VfJ)m^7}OMYk#&}myzhAzco%x#_b&1-_72g?VDR^swOP%zh_N*I z40m0Q|HInXBBxW;Z-Jmkb8CgQ4h@TmN*>|UrJlYOzLmZYe5-t`eQSKpw4$J`Zy&KM zxh-2=TILi@oGbU5V)t)Y?ls*$+iulf9xNT$BF{tT5bK_6ecUo9#r25(n>87j`gF6? z+F7l|ZhQLIU?rp+cdomlyOO)I`-U$~E2(8@@%8QQti#+=F;`7jEmv(<9amk~IJt&Z zw-xHEtN(0iD}pITFS&{Gl`=@(ZGLH)!b3TX62WRR%UCY9nYgvt=yHt#0P$kFRg@> z*Y?{FUY_}-Qm+240j`0rL9W5B=UjPmRb^C~-H!*2Q7_wV^0@X|BUT1WD~r_phwa-B zk{4M^R|Zofh1=xh^TjW$3QFN~@qfh+^1tO@?*Gc)C-7omXW$5U-d^o>;~ir)2zsw^ z*l?QxGtX48SK2MEV+^rwtO=IXHmRG{E$aE^cBjv`MzqgK z^(>GZ=ohUy?a}{vYlGRv4+Opn91dL8X6jWT?dc|u8Xb*`MiaBS+15(wkds<^0DvXf zS9}oU)pPRm@(XfU&XdQ=lhQ9X(@P#L5QR`Qgw$~eWA<@1#J z%6rOcWsR~{`Bd4V>{Px4xgA!1Rjw&ql~lKCstKwi@xyACT3vlWt*JhuHc^|YPpDng zZt9cjAa$_1Q{AniV~n=u+_&v+(zO&Vb&fsUo7FyBQy2^y_8aRdt?~Zu{lk01d((Sc z?V~*wEG8JhU^MDAG-fRtaafUX+cLOU6Wn94`dw|(0<2=|g4wNS8Xp>QX13YKQJ#hv zrJuG*dOY7ImGHmef73tHZ~13|TIS0OhS;@F<-4Wp(zpI2{-gfy{Kx#q{U`h@0)GZ- z=x43B)&+y5?`oa&p8C`JKz*n_S|6uR(iiD2Lp2H+MU6BgWMmtatW)cPNgh>uK^tn_ zSr<$xSyj2Jy`{@g4{3Haak~>J+MBQ%9}(wtq*?T1t-1?Ui?S= zU)HG6IiH4i26hFA`RlSSC&{T0@o92tIRrsp8GMw4{a~bj68IGq68TU5KNwG%ER-%n zO>h*2@PE-17CE|tP1Re~ZR&RQ6Qlzw)6%rMLVt+WAXY+)pk(Vyq)FImyS8210j+|P ztwWvGe$g&#ziL;stJ*c~H|@IiyY`1>4Lla~25xJ2|5J6N>;D((Mkhz%`1?@5eqR9z zEX26~A67wJjuIk>FC3*l=p?m_N0GWC4Kk*Q^r}G&aG6Le97ecTFvG)Oh)0ccB9Z!X zQ7ACPBGUwuY-08hi4>YKB26$Uy(&@x3(a0?+C20llhPfL+zFKYB0UD-PUP>>5;d#c z8#y7X#I~S6{;Jwld&+#u>}%z2!>rM@aoTXJ`LGyFGIl=b$ff5iJ0%CD3oEz(lOUP7jtvB3zbz87>@K@+zxzG?>4X}-h1M-*hH}ZG#_ws4^ zC;5VWS-vJ;w;tFYOsVr9umcRhGSSuNj2`Gf>N@Hl>KE&^?ZHxo_Xoa)I=Hcd%@UH8 z6opiL>!a<#V!4mX^QZP=l)pBZiwSt{@Hgr@@k$#Bu+V!M$Yd{xn#@Blw_o>(gNI_?8gOOXYU@U904dV4^Wt zCI*}bK{^it^i$q%MMC zPpv-&zvH5z_N02Bzbtk0P4G?hP4Z3lP4P|j=?O^**0r6%GKm>-bzzhLO~zOib_I)v z-7x!}-&vPvg$U4HC-GMEPa;P5C`}fxJ+DUtT0H!5EMZv`g+Fv>DQ6$SXm5 z3~4c>!;l6;eL@-x=`ZB1AjO5$7E)SBVHu@PR;R0$x=3BDeyJV{t0&bT)eGu%NIR~1 zwI*6y?MZErHbQ$#TcaJ+>KQGK$Bbdd7-Oa}2O7vn#xdizp_nDjispl6TeH2{)9hu2 z%{=oxbAc%*C<$tUmY^pX3D>_$VQ?<7*I5mzo~OR2fv2J8LC-^;rJk;GBQ*IDb*FjI z)Q*`ynODtM9kb$HtJCgaYTpa$MYXNgUQ2`tOm!D=l>UwKqL)%wB5JK=)G-F(x(7B7(aI)utGWjsIHKjb=&PmXO89x!nGti=#1!@epe~o} zN{TG_EciHg{TzSQ>i%xdPGy{_&=en z--^E-UqtZRPFCF9oYH)kwQmpPkVkt?d*1pP#lwx1htyg*w(599(963Ryd~xem<;R8 ze6!Yr#TZ=FtQmh@ddj!Ux7+ub?{nWC-xt1RY70$CD3n01a%z*pNOTRubJL^m3^V~7 z&cxZPauKDp(oVU9S@|Spir(rK&R9|v>dPLlK ztNy&4(k`;+0(*ny_@CCB_-%FG8&r*9S|*$(mmQnyIeCdSYHzT3^X4+lFS#xJA(vs- z(}4Y~-7`1!Dk{!NDA$5jjFYrPK_QT$-quf#Y!vRb;-s^hR zyliPFgUKb9Vw~t<+nP&T+h+&mly6-E7E-J|`-4RTpUXYV+mIydSJdUYuFbZT1Hq&! z9|fvu)3n!33thSN6}xSNjI~e}$f=ORhe^}o-iezXHz)4hxVdqc)JL_jInL^IAeiYI zEPrC1T9A|6Emd9%ZwobxOtOkFa;QDG)#grTkCk7S_ra@2(0l4WbSs@LlvBXA;ofJq zvasJc2)*nZXl4IRWw?7F7%DwVs{kKX`(8FHozB0I&iJK(E8q@z0^Wdd`&o?-26Mx) zws6m$DGZKzMwa4id5-+9JXfA4&;Of&SV`+>G&g%X&AzMlbhI{2E2^D!w5(-uW6Z6p zJ*UY}k)@TTQPS!22h zb864~s^J*!bL6dPBjGjIG~+L4LXfN<>D=ja*;mKDf}DYq9Ix9r`BSu#X2OWSxm;(f z4SU_=T7 zmv9_IC*>867I9XimN1wDL3m77IL;WbF>BCQ!TL47hySuP{Hs09bI#05l%K-*(3p&3 zrKHE*o!w8kySTf$ySb-&I;l^=?xh~wq3yCReHBbjTBtVC&N)-{xV+wB4F|2_hrxN< zL-`%6m}-HtTjhrohJXlrQh7@0qx4mtR-RFwg?cqi8Lo^_Mk=F}F;KN8DwCAS$`oa) zG7V~%rOZ;^Qr=eHQRYAeTdXWmmMY7X<;qH^V-aP8vQha+`B>ScY*w}?+n}KBQNB?2 zD*KcJ5_GksqhL%6<%aqt>jauqI|&ZvPL6MDhq_1I2fMdZ1DlYy8->gV%%dP2di>+8 znH1+O>y)hk3yK&iv85VorrCli1Z= z)?fPA`%qk?xW;i0$2}6)B(AF#)c09Q-vs++>533>!_=?$8tJnT5c1D4H^jevAL*a(C1HhBfI( zuug72Z5Om*;)g98>q3(WDHV|_BUMGJj#LBb?@vaKp;(4VEOUXnP<>xr z8djG(X>QG<`7~A2G+i^`03x?F z350T5HSIy9Mo14MHA8BF)C%cQsH*L?PDoE6bw%oq)C;K(QnjbGr?q}a{Y82Xn%EGe zVMwEpUO>u28izDqq{$H4)BbN%svs)W$avg%!Wd83I!Z5ut$PUTw6`t`3sg6@nS0G|&C}*3lOMI`{AyR{rncbvNIve!=y~!5%y5$1 zHMIAgc*hm_6~y0(%`8)7|f(pHZ%IfW_&T`#+)xn6O->YDDF;i{}$ z(Prt7K>s0u@TLeGuSCe$j(6=v(765&!Qz?!iJO7qi3$v)30qz0wS!alR%BB9cpqatMW_GKeL;enh8b+PVxJycLRdQ8! zRdH2yRda!3T5C=PGpxsc$}#cO^%20rvkziIF2 zUE%U0N6ZMmUP|zn_gC=e_;dXg{gwP(C))j%qI|A?J>DaPCJCBch z5uTBrQJ!g@F1pXiMU;aKPBKQRuTLp+(9`n~$yyE{>^gJ3nd=bz5}!XIcc9&FT0+s) z(cj#z!$w!<9(gQ7nq>7o6I5Icl+xCSGic&t@@q<&f@q$#;7suG6+=XT(ewnx!!h#<;u#}j-EZ9m6cYw zSGqrNuX3+;uW^6ic~ah~bcs>V!astPE*R}B>&IZ-xRZ$Lm(urGCw|1DkPU%cEmy0g zO@`}jDjb#Meq-=Nl8bGLKEs@0Zh_N+)}G9iXUVfwT3xb1JEoo1>KhG>Rz@3RxG~ar z*O+H~Y-~1;8{Zq~C$o}S#eB$YY<4g^nOhuxk6WoT*?ww@gN`^U+zy3Vk~|2`olmxT zg`>q;6=1#eQ!q1^+*(bvVpuK_>x+tmfl599E9)k$^nU9-;yvp9&U?&z+}qz8@JmkV zxHpZphSw}>#h(K&d|2sZWt4!x*A`5F5ZrJDOnyW^y9HzTMk&eP#^2W8&i|;ty&sy7HTGgo z>6+I)6r=i^gHW{tO%z_D;L-xmE>?!q|I{hP?pTMtc{ctfSC0q}SJw9=wena?& z(lsgG54Pl&{fb}pYyOpiKLRzeG^D{O+doACQi@*clWkg}C}ulzI&MHz=FyV0=^xsT zg4?X0w9#8Bu5w(JxT(#m1c$#TbT_}Qp#)(pcL_$Ta1a=Cwn0Km5}#f}BO z51b5~4xGhei}QgCfs27lfnVWky9O8jAAuVPL;eN6dpE#jF1zFgcp}o=lejLGaV>T& zaV>Q%b1iqRaQ&{$(JMQv7@F`IQZL_nU%oHm+u+;iTdFqG*k6a` zb#UcSm9=?8X_9AyXQSsM&&Qrkp3R>2Ix{N6b4#Pzg1;&C^&RmY^?m0%<~!~?;aj1$ z(o}e!rk{@0?u$e4rQ&+hMM)2>p^!RAsvy+BcF+Pz|0CUx^gdGg`U_Q$)I3u0NWGhe zaN-=e?#Q5dp0AaT#xpcwD6W<7XKdSksB-Qp9qWN&-g_2WyWl=#K*OX8QtFNMnVqSg6I zFf07DcHlsYAfw96E0u6Hbv1J}ceQY}bhUC3iCoj()<;)&iPjU>D(O&pVg8a-+L!JN z`a-@8Um0IbUtz5F>IjvC?f|zHJOf0!zXc?11U`hm5Q0^SF`4|yAT8+$d()?rrepE)UUv*p*p z)J{dVUk~=;u3zJCS|9(F(lv z%^l`WbC2at^}p^Cb+PBUsIK8gbsU@a_BrKhPyaeDfS1;af(&5pR|^^Oo2W zNtYAh)y#7i%9Y?FrRi}SteUrjO591f{1fz#t(LcgDJh-h2jP*Z9^*55-0}M@vtGI# ztk&=X)*>cj9cACW_UvNXLdV0oSH9*5yg$^x)M;Rk6uKeerxkqD90oZu?j>t}>&glI z3oGGHFhlDtA65p(EKPglPB2y5B{#*w%9#!yJZcTYl~10=TFCaAp>Nb5UToicf!Z36 zOJd}8<4pwBW*Ki`CBp*vfYu_swjN!uK?FM8rq_%!eP%pdl@#>MG|OV~PdRi?4h2BX zi;jOXHNx)(J8-wdH#_=w2R;jY9@rE3B9O0#MoZQ>DO5O))HP^_)?6u6nn$d@&s6?B z{HN;H-ddi*8lWvD*2<;7(HB9U zi;kKe?!rP+*q!Gd>mKKR(LLV%j^{z8vU(9Q5KqQW)DvCAZ_g4g3t))JRZB*P=le4H@bEckVbt;W?y)?QsIcOsj+osUF>s18GIov!0iOb^ zCwe{cdawb08Vq3*!a7knbvk2j@oj+Lje(PngDpJ#4T2+xh3k8Z8`IRsh6hfZ46H1gEKj%|m1-zEKJLNpFq0QXchh+dbn{H- zJWldU`+h4b#?yX7--8DF4K!^$1bc=>Logdf4-m`AlIlqHkm~+w-#Em|vi9sr77fdsV-Ii& z%h0WFL1!H4Siui~4kn?oRPP!d4be|V~znN#`Izb

Sm8FK#_fD0svmP~VYvUfCUE*FOX#QM9GLZ@+t=?xh`UAH51-l^;9u1DPl8E-H zN&WeAd}>eIu1Vu1c`06+r}GB9A%BoR#2fKPcqiO5Oye?*wZnx(Ud3=x9iV$St-Z=l ze_^{di%TV>=-!JsfBbn>`a7d*fC~5OEc*(SPVTu6R;NAOF(=tSE`7P-;7((uXp$|9^p5^ z6{yiIq*lPSks9r``{f6=%du4}vxEF=PB958^)6e?TJidz5gM95_@DeP57(0FN)(Eq zilTJC>QlR-QEY(I57*cLhnm;33YdD-Ywz-9ASH@1Vx5ANASEIdk&>mNQgq+J7#8)^ z{>Gx7+BIx8N>Ou&Dhh|C3%CV6?O9fpN4FHLX4N>kaS8qj+sA&y9H0iKU=(X({L-+r zg?|6SFM-B$rAiocdZxjAJfFZP^QnA4<~?1pn}5c?L^}SNJzR6p3v<~#EZXS&G_8sV z!{}uVS!4Dri>~j#$V{v~p<5H(_rf@r#`ys8xCqNcs#lzD;e?`*5s@nFgJ5Tt>;nj^K4)P6Qy^<}R(lhutm z^$0iuH6*<5{u6!5D2)e@I?nE>7E%&sEA>TLFxlvyg3FBd6cBV9`|WmOtD<5)e9rgsedwRNH2+h<&8Tzgfe(D_IPX`mc!!$5V2?ON z_$zx2jFcKT8}z>hQ!eUdzRsS-1SX;^!AChy$-q6LI|hihcI>ptb}So@SyUU>(u90y z410l1#Nx-P-~#Wl1z^G}*h(?ltJxa179+KuodI$F2tDl_xZ^L_WO50+BYuS$d6iwm zg7xd{59?}DMnc%+g}|NCcvW7FSLY89hvD#g3lbM)_=;8S(Mp)Nr;p)P!a59GADAcXUDRt|yi>Z~TK&zga$bYf4iUXYXn*pM(Q!^`tr z-i1HO`=H3{{4KtcZ{%C~PEKs#6hFs_>8DF&r5aKrse=^Vny{Aj0XdMmw4QBbyV)1) z0Q-u4%Z_2WRT+n?m%t$9g9lLe+x^su4;^EZRwBy>!wFMc%b_(@@oY2}8+ldCOJaY| zVP3w3G(pVHDSQfM=v4I056;M*VX2^HDo^seD@KsYUuU%TpIF6QNXB-&&wl%wscZ)C z0QgZZR*aNtyMr(EbdO&y8!80I_mP(}77w6zDNw_|hwa;MW;rB19f z9bNVsnpE1MjFmjKfQ zlO1aKg~<*z{KTsBmoMAnyPG#dx04n;+!3YJJj5`T!{d5HslG8*aX?gHI@Z91 z4A)`xFe@KqyPc=kp|6Z{m}5HTGkKJWnlJIoJWZli*>sDj44dvKn?EoeDhJX3N_Nm; zoU7P$NBpj3ZcpkW}vQF4k$ zOiPk!#N&wI{*0lX5sqLP&8|Crx{$T!QOEIlMvh~uYYRKdnw+siVpCXnj!*+v!%y7u zKAA~)0+P%>APt5_Hk^-h^!*U@c6(ArmqU+Y%bgjX2HyD#&WR<(QhrszSD(S8rT!Vf zY3(uf=ydi5n-yk@9ztvIpl;_bqaR-HJl8z!=e zasjeFqiWu?l{N~=NT zdQcingA7fWm4@jP^$DI~#~iJ@D6FSiQ0_7v;@ZuAc6^!3I5`NZ8FyJ>zSfyGdF-0Q z%MP%$m_WoLY1&j2)21(*%W0`BO~)y$c}<(3VTsd9S?WOBLK@GaYh-_9Jq7c#=O20C z>;+4U)TLOl6y0oK``rE>7mO~{v)3|x4`1jREPy_bCC~*cn*NHeX?hSI{phkL`ToMD zL~IOB!itq-tb^Q59Wj+R3IlT8J985@%a)&J9*kieuw?J7>-I9c$zKV2XddR>xb{ThBXQi?mA& zt&nCG3Uy3wjEQ^&Rd+_WlLHD%n&%;7jjch2LP_DKxbHRmJP&@=5IM|+vDDQ~q3n)E zuE6nXGTjIGS{k^futvur9{}MRg%f{l%3egm>UIoO6i%bl6c)mG`f&23^1*u_2@KO(BHdLtZZiUR=NzfL}7U7Lq1YHDll1M@VZ+3iwjC6uBS1yXXx{3HUO$40-VwcxeG&&Xyyu5d%*b@D)(n8JiFT z4-z~Km1-4E&c`4~6>G{?BSEc(O&`5+hJdeu3I==(yo`Xag<{57#~65~fPct7ME+C^ zJWIgW!BoZkn;C;BD-i2p)iHKB2A(b8`S50-02XRR8&pof$-{wHro_O@3-|_-Pi%F} z5L6KGjnE!3WDo?XCoC9CjzDaJ6$1~9jS%o$0pARvg>}*~@QMPy1qvnhtHi)73HVmn zL3p`E43SnA@NH}x@{|~O74qjag~_xXh&N-1tEwolgY7`RJO*A(z<0t*03(WlR~PVI zY!~wHV&D%5_-@;!;W<=qS z2>2PO)pqbB3U4alKf%jk2TP*x<^p~WhPfSFiNae6_yu+WIR#@JcsQ@EKwJ_prlIIf zv_N|SzYNz26V9OqFePDBwI+BQ))ERzflO-#nP$W7_{V(oXhYzeL6~(A*SA3#=>0M9 zjshNT%cubwT%!q)CMb~CSs*&F9uAydh(_=(0{$p_6nQ$XZ-WK_zP2lVw`Dz{HQ}8l zPCadKeRl!xEp{LdjJclbZ3hjjAM%&NPJwnP&{H6ufp-RK8d@5CVuC*oRgK0jD#hF5 ziEX(3#9uj2)*esXOI%-`(KP&Fg547Y?=9dJpz=Y{0Gu8;3`E}30#ONCppBp>COEb5 zah8jOX*1D&V!+pmu4lCv5nnFgR8ePKKLEcwvpPtO^@+KDAbvj~OkLd2xxNdoAB>+s zG!$b+9;*f{jmEeg5a>1?;ZwZk?gLx1?#85X&k1;<*r_-Ov?Ad*!JilKG?a!H3H3zb zLj=48-iE>0*D>&+0#0k`F#mp!K@1ZJJ5-t&bK~IxPCg>6A&G&H5bz=*Jl`q?K2pGw zSQ7HQ82BgwCw~)zLW|ezS#w5Je)9e+y?h#ZYe7`h{dh8NDPO6{0T2f$OakR`YyOfl zi3&QKp##x(669(Z1u1 zT%{aOu|&lE=xiIKs2`nOVzdaB&gwIAO48X+j0V_`GaXFn1o+Gu;UT>syrWUi;(Qj} zjkQ(y2&rTe69GQ!UJ0nHmhkZrc)Ez;(b;kq-B`7SQT&cz7g$lu2sh5!!tvA{)D-pm zB{FjRxqul4Zu%vQ#`Y$#s4MS;aM)2TXV{D-_O%_*-`!ciFvK(=R*4uMoo#01(WB}* z2tU_uoDr`pk7-s3sVc0iT9^^_LF8@Fm<~vfp-DZ_q`sKy&h87pFufYrG0V<%W4O!IZmcpVww|o|TrP`)2i*Egz!!A0`xe_e8 zG3y->ETmpZW8_hzvssK{do&@ZKo_K!7tpOLu`2L_jmH`NvY$D+|FW;JPYG_*Ml_1B z7Ey$-UFmEQM4;+-FfvBzY!@Tn8J+EB(XhfsMm{ux?G-YF=%FR1Q3v#a2@<7dRl-w~ zG^BIt8}gS?36teP3{r_Y=#}0WD#RMX0`(q?8oi5!lfB>>qMkAuKN>w6tXTg<)F-xr zMOVsf7v3?t;oFSf+(u`$gqMtJos7PDQy9erAI-w#4J+uHs3&Y3i(1H&8JWd&@k{p& z;-xGa_t+rh3O!R1-b(&lsJJzVDOzQ23+>cA1ewiH3qml){n(Ey5@yNoV0#8F`rK zbSESK5}hq%dz`sm9@DKl+DpD7@Ha699}rWICe`1klI_;|-_N1wyb(dlQmAx1i~5Mx z-;Y;D?#C(KCEQgR}fg+DqLO+=k&@eu;;7lI}hO?OSSa&5G&5X@U{ zdpsb8$3lSty1R`|hc^>#fi~R`IiX2xC0a9VbQ$=>5n@_VfR+V%yN%9bS@>CHe*v1D z0*TgD8=cL_ntCAytqXL?k)q|c)}|dOC{3zDqSe|)=dc|7Y#M_m13%FkYop0y2J1Ek z4T%r*8XH|%?1`;>u%PlH0)5IxSHuqFmg#(JVnbiEd_hq~`W7=(Pp{eaJ@JrhS)Z3(yY= zG!KiWZDZT;b7Bm-kwE9#=uZ#=Wvs!@g6Do%pu5}XV+hH@b41$Dn%%^dTGl zJKksn(``#Z>7D}3$BCxhU^npdtr&D~fzGwje8LwAcCwbaxwl3t?`&`r*R@ z^wR=8!$#jh1RVaWm?7yW(A#Y^UcmmL~u(ctI9xBjlY;+<|1iE|-dbmKJve8LA z3FtO4O(U}u^LxB#S_;-9K@?*dc(n4-0$txm7spa1h`AUv@mS1n8=Z<(Oi-R z`8K)~R$gIaXr!R>aRPnFMhAHi=(w0ZA1~1SCDF7DPOmb5Wm!S#2?CvKqcb_JpxrXK zpx21Uf}h*yI#^i6*!MB_o+8jQY;=8IALy+Q7L+C)3w~~+ALb7O{eHs&^eX~=)kZhr zO@N*fQ+m2Umz*G4PT^5RuO2EWO*|I-+(x&+`U=J}u{|K#=Wht~SR37z(+kQ!iD6tb z1$vE*?!Y?$o!YCQ^ellsWuv&g*Pkk=e4aqhx6!?MZ=n0epx+bdLpHh(Rv6){2fYhQFBE7#Ni^+g zPVYxw8iQUW(786cAMXeB(HQg+f$najX{|D2@iF&aCeSl%^gyiV!Gpz6%L;+sZlect zde!`)kZ&$b-s-4j~TJm0$p;lX!%e+6zH)73QDgP=+-uRBp(U%{225) zfgWq4M|0Zx^j^P$()j|t#zw!uUjX{Kz6IzF0)5Ix=kYwC<71@YM*?k35ltJ%#{r!d zgWe?2^=_7~9k3i3`(XV4& z3*197_uebe+ikSPEubsL49R|hzG|c2Le!kGlQB&@D9|Ne7A=2=zXLRndG0R-y0wj- zgVnvD)R+-FEYM?Z^jtm{=+$_YN|e^V5$H8GdOn{IbbL(9j|lWB8@&)~4ZygtyE0n( zJApQ)iKZ>)i-9hKU4K#Zae=OHqnGlfKwphPe=pF3Z1i$0#e&lSi?5=kPYU#WpgG2M zY$(BVMnDeP5Izo&p9F-zBCg3L$aw+DwISUJazQ}4+mIOqxhNnrY{+&%!lYUx@;lrs zgDeK24L)IbiI0%L82rbNkR7T|L2d8B=Ud$2uUKZ5LVhKVCpe9CXFGHKdN*C z{J(yLB$4;RyDR_uM@SO+O(jnK?;jyaw`4s!~E(di*lFB18BEdqG#$4N-9NaP=BijG;FRZxE+ z0oU~);P*dH5@u3fQGuwASM0|i08bO}GI}+@V?R!kF5r#z#{iH0I0;GaME(R`!vFV= zlaR0FV7RNfiN? z%oGznH?5$D9uV+UywDYbIR;)^z*}QuJfZ-xUne2;Adz=6`=EgHbrSLd2DKLO#Drpi+aD)E6oPK>s6doR$OIzx>m-i} zcy>Z1z+*p7(pA8#Ce#Kz_TwZZsS|nKgvNl!ew>74a3X&sp&8(@A1CQY`cfiqmCzQ5 z*sqh2;7sHl5*`CQ_TwZZ5;4XJ{Q&DfFuTu9rLmr!P&J`$g7TAzVTJ#gzsDy?$ED~7pnv|9$)idfwkk$HWztoD z6>sQ>`rUWSUBEj$sLK$qPfxIwA{>L>jB*G=~6!;Jso z>n0EXCto+Yi8n#H@M@$)&+0*=%fAn=S^yB|NeQC=kydK`gxO=@x_tY&zn4?MYq@_D-AT-JVSyct@Qu+ zd6Ujc7rb_OX3tPgBIB6|;oDogo$LtTtWmmfp#N%<#3={%DDbLhB~e>ODR7nyxM)YFxJ zCG=gA^_`Xx%9lf>Tvn-sjPLV{WxV2!yiz1%uq!`3qi2ao&l(xCdH#bLXY;LYpJrUM z_Dsvj%D(j> z(?*K4`KZhXJby=-lT{-pua!yT`M1m5_C;>rF5`AB@@00j=8Y-iwY(cLTSeM;%UtGK zlvcx+KQObRCsJ`x=6)%EcxJlGlZtN3wv2ma60BOoGI!*U&fM#X>>ZPd=NuU9!Chnc zDy!F^V7Zi5d=%z>bd9#gq=Aq-%*#T&p|x^QaEPZR7V|Re*1S-%Rc~-G&j`8T;KmCj zk-@zmzyO1ug-Qq<<9evTJ+oD5xXmi6p&!Q5aw-W3*3FC>Z% zP;)5moWWber%u1@OFzZE<65CXWB4@dm*;}5!>wR+bwnBib$UGZ3ZX(yi{8-abs2grzD+1NqmUnla`6;oMIu6k=YF7ueY5*U^ zY2%XJdfK*BNVJe_?<`){X=y81r0pbu6dde|BZG z_m8@i8vC5Jb4aixA8*YsSEG12+RI1d*M&dDY0W&HzlgD{Gu19@vbWH5f@bh)R_@SX zZBSenjNDV85*qYr{1r}HjOa!at;s`!rE|UFY8v@Af|Mwj_fMS~-TYU@IyN*ogO9PE z9Tu#hjprLuY;v#(K&wzA(b_gFSlHEyhpn#k>+-OmZlI^oCb|m^=~z&Q;tN%&Fy{VJ z@veLoMuBdeA;zF4E_@vH-Jfgdb$X;h=!`+WP%t--PX`gbB^FN;Vhjk2w%O77Okg+) zP~WzXP7iChFH}u#i3faKP;hS^(I;ola#>5pXI_ZBR=dUo$tp4_b9!XS^vsT~{FgJY zxFc6)W$Lc{H!@3cUkB+4sf+Za6v>JYeFM&x`K}RpcTHvwDSt(#H$K8IW!B@7MxoG0 zyfAGwqv=Yw$NN*9-C>sRN~RTAxh=D;i}X{``#dM&-;~+YYo&jYSu8STPv%fQb6|~^ zA}{UD9OX)?jjJNiZIiLbiR|l+SX(w><#H?Ov&^blTf70Po^A2c{0$(FM=m3$?o*Ic zZ>z|yVV`Agt5HXn(KjAeM^~JjUKB~c!GJ_gFZ`$9hLfAf@7=4TM+SYKdCsjpjrc7s zy&zTa`|$F}Q~NU;^6(a~8=qq{aT|}5dyy9sx3_bj^E)1SBH(@}4>-AuyfEO3ldDdy zAx{EacXGqY>GN+z08gO25>5&^fJEfU_+8k^lbpN=@}htzJ9(t@!OZqjco$lpgfP@D zwA{|UP9BFm6L6oC$2++nc^2RSCzqXEL0%Sc)yXv{*O6xfZaBH=gmxwQttloqo4& zH_yGT$#ehuvuEt>b)7Oe!R2wqY*!S9KPB0 zyAo&bMY^YE-O>2(k**c8w!8SVk&>0N&gy(X#QR`Y2hP8aba^PNypO)+N+U)?LK4o+ z^6k4T!_x;pmV$GJaI-finDt3lYY@{-LT-Wu*ohW zpl;_fcb4UK@nDsCm8QA!4mLKqy;T)~7){MfNt>#b5N{Xzm zRI?ec1vv&BoJshjwF0($2|`Bbcz{&YorXF};!#UsQilM~z+}ff#$TlRi4b+4MN8TSi%TTocqk++^0)aaoCxZoics z=;1vghi;Y~=EM8-uHGn{!mn6|E|*QRE-tUN!iAN!*00GG60Lf_m34cXqHNfz@5x4g zt*G_9ODa0r+VXZ*VGohcIO~urJISiGx>hYIEe3wax_T20nZCMKbytwKYtul8;23h3 z;El9UR!1rd$X4&iqM}H<`0VLi8Zg=_|9jaI*1+|(o|i_Cw!R-(wy>ujuH9~py@zTC z2C}Pj7Z&JRU4wlKyMgFomDJF{W|3OmxHR7`;cCJ3NUEAWh?geI@1I)G{(cKsr$9+->|zwC+^lv#o<8ee3Q+B>oC1+~&1=6QrGNA< zmr}j0qnECJKRaCt9{ZO|sYY6*OjJG6D!CBNxVShwTMFL#mjYC8Tc^O+)}eVQkh3g% zG*2%+;h%ekYH#Nhh~%`dU0F(R_%D}Iy^lsOJ-L$F-TPlIr5b4%sohhp`5kH}Mdm$L zyOtE3`Y#2j-VRQI`PP~b(C+J^i za9>XlbArewlDZ*#2+yQN)5P;6n+ZnA18b~wtdq8Dqc$s6{q1PNijCRBCCQv9s(~&@ zi>Ph7?~IGVDl{Ow41})jdF* z{4%>IcfCZ2XQv9pHmm#Rgm|I$%U)7AEbS`pUkvP^D0potYtRw&^Retrk_)dQu?7rj zlq}tzM7>iqQg2f2*^;ZoWE;$H;jQa<+UrwluXf>$0^(XL?Ns)37v36U|5|-2d#_Yy zvM4@bTI~tb>MWX8cUWX}rwZwFW?s*PL^_6}q$`rXwBF5X;j4Hb`E~UscJFz#IJ{I^ z)e`W5v5;0q%f`of-qCdY*>0^8dKt&9Rb8)+Z_V1SttZ46kexB)%CSfz@D^Y1A&4I0{N%E zI6!2+WCx2Opa2aK!^CiLs5nfF0Cr%MI2Jsa37{5D0Wf@qI1`@kXNj}LXwfXjh;zhP zF;1K-&J*Ls1Thixpk#OzPZ3kar$9McB&NeN?GkY%XhKhm6uxQIARYPp7^WahH6$96 z;lXTyVYT5U!)?Re20+|wST`^kh2cztx z=GS3w+XIN)8xZ7y2({ST=m)sBmu+!xYq7U8`C0s0p_kY+_O_ZY5r&B}_BMgvzd=ur zd~cd#1AUvxuYU;o_87le2oh!2I5p^7H(Ti2z5?m@XH%O8*thDpg+!68#-Rc1yH5kp zxheSVb|AKkCHO6q?;eETk^zza9^GCOqQwcYV#8d8V!fibsks~M*mubH4J(oB+2UX#FAH~^o3@9EF$ujpk|Zi?YELluIA%EddClAbS^#NKtd zT&7g9h0B#;x#J9Vu-s7wviJp48=W^V`@VTRTJCMA(1!>P@GspH6=M{9OK(K=IAAzr z=wxIw5&_bjM1N^k!Zs~8fv@EMY4|6q`!Ay9zAAo2BwB7SzBk{8uU$AI(Q@rdw66KPWVw~s==csuA(rt!s&mys0d{JWP4#?y0@EYTM7*(@@p`Svl^5Ir;tGK7RY%Yh( z<>Cbwu@0*{p%$x4#XF*hA;v%g_nBHLCo!(>*D6xAxT6bwKEQvhj;{K4K!KhV?lC=2 zs}GoZaK9yUm(4@TY@)g%vGNxbirbl}g)C_GC?8VsxPkdOTY`>vji_U-HG%w-d|y5Y zVJJLEZ|7f=#Gm>CP^^geTBY4e+We^gbU-?q~A0l<{`3C`r}APzn5@y z7VtAB9yKgPda-G7$y*kfGHppr|APWkrd48ERwFYtDD;q^D8O&0AxBk;{}5FM7SwQR zD;Qc!!5aWQYrD*t>XW1}-4HJYCTz{G5w}>I{gTvbpNGGF7MS>@H6jdxn|2mjN#Vgp zJ>1Abq!cC?S(qjT8Q;5%UuVVls`uM@*q3|W8{opXu=liYX&=vj!rwC7GTfF(zIF^V zYHuVX4x2n2PVj#N*u0-ePHyt|m~%o%6=jz17zm0@v3zed$?`oTet_2AN)@op@@>T* zs$=;+FN_x-gXQ}e%@V#zYbodBk*8WI8(C(tOp;i>Eo`%VkHM1PlN>r?at|ISIprM$ ze{IXrd|7{4xPsR33*i~@S+s%cMH%UPL$Bf;!Bt`l;F#889=aBT1o*W(pgkhY z6G^8xO>JrjzXya_BAX&pA~q!avbQ>zWrgxF-$+amf$-U zRvpvzGvI?iNH07lECj}q}5b?8mN7X^;rOpuh6g5uhKuQ&j!>u7u39G^;`4> z`fYmVb9ommLSpLKg7k0N7)1YQa}e<*iTB%q@qQnt0Hhem@wZH!?W|2Lx%-yMvx}AZ z`@WDa^2mKA-M$Z-H|7zG$*(C|*7h^_?_mf4mv!G;0l>$^(~krIC-Ud40N{JI0N@w- zmn8u3Fe?Cfnb1z0hiO@uE-9|Tq0i5%`_OO!hQo23n$vI&>LcP6v?aGhAMl?R7-Twd zGq6KKB?j#=!*PiYJeFDBFgu$?Lb~uFdgzO2URk;P3jK67dg@!~tM8(>W*j6h^w=5b zvvbjFvogC0J@+>B-G%7AE$F{lfni2Ax68-6%HK9irq&jivU2|e&qemQ>>bo-0^bjopkh zj5Cc<##zSM#%PHW%mzHRD8WOK>?L}i7vXdKsQ$G6Q~f{m@;c33+O;q=Vr@t(eT9CQ zkxV`Ya~?B42Z=kwuM>L1{)jiqzQpRV!Bl(|5b5LSj#wf33dQIShWO149vJ3_7{Uz0 zFv_0}L2HiTq1a$8TinT>9tROw&|iWjEX+$N}Onk#kf#Y8>qx?HwH)9UU27 zm{;-mS(XY2EY?Xvi9dCo|_dKU(9Lv;&l0mHYY;^v3% z-plwTMp=W5A;zWw!zTU&Khrp;9$=XDr%eHdC+ZfVVqZk1{t6ZP7Ams}6?tSd07Dt5 z$cmW zuFEWxt;Yile-9ExgeW^xlL5n-R>1Ik!Xi-y3`Yy2jkW;8s}1>vXANs1@$5DH1=e*k zV0el_1`I#RFEm^E&l{AdR9Bsh&MwZb&Th``&dr>gJ9{|4s(n+47Z+ls0c)^hlqD)x z;(p3>xrRgRAPCKcRzhoNHr_LJ>drvKJA}bvA{N21amfmWuWFlmyLyLur+Sxqx4K+2 zP}fCYM<;G&Y(yvi{1?!P)k%W8Nc8WU+yY*6ewlX=+8Ep6L&$jIe>90Fjs=ZekB>$s zzi(;}hG!5z;Ix~h;C>S}p5dxhs+UJv{Y%>uAYwwNhxWxpA9*y5WFRO{~ipct!G)CRU#)}}IS@wmS^FBhPot}%d; zvBgYMv4t)EK(|z1zw460#mSIT%0NUpBdNzem%zn+9}O;^fl+S|8ij3W5DwLXi&^tX zQa&^daAM@*T|%h%gMoUA!RI_^@;?7~9XULwql=>+h9Zpd@dnv@)V~E4-tu2%-|cY# z$7^Z<$Nhz1fqeU+saa-gpvYuL8kO2PHTJ&f+ySIw_P#Rnc${G$*4(nbeTyPUHAOR3 zGfgvHGea{|vr{u(BDM@}Fldlb$SWU?I}U4tcl)>+X$$$g;tq9%JbDEg>+X?kn=XaY4) zYWiwk(9F_CKw4W1V(nk`@959yE8*Rd+&%B#W^x~>Lu4dCm0^vEIpl)Dn!-=@hWe2D zu=nO?*x)IQ2$s}bq zOVspji9}NVRCv0Er2IuKN!dzKJ^~r{3dC}zEFCOa>d%ERzE)C-GJL@&zcERPgeru~ z2v-rlK)5D_Zy{hNRrA&OD>TbPJl)JN&;8?jhWlf?9Auh!f@tzk2%f_fqiv7tVej z0ipLChDqK2A^sr#SU2E?MhrSJ1nZ>8-CFQ+-4q}>S!rrzWW&YlKoAZ=pLEmEg(+*u zy-Jh&lTm2iKGHqgpn3b3G!(xtlu5(w=fsB*m<@|iG8loGjllZp)KKw~vu4T4FkNgLB<|z|Nlpw(4{J1xYP%Nyw3g{%gd?gE8;3 z0b}-o_gopqJkCJ;FPgl(8I3tl=qk!IX6vkpbrQrK>m%LC{EMdM&HCx$buFO>Ktw0!SYL`klUJDxsr7r)tP*o+lVZ znba&uOJLe#`HOXmb_f>0tU}(kCjF0?Tsz&=JdUD>O@TvMl>3=!;PgtqNC+1hAcK8^ zSX~n4ed++tRZKgG{rQUSs-M)i)pykYQr}hIQ~#_k&`j43)g9F>ZXg-`D5+xZ2)iY9 zO9@5?Ri-x0>XV(rjWXG}FHgd%Oapr`wDVCRNqk(i^DDx1k-Sl5@*FaTUn6uEWwx`d zBx1@P+56PP*v@YW31R}ioSt}JGP$~0o5xugLDun|TN}uTOQr!5;CYqMNt6N413`}u z;hze#3Y!lFJa;eF9u#6k26$$sV^+X3vjFjd%4>A6yCg&G;r4J0`N8A~nfaWVD7cA_ z!+ajh%gkricRe`9`3CC%*`TI_f>%Ak?c#QGgj63#mkiaG9J1Y-!vZjys)ws56x5w>~ksg zo$#^zF?Ab=#cP9%gN=1~=xMchXtpe^4i7!a@E{)AF;q8Bzm27xWL`G88YXLB)=h3O zlTAu5nLlx`$%RY8?HNVdp$Zh~ok9r2?W@q%9dLf0f1ZDlR||Fs3nV@5 z5}~D}i){;StCx{sq`mMchLLvX*)qQFXt|~d2gNtUzlo>BZ^Z9Jqruhi1n7tZ36xj3rVtu7$(>UpC zR-Ckxp_gH^;WaBxIzqRmK2Exq6(`LWFlu^^x z@ee~yOUB8P)XXGiCM`2L`I87qL}ubK6OF%>Bw{8FGf5bBTrdx88Zdp9KPJo6Q)lKi^WG1rpFj$!nEBvzE~J4lE|-3Zf+|vB>0msS{x&)jWS|-hOnjD-{awk zX)lJDepQ$)%7|$P%umaR>AtXNBe%acc{vQn2xzs?O(b5|O&-33bpvW4(?R?rA=5Cb zu|lRNO5-hQSoDh^(^q*0nP&a*gOKS2!Bvz2)2tn98Zfd#KyW+p^d3nEN7F@ulxf|{APl9U^!@xKa2T`v4dh(y8o0ZJ;SZ4Sgt zL|=#vA($JfYt|WznrX`)gi*_GG#?j5y-;W^-p!R{V~@v1Q3u&ZQLje5wlf}un-|s} zZ&RLC4RoIE9PMm&j&Yvj9P9k6_|$i-d};zd^*l`#d|PfLMMwOx#^PQ7NL|jV5y5oT zh=DPmVI|DheuM6)=*)}V&Q%f5*OMIRfJ5D12_lCtbaxT&Vab_0q6vL8*4PSaQgpw& zJMDC@dvq{eG1`Bqk}P}4Bs`RV{Y%XA;!wDltSj@chtG$ipj;R!MvAmX0?kwStIn%G zQGcqgR9{eERBzLa)oy?#Sp5;7Or~MO)vkgJrm4kZ9}?okUysFRLuNKw{@Ml>yN;iH z5W~;6pqV=g?cOmAL{Gtb%^@b-61%}rf zVzNocyO2VsKtc1Y5FjdQ3^q3@o>YZvhH8dsA~eG_BQ#~2soF49xw#EggR+z0dbI3K zLSIp)WiPQo%bpLKvrNlwUo)y~Ov?`Zn>G{c!`UZWXurZf>Pj0}YLKD#Os#}>wC@PXqD<7DZXk>9nc7K6?K6D7&_k4w+O2pQsqJ8J z0xnx;(8I#08MJ}DFdH3+>Fcn!vY2a%PBAXpr)LuwNs zwSO!Z)(>_ew|+Lws%2|u+N4OsS0HPd8{)2)pZSkyrhie zC!w%U$Gq%p%*@tlBp1}`B$w1`C39-^lIvg;zM%t@M4K>^wgp}~tV$vnq41yAa*qn7 z&Pg&{mAFU2O>>XN){Lrz+EG>0BqV)-FhG<^NQ-##T9L`a>pp)Qq8=+h?UY%n+xB_Z%Kgf8NiVpE&GXPrNGKIi<2b0y|@E`cb2)%hBT_TM^JLkaRD#Fu|L z-*dk2tkSBr^|!5isHI=K=}M|T=sVYrO!sV8KoTq3|9k%X7h(PUO1g4zy9};;-Q*tX z+C}sp@bk!A?!40x9&;*d7SU%3?CqQsSpq9L&iKoESuOsuB}zK{WhxFm{#qB&`_(L> z_p4b%?MU{Q*hQd;PDpX6D-8{vKJIeh>j{U^+XRZlKYYG0n+>39uo-p*w+Pj zd;VkJVlwb=J-U#Lzxz&UYSBKyqW#%8`{#2~sR%mnyYj&m`~)lbz37Jn+xaO;vr69p za^O>6o=mIs^~aUZR{9RL?)ak8w}-W^bhzN#35O)*BVB4K9ewWZn;$D+T8DfVog$-VT`S1m@*{eKzJV zf_X|{ej=EM1h&+gc}8G7NBY{RlI9m_~k-fWnx>L`W zLavXp-0j(e=6~BWO-GmNL-SRZ0Rf&{s(PsDx^4l<*w-rbwmrQ)JK)6@oQI;EtbZ!N zogU5%fTObbPdflPh1HN(an@9dZZ{|tw{Q2cW|H+{}Ql=Q)ZE^LRVzcN_v-;;I8qosM6C>^7gmH)j{3hH;IAc>!#X->ywD2u9{?J zhN_iAXq00wURmSpp`zU^w$Pq?zMV~154ZoDTs>UB@7Sx)f@M8FtNMO7o!h#@%|Dzz zu%4U^RoM8Stsk~30;H`0_|Z+FV1J}j*v>5WgYELF`D?w1-Nm}A&gsKQ>9*{^uXOq# zU7BUREyNHq>R-D$SeM+E{NV`V*EoWB``(kb9YMqnp)Rp~Bbw3VvmN*Fe>jEs!zqMR z_n-h^lf>5l{%{Im&4>DV@`qE1|G%9=?0+UGTB(YVJVdmhmo9hOu2hY+`ioFaxBlI- zE+|bk$GT0cuXZ}DQmw7|wdYIbCZi}%a+9IFn=@)t5Mn<%YE%E0l9-o?RnO5?`v)X1 zc(_4mwTo@NZ~n*zJ}R#Jb&pv83pBxJN6@TYgWJFIUo7uG(dsd!`iTo4S7KkJp?yb% zRvC0m;*tDVvA+Z|yb=D=+AEfks4@ubW1~Z%vw1Iai4%>k2)OQK74Hu&2>m_8`&T$R z;JMH$M|$u^fWL}H?hhR+JX*ltZAX@#4b{@*4?-&kDO=IuZbQ~6l`ZLc_aXP4rLhEE znm+e!lcO7k3WFi$-6YF{hF~m%frrYGjkpG3Cp;)^pX;7;W!MmUWmuTDqjEhd$_R6p zJlcHsRM@=n_EsryCQ-JH|3W#NUTYhlq|!v=(raY-(J*&<_H}l$R?NWM!V)#W)r4OslO>q_?p;AgdzEXJX(D zYkSP96|{;^_0*86W~pjAv+bOUitPOG?EInG`NOjFBeL^{XXlT|&L5ebADNv$Dm#C4 zcK(>`{IS{jrV(rDqd1x}tAM1D=YbK~5p zPkvnGyqvwTtBH2cx;~RP&WB=sM^0o5Rb`o(xr!<9Qvl*2+>nZ+^9X`PtK< z0y()2I}2Y<)6mUP>E9VG?dPgVRnB}blD}}imhM@Qe%6^L+s!Sg89Zxy&yBV#uPVvY zlDh++a3G$OIyus-H$&%m|6avw`4B3>N;zi;v4{#0J|Ql47blgytO?M~xAiLcPH zqBcNJtNxM~@1=Z-tUr+6f>!TM-(yFTUru*GTi~Jij2!uMIzIKMdCxnPCm%^yv-X%C zj*q_0OIs(u$XlhNH;<*KDW%^BmPX%AqOm8^`wIK-=DppTDO(kr^cqDriK@nP&t8wt zb+c8tQLxQE3FMXK9bD+rJL%VXx+mG3>_iVICl27~%w^_MCGlEfR?~{76DzdDXRR6M zIWC^5b+5nF6_Ln3tJO5Q&+0|)q$;m3G#i~49~ebTi&w9TA~Qc& ztW~~2louDf)9Oo$t2xqFIY+A;Le6}LJu@BFM8=Xz_g(@yoV@0yw541{<_}u}7j+|- zL@2F$py3E#;!Yw{gyzm)8XZq=zLM-hJEhEzlG;-JcgE|`jhB+;VX7x&WWt>u()AN}W+Vh#zFS38z`Z$c$!|GeMYTZoBV-y*R zA`?HZ;V0tYQ=iP}G{8-TN}SYZ^-*VfuFc|`Z#??5ELzYoUvrSJ$lIk6D~R{EOMM>5 zxEy30Vg}+eWMbw*cdHLZH;(MRk?BqNh1vEw?R&37TuLAJ%5*2bk{XwkIGyYX$Z~1-lsQE)D=8`7D=u|RT2xxxY{i)L)HHKK zVBkRPHAf|SO;27hi>x1z(URQnnd?Xjr{_A6mfvPL>K4pWwD0Qg-=V92w;sOxV{-SZ zxqxNPbm)kkj&|I=3};l6+&g-%Gxi0Z&YqE#LX7KldTF0$<*FOiAaR&UH%W z04=8aRlCj%;l9LHL~hWu8_WtQqp7t7#v zu@=u~wApD{*=fryX)7w_jI>0qbg_7?bI6WfnH{~#68-e`jiXx3Azokl=;;ENjcc4O zk=ePHij5AIbJ_7EI6SHaZQ;4;DzyyGIcX`}tllr=D#!m{&*6PMA)oGQ&$Z2Trk%bd zXWP;(_jkR}k^_gD?(r*V-Q1E(9O(O@1y8whfKJnk!*(Y)sAIr%ATJeXcO=8MWE;pg z#o0a-TlaSaR%uPJbW zfpg4h^$*mZQ-9}(s04H4-_|Q57tD%}ON}+Bj5bF_*FWWf1DV#E5*S!}#OCSN+eU;B z3K=mbWQIcC7!f=?WJW~Dh#_Oc9@sZyc<{v9oj9lQZ$)y7S&^EVmJ*ecqDW1SSHz>D z#U{nXq~g`1QWPmk2{k{kHOo9FE>V$++E}+`PK;K>rLujB@n-y=q8ONz7RxqJWuxM8 zY-m(+R3iQcCzw;P3tJ%zQj(I*Y}bNRJUKqjJ4z87o;n)0PfBF_k{bL}Bt)f>{%5zl zwZ_K0$fy)^Vp>#uXi`c-sv;#y5t5(?PaQEXEjErGN-cP=E%)?FPr8m2Om(8~ug>eH zYfzd>-1ch=G-`VGXVOX6uwZTO+^9IwujUuHsT!6a@7cTSm7j<|%8yijCjD;ZhaOHX zI92;e?>KXTd7iXr!|uKIH0aL-J=C22Qcs$=zTPeBIA`2jd1rTq zgT-@e1YM>qT%n?0yKHr}C$7fAaPAf^j4~FsRP9gOs#McV*TVPPa?NnxQGE*IL=L`H z>FYxa6C5~rE2Vy83KO(kKiqNWjKUC(^M2ZMeQiex;O5&PRIEmYbSD2rJhjMAlaNE^|T^+co%RT9h4TT9x?jVvJwW)Bp zhJ&|Lx_4`#*}&by70sV7yvA`Wkfds#ZACoihAaMbsBp8A8-#=eA1NHArWt|Tt|+;V z$hP!jg~J`W3AopZ(}gC1gQr?@qY4iXz$1rWDmBXSN%jrd~80wo7$w>0mil1oN9PQAT{69*@r zD)~{xg{<%-%`cZMXYM=c&dVin8V(+NiQ}~rGxrV7pMR}n6r6-+dD1=p+xIEC09=`I zqofZ6u6fcY3T$3FmS;|b*9W(x zFSai|?XYpZt|ytP&ehW3rP~i1%QL%{I#AX6-8+>3ZgKSVu$uB_LQ#qax`s0Q%YODF9pU9aKb8kv4m zR643HmycWsK3aOM1@|HH&F@m_>uPQ{Ygn$9`YAbYw4E)#DD`zVcAJ$Z-nj_*;nLsP0ywN@> zO{wgjjRo48hh##KW!DZKX8pHjw5EuaH|me!a2wmZ>xG&pW_J$XMq*45WWdLp9I%!#wp z8=tOhz15YBh>vx0u6GT=-qwwGxRQ0|t@iqcAC(;Hw4+64y-RDdH+GmgeQeaMcr#Ku z(mHl%c%gh=$he5$rV56&R7xKrd~ifkqom7s7#o*~FBLvGEUt+Y!c&8jlOv)QB+jla zun&A~>6~$?O_m1fxK-Wo;8O_KZHJg?`~AXGtxtaND%MzFj5FLE9Tzns3WKJmZZJ41 zEox+9eB)0izkf~3;A*q95oPBcZnnNpWJ=sqC=m}SV;DlAct*t!U67F6WZK3iBtPVM zSXAoZF@qz>sU3NaP38})BeTa&h-mT|tcWyuaLj^P1EUfXAM)WQ#D&I%&rXU=Z1Nrx z;!@1<=G0W2^^lVqCy*TMwxc=U=%%Eq!wy$5WK84T{W|RMwDlRFSs2{tT=}~q|AR*~ zeQ*dmhe1&((IcBq@|akRjHA2B_qUhYi@-pZ#+Hri@tTf1T6D8fk5TZ=sbk`k(ty6GknvJq?ubT9*GS^j3R85-Xm#%k8ZMx-T-+T0Jdp!EKJsX`uiu`vp z?`k8pwd#i&Ek(oXN#6J0;bD02GV-jy?FxrJMDA=KysA;xYoouBGN@6~Ycg%w1IJ8> zwf#^E`nb@Pq=eA8_{N*s2Pvj(ZGx4&Cm(rVAG?e!XIF>9Vnm40P@ z9Bsa!s8Y#wfPAg%R<_fb15Ad#5LAXC@?pru-}EapJJ6u~B0xEFB2p67~!9Ju2c_Ef)IuI4C2`q$T#<+*WpaKG^4vf&OK*22@R&y}6m zaMRfpKNg+m7?^~PdZnz0<2I~-NbgFW4wN}4t+PcYj^4XhB-nER*ib=JJj#`ugdu+V zM`f-Y*8)V7_2X zsi4bHaj3;t&4pvc5j4V*r{P*6V@`~*Jfq?$uAMaA(nrI6hV!xti!;<*Y>wytvSMg{ zfJdPb6~%kC+)o*v`}Y+?1#}Mg4PRtgui`v#<%PwTryV&Ez-i=(;#cjsbR6|wWATQ1 z15fZjQ+!ZOmu)RQCoxbOj;YqSus9Uq=Z2G>J4+|B2yR&LPW_T)S*ZV0a%o>5Aouid!vd z3M|)@oDPkN<2B1Y755h2%<;M<#Ew&;){Oeza>9}O9PLEQyOvJ>Mu9 zwPk6AORIanZ4?QB$xUgdQ0#_*&8np>6kqx3BrEMr&ysG{KH09b;J?oet}33z@u~oY zq77SmKu(=2zf7`ROwCl^nCQFb%b)VpfAWMv@hM^@;)N$@Xpkw9(|wE|e@8rrc%F_k zm^!L_J#`92OGGcku87?byCe2M?1>nFcntA4nIC7$A*Hb<7msTEzJd5X;tz;75r0Iy zrK8y~reY;I9BbYACln^Y%sbpHTTj7i@LPwa&_3-P*%bcitpv|9u7ihRUp z5T8Yyf;Dba5vL&rA@)P;?}Vl66&B(%tl}k&7TQNt@*lSRWTRyn+h-)|w(A+e=bl%&ALw1}3>E#0ktT>auHovc^v zBmNdzHuQM4y0rlwOpmrn{r`Q-ztf3{3jezs`!jab^=k2Tx8JOxw>G;J&2CrjH*IZ? z2#?jqZgHf`E?8pi{uej?;SRK8zjAxdR%f7A{e*UJRIeRv>8-QnP8{`~RFP~~*IB6D zaC~Fe=B@v-yLptVw!4U9-9@=O3Y0!Gz`1@G@W*$;w>NI5My%Dr{aty zh)WS$w);QYm~T|Jj3${0vGyCUcrItNjZPc&t-mKekriXf@!b_JLh}wVF+^;E=!v*- Rd5d1mbVy78npP1){vY*S$OQlZ delta 72006 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

;4ibU8 zo;#T9F~qd%hi}nzA~MGza~qye`)ea-m|gU&GGUY1;LIRjsk14|hSIG`TYM){G?5|KZ+19K!zk5$apke6mHT-5ctndZN3B+kWVTl)sR?NIcx72%&F#}J22&CgYn6A%m^#1vi74f=(;z$>O-Zqng#aJ zty&BH42r|9I;b}7WcGnM^t4bJKK?;4S^8l*9wN??n!>)B3s-$fHwe$bh90+Wtm|CV zo9KmwIuVnY7l<0ns~y!g?2qCF=nt>$t^OwSEm4;m-W%Tdu#K1|yin&r$?(Scionp* z0fDRRmbsR@R=8HW_8Sv#c=PyJph`Txl^H}A(DOnPVh$FF z3t>`S1haNE9yGvASP_AXH@wGKyx;$uaEkv7rU-^o{AVD=|3ess8AVa^zlKqS22uR? z5Q^R6KvWE?8;8;Nj<-T;ef5~dT1AOd$YHBxt8J@et81%gt8ZhSKnmCt0f zG5AGlY>Bt(BCRP@DfXZkwJD4(Y*x(dZ(*2%d5}gUedMVFtv&*_9diIIW*mEw8r|ro z(pZf^Xg@>t)9&j9tP;KC>v>{;%}Y+x-2dI{1gFy>1bp36Sd7JFNW%5Tyu02e9vPOF zanP=|A;=~xJh-XG&o5K6NB41$g8KCnY}DDsT2gJPj#O8wFEucJf0>$?tZP}cpTV&; z;ZtJf-HC7*Ooj$CTc4w6jyG>%yl@*8U!_LW@=M9`Kx+WoEe*uz!Di?y=|$m6$uP3*ahNU14O}4VfS946JyS+J(0G|1fyb==CNwI`M_l zLH$JE11}33i)PZ3!Uu@FX#?j$J2-MWh%=?hkkeNJYu==`r~ZfV&kzg;d7)aCKrC4e zj9SeRCfEh`tTgv%ggMPYgyUKSvF$-r?P>Qd1S`IAQ>e;W;5|=)?X((fPR;TBt`K*F zpc_p<;K4$14XWjs7_r^-9oTHuJI>$KMsdrJjS1f364-GW0Q}ijV z8mdVBZ-wsZolw_|!FGwejH&gCe&o8K)KYc0Z+vY)c?YERgmcja<^wiPOEHFL8udm;?Ow8G(`+`{5?O1~)*uuez_fue)!!gR@DjvJgKID~grG%3>9HpN4~s{{qsEDjMWe&-DlOD{a0wcZI~I+tQ$kKu?z34izF{mWDhLjn!|rf8!W`ia zmt(f08QNf!oTN18p#`66b{;+u?s;!|)t6ZF;bHpB!1%Y`CZT2b{~s&6_`)jWI8sc2 zHQk{)JPzFv;mG2c@Aw!2yI;vMN@E@a(G-hkSe%34S>}2l!E3bYQZ#GCbftjm{MNyl zfyG=QOx4)-w>K_~DOpd{8OGJWp?ua2RiRoil;EIYa5s4Q0Gy{s;myx94_E%asLGi&pU%|)4 zY_rO-^8a+{f4wqLa)xiefVoa0*4DD+tb?&KHe!^oSiu4Gc^9*{wWMn>qOs3R#1h=X zSlL^LHpR-`E>yK<1KqJ+wBIP7x6mLumQJP9D2tb1l6C+V)mAKI4(pRap}2urHyQ;O z1{+64`AVeJ#%j=}eD!WydT@a0Ck(}f9tV=<_)ZBKT4HXSk$Z*jQpRiVKp`-2wQo3` zmNlViOjVLh7U2~w@qRW6!*@F$8L4XY%9;@EuZ9mcOE;+YOyjg&wlq&A##K|GUn)ksMsM0UV|8^p6Ou0~2B zkve2r$PFx-qZ%oV1kZa2p2ccZBju1VSV8^=AH>?A8e;g%Bku!0K%jAC!b$<()D{Wf zR3r193H;J_q#g3Y7`cLvNaXnTq&@OlA^3b8-+_k!H4VZ0IR10;Ir7g#@JSrsk#vO9 zg-i<}By&P1(h2#=5PS;9cP5>Y`(a%R7AQZ*ci}5@!@)yLfJ}B5(%3S|YGgPPwv-r{iDzt6jf_CT77>VQ z30_~3xf+pTdBp1YqUuet- z^$`#ekG$JzQ})y(!q7$>AIW34dRfAX;Tv;&F5HeSCh#EE(;5CFj?aPB5rq5}g8!J~ zO$*nH5PTDcZ-r5ujpLCaFK)_jh{5C-D^^4B%{V?Q*W>Dk;G1)NG>Jx@7J_fV@PWJW z3E3&N8Sj2ke74)+qS0f48fnbWlW>^sGkWDsXlvB>Cgk-u#b*Q;(T*oqEH9yXd!tp&J^x5ctx^ED-G>G0c|=B%`_8LzmNnMtb9a*krBN~28=%J3DM+~ zbreI2PvSV^oi{=B*CK351-qmQVKEKt=raOArwIP7(l6v5k2BaZrL>iNi$j77!X-Zn4o<1R;qNuI#=ys5g9U${MLX35W zXzB`a(-RWp3rK}N=;&Xe^A13VOhaO|7L0gkLj2nyyjl6u2;2X`Jj!EM5V(ZJTru3I zBxvyLOoHoudy-(dL<4f)x+4b(E-7nA0+z3+5eWu8)FYo;4VsIr$5ZiS!(6~5E6_P;4AWlbu@qswT`|f!6jnd2(u`%>(a28Fj!yAvdC~c`5A(i z9eqrKbC4E<4Q-hPi68CYRyWqjtch8Z`a|0)Xd7%rg0qyqBxoh9OITbndssPqR}Hcr z{uTDRR5G+<=Jy2yi;EK$ti|Z%2n*0+N2N$GDC-jvbQ*Q_lVCh=1rl81T$8Ys&8(w= zOD!g?V6o3hi@T>1W&>o8twe&ssny6us48Zmf&rl?ZBTmCg5M;qOiwsT11CEr%obX!G=_vlU|%IL3sX?+gw97s7@pNB<0z&# zzk5eoAtO;VjJR<95*#x@<|INJ#%EDf;YONJJflY$Cwh9LW1^_U#YQOE&dIbFC%d^} zER@XN8f6qR$)=7lAM;dJUD#M=2vg3ZjMgSOFYJ{l3zVrKnN0_yjEN>WACD-Ww=$E= z90yozZIY7+Q?H91%_K8(Q-w6{q%xzT2E zBO|jWiZW;)UbMkvFi!J@kl8qc_BP3BBn_w2EOuvivl$cG+awPqLvh+9(d;FR%vuob zZIVr0d^0?@L3Us*i1s$g=?Jw$)Gzd=Aeprw+S??LBBO9BhuqEPI#EV^UtaRjWHe68 zp33AFCcC1H1}1q78G}2a8Og6}TQ$?HtAsr|P?tV@v0rYUG| zlRSw`!l^feT$+);& zNjB#V^SWo&S|v_CVUo8Zm>r51Y_-9XSK(yZj~8t_*^bkZA>DY^ z?q!mnkS91@gcyrprMBYa1t$3!d4|(QA>=lke8MEZATMzG6Ji>IcemqYI)E4L6?uiz z86o5joLtBxzaejMdV53W-5oi(wMqVy{E5?xKV*_SbMi!!{1^EPr$$JVbmin7CK-wk zhNMS`>kSsIJ10Le$u?>OSqUjxPfm{inwMOmY)7s$A$Nbl$qh_0_M-uLi8XLD(bI>M zhnVCD8UgZjL;(cf{Us-_Gs%%O6669QnjPeMA!H_FA6PMQ@{~a4!TMdtA)u}^ly_~o|XssQpmfRjD#|I6Xek$cTeEt_`$s7<~EC25H1xg z8k4b*=O(!>t&6*T@Gk|)Ova*ro8(5=^N*07A%bffC$BTfO=uI4bGFaCo5@(nbCdij zHX6iEt#AtlA3l?lJ$_!aRj4c`+v!GRa-BPa^iH z4IwY(p%2L>xj0c>^a8G06k5(IUh>f{KE7 zXK?a5lROv}eJm3~yhV__k&~~Q_>-zIr9c8|pJ#gJOt&B=5a zFWOkR8bA)=wY{8N$Rv-a<3XMu!sq)rxwT22NGF1PEQEZJlP8+w$=E6rk-Z`BKFrBG zOtL`@kPC-2$x%*zVv=Xj86aN?DcW&PjvvlTK8wx*nTCA#FPz-KB+sF9Kt3DNVkbFy zh)JGD=YhNy%PWEndWw_RndAj@0m!b9lAqz^t0s97W%H_Shz}0leU6hoBY4r4&?O+} zLj+Ece1VfIn&f448OTpU$d@>|7s#!n=n5n(GKI4!c=r`XrYn&UTmr{V5Py~9SJ73# z=L;FRu5tW9dJy;>fQWE&)6N?VZ=4w6jmUnBUviD!0XaLoz`;i{tp>_`Ixe}xFZrEf zsWZ6>e@^fcrrAKDXP4aLmpq^kaLK!nOPF?pL4aLypI`EbKEfr-$7Vj|0l#D-F7ZF) zm%OAeamhnKaCgPW9RC;9q<`)``jq3dN)3Sz-Fx&o$A5%CtAFl2`jX?n#HKv|+j-RT;tN+}4ROa~HYF^+&_a0?S{-bE3 zIso|4y+@f26GaE9lYoD}_oyGfh!{@zUR@VT0G??UQFN-h2>8&wNAqy}26Z3sp?i-e zaQs2_2=JkMkLKg}6KY@WpL>rc0q>8ZUuijEqzK)7G(W!~kEbf|p?i;}a(s19SKveU z9xcl8eLQ1<58Zo|Em(@86FsYe58ZpTEXV)g`N;#vTj=JaA8^9Yo`bl-+I*DRCDN*J z{83L;{hxb}R_FK{dK=(F_a3dy@$K|3z=!TVTA$;)>3x7V_a24gi@l&RCw!?hGehX+ zqs=&exc)8hp?i-q4I_$<)29L-y7y>XjyLpqz=!TV`Z>oh(60a=y7y=ovqU%a+aQE) zKH7ud@VovH_|Uyadvp8~odwcHGHGN<7q-?rirONafo|yuP(j)tk7^xcg=9kbj@ft*khtG_LyjnJtkVU z!X^_Pu*pPMY%^pjE)8y8I>X?bmmZNfsKc>P-mo?=7383^<(K!Hmu8ngl>2Bo z-fv!dSiS9$-fv!df^S}0>WDl-Psg4E6R_vN3_TTt8Vd^CPO1qL9M>Gz9XA{|9k(2} z9i_3lJaj|T*M@%@;?Bb*my`hTrms-wwYMemDFjBH`D(-}=CKYOECdemm5~ zk`u~8M_k>%YiH2Bq#Mh9@1m;ny8q+P6m7<%eCC6E*kKuKVO?$7svJ5QLOI6 z%7fM~jJtlU%$*9ek8M2?m-kJDdTr(v%CYZVBj>;p122^x&|~}3!EcSNKW*Cm=d&M+ zM6UijVsMj<-HN|UyY7D;_wC~?kFVD|^Lt?SfO(g0cYU4n$-4<_ZvM4oQ~z7DD!l&m zV2&H_jP{91YcftIeCi2&Q7UOYrTGnSnWRS|9 zcnDnl)#afL%AXW{s~@IRV<_#i&Ys3Rmq$7JPXokSsLc4qc?d|#UwV-U!tV>y}q zhzT|doNO*p!Z9o}?5`7L(TqJq@Yy(?&612wc@uINnk}KWzfqh>S^%bnWs0r5+#xLB z@>fKn%q7f@OQS}oS;z0FAhbJSy24iT?fo6NLckxkM;3H}xr5m~FG)BZg?kwFIekt4 zrth%3%qh6e?7$Qxt^H&leMN(w;`SuC^!*3E(?7c?0Z!lg@Vo|>zh5OqD03FG$G;$U z%G|~5xD?sO_x;C5V+)&6&&@%1)TdJx<2JgkwJo?>Mp7y!Z&2c)&b* zKqgv_zWMwY0?da7JdC7XhSkk79xk}~@J_-sZY+QDv za3l$dnWfhHkC>IRlms{QUq>0wvKM!x-RQUN%mE=5cBE`D7UiI2X*rl)D$oyTWxm)Kca{hf%`Pa90blJ}e;~O@sc`bJdHqPjJhH5iRnXnHfLEBznTom7I{M*0^P02V@5=B+$w7LI zGT$pZn@$#xnmp(YXMRizo?v>=5}&~y$JlYrF7p9>Ne`>+_el?nwbqb=_yr91&C}^} zbSx&i!UdNg3Nn(}`GUUJe(yc54@hts=?XF%cd=ryMpOjSZhVkd4Qx{6h4B$}WEDxbwIFxm}zlNLc^G0x};GeR02Mn}-2=#cE{9dsu>jC5hY z`HK<;zMKV)d`Me%Hfy3BsaP2?6u|(7TZH{e1$!`K$@XY1Cb5>1Wn>LmOV(NG4YsR~ zq){+CW~DJSmKLYRIW;lCZ{T&;>Gu|Y4gVeCN2A28>X4x^Rx8%!f>`uOZkI6v;$Wu%39pG^dsC+EeiiBgkFd|&qk{L7@ z%`luyfH-n?KFeVN7{{O8dl3QxhY~L zU5$SHnI%Y~A#_SX+^~Qs)>2JiM`W>O@i@*)@}qZ`gvPbc_&;p;}2gf~Q#c#~Shj*+KS@1LO!f zL4G4=Nd|g9t9`Qy8omEzoJbyR#R`=l?=3z_G@JVeT6}Vx5g(CwxmH6Slk~+u1R1MN zlReGn&4)l*_#YL!9%aaYD}5tIl}#9lHj{J4-K>du{Le7vy}-Esio6ETnj$#~*6bSe z06j{7qh~3T3O8X|`J0dSY`iA|g|K12n!{?mFgXlOfc&=wY=tXk&j>JLVJ6K; zGEC4-X>$n0Pw=BQ)4_7zgXz}MbC=^VqsN7;N!gF=FqXPQgTYfvXfR~zJ~?d3(0)X+ zdc#d3p`Ww6uaLrY%tNye?4Y$F$XVS6>*yov`g`PfPE!QVA+;%shhq2oGsreF0V0&0 z{0%v=)q2sFWb4sbuF>Blx8Om$12@?{_`>eP;q{O_ChXU7*lQ9Y3mQNgu;rTU8NKlH zMPY5sc8es{rkGciL=Px~kgI)GZ()4QVxt6%*CYp+kp)Gu%DhQ$(MW*>MzM#ns-Ix> z>9a&TWPalka@-Op%g6+499cq3H;41d8jpSDzUd84?!@-hF(^yUzF9mr= zK*8DQau%s8)PXPjl*L`KicEl3xDCB17<<*1tUv>>$Hqc4_#MZrFPXyO3jC$lAY|C@ zLv_J`#rOt0+gSthXgIhhk;To;M!gQLYJ;Uc&Y>*a%B+R?h)LgYxwXl)Otu8$ua=UF zmh2ix=2%)|fU=mZN_Y(usM)wc{g?90>}LN?koABln+IvUmuAgn_J-Lc7y@>ebg)K* zj&!lb(~k*T2FYd_y)Y276eN^N;cv_`mCz+qL9ez11#tn z7?(Bi3tL8(#Bp|G;lQMM)E=lbDCrj=BU@s-9Dz}DlV;P5vWYh`jI^GKP5tF+n9Ziy zB5l#Oe6~l=&2ddd3{M26?x)eIdsHxM_bKEsx$>(((Mn=bN0hPlcxOugcV4C8qPOb(90VGv`K?dRK_(Z`q9W>onz--V2?e1{!@ z!_-$)$Qa|BL<5r?zV5=b3BIL)rQyD&wrOM7(G*{Gd*JZ|pJvOL?aNIAxg&iDs+;ed z>j`s{tS{Xp)re2>#RbBXd>;rI8+=ZeQMZ^c-IlYaXyh#Ji!|;R^Gz_c;y$}EytwbN zkyZk~Z&ubgQNlNJS}Whjfz>5_%WWAwi*|Pgy6;3OrXBVTHMZCD>SW|h8B&lN{f_&# zmrhgJ1_=(5rpi{%HkxAR_!T^!vwe}-xyQ9G47m^Za4TolBX;gao`hVqa>>eNS%CjL)1wOl#=RjTv=Q*uB7xKb5kGJyNR-OmBzX%9< zalmq~l_wxCit|J(&u8U6s(tgbZi69UA*9Hti_O*Kkf@wG-Cn0dvQK!ri78NSLGjfJm*aOj$EqGMuxd!W@AUt#LsK!2ne7y~w9 z+}=cgrkm*&x)oaHcFHDTyXbDZhff{$LqR)84`D)f1d7@*dYqo1ztCUlNhocn=xKTe zs@pk?{1@m&dWl}9S1`6-!;FgQ6u0PYZfm#)weCJ#Vh`c-dW?DNQ~E55KBq7EtmHL) z1BLca`WBlp|7}!U;(g}-PFN(^u_k&=#=fXMv4{5(eGitbvftBSgVGPS zBjF9*{pI|-%uNoOka={v{h|Gl{jvRt{i*$#{dpz(PVG#@!Yn}*yQ32PU5%q8R`@7n z%ekknXRhb2&dOgA`?3^=w~sYoV;IoBGEUSj>dmnOaPuc2XR*Ad zi1+e|o*iA+fk}sm#|b1ix^Du`6Y;2AB=Et+BzvTBd~s4Xqt)W1p0u0MYgJOTV?Um= z#qi8diVoP9Bvo;Xj~O50@4o$hpwYUdA0zN7o;^vQbvEk%nQV7p6$Saph|dEin9!tT zN|JHEQF6GL2cjq!ZfZABGu4P2&62}&Q-|^3>*PJQ(xkI-bpY--JTSRk4`a;pr0{81 zlI{3`)dqhsX1bq@-xI3uPO*p8z|+6diLvc+Qe>d#pUFKPwDylzQ~HI|#~9s{qm41H zl$AEWT{qUm!9&%{ozmMjO-X4S=&7XCx6z*ss-#2*-g;6dV9}*fF?&k1u{$EACEa06 z3A51ME6rGyGDWcc5a}}J?JN=%II$*06f)MQR1xTJ#*US^ zDs4l`KpM!Eky2EkeT=I=0ySY{iX;TKZ%Sz_&;>@JpMk2sCFLuDZZRfq!HIo)N-mpC znI2}Atj{id0hNtH`#{t7;KC)__oYxe-RQLynCJUbn%ZbCW5H2;ZQAovc>~)Ir@W=K zsL|^*$d8Yvv~mS{p23&f3Pq^qBQKmy$wg^C?9qfPik?q-Yoq6l9Vc+o?s7^yO1B#g z*u8JBq>ORW+=k~SPPVJ1Hw(h;u}0mI$x(sB_fm!n^iN~rdAxP_gOs&K{fDTue*9V^ z%cGPHBX2xP0ptf12;6w|KiGTk_$bP+?|0fgkIAFNg#w?LJU0+AQYwd4ndHP z8x%te(iuVrg@oQ2sRl(w1f?pyNEeVIB1p;ab7ppi#d6=@r~dwVIIl3fv$L~Pt~uAa z&N$}JmH3Zoc$HlV1`Ur&*wuG6 z0LRhb;k^M9p)yn|4$lP`@D8w{2#Duh76*J8vMndY3$RLfM`RL4};lxV7F8sN7T1-R7Pmo=I&Wl+ED&G(R`LFuydv zGUuBcNRLrH{V5{Nr0x2$tGFVTk1f+JGb}SLvn;bMCM3j=Uc6`xqk>A;P*CZ%ubk3v zD5XS&lwP9x2xk**W`tI4Hi!HYkiN3?n>SH$NeAocr6P2&Uc5U(4yqqp*}LWqP@euZ z-6cK60Of@_&%FW4D}oB;8YC}0U`Rl&jgk;4!H35`8zcx)9#RET2hsr29MTTb1=1HX zlppHl$3iATWd|TkmHbZkn50NAx|N!*TkBNL&6|2kSdV6 zkcN=vkT#HxkRFi!kfD$v59tQ!2N?=^A2Jy-53&rB3)u?U3pofm3AqTl4S5WC2{B0~ z$q5ODl!Amq5+KbX??47igT2xy$On)t$Xv)`$STNY$S%kiki(FZkc*HTkcW_$5XmB0 z%0VhXszB;O8bMk@+CzFk2115IypTzdnUDpLPax|o#n)N3L-s+wfgFQegxrQav^-O=63Bix?=y+O|3XUg;>sxhTQ65)i44 z5Cf&i^yhY&qRr*a6>t}0&2i>b=T_urlgFYsJBpiW-elfv-hw-|&Ai>b!+gZ?gX0Bo z7?luqCY$Uo>M9gAeQH{1T7@Q*Yg%pU7>L@7ia}sJO9V!g9Y)=t!V!b{(fmjJ$0%I5 zj9<-fL4~q|{BiyQe-rr-PkBbL3V}iiAwr0gA3g)qZnL->(1D|#w@PZVk?V~Ms@w$!#Xu%seEqno9_ zWte50B@+r+wk$(cu`QO}DB1CY<-FxOieLXB$E^r?yXpah9(flPN7^DuoGxr5b_Ul= z+JK+ggqFNT+A77PzTs+vC~30Gc`HJSB&{~+k&|sYJ#w{k872o%kKkm7a_KnBcku`g zGrwnkOVVfm9yHLBtL2ByVvF{TL&4M?o3y#JEfI|a0bE&rFrUs3;on8~HjJNwLSj15QZay* zCVs1X%o>fcm5v&qTlp5|x6M@ak;OdQA49=Kh4~4Q`puZ105L#c4i^lB_K~EnzF^Jk5&24G>}e3?Pt+ z&eIHWcX0PXwlGpO88CLszv&$eX zt+MBUv9!~^3-#^}+P}45v){BoL4`=ISdgC0SJF`)^&(>(wNW!N(a{ohBU?M#IeIyI zJLnQtHz1i$fq&8=nOoj~WNuXfnT?*A{zP@#RD+V)8wWHI2a@Q*P(+P0d}Q#?Hg#!-?`UV%<};k0@i_4RR+fS z5IAmNF)}9p;ZCjK#@GCH_=ElwMA0P{6+^`z#2d~;z}{N|^xg@O_kON)*EH8JuHRkH zU98*ewz~^}xi)0KR&DMI(-PF6G*jzdFq+z$o~Q-!hTzep_E{c4>JWYcdaq0vo0Is- zD13MZWe;`0W)tC#0oW|-?(fb5@+r&r#PwuXaD^=W&>IYZF)_$8*zyhb*qq3l`|;e# zw>N~yIj(nW6;twZLh8~JNOm-t!t^8tz#4Y(fv|_8U=PQ`9 zO&G=xU>HAzVa#}88Czi)2SQ;ML3dmV-9QAa<2YEyHDDbl<1RK4TEISTCv=2`+zS@+ zU|7f_VIhx)g**io@@!bhi(nzIgpIrb2C@PJIS&T%w=j^8!$3X<1No|OUAO@w`5x}s zLm0|WapzvZSoZRwh`MJM=p7eIiv>da6cvlZaxRBk8V>6@7TrWOSkLufJvV{%oCYo2 z5!Q1rSkHrDJ&%O-JRa8bW?0X=VLcy!^?U@4;V3NVlQ1UE!JN1bgW^{;b@U1B=s#gv zuqM$|6sB~D7q)bH*wU3@OV@@iT_3h|3T){#G>i7IrMtnF?h9Lb2yE$5u%*YtmYxDz zdNyq7MX;q;!VuaATlyfnkYli=&%&1e8MgFo*wPPROaB2|`W38c5w^4q+Aa{bbTQb{ zOSk0Xti?m||g{A#AEbVTvwEN@X z7zRr_aU4wTOqkl!VQR}TwHLv5`UJhrY8c!bU_)(3ud^E#cOGo1Z_xYv0IT~vtnTaR zOz*?){zGo@I5tL(-WDiPpK< z8S=`kbgqW1gLj5R%UeF=Jn%qV!aH23_*ptE!V%Qoh7kp22rj7~VRaB75cye(Ynl0OKoLe+*Y5u%rJu(_k2G zFxju)yBn#u$U9uU3v~7Q0LEnuajscg{an7Hv8d9U+m`x7CPb4-!% z?1UZqg{^|?C)Wp%lt(^=iQ}#c*VLZ*Ci>>v!hCTM#$tO>nw2=U>6l~!R;d?eQ&IQp z!I=)Ly`rLO2~_(lP_++HJXZ(R<^xrWR;QwB2~-;hRBaGIpgO2F1gP3@KtXj-Z30lW z)c^>6lT+Imq}mi9L%oEm?da$PRBcz#Lr?tM?3gzu$Bh1urpHhoRB8N?3HJ9!^8_tqE;CH4Mw;f&+6D$mBfA`{U|R7R+tT z5y*$N%kms7UJN&3^IC-R?lw@iecay~1l}p&@8+Ur?{jxakGGWP4s8BP`1;@P5t008 z&eU~ucy&R#X@U^|JzZ@v3h0P&KzED;`eH0VtvL(hf!i1nJjR&dPmBsMj0Ba}4C0I( zRNewAlbI$=-8rU>&=)X?T!uK_D}Dg`a)S7gI9qH07MEV#YnnmpUFKL0R7);O(!Qqk z2ERe;?PidAv!rR#AD&m9u6RBv_Sp;u*dTS3P2+5{<#9>PT}U@E19o1V&09~M<@Bcg z;1Bfm$N9SW0O784wgL1_6}~dxFpsf~Lt~l=I>%DKQ7Vm5X@q*z)>IvHQr%ga7Dj_j z8fwx&6T?ieI!%qnnN*UN=8Mtzl17&_wxn@oy5oJvM~*DVLX_#=*bpE{w!^*BI5761zJ1;C+?-IAv;fFRWY1ZjfAfL@;7;MGn6 z&DX2re4lDSUtF}=Om!|1LxLm>3X;Y8;##pU$WN>6wf(p!Mhc(p0$iM!^oP{8k=zXP zN|?+!Fq&7J*O=GBbUyAl30`My=Sx(urytdG?7q~wzh0)SJH%by9S@U$+9})+81oHx zPr@GGmJNUtl|u~b z3T9Z-D0B@wiK`*Ck-TJ`zYY7mz0^S}j&POJH@&PfQwTlL4GidRVMzB2e}}&UDvJ&Z z*4zb}8$bsIS1~}r1J%gjOal~53_u+eoQcam!!rj{_7-}Uc;|Vz42p~oW^A-52 zd|kdF5If?!lV4z20VUyLACi zZ@r<{;QiVQ_?3GuJaWF{hb3z$WPr->Db=B-y+iZDgBy zpV$1Y`IPyR`4{u=2*a5rmsA)t{UYGFPsJ@smqsHzJ58D=Es=8Iy4@{(DII|^bqTWv zA4#tyizNhpx2l#zOJhqbOyTPZpTG!9hGjBBb_5sEFToV72Dd#bz8%A%|I<5bKWpe%Vcxwq~)L8*FaId ziBX0HoMoFqTHYIApq97GM-GIPO!?9l<2vmc;d4&)Vn5-6EJHE!eh*{s5tfmbEjSjs z_?Z3$AM;o&oAMp`Ui?V7zozj^`COo7ZeR*)IDC4|W%qKJqcLJtF;Q$Rwh}u4b~H#F zA!dlXa4M%Ur}vKdN-SrJM{qmclmU>#EYm{7i@q@(HJvdPFqbt)n=6}Zn;V#Wo716) zH<@>t517xHubUs5|1|TGO)4mbK;sQZ;==;z69hy)$M7V|5^t$xsc&hHiLhNQ{cJe? zv6hbz`95O#RlfRFNDc2e@ad)kI#m}YGTlU?h1A8QUUl99D|5ecane2MS2!siz)kT; z`b~N)5m?CL+T;^5!^z!u@=LTwNzLptQITT9~rFZBm8h;MXLtW-+bj>adoWb zg|BV^q|e$aqS_2uQ3KgEr~<#mvK38bJ05n$a>9U0m$ubKB|du2;xN;zG_HInzB3$r zUHNYOdFO|&JZO3pVL(z^Aa@K7yc2NYo#J;{OFG|kjs|$ztD>j9bOYPDx9rutmqpnT z+;sC|c!!q4KeXI@%2CVN3(rKvL2VvP22XJwEy`2J_v}4o|J)xA6^G%aIM#wdl+16ii3H8g``%fbFDQ; zzV4&fvDW0u(XrO0?3WCzb$MF__^5QO_4n2kJdR`qgtH%THu&z~Eke&T*exYV(auNC zY}XN3sdVGN<&XH9@K~lS*ApJv-tf`(75WJ?#X9zG1`9jRR?lEzkGHikSlBc_{*j$` z1Un)e)g8?o-5mW57WPSbInk_3AVWrnUXxdi900MZH?57&EidwIPG}9e8dIDLhYL9p zPUL8zyzo>if*c#2g}v0V!C+x8Fj&|*1`FH84>MTUH2P61M^jgE!hm5@ij6++H_L!w z4|*fZX{J96n=1(i;vT5!eduWOEXNHhwjQCMxlX&(5lk_zgisPb@X|sVp)5S%r>ws^ z=eoQ)E1OiXKP!8OLCW4OtP}g$a_n{d3{ahweH`PMmtZtUAmOzt?Az@qVM)%C8ca#< zXRex19gg;zaJAPK>Iij(6CitDGa%aQ38Gy^z0bcG6z#)KI`W(FGTGo`(ka^1m2UrB zo4R(6X#%F7{QZ-V5<;-4ut{;PsCB-G92*c7$UB%SO6Q}o%gsvefm#FX-Xd^>7lSLj zgsG&dl<8OL7LtanfT}hz7~Caoy)h$@blDiD4A%j1fKG@6bP>7=)5K;5n0uXbgR?gx z(X<`UrgQBOrF;j@><;GIQZ^7EdfDn52CG|fZ$E)aU*y!7$JF9Fz^~s4p8YOjS8=J> z1`rP8~ngWo;N zKG#R@UJ8Eq3PjV^sr2r`8&!Pw7681rBe?cC@ZJ0EU)T@WzmeT%VoQ2A*rEXR>5cR( zQqzI#hg?B;(SzVeFDw<25~Y0SDudqrnL+Q)#mKdk=Zr7Xe4c5_Sxn`S&Jc=lL%1md z315}_2dS$4-xZb0_-=q7t%RXRO^n?m;7`1X9)Y^JBm7D6CLTGuc(a&lTvY@~sv}HN zQ>-O!6bIO9Vf5DWHDCwa*E6wYdToX8Stos0eS`G`e2#WAMZ^nz&cPiPu5=fq>#<nH}Qi z;z98OD#|>7W2qFLvua4Ld=GxBk6}eDL%!0N$nrR4x@Zc02VoyO~Lh`h2D z0hRJia(awC<_(;D9W`p@--S~rKHou@R6-^#_xj-JxsJ~qdmMQVeav$T==8IWbB>ED zI{gN4+IN7*z2|tKqSK!`p26mz^d2&73c}r|lhb3Ju?9K4Dk288;617BOoZs<^hVA` z&J>77PH(ND)7v;nbaZ-WP>;GjRUjvTw2B6;e;f;Lg zD(|l6eoOUC^#nj2UR19;2{9mw0;M9WhVp9C42Jsaw7?idU8wgs%QWU*AtcTqyOcBW zCIO-GdlI?s-UhCFE9`)#o)}-mU@B9QyQj{>@y)^!=865$*Q^0?xR2^*9RTDyKx+k1 ze`-CLbYFs-dq#z>dt(uN^@px+R)Onx;E%Zug0c=>AA@@>J`nRxde}2sx3ihoQ3eMLKKmMj&tAr<^9%ko`0PsnBh&fpiaP{ub<)J8 z*|A_2A2lCCJpKeC^4?SCAE8_tOTU6{`^34}K(}kjJzCO^if+f3BiLk+SdWO`tBDN9 zkjiiZ$qaQ|2FYE0b%zt0iS2vP+f!+xh>Sqws0PS~HVh3#TV(-)@s=0iB#JLXVJM8KVZrq<7` z4qt9e6l3Q?;TrgupN^c9nNZUaK!SP=R{S`%#MWGt*V3|2x1qq+1pI=xB>wxm|NhB; zl(j>N^(Wl|PKFM)FmnX6*XUIKEp;(yyJpeto8#x`W?HYp~ zyUJoJaZiP3YBI`8q@&~u3&cKfB`>hoa&%LJ2fbW`q_?A{+B#4czW`P7wCD1_c>+Ye zddE70SbtJnt`h61&@!{bAs~CdG+uRN7jO?bLGFAyB*q(xZsY}W^D6>>=#R1ggZnGO zKF(SZC`qKw*-B&1!f{k6Cig%Yb{tyTIb?lYK;FkC^k7%ac|evgb?J0_JxoI34INbC z(dqWG3fXtItAi%K-A&w`Wm!5m5&Op8X zdiEkWSv&xw>DLDJa5rjYl6_i4nCae)!z+c?b=isB9j=00r(b+Y`RVmoM`8=9rS!=9 zoAse{zH4|xZEp->LdB5sR2iQjgmhzY{|FR z*&;Agz2)epwUIp+s*qq8tCPfgGgWXYh?gTnrH+r1-ND~n{DTsVAX%lPF;zxo7rOPKv9 z=liaKuw<#ez;Ig&)XmBb(Sl`@m>BLD@}f>4GwPJ^qp%Fb_7NE0zaHr1YWmO1G+;mG zdcYI5P+Ei}oF%Y7gw@*FP@MY7BA>=`4EH$zvYEQv2xLT!LQd2eSVYss`sgF#Fy5qA zLe5%h2S3^;pcPC)X67v9WfIsn4oReRUDiksJ#nb;L$7bTTiZOHp&sas$nSP{_Wei( z6UI$O-q%!Qeoce$jkcw2amPkfRgQjXD zw1ppQDS}se{OLTRO-=rjIFr{GXo^E*h?I3nb__QguE?*DK=ln$sJ?~z`_6pW{3UFq zKb^~63ox#x9_bO&o!f%Eu7}9%`pt9$*y5%rYDmw*681D#A7tA}*2&f>)~VJk>nmH+ zfAvLq_59hxXuEWQV{LIZs+2;_?maWjX}QOI2gxXWc^Vv z?;!oaCfA;io2S-v%9PNBd>d+dxiT`_m}Rk z+`qg3a2N3u^F(_pcxrp7MNsZ4_sGq|6P0_STCFgTy zB;iw?g@){Ot|z?CpGqr{?v?{ve>IZcD5hBv!R)oJ-#mICviMVvxq)`yQO=3m2Y}RUBJ+yjlBF$Y+3JEuxRfAID5+X*ox-_-pvB~s{rO!NGNj_M3@>1*ReY3%+h>*gZW#L%t$HiR&CAXqoa7G~e)^CHMhZLTNM zDtjZbvai@rTqt(5RYF|&iQO=g_acM1kP0v_6;T-Ln zn5|vtbB-ClIc~W8a>;v`yAqC>c3=34Z@$NF1@PSx5D;Juupt8G2yh0h2PwNO=H*d2 z8@iK}zg)vJ13RR~c@MzW8C$iJd%+CgcAF|=!bcV4Q&z*sF2z|8GyK+8*XorWMIJ#J z_}-o&mPx5E7m%!T#S2&4b?YtbFV?%(Uoi*gk@Yd)@_$&LArSilxiqMch}mg^&192o z0XD16ZmZ{W0|jBCV+3L&tNArZwq1vD>ILTnSG;dFM`Ly-*IQDME4dTdlDnlPj(F#9 z2uSHgayHsD0+|<6^=#V^vmg_$7MsLPK^$ebxCdFR`!JHN4GTXW9WveDX6#(9zjPMq zmgl7lNV&WuEq7FP{_c6X%c_QUY&J>(=VM);80%rJHfcMj}tHh>F2VnKiykm!teU2yf{ zHMNxppYjb~AKjH*!g&y;X<%uHT+haqCbIWu1jODA5xx5#-%b#QTztc+N!As6eS97QaY6a!&P24}Zo8wIBorK}(ROb)A z@ZA=qS2p+M)O^m==RWo#EOkaai!|W#a12}&-$5qC7F#V0pMHSqr5(iEl5MSR0ni21 zs0zbcUhGp1+ue(O&FdvIklSObjYQqLNY$+ew?VSg>Du8cjx0Mm=%1NZoD2EF9gs2H z$@IX{-B}2s%FkULJeJcqYSJ@@<<(b1iaK*_?O?N)!iwSSHtw-JJQQD_b2C%ES;+EB3%NhhS*C7>XD_moIS@ygXR8-^;7Fg>ndxGwUO$M z(0m3ju*FySO?beN?nBA#|CHM9{kPoqf68pv^V%t={U0;h{Sw+Ko&B%L?3Bv>mqd2& z|4=47WwBERJ7up^;yNX*Q^NZHY_j@M(R=(adFoHq40Sa>{r^UKy7#}xPyg@I(?=tr z?IX;;@lQwpA5BL08rkT6sp$Wni2mQFp;Hq2f1ZLqF8(hm=#+p?>F1PuPO0aVc>a%R z=R3XMBiDQ^8aO>yZriq3ZY>9pbtC8RJ+9rcU^T}p0z;)cD5}D6MLAFlxgUIP(?6Nc z+y=zPkC~2R>cB~OCR;jx@ae&L#>AE6n_}KaGtB%*g=3Vo`B~?9*Vw9Bc}rL|UUz9< zk5q{Lhzmhle;5+`BjB{GCB1U4bhY!v2#Y$~UGl}5p|LIS>J@-wLE5;R!9!F4@oRdr z$wyNFmJQju516jpCd_5HirEa;O*b8FoCStzTa9$x^Hfkz8a>z(mcWw4=A)>4x&JDW z41Vf`$O)sQ_qp&6Y;!J0ZybkjI$_ZkM!>BxEc(^L7Gbw=07Hi#g-b#_!Ws3&=9qQY z6(-5IP~ZMUGb0w5cg?OgxbLk~C^hT<&9?ow*|sGPSf`+ert#S&CKVIy z>YEy1eorIQAC5lGP9FK=XUKA2Wt)wwcm>txC{+^C}sShwho`ZCfRTy-A zChW(E_=Ip?xQXgTF9k_NIW~AF<52n@NsLV~x3m)s?{tjZKakD)LnfQ!r4;1+4V2~m zA;l{_mrRzjn8BHVG>3+8fxLq*c>q#)-bYMk22cab(SdJ8i2EzcQKW<4v^=mplY^ee zzFqPw>p5!yU*PIC^EOuqDLGS2Q!#&O8bTtyOYu21CNr_zSxjR)kBMv- zp_LYioov044{HpJJQ)_vm?Zc55+~DGv-tw#Dyi`$y&G-Ou2U`s10AxMRCP|4AO5-Mr9tdt@;cG%h1a$g{??*0avD-m?Mz?(Lo(@MM05$=3TkpJT%Hx1K|u z?@)Z}2z>P?J*PYw2w74ldxm?l`+>WlCnHxIeHF2lMCL~ZTqYFIEWwWEW+8uTw|Nid zo$W*HEYExp$#l=1D_o3k=JXt<2G>}u(gY1WMQjE&o+I|MRYNSWykBftM>}t`oded0 z24{)vWbQ5(BQI|eU$(^%sQ1UHUc#cH%Q@&v++e7{zK1ni_Lf7(I{#>U^hVHP1JG$a6P@?}S=l5q3D* z-E{K|^Gx$B^KA1RuX!%!@5$!*h&(ot?pp6zYdfDgm$@3|Xy-NG(E@jYMslOwW05EA zb!T7-(iB9dvym~q2zO?wnjwD&K89c2_i>*dsoC-_kH=HM6X+?3#E_DnQl7iM#Iy+8 zUFs^ZzhZoGz639awuue)=+jsvHFKXbQ7Ckus^*RG$QzOGKM5&Wl$<@U51k?!MiC3u zrOP*#n$W!}Y`v;x+0pbJ)v+CB(`Ttz0ty5u>0RSznB?>>@xVRACibz*Oa2IH=RIaU zZarZ=X+4GJ|C9B!^^Enb^>;j%G$y{mwB-UZ?Q%3GUXC^0addR1BG>b-Z z?jK+p>I6iB7mL;G5stgQ2{_Z3c#an_I~cP|VGfD`;u5hZ8s8Lqw4;MMHK2=2beqZ| z|KH+Xi$`KV9)X`cIe2PFflPp7lnUq5C8H_hCH{|JEVJ)o$zA)zcl_te;ybmEnaZ3) zbgC0(Q8X0E(ksMnC`mBdUewV>o%!$%U@$bhfp@RLVw zv!8OoNXQ(A-pGr*=JA$I-)U`lo4ohWkl(#e9IP{YtyVC%G;@;G0@DlC(6l~rVm;Er zHvYwvq{phihEn+sIl4!YrTaQ!{j(9XzGXzM9~*J&m#D3gj|d^_UW8)RjFYdL011L=)sYOtsvB-w3tmp#xP zY%gM0;(jNFb^U!2yV!ZIu(ZO|Zs10QV33VJDmo5kM;A^W=n4xeY*ts*M@eSrC7&h( zs3P4VFQ$)4Pnb}AGa5_10y}*iBp<=YY;pOzD=e%?8vFpsW35b|VphgE1{Ln`cN2ff zW93M9SR3}BJl-8v+(M3xAoR}B@@jWjU%8kkY+iA?pH!xk*5eaHs-YfrefgLttcJH* zDgfHptQrpTSLjDlw$aQ~;bYNc>ui5%C+$ZaW?$4RIVb4}AyX|`mTAbx?Pb$7UzV!* z$YoKO?ZAD*4KNQh4>Au%((e$XI!RS&g7qV-uJ9_5!t<&cuRd~E8o8Ueo4T7Js@)wO zTQ5Yl`(n<;P~^5KU|;P*^kWaw0KayB<38`c=)UB>?7o6IBzN3*-MYs6+)5e`L<{CQ z_kw%Lz2g2l?+6LUyai4PR2V>#GkKh(ed;WVyZpT1&~}BBFqd!X=N;%PJg|gp2cKjR8dYh@mk%t%cqGl>wK z8O$a9NU4=1qeyl=EVnj&y`CCjvMK3DA{niY9*#$T>&fCt21BO-mc>$D@5hCq zCqB>~whDe9(49(V8bJ`&Y4Q3ClwciQQ zP&yf92HH&Z@&{DD%L>4asb-}(?*?`66| z@c8+C5UPHm8`BNTim<`;D-@=#?+)w*l1lv6hpX#*Fg>tr=eIsWUEdS12V4oi^^xlO zUQ916z4QD&h*Cf34c-aEob+2yx;&Zb1Hl)Xygs1v>iWK@%n$3rZ$0UaWRRr#VY$ig z7R0FQ`!oHq+ydGMPRy$+mRR+JLChd5ztKKW*T<>r2Ln|B)}-J1it74wCLPO%e(Ni# z>xZCpJUSu2MoJ1RSq0aCV&b>HGQowCnV}GLW`2!}G*&XeI>WJC>$e^n3+qQffIIP9 zPYNrU83{of@>^d`T|bH$h2^hsh0|jVO`1_dUGHVQ^!&d!_Vov(v67h#2)OQ;j;?>9 zuDX5-COd1`E`2?z>||ytMB{vs0;3;DR@ZCbd*XuW>q!A6qj=R!EQurL)juFblMK@R z94rYurmrW3lFZD7XrMBEJ?V#J;Bw|;NwtmYF{MzQmP@1cDRA@C<2G=E=KOESa37G~ zNI_jkQan4cJ%=UMdp{t>k%IY2^xU3${lNz<)b&~z^>@GZq&QMAz#@H7(C-IGZ=}G3 zM~bJC-+Iy;DHuYMqDu8!PkJMT2_i#+VKV$aAjOd)-!2_GI46Btyddw%3|+Uj7j<1OY&n&gftxW0*LOan7lCfY5S)y*9U@;12@Uf$V%|ZgL@Vm4kTH7Ikx^$A z;8i+9fH7J(pUM4Q18NjxZlSqR#~gt+p26r-4XQGF-J+=sc|1#Fi$v_TF?x=sxE{@* z;8US%TSI@ojl*vbHP_J#-PIN9s5?|lPpFOF&;)()boW=$QzOy3AEJrT0nB9dGMWjD zjw0*I=&r)v2JNY@L3?Vcg39Q-gH>yjUP%Bt5zLLSRFz>pSgODxpjy_o+Yc;+%OE`yhDu>p&LSsDLRY>jGiTz%IJ)= z){KsFDaz1<+(5t$PJ~KO+A&?5Kt6-2#dNQj%(sUd(sIL+Dr_X~K0<6)iL={v* zuSPHwkEB;^;D{6%FBSO?hl8BpFjR$~I$s`2DwN6gaTBtA+=OfsaT6l2UgIWY`?v|& zCgLVUV!g&q$o6p)vQ5NIh{Ae}n~?3}CS;q4n-Gol;3jz07aBMr+eF}m^7udnCt#^@ z6S7rqLIu3nxCz-lZbG)oO^CsIjhm3|<0fRAh?@|L^%^%JTjeIi;l0L9$X2-t74g0l zGl;+m**3E3()As+8FZbG(?n~-fHZbD_O*SHDUK5jy`iMR;~ zSg&ytvVGiyY}35x&^2KZ@NN+b16SJk_gJ#389>yXq@eBDl2)pWget+fD^_L>PLb}; z9FzWy_-X;T)uospvEny8mKA^OTAx1iFl-TMPPxy8h*E5rJo!SzP`)e|B0oP8zsS;q z4P@TMaA>}~>|#X40)?=B6X@WsP_!d4X?ZfUNWT4j{G2v4snLlK%iwQSp+ya`z-7XY z^Yf|c1jFqiU|9;A5r!)qZHPXj&Gdg0f~+VXz^f5>9$&(42%Mn(;kpd8dNHM~g>9%gzR zgYZDpV-|$w69gX#O`HmXwh6+W4MKD$2*zFz{1QY@34(Jv2)0rXZkOilpeK=@DtZFx zX`&|&;fo@;_dzhWf^ffs(3=OL(FQT}w3JXTTudyo0sJM&SGH6RQub7@*QN8S7nS4XxAs?dE9Do|yYF08 zH=!8+VU|ZLI-k`y;p4J=DJDnW{AIl$<@}L)PdV8&EkTmg3q=Xa<)ignHl^XBgu5P= zS1NBznC_Ns$41$dqj?D^uuxY_3N(QfRD^j;*?cIW6)zGhCRy3+NV@5i&kv50#8POv z;mXSk34BGl%S7yQU24){R!)xrYoLKLu4Ph?C?73YMPTbI4~tZBvT|PcBy{NQk|v2e zTvY@?nIralVcwAz`YtQKJ1*iKc~e@{VRiDLSQfv<$cgU&SFovdR8@9WyHIIIkI=e; z(ol-L#VYXuk*C>tb3$X4nzqQJ{EqpdCt2mPJ2INvu_$yAtK=4p)S<=m!hFzTIkbA@ zD;*4cKt&ffij3gipaGu@?dINGe+j38gXJ$5eHuG6^%>zOJTp_rb1qg+tg^Di@>JGG z6CM!RgI5W{@}r578bf#rI*WR^FnG2zs7J(D7C@9YS;5dJ_%{o%70t%iw>PWn`vUZb z_2|&_^%iw~7$ATKD_GsXRb4*_dD+^S1HOj@^#h0cL5e!=^JfLqpo9YGr1xl0gDqgx@B6!$c?PVf`P%IZAe^{Ro*;p@L6RQ4mR2)dRrOc&;B1N7U&0R3)x1N7S* z_MQ&$v?`L44>EPar2DtZ%*C6+<^pSh<{K7QValMlaT<=0=sbRcM05(qt z^qk+yOYRHriTDY+kQ=k2kAuUK-t% z!*FVtO0^uNf=6{QZ>9m}O@a-qgL&t$pRk))9n5>$56nx@N*&BAGs{qATPN{S%h5@^ z!x*oQ;=N;_csCd*UYXSgX2Xp^*j-}~wuaFeyBC-kgR#3BI6|GVyPNsiVC)9s`Xzt` zt8;bxv*TDm554RJR<99q33y%|vP+bw?;tv4cb<>znatMo(H}o##)4)@2FxJrXabw5 z;&3(l@S zbh}{;-EJF0w_HD>ZwqFS4?sDL(b>Ku7@gzWO&!kB`L}0hvHE~+f!t~>_jV>Mh}(q>&SwC{y}ypBS{@KM)?%Xu;5bqYPZ|!N1{x$)7skzy*J3;DYDk z!CQl8Sr1la=(u3)Z8S;+j59`$7md;5Jw~Sm2N|^BXI^L~9T!ZGk&X)4; zz=yasnao18>BY>-H@LRz(M-?#F+r~}*Z&4?xcya6cIJmvs%kU7j8Wll1u z4RWw{HCp~7Ik*$Z!CD`>g}}jT^lkvu&ifEADIZ|Hy&pn#Ou#u`@}We}GbR0Sx}Bj$ zsCnK~eQDGviE^I8_VFQECoogkK0c`GCoFl-$o}y_$frokd=TQueQ}EW*jyY8HCpNi z=n978kVLdUW{9Q=aTvOrErr?qwKiRg&X)XS^uV;nu57*s^)z}w@^_J^l`y6$=rhSr zHRO%ngIbLC7;D#QDYW78H`1nM@4R7P?1}bztGFH11Pu+n#0>{do+noVA$h1#UwrI*9;ai^(8tBInQ7r>sLo-A>U@aIt+Ocrrhc<+Ir12D^A34x%O4#ab&Nji!6oatw6w7z16r<8SEV zZg^I_8ol`cjB@?EZXESU6hS)v zIqYK9>XrA+kL<>tRZ3?^PGrS1_@n|T9Fd^?Er`6vo|acHj2xq3i_5ecQ$XpvJaRXu z0e>6jL`I8W;0xd%eu6K|$cdbz0e~N@j|2di$j{1_ZIOUL6Y@EXVY*`+Nq;UFLv(CG zTo9M)dtI6<%{_Zj1nl4E31OAwR|#S9UOLXx%tiIDT4!wn3ynQc92y2BnUDqX?#=f* zu^oLc9)NiI+X;9&{T8Orayxr!uPdMge_YG+7arJ;f- zKg1@HhnUC}70bP_tWc#M>4vSn^ta3vTh?$#`+ zAUd>U?7q1?_``^ZBvLlCDhU$Kw(wa#v~kT??L3oUG0Z}lbp>0&XM+nHf^EatBwQ-8 zh{ELGK8#56hOyync}PR3#nx=&tJ-d9(6JmPC1 zbmV#H{OCf5`Swc*WB%{;q_HGsz|^AJiFwrPDEoe71rvr#RzkiyAtI)GdA5RjJ?i2J zn}bQ8W86mVYW2iek~(}kk8n1MjaGlPKDKV9jx)7e9uD>2fTikS+D&bZE^Rsn1K%>& z7*@XhQAF{A)KaOXc$nIT zMdsJUh%oDCMG>#Zmbj?$#)%OHo%$83hAw6%JBL<=HKE_@_>UJ?-~26%$^Y8u>28Lj z#dc(eVKo1-U&D`l3|o?RI+CU4u5B34Ho~UwVq?sX^*uKxMtL@d=m`2^il~VH2jU1iLMhX_si>-<`2Jt)Q|J*eZRzg%Rp)=cjt<^{GQA4f9R zfXn2vxJBG>doxFl?zeO=|ZjkSFIj$V{ z2M(JacDi=UaP{=%AN93IDmhylw5NXe~3ORy}yr0V!b(tY8QY?%Ry9ITbi&8#Cx-EDfyNbEDK_N zfNx3hOnPs_vJjSb-_qe*Qa~#R>s`L3+qd*!8I1J>Xju_20(~nAVp$mP3;C85iKF+y zSQf#uu(nj%pN?qDdE2`L>^_`n@6zIY?OhbpqxV`kzCA7@#Rl8svT92$9N!+7o#KJ* zaXGc67LIT4qL^P4)>Ax?mK6Jo#!`#Mx5wqw-mB4gFFw%1@$Fp{C@hcnS~$MFi$aDK z@Sb9WwA8}!?OhZjjKO;fAktC`$G3OUJg8W_*TV7bT@+7@!+Q#DR>YFxinOF4CoL(y z=&ghoS~$MFD+DX(y%vsd?+U~Fc)X`@JS{0gS{X}T-AqvJo1j|@+5!XJC8R$@BP`3eCL5W2k&q0+%5i; zcYoiZ6`n4wJ^N+X{E^4y`}Mr}*X!)beATf~xNYBzKkJkd^OeF& zAAND-fO0A%(#?7wj32ybW1+$?Pbv`;Yjya>`RV9R-tcZWE_^&>f8}PsCXL&&qUhBh zYTT-`=!bnrik5p;r+K%faV5UVZ)F-=W$eZ3qX*~ZzW+krw{zEl=f7>QRB*$q0`Ir| zY+you##Qg*qEjF2eQ>q;={w4z(MvDh9PqT{!~7W=ufNRMHR{H~I!`+tDse4e=@}OJ z(#gK3bgvS*pJ&S}AvGeex!4#bplM`VmOZ9)ONo4BE8Ge1ha+ zzUXLC8;;5+w_NQKc)x?z}*I5)Cz zsub^3_k^VlqJ1qy?b!r0XsUIIsSo&pGHBG4_Y;O)m12~-Gb05)oHpmx*8X}Kg!f_t z9!i@ue<|$5$|&h`B2T*IqpKo=+1ql*RgptkjE2`o28jo;&0g8P2m@mwC$cL0i(D%w z^11j3t7GK2uOow$wA{#eR{RYsw#ip8fL1x*`hfP1e|LquN~_J0+Y8_txxb2> zU9G4Y7XwcVvNhchCmzfaxBww|_^T_Qzlv;BrYv174nqI5tP}>1GS4h6F5n7Kry8Qf zl#Y7O7D8LX) zp!peg^BZrHKfe)ENJ&hNf<2Qyw5otyoAD{w=s|<144(a68PX&wC_uj3DoRpjw2q1v z)R)$>P*0_>gC1jDT3W-k@l~ZVtSH|b6ZI8eo#`iE8I7GB9vjuCff9eWYSZ8_x-Xam zZwTJvkVt9d=Zm-_Cj6B|BiML8YMQ_vksqFk3YvEr1LeAM=}XvG+Lfr9@RP_he~!Az z-lLC;vOmk?Pej3eVXfAIeWI>X?p}@B#PZ_kVshs;0}9a%=_i-Ih>f;gkJ`o;#QNqF zqY8>ea5q}Y>|N|Q<3`jn5x>&nPx_U+QK!wk8=y3i7WqGwU_<yx3RCH zj!bq&uQhd3LwVI^Z;T z;f|icvSZ}L;}WZ01y+w; z9sL>0mX;GY;!XP6=mG4G_0e-UerrLCy!4Aog_L6(qpjSIEzxgr>?wKwI&77(EqW}g zl-dy;&#}YgE8DSZ#%IwsPRZL9oyM`t<+$BgmAW^2B**TRXYR!tAuqZV&pYOuwId() zCC-qw%W>b}GuKzxFemSuXci8bA^WiA@j+Z)wv@d5dt8l-$JNRyd55E4uxz|M{2BOK*l_vbd2A7XF8T$}o|E?p=S6tK)>b7#={pf8I zuicNvU-_JC_bZH$1HW2aO4G?NIkujBrAG{Q-z&zpSdnb8Ppc@oJ!+k9EO&^gC@GUR z*6LyZONH-=sPK&{-?fk5)h2X5;|ie6Cp~shCvkXyNfU-Em+n-YJBpQ*;t6#>_sE;x zjtaC;W6jF)uPZ@cL?4WjWK0Lom7}*rONy|h?)l=ZAYa*C zw*VWWq}-`=)m{(~I91)*+2T-jr07DJ<1%|6JL~YQ(jF0dasLl>ofa&QovvGjD@|Pl z{iC6U{^kE_p85R!Ub21uFJ+6NxB6SMSQ#x_3?GmYM;0F$Z)E9_(MASdlyc=_Vo^@b z9;-u{WclH8YDC3A^OO)uHw;lq2Gl#kiiPmHE+v=EuJCUuW$i|k(k~EQB>gU8W-)#| z6k4(a9q14v>RIeD%-cd>~NGQs(ca>TT6RfQA;C#Ky9`(NIeUQE^QJKf2djVa3Ddv4S zaYI6oVtY`ppGp2zNpRqyi`$Dei=Naw9w2}GIMPHqUKzPR)r+{!1EMdLy=|QhG(wR2GlT`cIPbt#X&i{Q~#|3<=#6`+ZqP zd(80gDEC+QyTYm2c=eQVr;?C0SP;jaIC1$;Ny_q{-U^Fio6bF!jE9y>ZrMiO7aVP} zHN@Sb@v)2fgO$6yoqV2ctkilZc`(N|QPy`z{*q;zDnmLY|G}~;%KjmYLN& zGb=SSt3_s3%gn4+nOSL>S*Xd=_v>L&ax;?V*yS#*B2nZe zx7TBpTO4pr<>QOf&8Ef8dhHE z0e2m2V|jh-fSb5K+I?&0yKlHZ>U~S~-M1FneUtOp>PUL+ksM67Si5ztUf;SryW-l` z>n<+`j%XC9X$rgF-kL9j=aNh>(s(%f7`k(F_?pcF$%*g+EP+dOfMakYSIej*+ z=z!V{X0S@y>_O{nN^a8zo9q)`#Pn8P#PoR@B!8OJCy=jJ-K;np_IX$~r`@Fy;d0W) zD}%M}Nkpn=pU*yEpDOMtBWIhHre*qmI)KfRmrw1B{{Pj;TSepvg+~=)ODW#MqZ&aM zt?DbOrd@IQ%1&%@x5%ihK637kiZ*4>+#zojl1t?@5asph4e}LX^N`PMN_2F;7kK_# zMdGCQ4hg@Yc6t-N%n(8$J=u27klRd`8@>^p`W3h%->y zT^jkIgx_H{+^<~zeAFhBob@=;#$J-$k!a~1Vg}-RNKFSm<&}0njT)9B&saYw*j$Lk zJn8*KRMS8VfKhu)zVhLqAf;Hy=w*lG2ZILNl=P8Z?=dCLJ51zFM6!`51;;`0lvk@^+_EI<{XvziQEB zL9H^QWKA7aHU3|&v&8;?)m;lvRM#2ivb(UmfPw<@il8niF+fPFi3!NkNDap5GPP4w zP?)3wMjk3?09O_fkSGX)U2u zLu1FJQ`^j>%zQIv&*MMm{*UiJ_sIyFd$hd9i@Qr3XB95z+!{a6abMBo6Xgj$+?TZQ zeEE10O*&S%HZH$dacTf z{!F{!otiq0rcP5WXx8MnW`u)dTv809Wr3~heS}ME)(NgwsZdh0gruhDhSTtfO&6$e zvgVLrZG#P3U(FLllU1W2&0A~ziPgVu97)jDN$Xd+*3wn3+S+rJTSo@Hg$;F?Br%S} zG8<;ck-l+VzFLWxPR<~%Cs^g#A`%(eHAlMwHhN&^a-I}QJ+r3LqLbQmk*_D5h4x0u zJ@x~r@{r-CNPhp?{cG-1+s;ZV-%f6ey7Dc(BGS8Dn?i|N+c=Ji8E?~m;loN+o#6tO ze0FMg!YKtz^1&``nPS{9_RlnO zVq@S4AwoBkkfpkG)|L}&Z1JY0YTY<-SE&xRq1tNQ^I@z>m1!&pV5O9Ib%pRgEeP%C z)D`-+sKhjCk8YZX-1vzz#QjUNPp9#u>a|896ZY!@DY>947)I4bV<`?>Db`1E!cCo& z5Q%;+lT;!Y)A4{(WcozxHn7cD$hqa^zGs{%VcoXwFsgiL%{YCKH~VdPQs0lm>f`mc z;jC`rRDByBz4E+q5(ep)Y5G^$=O5@Rv-Q#b?tWxIWWu?RF4QMRQMJOPL`C+*m`jYD&q)Vgc0;$%d-#?bgKch0KLs=sUhB?E@Pml9~?u(62FE<>M zQuPuuk+rt?O(Hq|>wIbIDnrjms_is^%b%}H68a2cA*x;_OfW_eTS@&4(xa^pAR7zn z$5M4keNC0H*C_59s3+Br$BrLxRNHL|#FciuZ`v2gj$`E?O%3Sk8jHCX)e~0h*oOU% z)HzNBxbMHSzmOtk1A3<04F9Bcrr>yviP(D3%=^%Zzjkaw-zmOgjpL~G)H<(4to@fS zHQYmcJw(l?(2F3z3&Y&bcVs$AVwYxvUnTp;u#u09^SM)7Qb*HwUg9%7$-z4cUpl4I zk_g{0{YKQ2nbY}JCSjw-w&0)P|6#>Y_8@e&*bVCf0h2H!)v``wwlmIkPj^h6p(VvS4_1UxfWOSE@ zcpwASHENpvEKd3F7-5Ge4LxmEu#oRmTKYIaY7^7TCmlgZhaCyFZj@R4BU>EGv`n(a zB6W?H@E;>DMa5fW937PLulo{_motJ^1@nEVI?X(b#*cpTV_t?!2d6Nh&nIlKb^4KW zt&TwYN-l52=F5wC3Cgsz+Zxast4nwZwr<^Q3BWpiC7+C|__T%}g97h2@#$DMgYXA% zgz_UxIUYgEr?!S*W|Gl6_*mS`%=kTj0%ubVT5KYsNYeYasHF5ShxrhcboXOE0~6h> z&-fth+dR>F9Z7WFbv_PR@-4Zr59vHLZex1`F4a=wX+AgeJz^q8)JA`h`=T{F21=u?8h|tDTkyUCJk0j(`tUvWW zC*-3hA{BNC>qjcC2)Eo?QpDI#N~roxdp_Fa{V#+#QJ1&r0ZTuWVUi~>Wk6ct&{%l~ z_2p=U|1iOv#RPxN&u~Hpt02cl8B|R6_mgtm7d2rM@M4OgI)arRFZpa4!3G2Ot5IOW z9#a~o&+jJ-w1iXj9di$(QV8w-aGd|Y2xuj8LUDnu1zm9{wBtlW$>12e(nC?sV*+|I zoA(p{AI3X@c#mey0vnV{VeyLBvRm3D)C=tZ}=8A zNkr9HvYq|tR;TX^_s{^RIcFL!N7ZOQz#NQNmN`?IopOl%01{(Il~ae^%+bzXq{HFF z*^88>+G{UoX_U;~?A*tOE}r3hTSnjA?)1jF<-c?8L_-f;w#!7GWw&W0wTd~Z$F4i> zcQQTb4`_Ab^|wKxT$W>$Y*Tz9H?ME;%Xw5bU>8P_j^oaZXWZYdx>M%i(Sfgxx|i?K zA3oNj5N-_2hsQWAaL4RQS-8i}34ZKeY4Zm1%z&aUNC~^pOnCgW3EI!VrO>gUDmghU zb({+uh=s2S0X_%Z0Ne!J0))rV4`q%O5%P!_c+?*-I)=^~5v`ZR7Q-#$62LORazH7d z46p*Q67VLV60nNQ9dOO2uZKiuPViLA$#3?%mXT?x(f&cJW$^eAKm(`-xbO3=rMaom zM-_fcVPrX=0uV-$7ezl8(*RxG0;~sY0AxW^HedlD1)v0^%1Om_mzgN@qQ8|?#1I!21!q_@MJzyQlzV3=7CD&Zf536y@1Y`r&$jE55BY4sq(0>V_5U>c4 z2gnB$02Tul0&)P2Fs2Ex5ztJQsvVJDEl_NektVgHj>h*m#h&upu^t|O2i%Dzzq;oP zd%M&%hiu;C%w`Td@eEt@Ar|q_4Avfd=KSyt%9hI((=6?V_ Cg;2Ku diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditorTWL/MasterEditorTWL.suo index 53c4d216d0912ba2dc923f29ead4648a753f7c4a..7786ceac4f569a577c31d14e80249a568e594151 100644 GIT binary patch delta 3755 zcmb7{c~DhV9LMjuJb0k=ScOysWf8>O0u&MuWXly?QWF;>9XC=kTma*tG?QkTa?;7s z8F88R(c-o*j9N`OX<2DjTG?pYq$6WFCaJu>-}iphtKkp(&3rlE^EtnB?z!ijd+(#Z z$*gZOU)gI0xDa<4hLNlvNsF_NnLCuDsb$-R-R5EC1AJhZRbyLW_Gw32HtHjw6;LiT z63T<}p(Y(-PqZ;hXWHYVXl4VKLNlP5&@9NEu-aaxc3R)tBmI3@H>|cGm-3BLhLK|3 z3aM3UhOQ2KEF=N>M_)<}ZEe5oQfQ3TA>ok$FPnyO88WOP;UD{{b5>iAkIjspGCqob z^%;bIG00B-5APNV26eUCdPOQ5X5q5JW6qf>)@tkHqiktg_S81Vr7PQ!hBt;aCWc!j z@u@2C*?0Gx<`vxOn-VI}T=&!4&58apLSWJ+aZUZ6?&4XE^wj)d-sLXz+s#=(`iaza zvfdpTq3fr{JIA9Fmc<>#_{+td1d-hXO@t523qgM641bX?~9T-anN#zk?di;+?D>QaKHhQ$mA6Ku?}Q6DW^Tq)15Q`ejv)O z!n(mb;2EQYar?&zTOf?1FM{ulacE zcNm5*${3WK9M>yeSfa2y!D?l|0m3-m5csYrvxM<{4}xb*62`^3?+&M%8FK{kPRikV zi02B6ho1+}xF+mL`0K*_9i9ntz%KBNXN5(>KQF9R7$@k0AAnNz4)Sy!g~}C4>@JL} zFw(k}i^sHFSLZpMEu0>L%Tg#woLx_Nj{2Ig-te!(Gu{%$_V?hspllJw8N4HTj$qG3 zCV~aSGx`eS@k|Of3f&hOCXlbDbV)1_#`9PttW+2$I8)dhGQFm}RoBgn(1!}%FhiBD zDXdct-B#!{huW>0q5-Bqx7&E}sGsg*3)c-5S^OWX$`itPhJJ+a zj`EBb`&rm|VO;Ht@H``zyz;IH`%Tz5wEq!oINgcY1&#;21>X;4yD&Z#bKw~QA)b}w z1pB~GM;YtI>frgJb_(O9*TeJSe%y;a1>Xp^DP;IRXJiZDO2DmNiQD08z;+1Ztal09 ztuw|Hx!*(2fy_tC3zF3XJ`kSqny|a!-xT(pFdm#U@I0Jnz4A^=-VI^gw43k&D2>p6 zmcR@(v};U(&Mz5kRgFEa)LpuCP=X$8^V3!1C#%H2Ygfk?>kn*0bX9S&pX!T2k~*4v z(@~4iZN;ORU{#frC||ym&5i_pbwaQ+N-oO%iGgQ~6E+Wi0z7YKs<656_e?w)-5_gltC@&T*te-GGiUWnE2;<34 z7nUU~4J=n!kuY8ZUpjMAcJ?SB#yDx30$(C*vKN~wtW;PT@@9tVx=CyG+RUN)*XU>~ z-1)L{za7tEXZhkekCL0rdkzHP*C7Zc8Q*=^Brnd30UHm>H6r2pU^12pW8Lm1hOrEc zyUHrBQGiFpD1zaJ@*+G1Qz15%Lu4@!H3MeLyRR58MPGRHTX7T z9dpN3JvX<;(Ct$eIrG8U#3+DCL|KfI_sd9-`yB*-L0Dg5Y)^#GL76O!Yn2Jlm?Eq{ ze1GxNPD?Qr{o)*floW_}#cv_66bofSWNaskgK{CVe29!o&r2{0Au@`0 z9s#AH(!p|I_-f1bVnqszk_&jRKz>jM!ZQ{LqhAcqW4lxs2db33EnazB;c=VBGs5_| zZ7k z+Lhtb(@K-9oU%e?JzDOkbk6WUb$z+b${B1^*2cN}Y>lxueeJl!HLYSBQv3}5+hF{{ zLuZ5;Ievp}_@Uu);hd8*)(t-x)|7cL%w3m{yH&KvX2#!kc031v8MAfEtb6ni zQ4W1##YDZcvWH`RP*djmAosH6wR(ONp+|F_%|};0;IJ>i+TQ-2DZ9>!yWz`yYRAr9 R)R*udSNg^Xr4P+-{tFNmS;PPU delta 3801 zcma)tX*xAF@e!M*X{}bLO&_V%{z21XqucM7{jIa@&}ol; z_xC-Y^SkGsdmi`d=$JJ+W*vRSioYHTg%&8KZi5QU=0#}-0yCV`)^mDRW7cT;7(n&Lc{AJFzarFY*o?wc`n zv1#gx|%eEe7pVLr_05ccNvh>c*dJ z6|ZLE<|=$o^Fhj7<6Tl-v`{Tm|KIp=1Hbc5<(Lk-u;^SL$^&177%S{%_&9i$I$?9+ zR}0%FjC<)p_-w>3VVs<9_*}#uVHxn-;aLX5EU1`x6qPlI-<3o>hDyUubRniAa&Wgm zLvnGpuzavwc$SsIZiTNA)+mevY=Y;pZWiW+Z;21$7v;FX{qP^avz!&i4$ldDU{-iA z9P}W3A>xp*)$m>LEC+<~CI+7QS+m2}X2WO0v*gk6>6qYy=du zLd#rexi`qEY(?%(h;32*Y!r5%u(fF4BCJE$I1z^nGDl;eRN3KNZH!cp_1mP<^ebnOWlWH+-!1eA8Z>Z%S;p z>0j4^ogAr6tXuEac)N#uH&Flj_2xah)K!jt&YQ{gYfN=Rsng%ss9g(ytQ(0FO$ou; zr0_Ha&~hg{2e(<+z3?5vwhLo>54;<3w=jNwyCttLitQ0LDvU?*QDKjTS#WCSKPm8# zBrZbY)52a5#+!`6vs@6?3jbSSe~4nA3%e{VfV{s7Q_0~6P6NXMx0)*}dC*uaX=2?o zMeyI0=+9r#&PMLkp4|nqQX1F;}o<^jlp23fe_?ob4_+jziMhth|sV>8_ zq~j$^TMS(kHWzFv&wP~jqPes*$rX>*FOAOq%)C=^n>nAET9F09bc!DfF4I?}PF5t0 zdm@szTv)ByydgQZ9<}gY{F%NvJnM%gmxqUavAoLM#BafcM;`9YGS^ynr1{Y?`({}Q z!|z4C#y+mdZ@m*f(#9jsHXdQJr4Y{x%MK`#*A36S9%1AULmcTNQ_Ng#yBuW7?GV4S z+&D}l!p%bl1*g8Lb*Mzv zfH&tnbCvjPOq>U;gvhuD$e6bQ;tjVzWc)s7Lo9rak#RdRhouV&&wL5~^-+#jta&yw zJ(z{OO=!wSj&e~;;-UA8|Kq+ z^jih8)(Ow=S(h+&v^|`to{Y+S3Z8>GD2#IyIYVzm<-N%~bFnRp8%Ld&t1d_ece;&k zxcnYOV8zqO6UE+diDG;Og!lOBO^eNFdsP*)S@=*s#0Eq%FVq9WdG8fA0>74xC_};= zy%GO|2$`z3l-ha1IPo$uHztcCYDPOp)Fyd_@YUk)K@5+qcZ<*TXC5*wEtgE?{TZgJ zqQyD7DOH=QWmokqbE@NtSx}s+W1Wf;k9JOWyl(3+@G5vO)~z%;QGbjvy(1a3bn@78 zolKyP1l%UaPI2nC+m^X$PwI4Sk91FHQ#?3r+mRl${g>;`el^LOuD{uR)AQ;*mKFbR zV{-G)MkdE z&5<38@I&#(%s^ptRMnGv1xz>d$h_jhl-kUxUI;SZ0#(Q6UX6SvOktplq&I76>w$Dw QqUp%id5KLpU2iiN087g-SO5S3 diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h index ffefd509..65a449ac 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -925,7 +925,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; // labTitleName // this->labTitleName->AutoSize = true; - this->labTitleName->Location = System::Drawing::Point(16, 24); + this->labTitleName->Location = System::Drawing::Point(14, 24); this->labTitleName->Name = L"labTitleName"; this->labTitleName->Size = System::Drawing::Size(65, 12); this->labTitleName->TabIndex = 1; @@ -965,19 +965,19 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->combBackup->FormattingEnabled = true; this->combBackup->Items->AddRange(gcnew cli::array< System::Object^ >(9) {L"4Kbit EEPROM", L"64Kbit EEPROM", L"512Kbit EEPROM", L"256Kbit FRAM", L"2Mbit FLASH", L"4Mbit FLASH", L"8Mbit FLASH", L"なし", L"その他"}); - this->combBackup->Location = System::Drawing::Point(105, 18); + this->combBackup->Location = System::Drawing::Point(105, 17); this->combBackup->MaxDropDownItems = 9; this->combBackup->Name = L"combBackup"; - this->combBackup->Size = System::Drawing::Size(100, 20); + this->combBackup->Size = System::Drawing::Size(113, 20); this->combBackup->TabIndex = 5; this->combBackup->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::combBackup_SelectedIndexChanged); // // tboxBackupOther // this->tboxBackupOther->Enabled = false; - this->tboxBackupOther->Location = System::Drawing::Point(211, 19); + this->tboxBackupOther->Location = System::Drawing::Point(224, 17); this->tboxBackupOther->Name = L"tboxBackupOther"; - this->tboxBackupOther->Size = System::Drawing::Size(93, 19); + this->tboxBackupOther->Size = System::Drawing::Size(97, 19); this->tboxBackupOther->TabIndex = 6; // // gboxCRC @@ -1458,7 +1458,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->gboxTWLInfoWritable->Size = System::Drawing::Size(451, 313); this->gboxTWLInfoWritable->TabIndex = 30; this->gboxTWLInfoWritable->TabStop = false; - this->gboxTWLInfoWritable->Text = L"ROMデータ編集可能情報(必要がであれば変更してください)"; + this->gboxTWLInfoWritable->Text = L"ROMデータ編集可能情報(必要があれば変更してください)"; // // labRegion // @@ -2533,7 +2533,8 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->tboxLib->Multiline = true; this->tboxLib->Name = L"tboxLib"; this->tboxLib->ReadOnly = true; - this->tboxLib->Size = System::Drawing::Size(337, 80); + this->tboxLib->ScrollBars = System::Windows::Forms::ScrollBars::Both; + this->tboxLib->Size = System::Drawing::Size(337, 91); this->tboxLib->TabIndex = 32; // // labLib @@ -2551,6 +2552,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->tboxSDK->Multiline = true; this->tboxSDK->Name = L"tboxSDK"; this->tboxSDK->ReadOnly = true; + this->tboxSDK->ScrollBars = System::Windows::Forms::ScrollBars::Both; this->tboxSDK->Size = System::Drawing::Size(337, 65); this->tboxSDK->TabIndex = 10; // @@ -2884,7 +2886,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->gboxTitleID->Controls->Add(this->tboxTitleIDHi); this->gboxTitleID->Controls->Add(this->tboxAppType); this->gboxTitleID->Controls->Add(this->labAppType); - this->gboxTitleID->Location = System::Drawing::Point(17, 37); + this->gboxTitleID->Location = System::Drawing::Point(18, 34); this->gboxTitleID->Name = L"gboxTitleID"; this->gboxTitleID->Size = System::Drawing::Size(348, 151); this->gboxTitleID->TabIndex = 23; @@ -2894,7 +2896,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; // labHex2 // this->labHex2->AutoSize = true; - this->labHex2->Location = System::Drawing::Point(209, 51); + this->labHex2->Location = System::Drawing::Point(206, 51); this->labHex2->Name = L"labHex2"; this->labHex2->Size = System::Drawing::Size(11, 12); this->labHex2->TabIndex = 7; @@ -2903,7 +2905,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; // labHex1 // this->labHex1->AutoSize = true; - this->labHex1->Location = System::Drawing::Point(209, 23); + this->labHex1->Location = System::Drawing::Point(206, 23); this->labHex1->Name = L"labHex1"; this->labHex1->Size = System::Drawing::Size(11, 12); this->labHex1->TabIndex = 6; @@ -2966,7 +2968,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; // labCaptionEx // this->labCaptionEx->AutoSize = true; - this->labCaptionEx->Location = System::Drawing::Point(28, 195); + this->labCaptionEx->Location = System::Drawing::Point(29, 195); this->labCaptionEx->Name = L"labCaptionEx"; this->labCaptionEx->Size = System::Drawing::Size(53, 12); this->labCaptionEx->TabIndex = 11; @@ -3349,9 +3351,20 @@ private: System::Windows::Forms::GroupBox^ gboxProd; if( this->hSrl->hSDKList != nullptr ) { this->tboxSDK->Clear(); - for each( System::String ^str in this->hSrl->hSDKList ) + for each( RCSDKVersion ^ver in this->hSrl->hSDKList ) { - this->tboxSDK->Text += str + "\r\n"; + if( ver->IsStatic ) + this->tboxSDK->Text += ver->Version + " (main static)\r\n"; + else + this->tboxSDK->Text += ver->Version + "\r\n"; + } + } + if( this->hSrl->hLicenseList != nullptr ) + { + this->tboxLib->Clear(); + for each( RCLicense ^lic in this->hSrl->hLicenseList ) + { + this->tboxLib->Text += lic->Publisher + " " + lic->Name + "\r\n"; } } @@ -3363,18 +3376,22 @@ private: System::Windows::Forms::GroupBox^ gboxProd; System::Boolean checkSrlForms(void) { // 不正な場合はダイアログで注意してreturn - if( this->checkTextForm( this->tboxTitleName->Text, this->labTitleName->Text ) == false ) - return false; - if( this->checkTextForm( this->tboxGameCode->Text, this->labGameCode->Text ) == false ) - return false; - if( this->checkTextForm( this->tboxMakerCode->Text, this->labMakerCode->Text ) == false ) - return false; - if( this->checkTextForm( this->tboxPlatform->Text, this->labPlatform->Text ) == false ) - return false; - if( this->checkTextForm( this->tboxRomSize->Text, this->labPlatform->Text ) == false ) + //if( this->checkTextForm( this->tboxTitleName->Text, this->labTitleName->Text ) == false ) + // return false; + //if( this->checkTextForm( this->tboxGameCode->Text, this->labGameCode->Text ) == false ) + // return false; + //if( this->checkTextForm( this->tboxMakerCode->Text, this->labMakerCode->Text ) == false ) + // return false; + //if( this->checkTextForm( this->tboxPlatform->Text, this->labPlatform->Text ) == false ) + // return false; + //if( this->checkTextForm( this->tboxRomSize->Text, this->labPlatform->Text ) == false ) + // return false; + + // リージョン + if( this->checkBoxIndex( this->combRegion, this->labRegion->Text ) == false ) return false; - // 反映する前にフォームが正しいかどうかチェック + // ペアレンタルコントロール if( this->checkParentalForms( this->combCERO, this->cboxCERO, this->labCERO->Text ) == false ) return false; if( this->checkParentalForms( this->combESRB, this->cboxESRB, this->labESRB->Text ) == false) @@ -3412,6 +3429,34 @@ private: System::Windows::Forms::GroupBox^ gboxProd; // ペアレンタルコントロール関連の情報をフォームから取得してSRLに反映させる void setParentalSrlPropaties(void) { + // リージョン + this->hSrl->hIsRegionJapan = gcnew System::Boolean(false); + this->hSrl->hIsRegionAmerica = gcnew System::Boolean(false); + this->hSrl->hIsRegionEurope = gcnew System::Boolean(false); + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(false); + switch( this->combRegion->SelectedIndex ) + { + case 0: + this->hSrl->hIsRegionJapan = gcnew System::Boolean(true); + break; + + case 1: + this->hSrl->hIsRegionAmerica = gcnew System::Boolean(true); + break; + + case 2: + this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + break; + + case 4: + this->hSrl->hIsRegionEurope = gcnew System::Boolean(true); + this->hSrl->hIsRegionAustralia = gcnew System::Boolean(true); + break; + + default: + break; + } + System::Byte rating; // CERO switch( this->combCERO->SelectedIndex ) @@ -3551,6 +3596,24 @@ private: System::Windows::Forms::GroupBox^ gboxProd; { System::Int32 index; + // リージョン + System::Boolean isJapan = *(this->hSrl->hIsRegionJapan); + System::Boolean isAmerica = *(this->hSrl->hIsRegionAmerica); + System::Boolean isEurope = *(this->hSrl->hIsRegionEurope); + System::Boolean isAustralia = *(this->hSrl->hIsRegionAustralia); + if( isJapan && !isAmerica && !isEurope && !isAustralia ) + index = 0; + else if( !isJapan && isAmerica && !isEurope && !isAustralia ) + index = 1; + else if( !isJapan && !isAmerica && isEurope && !isAustralia ) + index = 2; + else if( !isJapan && !isAmerica && isEurope && isAustralia ) + index = 3; + else + index = -1; // 不正 + this->combRegion->SelectedIndex = index; + this->maskParentalForms(); + // CERO switch( *(hSrl->hArrayParentalRating[ OS_TWL_PCTL_OGN_CERO ]) ) { @@ -3686,6 +3749,79 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->cboxAlwaysOFLC->Checked = *(hSrl->hArrayParentalAlways[ OS_TWL_PCTL_OGN_OFLC ]); } + // リージョン情報からペアレンタルコントロールの編集可能団体をマスクする + void maskParentalForms(void) + { + this->enableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); + this->enableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); + this->enableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); + this->enableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); + this->enableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); + this->enableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); + this->enableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); + switch( this->combRegion->SelectedIndex ) + { + case 0: + // 日本 + this->enableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); + + this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); + this->disableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); + this->disableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); + this->disableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); + this->disableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); + this->disableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); + break; + + case 1: + // 米国 + this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); + this->enableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); + this->disableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); + this->disableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); + this->disableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); + this->disableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); + this->disableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); + break; + + case 2: + // 欧州 + this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); + this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); + this->enableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); + this->enableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); + this->enableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); + this->enableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); + this->disableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); + break; + + case 3: + // 豪州 + this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); + this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); + this->disableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); + this->disableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); + this->disableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); + this->disableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); + this->enableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); + break; + + case 4: + // 欧州と豪州 + this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); + this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); + this->enableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); + this->enableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); + this->enableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); + this->enableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); + this->enableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); + break; + + default: + break; + } + } + // ペアレンタルコントロール関連情報専用のダイアログメッセージ void parentalMsg( const System::Int32 type, const System::String ^msg ) { @@ -3748,7 +3884,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; } if( !System::String::IsNullOrEmpty( this->tboxProductCode2Foreign2->Text ) ) { - this->hDeliv->hProductCode2Foreign += ("/" + this->tboxProductCode2Foreign2->Text); + this->hDeliv->hProductCode2Foreign += ("/" + this->tboxProductCode2Foreign3->Text); } } else @@ -3764,7 +3900,20 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->hDeliv->hSubmitMonth = gcnew System::Int32( this->dateSubmit->Value.Month ); this->hDeliv->hSubmitDay = gcnew System::Int32( this->dateSubmit->Value.Day ); this->hDeliv->hSubmitVersion = gcnew System::Int32( System::Decimal::ToInt32( this->numSubmitVersion->Value ) ); - this->hDeliv->hSDK = this->tboxSDK->Text; + // SDK + this->hDeliv->hSDK = nullptr; + if( this->hSrl->hSDKList ) + { + for each( RCSDKVersion ^sdk in this->hSrl->hSDKList ) // 書類には ARM9 static のバージョン情報を記入する + { + if( sdk->IsStatic ) + this->hDeliv->hSDK = sdk->Version; + } + } + if( this->hDeliv->hSDK == nullptr ) + { + this->hDeliv->hSDK = gcnew System::String( "Undefined" ); + } // 提出方法 if( this->rSubmitPost->Checked == true ) { @@ -4149,7 +4298,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; this->labCaptionEx->Text = gcnew System::String( "特記事項" ); // ROMデータ編集可能情報 - this->gboxTWLInfoWritable->Text = gcnew System::String( "ROM編集可能情報(必要であれば変更してください)" ); + this->gboxTWLInfoWritable->Text = gcnew System::String( "ROM編集可能情報(必要があれば変更してください)" ); this->labEULA->Text = gcnew System::String( "EULA同意バージョン" ); this->cboxIsEULA->Text = gcnew System::String( "EULA同意" ); this->cboxIsWirelessIcon->Text = gcnew System::String( "DSワイヤレス通信アイコン表示" ); @@ -4423,12 +4572,6 @@ private: System::Windows::Forms::GroupBox^ gboxProd; // SRLの保存 System::Void saveSrl( System::String ^filename ) { - // SRL関連フォーム入力をチェックする - if( this->checkSrlForms() == false ) - { - return; - } - // ROM情報をフォームから取得してSRLバイナリに反映させる this->setSrlPropaties(); // マスタ書類情報をフォームから取得して書類に反映させる -> 必要なし @@ -4498,6 +4641,22 @@ private: System::Windows::Forms::GroupBox^ gboxProd; { System::String^ filename; + // SRLが読み込まれていないときにはリードさせない + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + { + if( this->rSelectJ->Checked == true ) + this->errMsg( "ROMデータファイルがオープンされていません。" ); + else + this->errMsg( "ROM file has not opened yet." ); + return; + } + + // SRL関連フォーム入力をチェックする + if( this->checkSrlForms() == false ) + { + return; + } + // ダイアログで決めたファイルにSRLを保存 { System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); @@ -4563,6 +4722,16 @@ private: System::Windows::Forms::GroupBox^ gboxProd; System::UInt16 ^hcrc; cli::array ^paths; + // SRLが読み込まれていないときにはリードさせない + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + { + if( this->rSelectJ->Checked == true ) + this->errMsg( "ROMデータファイルがオープンされていません。" ); + else + this->errMsg( "ROM file has not opened yet." ); + return; + } + // SRLと書類の両方のフォーム入力をチェックする if( this->checkSrlForms() == false ) { @@ -4768,67 +4937,7 @@ private: System::Windows::Forms::GroupBox^ gboxProd; private: System::Void combRegion_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { - switch( this->combRegion->SelectedIndex ) - { - case 0: - // 日本 - this->enableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); - - this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); - this->disableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); - this->disableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); - this->disableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); - this->disableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); - this->disableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); - break; - - case 1: - // 米国 - this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); - this->enableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); - this->disableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); - this->disableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); - this->disableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); - this->disableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); - this->disableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); - break; - - case 2: - // 欧州 - this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); - this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); - this->enableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); - this->enableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); - this->enableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); - this->enableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); - this->disableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); - break; - - case 3: - // 豪州 - this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); - this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); - this->disableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); - this->disableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); - this->disableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); - this->disableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); - this->enableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); - break; - - case 4: - // 欧州と豪州 - this->disableParental( this->combCERO, this->cboxCERO, this->cboxAlwaysCERO ); - this->disableParental( this->combESRB, this->cboxESRB, this->cboxAlwaysESRB ); - this->enableParental( this->combUSK, this->cboxUSK, this->cboxAlwaysUSK ); - this->enableParental( this->combPEGI, this->cboxPEGI, this->cboxAlwaysPEGI ); - this->enableParental( this->combPEGIPRT, this->cboxPEGIPRT, this->cboxAlwaysPEGIPRT ); - this->enableParental( this->combPEGIBBFC, this->cboxPEGIBBFC, this->cboxAlwaysPEGIBBFC ); - this->enableParental( this->combOFLC, this->cboxOFLC, this->cboxAlwaysOFLC ); - break; - - default: - break; - } + this->maskParentalForms(); } private: diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp index 692f8827..2ac63b4e 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.cpp @@ -62,6 +62,12 @@ ECSrlResult RCSrl::readFromFile( System::String ^filename ) (void)fclose(fp); return r; } + r = this->searchLicenses( fp ); + if( r != ECSrlResult::NOERROR ) + { + (void)fclose(fp); + return r; + } } (void)fclose( fp ); @@ -481,15 +487,17 @@ ECSrlResult RCSrl::hasDSDLPlaySign( FILE *fp ) // ECSrlResult RCSrl::searchSDKVersion( FILE *fp ) { + // SDKバージョンはSRLバイナリ中に以下のマジックナンバとともに埋められている const u8 pattern[8] = {0x21, 0x06, 0xc0, 0xde, 0xde, 0xc0, 0x06, 0x21}; System::Collections::Generic::List ^list; - this->hSDKList = gcnew System::Collections::Generic::List; + + this->hSDKList = gcnew System::Collections::Generic::List; this->hSDKList->Clear(); list = MasterEditorTWL::patternMatch( fp, pattern , 8 ); if( list == nullptr ) { - System::Diagnostics::Debug::WriteLine( "no list" ); + //System::Diagnostics::Debug::WriteLine( "no list" ); return ECSrlResult::ERROR_SDK; } for each( u32 item in list ) @@ -531,9 +539,63 @@ ECSrlResult RCSrl::searchSDKVersion( FILE *fp ) case 3: str += ("RELEASE " + patch.ToString()); break; default: break; } - this->hSDKList->Add( str ); + u32 statbegin = this->pRomHeader->s.main_rom_offset; + u32 statend = this->pRomHeader->s.main_rom_offset + this->pRomHeader->s.main_size - 1; + System::Boolean isstat = ((statbegin <= offset) && (offset <= statend))?true:false; + this->hSDKList->Add( gcnew RCSDKVersion(str, isstat) ); //System::Diagnostics::Debug::WriteLine( "SDK " + str ); } } return ECSrlResult::NOERROR; } + +// +// 使用ライセンスを取得する +// +#define LICENSE_LEN_MAX 1024 // これよりもライセンスの文字列が長いとき正しく取得できない +ECSrlResult RCSrl::searchLicenses(FILE *fp) +{ + // ライセンスはSRLバイナリ中に[SDK+(配布元):(ライブラリ名)]のフォーマットで埋められている + const u8 pattern[5] = { '[', 'S', 'D', 'K', '+' }; + System::Collections::Generic::List ^list; + + this->hLicenseList = gcnew System::Collections::Generic::List; + this->hLicenseList->Clear(); + + fseek( fp, 0, SEEK_END ); + const u32 filesize = ftell( fp ); + + list = MasterEditorTWL::patternMatch( fp, pattern, 5 ); + if( list == nullptr ) + { + return ECSrlResult::NOERROR; // ライセンスがない場合も存在するのでOKとする + } + for each( u32 item in list ) + { + char buf[ LICENSE_LEN_MAX + 1 ]; // '\0'の分だけ多めにとっておく + u32 offset = item + 5; // "[SDK+"の後からリードする + u32 len = ((filesize - offset) < LICENSE_LEN_MAX)?(filesize - offset):LICENSE_LEN_MAX; + + // "(配布元):(ライブラリ名)]"を余分な部分を含めてひとまずバッファに格納 + fseek( fp, offset, SEEK_SET ); + if( len != fread( buf, 1, len, fp ) ) + { + return ECSrlResult::ERROR; + } + buf[ len ] = '\0'; // 後のstrlenの成功を保証するため + + // "(配布元):(ライブラリ名)]"を取り出してから(配布元)と(ライブラリ名)に分割 + System::Text::UTF8Encoding^ utf8 = gcnew System::Text::UTF8Encoding( true ); // char->String変換に必要 + System::String ^str = gcnew System::String( buf, 0, strlen(buf), utf8 ); // 探索や分割はStringメソッドに用意されている + str = (str->Split( ']' ))[0]; // ']'よりも前を取り出す + cli::array ^spl = str->Split( ':' ); // (配布元):(ライブラリ名)を分割する + + if( spl->Length >= 2 ) // 念のため + { + this->hLicenseList->Add( gcnew RCLicense( spl[0], spl[1] ) ); + //System::Diagnostics::Debug::WriteLine( "license " + spl[0] + " " + spl[1] ); + } + } + + return ECSrlResult::NOERROR; +} \ No newline at end of file diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h index 46cab881..b1bea424 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/srl.h @@ -33,6 +33,82 @@ namespace MasterEditorTWL ERROR_SDK, }; + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCSDKVersion + // + // Description : RCSrlクラスに持たせるSDKバージョン情報クラス + // + // Role : 構造体としてデータをまとめておく + // ------------------------------------------------------------------- + ref class RCSDKVersion + { + private: + System::String ^hVersion; + System::Boolean ^hIsStatic; + private: + RCSDKVersion(){} // 封じる + public: + RCSDKVersion( System::String ^ver, System::Boolean isStatic ) // 生成時にのみフィールドを設定可能 + { + if( ver == nullptr ) + this->hVersion = gcnew System::String(""); // NULL参照バグを避ける + else + this->hVersion = ver; + this->hIsStatic = gcnew System::Boolean( isStatic ); + } + public: + property System::String ^Version // 生成後にはフィールドはRead Only + { + System::String^ get(){ return this->hVersion; } + } + public: + property System::Boolean IsStatic + { + System::Boolean get(){ return *(this->hIsStatic); } + } + }; + + // ------------------------------------------------------------------- + // Type : ref class + // Name : RCLicense + // + // Description : RCSrlクラスに持たせるライセンス情報クラス + // + // Role : 構造体としてデータをまとめておく + // ------------------------------------------------------------------- + ref class RCLicense + { + private: + System::String ^hPublisher; + System::String ^hName; + private: + RCLicense(){} // 封じる + public: + RCLicense( System::String ^pub, System::String ^name ) // 生成時にのみフィールドを設定可能 + { + if( pub == nullptr ) + this->hPublisher = gcnew System::String(""); + else + this->hPublisher = pub; + + if( name == nullptr ) + this->hName = gcnew System::String(""); + else + this->hName = name; + } + public: + property System::String ^Name // 生成後にはフィールドはRead Only + { + System::String^ get(){ return this->hName; } + } + public: + property System::String ^Publisher + { + System::String^ get(){ return this->hPublisher; } + } + }; + // ------------------------------------------------------------------- // Type : ref class // Name : RCSrl @@ -126,7 +202,8 @@ namespace MasterEditorTWL //property System::Boolean ^hRegionKorea; // SDKバージョンリスト - property System::Collections::Generic::List ^hSDKList; + property System::Collections::Generic::List ^hSDKList; + property System::Collections::Generic::List ^hLicenseList; // constructor and destructor public: @@ -158,9 +235,8 @@ namespace MasterEditorTWL ECSrlResult hasDSDLPlaySign( FILE *fp ); // DSダウンロード署名がSRLに格納されているか調べる // @arg [in] 入力ファイルのFP (->SRL読み込み時に実行されるべき)] - - // SRLバイナリ中のSDKバージョンを取得する - ECSrlResult searchSDKVersion( FILE *fp ); + ECSrlResult searchSDKVersion( FILE *fp ); // SDKバージョンを取得する + ECSrlResult searchLicenses( FILE *fp ); // 使用ライセンスを取得する }; // end of ref class RCSrl diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp index 58ad6f92..25ea1d62 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -305,15 +305,18 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( for( first=0; first < textLen; first++ ) { len = (patternLen < (textLen-first))?patternLen:(textLen-first); // 最後のほうは途中までしかマッチングしない - if( memcmp( text+first, pattern, len ) == 0 ) + if( *(text+first) == pattern[0] ) // 高速化のため最初の文字が一致したときのみ全文マッチング { - if( (enableLast == true) ) + if( memcmp( text+first, pattern, len ) == 0 ) { - list->Add( first ); - } - else if( len == patternLen ) // 完全一致しないとダメ - { - list->Add( first ); + if( (enableLast == true) ) + { + list->Add( first ); + } + else if( len == patternLen ) // 完全一致しないとダメ + { + list->Add( first ); + } } } }