From c2e06184275d1a9fdbe7460955eddbdc8600b5ac Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Fri, 7 Oct 2022 10:45:42 +0200 Subject: [PATCH 01/48] wip pong local --- ft_transcendence.en.subject.pdf | Bin 0 -> 1316039 bytes pong.html | 113 ++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 ft_transcendence.en.subject.pdf create mode 100644 pong.html diff --git a/ft_transcendence.en.subject.pdf b/ft_transcendence.en.subject.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e1154ffc87d90bce31a89cba2716f90ffc8af9bb GIT binary patch literal 1316039 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
    ceCkXEoZ*NYYD9_ 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 z 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 abV;q};;`d#zWcw$Spb;PR@To^BP+F!&ap zZMkJOIzku=wcez)2zLK~CBd(y@@z!ZAy(8p9DV5BEH?Z}FLfeK>bXiBsr{|EjEto! z8X5EOKNGdml5ca_un>ccYqv$^ZRm`m;eNI3z;XU^YlW-Mjqypt#!v9aQb#mz${02r zIf>Ngp~{s9vcoVYX=aQa^)zilp6cQY49Jly%Emz)B6xKjQD+500)pAX ztt&LYT1{dt(u4hUF_jC**G`QhCNp`V1Nf?Ebxauo9_^6@f5*!#>tKWF4vVd5UuNcX z+DC%Dq3pHB7A_hu{5K6%Yajnbo`4gjf8Y<)Wl4A{lFQ412jHBoY7>|!0`y8?yQ4$c z<)d_ECWItv5}FHjMp^OUuoJwhbo{p1UlhIKo2_WD9x;vjREYGf2`N*ZI5j)bpEwaF z(abT3m4WEvasid0)<({+h}5rq=$IYHC|XA+qlLj-*`iUe%htfP&ztD-;D-PCs{~zB z<*|Lk3lTKhv>noK1gCEZq}Eo9a8_Rb&a1m2QX*2*`LD2* z!&ne<6lxrdI6Iowc9)I#3Yg{;6~3r1S~hDzx7-h5!HyTF)G;&ZVYWvVkgo8(iL<-L zH(~OZ6PGj>zf4m=`6(Y2Oi?9gFrSWRTmgX%-M@Fcf0I(&JtZR-L|;U$2C>#pq6C zOFHcu0l~9LHF5(XW}STVq2adGv+Tb>(VdI&xrY(W*@D0$ZI6YV1G{oVICH{n%0rwEMpiNwtxWc{idU z*d+rOwJ$Qor=oB?Pm$VKw-fRS`p=I?N1HFrPaD?RaW3nK#26%vmPB1(-ENmMR4*88 z7m-|ExY*lBvVxm>;`ZzT<#7=~FR12k#$1GNIb|EUC#bV{8}ClyA7@01@BMM6OM=@Z zxgvI`h^MPh9#t9C6W$0rN;)}E1z0(_SvlBM)*+ojqej}*uHWsYv?q@`GFFq=Cy8)4 z>UQU}n99qXUu;49FK5nGQ#;P-4vE{Gr*NIHVnVqoWw6729g^w6VkR80 z#57_iKV4j+2D0SRE3{)oH8M=&l7dBIc(rAUmuzuM&1vp*yALG6{oL52q9KC?2g4>B z#a3);?BH}w>&h?}G*Zmw5jD_Ja|~!f9Fb=-8Wh^rkF){sbU%z07QR<*6m;(ORSH%R zydu#LahxNyF2b-6jq|OaBQx-g+$mWpL&hyi?7E!icq#uUT*nje^J}uD{M{D-U0#dw zAc<+tSmEfYYE0HtZT3u>y|1!TV8Je*M2}2Q!L`}&Fz7A5$7typKu=?CQMh1VN^ewI z!2C=8*xWNH5ZCgsCO5#$k$B@J9XSuBI7GjWm)K2u5X`cU(<)YJvJAYBIG8_h!(&7C zCO|g?$L(){xUP2;yIm@3oBDh4kf9sqN}0&WKiNCmCD) zBLYuE!$PoUhb=E|FsfGFD{T%89b4pAwbLrs!1j4=qG?j8;RO}P{auJD)Nl?i+}jwg z+X|k1H}Q_9x4fmJgEK{?n0xbeR{!e$g3TuDUbu&oeXP@@A4oQ!@dbk_x+4nG%;CYH9OR&_;M<#YBLw&76Va2(A+pn4|$}iN@Bae z6?(k%r$;lXc4nhQ!H)QAXQTHbNV2fcn{XrixMS}>{(vJ?cm750k%>K86K9~!E(QVw98y{ft8`ftG za~|f)R{Phzgr@z6O^V7P{)wGV{>8$E$(p$`euv(WNg}@K%NH?lNNKYU(66}H#9Ve! zy=}CPybHTvR!@2Il# zMf%13>G(Xo5PC0Z2a$F!KiI6TTck#<=t`9 zy@vNjz#&aAVhqWAj4JU!p5!_z;*Tgf5e$JgF7Afrt`RHeth~OxsT(F0RbPUBa7V^K zIHOA!hJQq+w+vyw6MATrO}9lsay8cT$)j{$RZ>M24u6>TS34>A7rK)#>7Yta9a91hN5o_9k^5N#7nn1}9(YQ?EAPt|yj+yZC%N z8=EB1R}%25mToR@WNqkDFULSH@;o49`dT`PuPl8z$Vu+SCJR%mf> zuPIR->%xD*<^L6zm4x|YhR9FUoAH~b>xS?aDf@JDf9M#9dR4yJv5E=~yb;73O&~R} zJ_EN|VQfr3cKRImr((Zl<#H=9aDg3C=*P|@V~XNhu%k=mgq!&b_HDKg$Bnt4>F$o% zJWU);F%1V1Y)uK8u^9@*A7hzk#5^_8b_&VxIpi+D0L_hL%De#V3td52y$ZT6EGL^i z&CdgBJ9~ytE`X|(u8W+bi>{_&e;*U|p5o@@AjR%7W0Doct$*P=RYd+}1dRR^u|U3@ znT=?VLcSjCih1G1x@j}9?J9CB&giYsu;}z|>Sq6B-(a*{R^$@ih26dp)3B#DJ4ckK zyWpA%;-`>(I`7rUaQ|})pyxMBw`^5+-3!*g1f;No9TNZCZT552<$wQwn8?tHIo-|D z1HxTpwP6vw|6!#d1-n}7v6kZC>nP_SnDe?h+n*Rox~0cgd9xIg9tZo;^kyf}SqTQ} zDUMd-vKX`lK3$H_W3Im!J^U8hUVJ!M$bPt}JOD&aDg1@}&yfpuQC2EL%1d+vV30QH zHrjJ?h4IuKCY~g9?r~Rd=H%v(s?z6Tdmt(937K1&5lS^_E@{d3gG3BmaIjm;#A%Zw z#YLj<6wiU~ftQb9-45_F$faeEtnS2Z55M`N;E7_@Ht0N0d zBmmyZTRY`zIJB}sT6(s>>XFeRN723%nIWh5C&p*SHB`1ZU@-bL+9rApxvddP8XOX< z3h9Zws>RF8{NWQbZ=)WLkw9BJBKwsrAhH)_Tqu`kVU8o1Y+_+$FTvWBHLWZH;mFn1 z1l6C!eRnbT42&$pCZTwvziU>TA`3YSL8U1ob2>R5&Di9NaYaT;Q={|^VrQL!;~77- zdZsg(zYWS)`G|t9UiY)%$ zJInWn2j>))$-@c5d@EqEdF!smr#Bh;vvq z02aFiLMtPm=~2*+1Mp;IY`ZL$%Nxl4Ia)=3bD@$Qc(xLwH(wP!t0CLwtv+=k&%QLD z^D+Zz#uicRLbx|R6dFpkz+%Clk@eWFzo6<}-xLbcCm)MLEwdimgMpdlJzDe#oo%tHZacR+ zYX>>Xgw2mtv`v9z>~v$B{Wsoy@JWNvJ~vwh*?9|}xpU>QwadTWyVrCYjqb~|^JG9s z>~8bveV-Y(b6b|DZr+&mkSVtiRb8P5%ywBf)oo zg955mII1>mOKtuUXeKNzs2blD>W&lH*)OmCA-A~(-WE0G=rD%)1pOZ0j$sai^!$zK zdh%9I_tfi??Lr|n)ysnaw#l;&9LPgH9bqXDDH-!LF(n4z!t3Vi0K>{s9KxXUI9^$- zG8>m$#8`j+5zPDY9t5SD;6(=%9av1jj#m4&Q)$XK@o%cI2Djm)w@s6NVdKF8?PhUQ zl1l3bYDME&x9k&_rxL1SlU8%eEfvPh?LWHBxf59lvk2$@iBe0tpH8&0-}dt8OwOk9 zGG89bJ%#;V+pj?HFB@l9Mnb+Ja!s`zx)Z5otx#3-BOfO{lO|MJ$q=W|Nt~HLx{(AJ zczZTq_g|$LMy8rn1_x~j%edb&)R6xks&|bps}@U)y)fvw_E++4yK?GzbqXP|a=*KK z*k)j$)q5m`Ma0!%-_@H*~!tUU|sVa`2>! zn0z>POpc3wuZpsGb6N|H%U{BNAj7B7)9l9!RDbK^j$t_55Gg21M{hnsfQ@pIN$ZI8 z(Ik`>nib0Zw{IrCcbo;%6>jk}L z@SQCHtg|ARa#9PcHt0=3RfyH%k!vtIV}5eMz?ZAbN)D9ON@g>_G!3qX`e8>9-kmn7 zm5|KNeR!N&#oPVTXdW^$CDk@#r>k~gy2hFkG=-s<<;4>l zm*O2jhJ)l-S)ul(*d-ouK|bU4o&3|5w!numUCz8iaWrs#De&^Y_T=_t#re4dFBT}x zN-Xa`+2opMbd?29w~k;qkgh>-eOtW=i$hy9&or}jv)pI4fl?D8D-BrD<9zB-WNfb|1 zErzjg)~!iXR7ndzRO(bynwYoM1Az1C*s1}Jt4Z0 z=L0O|{R5|mZ!gcTa*2hu^tKHDOuD^w|Ea5Q1Jni9HP`Aqu# z8~dj#DtL#2uj+uJV7R1^6(?d*0Fk z+mv>eH)Y`mPuw>kn;kW&m-LCJ`~wOkR8t?LE0do_ z3xpk%9inw&dILZ`3%nIsRTknO?!5ADcS^-YD@QN2`3Bur;5!io6yb}fw3Kko+65uE zqhY(p-YTbZ%~xp6e%s$h6VoHt_VPc?f9q3xqHHp!h4w)g#pF zLi54qW2mt{TR_a^0R^m?qu7BI+NlqIXI|qFVuv|ro2#X!cYq$cR|VB=o5OsKm$=&S z_4D)iJcrQF=l1y6K?u-L`w*ulR)1TV?8p5dW{M1NJ~y)i;JEU(B``W#D3BiGOSS`Zbxv;A+so1afYh!W z&y#r_-L3qez~_8d;L}?DUj2b8=lKJ#yk%Wy-2{AdPlU2pYs3BNK<3u_n-b{rC3my) zgX9e?;zo{)t9CUsw%wc`uYkvr;O5ffNS9Z#g}SRppR!n9o|VuP{%htN9q+GgO&(7S zN8Rs*u2sq-*sitvx`2aMr@&Xt30r>r*tQEwIjTcl1V)(e!7#&vR&L_&0oTv6-ZsB_ zFu4UpEQ=Q;M^zAu;@9M6^(cAHBb@`N4AyzJJ=@a{86iCuvGdr!5+_;AUF<2dp%zIk zlOPqFMF3@yp}&$3R)`(ZQC~ZFD*3qtrES_$7+`dh@iSj zhsN$Ci}Li-#dNs-JZ18Kn6`o03jhr0tm)5Pa`AXExG-^kZ8d)#hRH~-d&A<7i{YG@ znvxet_v3(U8qoT>BqjNAFl;2bErp4RIwTbqrruqhhk0`qLkMR5w2zQ0(&Mxs{2Y5R6^wY`%E#Tr->f` zl+n`97}9R_>CbcDFn-fmbdcO8)BMfVrp+x5jf%q6W3Oj)+?23{{8lb!8S$|&|Gd{q zqf~)NIeuKXa-Hqh;C6q$&HHixmps8;AV-1nW+H1>nD&`|FgMYioLxu=jNklUOx5pM z1d>dGdoLdbzW0ac=D9plR$0BObC-pUSFH;;-Hwng{&dYV@3|J-%~aM?v8UDx+R?i8 zQP3BI6~8>DPs0wc&&iEasU%~#^|PYh8Qogf4$ph=RN&)f>Ju_ia8DL^% z0H*?<-;E53vYBw{S>w@$>~|f(x$+}SoA`~v+f{C-z~{T%k9TkvX};QgPhlJgF%?Ru zFRZfz9{j58OnTpYuk<%|Wln&4!%gAM@<5UbZ8n;XzyZX12Z1}io@!! z>Qf+%^#1vLF(n-E*!7sb8{w zAicHqr1-EECU=hbHent^PAMw1@^A#fIgdjuD(Y)jvTn83(gqB+sWmD7#E3C6(Qtnv zo?~Id?+0p%89%mcIm!_+P9ku&S7cj0x_5fEAq6kAuYtItlnSZvj{19K9fi)3Le|A_ z9S^sY9*0U|DVl_Z=~TAmtX~z7ekv{p96W9|$^{L~@^o;gDE*baugMQ`*ea<6Z)!fT zaM(HB&Y9-mcFHkwcE;Gxi>gT`j&|5bsPOHU_0f4*7|}^w$veTY=KLpZ*J{U092XZ; zmR7%Ep8u%ucINsr%%FW_R3t%q_GJ!w*sXh#U`g?0RI7P&wg3T}$qru0gKk#+jRAAe zDvf?bQYC}_MAN;bA0G^vP4dqjSUeqZ0I*j*I*Tc(|4nEgD|fGo7FrJ8`LRpHdO`WX z)J`2zSy(aq&=MX9WT};0R~!Jbk$V$pJCOSpMpg1sUL`*NUSb-!M+@5M*wA%mRaR%L zzh?~jL=fl2Zfr>~D;LYEY-eseaO?w}6N(7!%PuLdbd8LT|2ws};95={z+Y2Pa%H@W znoCN;+}le|v^+=GP?Z1jH76&{{JHW~81WOz_O}(V6jvJYqtoZ%G{$b}cVLKi3_K&f z65zujIZX9(NEcgk;YDjDPzvdBWk-_1c|&uos#j8$*s&G`^@MrC!F$5m_X6y6tXkdY zbT}_g2n;*@Q+IsW zej6W5+TKd~h3SW{nkUPVB3HD}uak3A#ki1IEB^myn&`5a@&J>PCk!KojLv56y#&L< z6`R9cRUdtWwMSBpQIU4*l|_GR&H^Lr{*j{Dk-qiiu2gIQ-z_cZ{8n$oBX+&>z z$C(H;+|pUwkM5=tVMSo0p#`toV@Z{v;iZ)o$AihXXRHqJ|9H@{a-#jZ7#`_v|?VXRADtfQj-U(jAC;I}N%N0ifmM zt*(EE13P!RUE&Bi&s`{bZTeMUV4=k8n(y*&ukWVZnYfmg7L2oLu9(l5eRVIuOT5Z` zNCw7eH@emr|X& zLYOS-f0{Q1nNj^D`-IO6!Qb+QGjq<~?WR7Q zkN<3nl#0~)yu7PuTcUp_8*~X zw}v>olaPg5PEJ-nC8(gELYKH8S6q7^QIPD=xE4{4&v*b-G8*g+en9RRb!fr?E0TiQ zRC&An+hzK6ByLgglXIn3!ZbsW7>-?LUoO#ExXsXu{xO;{ymXla13d5o=BJ3 z)lW33FVG5V{l(I4O8-lVrBuGAp@4FO;-puedLMbae&+xBBgoh0pqlybO7<&rL%l>- zbMsH5;2AJSy``<`LfAdIXk5yH!dtJN0+8$Q^y2q#lfVk_hc)u0;02ePQsf7}RpNjG z6wl4uOF4Mh_fkyy(f_wqA6Bl)KHlu^>f`pkSr|+c10&&P6TeDPQYOuZ&Uq^@ZysKP zo8iB{tB-?b;g6Gvv1Ur)M5+tA^?>R6Cv%M9EF>ui(Afg^J(6lUFy$Jv2G&_D6BS+U z^N7p6$Q9z}5!~e0WoFvh2szP-&jXvgB*>?j1^H&jW|AQpq48qZC_#NN8Dax;`)iE5 z;H6n!Z?Zzfle%Zo|K1{$!}}XeWu^s1NaXYwv>>;6AKh>^nASZlFl9Qrr@UyRC78x1 zCzPhNj}$Pb5akC&?4>9yYnju6%2j9ZisOCUcz*Qn-0owX%>7DgPUbxE^Yqu_P;|Kv z*~%O{(__dK?->|fRdt{<>b7WPVumVYilSBqS#zAIW4h%lwh?ZXC}9iKCach|h*9JZ6}%97 zBlJwMJ-cX^3$us+YWy;O4U4%8f{5Cm_J|&oM;Y)>N;)4>^76uF+2;+#Z(K_)I2U zMOJU-zY?Uc$v7!KIOy))`jlRcJnS#OnOq8jJHJ+k_YMyB57Snal|%+g0cO>k3}yqn z0A~bY5Qv}j+t?o(CLQ#P3&S8(!hxi-H->=T^~|D@b*RZUJXeFpmP%AN%+IE#H~0^Y z^hC+i*tr7Y=Vr1RPj#gXM%|Ujz?ccFw^$Tz*V>-PG9OIR!&lF%VN6(skZ6Zd*V<@U zcc60_33c?`%160{cEGi9g$siup=ZScj4riUdYpUhF{|KLFX<_k3L7ERxO^cJGTh_h zB(;i2C+vg3H-_$|6R>sN%p2M0@cAr0JibAKHGN>oDOz}T#2VU2;kafB^xq86XHX%( z3;@hHhE-a+ywFQHrLcVX1HJ0|NjemLby1(x`Jz|ru5Xc78iDX=8y^7R?=C@8wwa&Z z=wNKteF5_w>W52T95F=AFXn=tyyaWUuNZ2`^+L{!Xb}52b1z_)6WDv|{B(Fruq{YT z!OxN+#=M?@=Qv`HDS~5seKIoA`We^x75lSsPHN+q6X@T@ z73g*7EUMh2F@kA(9#E!!=jZ=;etQ0ure3ECr(P#IWj5C1DclavRb#PI<3W~I_E04U z;#KNrLMJnK3j#djn;gSy34nW7&A%VAndR6bj`1>nAQKKL3X@??D=~kGVbB^{Unuu6 zA~Mup-Dl%yi}>hr5of{jiuXVlPRGG5f(?lOtA@vhVOL9*19cEjwmj2im#rDTyl)qc z6D!Mn8rbd+a7_Wqo8MKdbguAvqy=7Nw&UPyE!xAaJ3>7C*SCw}9j2ade#jDZbEG7^BqM}{ihjF}W1 z_PmrV!r~e*O@5a*lYPO8>W-;*F;b^ycFw474egR`w;p%4pfU6{;N~#l{@9BTf5bZRJ}#h zc*@G{o&I3$?0bTRdx(m~_2k1rV4%?3t7yYB#bWE7*OdTGl9cOKnFk4Xs7=$|rde&S zP+Jee?p1d6!}rgRi7lSPBM+{o?_@(re{?E{04Rp~f}gkGt-Sv4@8y|V$yaJ+9sV~j zPoUSMtFE_;ix)s+-rMi`RmJ+OsV`3u7O6u=>-N5GE`9;C{Cw7cn{{;#0@UC5L>L%j zYgOt>ZDDYgBqJ?5v`rB6FkDLj&IZW2DM@Jm zzY)fH+9IR5l&cQi%i!U7IuFB43iNt!@3sk`9K9S|tl?f63it-J1ujEOQ72~2^t}%- zs+uVf8FwG7=o$q6^YXUx$K>zT;oA^~^`Q~`aQNN zb|P8pKlc> z<4%5eoaKsQ|MD?_w=O$nF|l-}Q8lBE8?#cR8hJn@$@67Q;UC-6R%>T~L-T?Y-2p_l z7Y~tU<0z%ODNF|r*Qcr++f(OgA+|A#=L26~g+6MJlXUc7tk5UXG}4*PG2LqgYy0F) zLkr&lZKldP^RE;4wn^0j5{xzCvYLe;>O&sd#l=4*ifAc0E)f~Mnd!DmNh86x^3>(D zt(zFg_fJ$o5p%tZR*`{pPdYHSgS@|5j0TwM+WRrBXa^Zam_`Ctf}^&6fZZMI{J!fY zB+7zI%zzLw@>yPn0mG51-TA$sNn#QL!e)&!6qif5VpJ3%1wFen2BjPU|NGyo0i;4j z8CJ}`u$#Lm3yplqBeQ6qU(ewU_!xC?JVgviU7%}*!`=AwJZRyUAx_XD6Ic1uLMX={ zMEbJP*0Yv5HVW6u6i)c>_$<776&)nJpgvniXwuwu<6xYob#v^vLM@g3AM0eoQb}} z9k@K#FR9C`_Q34yv4Xg`SS$C}D}$X)gNG@veWxCfn_C*wm#z$|-r2RNH5S9bmo+EQ zXV_Js*VEw`c=^WGvETcE=jZin;LF=Vdw~aw*ot5Pxq^t!pJ_%d-hLW69jX&V|A5LSF8VACHLG6E%i?KZ^gu8I94QeB??6ZA+qJO5MxWX61DG)7IZoY z-(iR#0IJ3G=@?-aC`uL0^@ssIUTqH^?W#k$!xKDc5W1!qR2mb|^FZBt?MrpLM7Mr~ zUXCSOEyAO)qiQEZ|ButCRITdRHaG|k6vWt{dFk&-cp@1{6>pmcOP7a>V2DjvStif*1dwz6yJeef{5K;bqTzsgH-OK};p4-?0H8p9;(7t% zS|vtI@Oz@qPuY(eyOgF8*U^*<^-3q@Q@}6Ng#C3(Pez<@D!CcSy$rhwU?p%J1!c}=H!v!C?2;5C7UMce2OFi* zoTECwH+`?p*pc&f6~Np7yO(FnY^mmW9&4Jd6Q1f}KUF1Hbtj#edUAL0{VY!z3|DG3u56`ir5?qdo8Cuo%E(_gC!|lXKPYbP_5Q5mN$2T`eDq|9%W=ZREUgA<#jx`UPl^=u zB-DIiBl#+7MzVSye;Ek=#P$8|i#+A*jaTz(3lE=ffcNX+z*_Z||J|C?Cm17WloLD| z%hL6EA^f?6`uTW!h;50LMrgLEB3-<2p1&e={;2pA2LTErj%4k<$eRD6YIfz5XMRF7D zq1OFEpqyO%Z+1000`nOxyzaYy;+?Nlay{u06Y+fXA5@t0A)^Rx3HNxv?mpl)r%pZT z8OYu~z`2$-{H2f)N^W4s+^*?ifrroYSr_CvA>P$)c}^cNngD@M`ZYqmoDIR~6f;B2 zm>>8I!u;(mJiPq&fZ7{q9db2t)pq?0mvrvb-hVJE3W4P#*Vvk~4R}c2GHnBjo?J}> zZrZliKMM^%w!%e{lAg6P!r$%lsbZRSm5cb%FaAqrb6=rGD-#JYrN7ZG|K$OFY8yu|mAlY<>^j{<(Ei07}n8#8@ zA?Z|NkH`L>^y7MR8Bcz+^!TGVpOLTb(>&HNo$i$)S#z{{kxF$2mn4lzmCr4`B!S%r z3ARV>zbP#b{{^)wl1H<&qr5_?Lv;6jvA(jmcdV$WWD*9dQzW<_SRz&bcBaZ%_)U&4 zpOSbYLELEe&yDmuY;fSgV}yjc*uq%TXCj$eyTXFyDOqgJI4E>Jlnoe-!zd#X`vS?r z*k132@wt1#qupt-NA&>FN3?G=_ij5VZxz9xtYFYgCzmrPG2Hhy1~c`gRL0NppNF2l zf&KGRgIQ)hO|nDO)$SeR=V%GU%rB3*z7ONjzyr1r0c$I~6~H7S^?;X)jC>C6q4eTV zt*|SjkbhlAdoA%kB~RUl9K#1N63cH+HQv9gA17+!-Q%cc!7M7mvQpVtN#ftEUSQk5 zn<3JvXV3pFJMxr~d9$sT5R}n$Wg`BGuA)G{Tliw$hMCA+)Qu$$Dfi;?JKrIJ%LIN> z5ce=>E_YDABaFU#{}vDpFWJriW$%4pmquhO9};ycUVd$DqIaAZ7-d*wJ; z{S)x{uMhNj-51!=5um{WY;|Q@FI7cl(MBqXLXeCraN=+D5j2AGf{Ntll)ah|HxmyO zxI5xncIVB+=DFa~)rR}FZr8B2-W3q=(2>Oez0y0JvtYKHeV~pT(b|(mgr_|Tk!$0l zHi7*YkFY-5wky2zcZ5Z-Ii!J2!x*4KzDy_C3%cGP;_z_v-{fJDmtd=hNAnUqyC||3 z&bQ>?P&XLY5Z5;E`T@sEm-$UF)`DM{4-Wo{TdxAf^ZNi4oQ$t48`jA}hLcgp`|ZS1 zDh+O>tYCpuh>L8xJ9<)sc9yPwHuH4YHO$~jDYpxWb99i)(jy9wyAvk7{G^s)6>Y2+ z?>VP*n`F5@|Aug@Kxdx#o@`|nQ%%u%p9gcSBIH1!eJoQY1f3!Fy_xr;Dk0+>W_bx@ zQ(Ld1XU}RkJ}Kd6B;UzqQJotk?H^s%VvIDPAGxVvb(vtSj7!}@b%(=F~iwZ@Byf5)Y;nB)YVb<;clV*w(!>e&kO%a1NXW&KOyKfJ1452U$w{XSrI;! zL*d)C6sdndJY#-k=@{pmooD9i?B5AcL7)aV(_XB{)uV}Ki67d}14-Av1KVP**DXa_ zJNMojS8pP(l$ii^K<%Tyt2XCg(>MNY(MkzhDk@a2Z)*tRd(WODyGC;!4vy3XqmssM z79!dB1XCR{nzQ_;x#Seu<%Fo%;*2nNgSS2jLq(B0M@KILvoC;0WZbk+5Kd$F_?@ZL@u@ceWY z_}TX`0H8`mZS5R!K0m)cpO`o+pOZVegXvFj)uo-O_(fQK8sf@Dpj0a$TUmXh&XqG- zJhIkm;6T(M!v-t#M8G7kST$9p=rdHR-8LkmyNjSUpvOL}Kh8vXEPhX)+?|#N`j>QLsZ(Ig9qR0JtVCdDwzw;P4Z{uea6pwCCsM%Sk# zKo0FrG#R-7@EuTw|Flh>S-5hqotHxxE^7snr5dFMRlbZ$%J(K*$WWzsNKRlGvQrH~ zW$uEouD$+-wr;7HW83;;w$A_PnIOP z&5;+NZclo8SAFtHg^-pMVn(4C4*ScqpT712n8n;wtO*!)WffgiF|z~;S+=#@`Tpn<0^pug$Mg$n|J9n=*!0wL9HlLNOsNJl{4PhsdwU%- z+I?hwC6tr6Cn^tnue0J3NoiV9dFCYK26Pn7v}`FdRCcA9^9D7DeGF0nmOTIQZq0Ps zIr<<)GILJF`pB$&!7Je-v8e=}Q@U-j(n7|`uBkeAmH1@gBKbu96DSTb=mU9d@Z?5L z9g_ML%?1dwd+5amP*gsG_ZgO>X z0S4&*4qW++d4DPJZksNvO7JLqaO~W$Q|%X_%kJTxogBouxw@TGvV7wQR~z`{Cw#(& z+#XZ)Vo1&Q`El}^5s*ED9vk~8*8KQq>Rnke`IC4EwD-vWGOkn=NaBe#M>OW!e7y<0 zvU`6jFnaf~GGoV&fLQr%LQ7pgz#-D&7vTOekqUY*1}phs86)uJp<(DcP!=yl|b4Bu)#vK-(_-Pso+G7$itLI4~yzlZQfY4#w z8R9%!w>*c%Y?j2?`?~?n=aee4_|!j^hn+}%oNdIR_RiWKUKYn%gw>7pUjJ_N?zflv zqopG)9t1oQuAGuX(KGc=q-Ux=TT@$GxIu{TS5U*-t^D$H*}8ZCnIZ)~e}K2fcZu6? zCoF-Ntopy;B!B%~9BC~Q7ME<4^%a3Vky5{j=TVx9p7*;OT$Se%HUe~6tH2;y5te}w zZ)P7v+ryz~)ZpFizlUa{&&Q23&(}&v)}#@d*%4{R^P7kTx8eUs)LF1a0WIp9lv0px zP`XRH1?leYlJ1fiQluM(M#-UJ=o*yn?(Xh}0q*Q`&$G{uSkGGPtM`~ksRE6yVD_~e zyNYb@pLG;zpWMQtF+B>C6UMEAOpTvS`i+T^zC(1O{{Ag-;`{>|7@aJ})=`HAykG#- z_<1-{*v)4;lHH3r?8AnJkfm(gg7fFuy+ds{9R@Kbl}Pb1!4D$UzqKyt+VDACIOdoMJlRsTk!MZ+(x`FA+={ARoit7c7iX~Av+$%py_i` z-~UujTLGo>;%|B>4-M6}{+exR`+6&6gmWD8g--vADA?F*PTj9(Fa_O(ZfhYyjfjsr zx>omFl{H7wvr*OPY(q&rMYX8jySpl3-_{{M7dAPcY#D04L1C`mai$V!Qp-)zUql!7 zWtJaem!Qm1^uY9o`56hoO(JT#LhIB0m*J_!U#YxrnDxhNz2>;Ga}PX=P$B2dee!l; zAd5rcj&Ig03%1^6L$N7i>{>8-C?woli6D8$zk;nvEJo0j9?rAvq+g(O1RucCy#EYw$s5)14SEC812x5 z$+;!LwZ2Pnpy-turlZPqymA`##v=wz3|91oGp$M2xD1a;PdrBW+a7v`?t2sahp9e@ zLHRM3^$X;G#m{86X^zB>y=JRS$H0S5QI8zg3m&KJX$Qxr{k1$@A(7SwSH`aGIP;ac zpA?Y$eV*CF3ym3MQ!W(2C~IZfahK3z=!m=r@XgQ$lE3iVAPw% z&K^I$lqzVweG--J695~=UWZPnJ9oBrv?E8~lCZkX7nZJD=2iqI0kc($Xgw`xYrb~b zeopP%Db#0xJxFiQZgtZ82{pNloDmMX%DUuKjVDeCygrs3=y$3P?s9ylFQHCD<&^68 ze;4BmlW*Q5S@0^%TGyhZvst+nVz&h_dVTv$+p1bY5Y_8I-~jynJ`>6MRp{6N*w^OG zfHTmcwAY<-eN2lC-Pt%O_g;qqs-v}wa(8@4$kYln7oBg};>O?(af-ekdDXtxzjRmr z*a)|>;N18I4}E^7yfetr^tJ;idKnq^>30~{;xqn`Ng>UP+(6qT6qj=VCLBI(g%w+M7 zeD{rMH=ok#w_;2;lzBF&%4k;{e+x>z|LG0AlTn5-E&dVz@|}@!XVM0C2@C5h4x1|_ zCr{K5BQ`nhBw<61w~8z8E{I=YZ#0hGj&+g#k+K;YBc_2>Us<^hArVGkSvOL|yO61Y z7!mnH_A$E=N{;-cd7FmMz}RG%WP0CdRv{0x}7N>=o!nLh_ z+4jEC4VN7xEAC%~1JaE#0&BXc_mC#kS$0FDk+qq?^3S(2M4FN_Z^s_z0#<|`9ltCR z102vuB?KDrY7l_z#e(x@*wlbP~j z`gw2MU&iV=341QP`{I1VHa+X~)Zv~m3&DZOsIk33W)S9IV7!qur*-c2`tFuE9!-sM z%qUm`b?SgE>Q9@(p6H>vgQX@W6VwwM$uxi^?KnECOloH;Ep0{f~C0`VQk+S9I<8j z3bGvQO}>>t`xv2zZhdlVepudQ67W2Gjw$pEOt3WPgySk^c(hD{#_@M2l87x{lmY+r zP^x)K<@7won(unNAx*4SHZg@u2qbrF%9KS*`4*}IeGoK0o!pnYyUZMJ!b#!w+}Qeg zI=&pDd(NLFvPq}*`K4ShSMiv@;9#rXZx5qw=a@?(^7dP7MkCd&qnHEIW<1^PQ!06 z+h>u97c5(^Qkb5M_3^&ytds;VH%L7GDt$wGTekNE!4PbV(dC5uG9@jRnX<{;qUrYO zLnX-gQUV|36dKU6(0_XNvmq9@jYF2(wg&J_C7C{(Gx8ITMU`%l7Q8Wqbe|oVBP{!( zZAQ%ut2MGwf>}Y!BR~H5y~~gr<&bci#Uq=ns{=Yc(xj)oMRjaUDE_UfGnvz`WJEx)AF@*rki(6jcu|-(eei?4Y!^62F0d{+Zx@l)9oI75oT(^G#WiS z7Z%|k1?e(i?J%pIfgf=wJL7Dc#1C67FUND38wl_Dw=zhtu4>CvJK2Q>)#0rC6HRP~ zIeI0Y8J$&VmuZu4PNhXn`h)D3bTurc!>f-u#8(Z(qkU7s>N}HD=5397FoGcxl~C&d zXY=CZa(mGT=47pf3z4)20ZzR_-RYA}UF(z`DA;5>PuSG0NaWAH%&XnJMOLW#Kjx;F zOnc0FtCn_-14L^REg=1;9MW0;(_>Q0ZN=*Ie+YM7OSOh=UGFYoC73Z1X5jSI#MjFn zVf}vUKzmj})MeLh@SKkJg<}HTbsw%0Lvm{}^7*>`UiYhY{Iy-AB{{U^s zWDhPD13Xq4Gogrx=HnJ0=$2#;Ci#6)8MX+n!84As!3MR?@W>@Y9k|z6w8lZC_hb$X z8!_}#b}NY_Fn^WqfiE1tYAnx)!bH<8oM=BUgn2#m1^LO-qEkKw(XQnA^m3JKbFn>P5IP>^V6o!K5TW@>{iQ8|?=a2iM=-)jc3^wz7$| z_v&l8dw}otY1_Fd;L^8Tf1km)OmS^l^>0N_mhx^vTT=^bE5}z9(r-fEUfBlA*v|P{ zRS16Y^AW3|~zi;R79xb-ih_#ew{ZkaHJWQB5w1Nj^zK^tjE) zx$%Sf>YO?2$#2Dp;^JY>*~E#xoFc{iYO%BC+~i;!ztct&;-A^Lf}42xC;x;-8^FhA zZ4MTI%7^*ND%qaU&&%i06~8<9^OX1J;>KfbuxoHVWGW<%RRK_+9}AQmHY_6%pXT{I ze0@23wuws{8o8~Wtv8y^i+4SuQtSB(D}{X}1h=y#k1_^Nelcf+`=*9hgZzz8x}C+Y zb!;f)0xCGsDMBiI9fcfL$~AAsWl^eFuSnwQEMl#kyb%un{i>cxpidozV4PF0OATJk zqMrxNPv@ZZY8PK5OwXvg)v}^9TQ*L?LL$_jhh1~|k5r+RjnUI7F~Pa!wr9l(KjikQ zL@X;{U`(ys7L<_M#wGhIH==-bUVnlYorn9ut!~{-w2$<^H#Y4p2o(f9Y)b! zAA>y&kRcaso_u?(LIzo2<;Ao5AYs&@VjS1r))rj^yG^7t0<`QbOV;r5^EdNJ@$b&= z80>E`0Gt1O^1!?FhIH4%IreL$H})j@HnMmW5n|IZmSm2x&&S-u+&z3wCa@RgQ=$qu z2TKVhcP|mm!spyry8p||TL0PQn#hO>(<2q?Wxcm-@#w5|iSkd)YUg$61^e6O`fL2# z@%q~~;B{~LT;&c+!9gNbr5HA1(xH3ABdAj{E(*BqjXq8{_@YX@~( zTD+QmmP~B;bP!ztmSBozME7|tT~!JzzzL1c@D)f$oHZZb5+}6^HMb4@@QdpJx0eH` zL}O5NwD@=M@vmI8eJ%zbIvF)u{4+7NjLgYvGqg%iiQ8}jPcvw8 zuX=cR|Iw>?G>?&c{*j_Y4X zym|yw+E1&r$RDxh&}qq#K^^pju)U8T&s(RbyY3%3Df(Ns5UdI3i8SI_yEObes9u9m z8&*szBzy$owCh}-Up1#tDxF3kTWBot(GfMmiH|xGfRLfLj2@ZR5ct4;rC+%gfYqOX z)mED2aVWF)R2hN((C>~i3f-}vhH7Mx z6zJw2y2&dY-PGhBF&4=%9PpYtVs66W)XN)bNP3e%&gbM0lpkwct=uiPZ+v8QY8BnE z$#ZP50&x6oob?GF(2T`*d9Uae==v=~H{=?aWH^|x;eQk+z^X=@<99(3a)5ypO-hnI=#ge+X#YpOX)?Qg2u;9p|AMfMJxZ5T* zkSE+Rsjcb8`W8D$1i{`i3d$?-V4=X0S!rt{n)>f~EYWx9YI(ESTECx~@M{9Rv1b6p zJjnfc9@h^ay{`sf)N;Mz_2C`M(!qE|qMd@?BCm$WtD{};c67lReAiL4pO35m>u#3w z>oEXY4dX1oor}HhzhMqI>Ky$kg^_H%DkniaM~^t-=SL?;&<8TjXt~$3Io{VI@hBfb ziH1(62_&LQ;|e&P_09+A-4=oU6_3CCHZojY;)(PE;lZ4K#OVu81hLr<$s9vY34JyC z7bo72n5Bjr#vQaynhg>e!Q8QE!i?JD6eST-`*69KugHD5l)1suoJ?Kkb4zTwD>jH477Z#Y#v>6Z|Q;42%a`>0iE6U<8alVF!hu6Xp zk34>@@n39wt_%bojC7R@t#Pb)b`>`Gnf(a*OVxpv2J($6;}h@QOAS-x)6A%-fR)rk z11P0EJ9%S*hGpTDTpfao53D&q3wdBZxDCYngOsAkE-n&Lw zF6*4ckbr=gu1~710~=oUUzi(XyzU>jt9z^4|zxe3&QdarKg%QNVZJG_{i-U1-3ps@HgtNIg>S#rga(x9Cop(!HB{QU_agvG|DL>xKlKNL8KF(5+Jd+ZgH zA}xLGlON}Uz<;~K|IRJ7J_)$9XDEmt!(r{bXCZ5%Yl)+ed2!;=-MqSq6*!H-BXig%7 zua_r=yb^XsS42T4%+Ph}`>(>n;;lZob4%Yd{|e#z=X&4&;<-W~ooCPPZ7tB@Z6XQC zaZ#3jvwRkduj2KEZevb_kPCCw!dKigzfUf-8Deb_S>S-JUJnz_+vvbTFmP{94Uv+t z-BE*+9OU}ngSq?~wPU5z$%BaU?eVAw_3X7w$En|qOvKd_#N|?QZQa}-Oc-DA8~+#q zrRVc^1=>5>B%y6+ue)wmlwvuf4b9Ap+|=bX)JZIn)k^sFIhiys5H$m9D}gCyOl7Ag zwD;=J;Xn;*s}sHr0!*!r5h@$^&)!`?E6y{ig%?Isj0$zB^ZjTzpX`8kT)DeY93!nq z{p2NBE+WmtXv(Z%1U(3!@GM_uS5Qu=IQtrii7)R~`z^`jhuP7m`y=@n5QCl_a%~dk z&qB(KF%IW2gFVEgF-3KDLad;+4k%;6@#jCUenhh!G-mGGG(tb63Qia+Pa(P!gv2DM zC+p8!wnt3RWV;xvN`0^wm$^GnRCZ#kR(EY|VXe&@rn?#F)XHc{VF2+&1$ zy6PqBWA{;LD*O$0*5oYRdSGt#9m5y7e)HKPL&(USqDzt&cE6C#?j)|i3LSN#{_lz1 zfc$J@u@r>m$5)Y$FaMSH~S9aneSmyS2&M0ckx zWLW=aLX2|B)1DhWzI8*Nx9>dnP0nYgWxTm#e~LN@6+HhqFFlJLN6x)iX;Ya7T3r!? zn;xSfPvtQ27@h{=^FsTeqlzu-=jC#>b<_*fHh(-{U0-i&2Ux-_3 zrRsf}m*&t?@+*qSW@-4~iZA&mY%Q#`rVJYA`D*lgu=431R-HZba*W%X10PRz{^)@k zm~P9#3NgI6@fw^*XHJ}1elO6`w)q*t6$b4%hPTo|+V$*)l;0J!NuRHJjXONuU9XRx zkjKgfrh(pSl2!d#v9!~Zu<{6RX!q4#8Cw@!%a;Ti-+xUV@3wrR054AL7mze&(=4L3 zQ}8}}wQ#u9Ngsfqb+=465wB_)~c3 ziv-5}NdCsZEEmVV`zCe~XeuDX3RV?IZ1yz)EPNrmGAcBfM5xqp((!2?R8vzHZ9=+@ z4!}v}mYn&Pj=p8PgKDqCx{YOyw>TQI50Q{Yt2DE5mBoUEpNpSgQ$^R2gYBuM#~H0O zemSq*+;L@(8MsP#(`>F4y=BrFTEumjf(Fr@1xyDn&bN$eA<-}I%px{T3S_1=_V!}h znQa#EvWLTwmsLi7PX{^%JpS%&|8y)xF$ni|H90s;L$A6E-O@U?L1BLnQ)Huqj!WV} z^8M$RcvHk(?4J4c2UpaA+BA2BCZRabY`x<>` zd7b6xy)Mf_6B9KHqpVkSksuX0dLDt4$ES~Ds=$6ax4nZ>ZR+KF(Xr~ppZsS87OI;b%>C&4 zb(Z{M_Z}x7Z+l0<)59;;Sjitpn4w+et0MHn%^Ba@jjD1e^K#B8Erj&y0@%P`rA)Qp6>%3~e-n8m4T2p<+1 zW}_Az*fQXu>aWfjF*UjfcTv08)=F}9PQ^+*3R*{LvAvv|e^UbeQaAW^u1lyEbl#Er zd%<|)N4wWHP5n795>X`CDnI(^R}qDKk3HUXbjo-71h{&-`yvWfS)%8lH)O%Ph`#_$ z)F?E{VfSXp3MX;5@M$SH9%XQB{v3tb3__$5V=xs|PFh|L7tyd=LiB!cf@T((pM0>X zp%s&RZ7n~^Ig|Zux!*x z^X}U6+ULeu_%=FmZR8gh2CTWivMy!M4gG7uY(_N#yb3!+@ra9Iim+9i_;I=M)umOM zG{P-h1NtJGr?7_*^a!J#_9)tbmnwrqk3lbBM}h0wR%@8h$z^m&{kv;;EVgI54~;lK z%EKIH+ZA87dEd4O=Apxjl88_RHr=@fge%(XCncxq8x4inrqU6-;a=mRz52GM`_k)l zqXASSJ#EZqO)&UV`@_Y6J@#d}2+q#W8>I-gBHHE*@)9WwZBc8MY4_=-;cD`#1Dua0 zmkFw6fzaellhD~j;6&4j@={b${?h)R?+)z>l&qMA_awgR<`3Zs| zI#yAx)Tw_Eq=BtT?thR1B@iNu!;IV=v)B74A`CyaHLdIR@6F>!eyLeI%yQD>Q~5S- z5D(%k^7<*Rz{z*Qj;y5H&>6vxp5T*82U~nUKB&Dmk=sG0-$e$9s#wCjij81&{_Ig} zXUtaS<%cbs3}E251iH0v_QJzN5u%1W8#UizPh+RB>ZY&?qtw5XAwGxSd2kJ;D6)Eg z)iKMnvvP&bKN9jVMi~3vSXy{~FqwJSNU3XaYLKhK&Y>`g8MWGGgbJd*@haSaVaka4 zjX;sNpCAr0xkj_N@LyW0hh{Zn4vInA1GluWQ1ILJ|9uhl=%yzQGPfB{B%6dk-T$U;x0!vn4(48QEoeX25-cLWh56Q)?3*J`)?@N)5&#Q(>KBdj@Q4QmtG+n`)qDz<-Z z14d<^Q5uou<=kMlHCT7(+L~D>G0Shelq|vVG%?4@Q~1f12=Kg1Cb+OI(LdKD@l>}> z27ON{@Kg9OW)X!VkxMQ&paoq9nF*2SBJ^HIa$Ae~ASF|cI0jk3K%PI8GXNmHW@DzN zVb26x-o(4McAWWWPY&dvKHQCUrw(7(<+k@oN=D8>AlVxn%Iz9s$+3GIjLiW|exV+G z+wF-J&Q%C6Hdxk0@$3Ig>GcB`ADmPEh||j&Uf?izoQ`gJpF4fNqi?3`GE!Cj>H|xv0c{N<{NEt!|<8K2aC@V&le> zzON-w)}eQ4?=mPD!LbZi+^wm9uQAQ3T*qWO$2Mxr%bgr&`c?B^EfLD9d}RgY$XPEb z9F$qV@q1iaE-6{58Np=UX-l&ZPuJf%3f13uX!dm)r?s4-=pZxgy1MX=m0@|6Q($HJ4nQ(D_{t5tCmdj8;U$w{iE?Q?12Z3fEix^|-8?4F6(bw9WB+7N%)_hr8E z8h9J}Ud@Xjq}W(}+x)pr=uzh=(27tJRoKSYfA9kq$t%yR&XjAbuO!Px1!(UtG+$OSIt7!MwQ zmu|hWG@`U79G%^E*5CABN>ZDmvL7D(s&0Q)^QRsC@;_R7rqAM{;xY>ouMe1JP&nu zo#XZ+ZrbBMR*`f`zUO&t*|r1rpRTSz_&P~^Z{X-1Y`*8X_VYYmitV1nI@$cY8~uzJ zlumZtt9VxG4)+Uj5nh4Q2JURo%4;a;*S9W@{B0P90TwsWp(oS~H?ZHR7DpT`U@UUa zhm?cM%fZ8vPCrDJ#rib5?1M}c#lqsoF_j0{k2mVo%FIplFl|^Y>u3ZCYoFC~1$~oK z4XgC35Z#0t=(I6>UpBthP^eK};w+R@S63q|klT0tBCNB+r+iJ*Uz4;0l_Sz?UW1wZn) zSR6gvBklGWkwlBFe~_!tTw@g!A(*eR34{y(_-DW+g|3_TYq^ScDUlxvk%DV^7V~kI z{qYnBGk!ZiTQ=qUlTroOL2;?^vo(tC)JC1D01#b)49e2e%FM6UwuaNC#a$L_NNMR5 zx(s)ZCphJ-RT8_)uf154Wt&@`0f)SJm^6vY0x+b45{7FnSCPJE$yrfca3S{sHVnLUM|A!sq@M-+%xg*Tf%}u0!4gu; zQ#7r|0uq*-bkg935;GdVgJMxB1wYMEiOT!GvSrq>Jg_UWBXvO|T1PkGb)Nc(J!^>R zwYR30v{XP1Eq&Hy`~-Ra4sD*l>35#3Qnw z$C%%rXcqysqgeS!wAdbdimu{)dFtfQ4;BA+kudE_6eeTT#P=egM#w!*#+V%-Q^-zvN?)!x} zRIXQSH5^TW06HGD#JmLWVB}ss0jyG-hy!P5zxzG z4w)4Z6BQE^7CNNxBxN08D+JH(|JxCR>k<|dZfR+6;TJ_w_F{^Kc@@(y)Er!?f+(TD za_;Ea>6h*F`D&*;5fmo#zJGM%XsU?t*0n1PYNR@xIq)Oq=N;N8LXPS7K!o6JxB%dv z?P?Z+`3pR*OuARr5P-cej&$sCqGiA37TOfx+KTf$ip$3hzRam>=V;5i#mn>V`$@|#^mXomSQK_qjqg&3l=7_P&<+gJ9pxvc$ z!QR#X@Rj(LXH4x|92@&FWO;*n(`2lv=p*H(iMe_l938g>5}k^JXsqUJdyAa1{7m~v zBm?o}cr)I_q$b6Bu6z84a>h{G`QCO#f>CuB`(5Pnl7|(hwO=_640-7q$%bxt9(O5u zUkJZ|<#>)E#sWpfLbKePQIZWl(sImBni9^m_&Nr*89*ZgH6q!dGz z3?-*l`HxpF-xC*D+^0U~IR22Cv_eBry9uL#e7TPiL*0_buv`nQ^%XGJ{`!W8z?z zT3)O*U*na~XBQ@m_0-!$cjsM?q~A5l%fKr=VQn>CZV#M)&<1^4ZS#+Zsi|#-&nx=} z&!V@qrlW<@bDE*`aMPmbhkoRBK!Vp)5(kdzNi(sRon(`@t8|F@D~~!$tYxmPcdeLk zH>B~Rbw_n};9GGYyM2$PqH>PI^QX`842jQiNkI^M!H_;tfl^{f zq01G7_I5M<8fi}Weerw?n(dI>4zHt~lVuP{NPJccAJ{VgUBhY;`_ehS)eZgOEByGD zPSEu^Lo%ib_`&2VgaPjY<6jfi>rlqk4Ke)-U!(~c)8X$RH-D$nSKt3itm#dPdpVPk z*Ooi3m#68E>k&@ABsW>s&&mC~XDiArqlf*%X6(~3s%f_Wz-Pzy$bgr5fa8scqNm&7 zj9Q8J!~xt5SFJA7kX3g$4g-IlESk_pqF00K#F5vL5)-dN(U(c2;seoijBk20AL?Bv z&fpQ@vtrftS_3%Cv1*(-=;(K1SH7)W(jqF5(lXmgmY+;{yu z)#wIqOC^;WJbKp-;qgpm8YF77*(Xw=vfSk)$p)XCP9%UKnd-!INrhJQj9gqpNNH!GCi0j2#T7}J5Xv;1AVQ%o3 zi_ai2{hK6?_C8fuS011269rBF#ZzH*i(1)MBoPq>iiI26y)qS%oQy2?+Uf!Vwd%|D zoL54sdBvVZ9~B`YW@49`1)qvK@-r)qC>*GQ(($+#*KW)C%Eh zk1veKH?q_<9s~NT4Ty4*jm}_bbz0VF->6^#o643W?Z9Hh->;Oc)1>y^C|Re`QnP<% zgtOpG?rQXBNPll{jnGA~J@T&2T3$u5ETMm@hxn)t%0uy+ndv>` zjNGaq;@s|nU4Y5MZ$DzkR~B^K04pX9)hsC#@jrYVYH!CjYU%!tert&8zpg%WCId!1Qmd+JGyEs_Fm6OTz zdAK~CP{yX>uaw-3DCFIzY2;w@mNaIwDcZ-RnMt%x)OY2N{^jcXu_c=CYL^k~ZME#4 zM|tU-h2f*OTcDH6`^oVA>Fx1K901g3ipb+rrQf6Iy=`3GOeeJDw8393A`(oEQS^Pb^C1osDY&R_NoOPI%^t5m1;Q9iZP)RJadbd!#APFj---HBsmqqr z)pC%`8k>JwB8A@GP_GhWGPwDabHkQxVdWzVd`rOPJ=Y z&@}WE59mGe9)JG~I>@D-W&-J+8Q6kC%p%IDc$vx^{jA2sAzT^ZK9m0VZ~CcybUOny zlpwdQi1-shci*p$hyHOQJ&L4ti_~Wp36_R^DIzK33iHxr0cA!H4$5yo94-N6?MF}9s8ipZ;` zZ=Ya~*638P2IFD;q|ZnBFprxYYFq?9iQes(Y0e(jki*%J><=-!KRf%cq{Hr-F(MDB zI#p2#@xEH>_#3l|MZRhIM9P;-*_1vwo@pKLeO3K+%#Rv>Y1_vu)00l@c#Lx$Y}b44 z`g&eM2?+CbrZxEZH7%@AgdT{@{loKzZ#y8&Hq?83l*y4oQU2C?FeZgfVVLzmQqVED zYuBH`Jx2exDl;BNMvSJWIf=&D4kx~V5P#q+tb*}~e*pYKR#4$U2RGwjpPl^5GI@A4 zNaM$N4%1X_)r%6w2)+;>j-1XN15r1X!|$|?8aUYP6l~b~;NbeLTX56FDM!~ z>QHW&WSYNl?odtAH($@i;8tT!Vbm#|6FfRy&o&|V#M%l|OH5wd+#PJ8ahk!<%*{a! z{}$cj>ber&l*{f3g3SRd{l#wm5%frk8LS?29BU1V+QxaMt)`(DpmAr4O%DKr+;oHZ z2vs(uH^C#J3sRqR5}!mEb&>zdoz~9iL|fF@dEZ9ulmz@Ca>p@umrtry$OgS9#~?tP zF!T25E%MYk%0qPOg)}DukFij{M1eUktNW>yOoMb39-i-;WCogXKrOdVE ziu0y^Ss5XpA}3}=LxU_vl%h(Zp5S<>{iSWoB;Xsi;`iW@pmi4j4~3SjU3@Q7lr)YS ze})2$lrREnsJ~orY~o+MJU}%KU37Z-1$&(ApAf1OD*Qi;O-$p(Ts{^|y-yXtYW|R1 z6W__sgG-eyrG}NZrbyYK3LIm2ETz%Uf9|3*M+=npK|j8HUepSh{|-{vAN~}!U!fY& zZrmcD9CIM=?B%EI&hS2C>s>byK5@JsUI~gw;HS5_Bf(i#F*O(Tz}m-o)yj$F5ItoS z>!g4R+`#A9jtvuAZCXjwzK-4Ah@XJlSgN02<-Gi=bI@sCYC;nJ+>IS_>BB&JOwX7_ zH<>3!|62e4+wSD4owLz<%ORZukTb3K|Eg(z6Q5_zI@t)0RTzr53UEl!zzp{0W9Mq> zh?`7#t}>hpJbdbI@6Kn~Y$+H&^rEY-;8?Kf;Lt2#Jzy2pH(%gM39Z-)AbjVvRbb^X z6vNCzYs|_rkf8Z9MVXkFy-L?z;qtm4@`T?Q!~+j$JGLa2(RnNVB4u>F85Hymqixo@ zWr|J5{zin%?BqjV^Az>Tt=zsdXL2u=jPS>Q&twp;4(o^~59rNo7<(8?e?znm+%Dzl zf6KgFgrxq(pPMN=UKkJEJYJsP-Zs`<$(Y`ruQ%79r5X27T(Q99iev68MBy16q=RQ> zAs=M@18<>=mr_h=7ecE(NXI*m+OkFXZ||thn|q4;d)3(@4pC6?E(}=lq7UC&l}NY9 zXBcK??W2_N5zfO*?^|=);g#SF0Z>PzCYv%}%-5lyA~>Kz@!;L{%?8nXg(2tP6CgfV zv2SD1tASC;n22eeeQU02h9p&=F%{RV%dk`fWQLJmvJYFGh{y@x^s3s60=}uv@5~YS ze9ki^J<>-s2=sDuT{y!Qd)K`n&^Jyp@K68*ErR z;hW;`whvPP*Pv|4Z*HW@&Rueya-yuM2)r*8Ocu&&=qf8f!cFXKf{SWhri?#U)Ej*v z#X*bIN+4tGaN5s0eq@nICsrA`Gm2@*mn9xyvbY*bjfGwq9|T&G=g&RhGkVR3t9!q< zbGsJXMrLYt4zbjbWD@Ylx@!q2datn z!y9{5y8y16F&{l&r;(b zE8Akopa+nQ#xl%DK#JyI+h5S=tK%lm#(u@F5y?9>mwz=b@@z=qe=-3XbD#`P^K0jU zX&va-Czf4}#&kokgxC^`Oh9BcXq$o=g&}%~SvC$J(l&M)8{4p(iocpCGyuu;qWo}u z{%H{NntgIknD8meqnTrm5sNbV(|4DV`k|0`muE$pEw-a1BiecWD(&uz^5{RYUJgI} zl*B7JSL>V`k?ThxZcIq~N{?saUNzcPgeV$6iwJ$jrgW8PVOQe5i5y)Wx0O3j7r$^8 z?B{!d?3_up53lXXvKTK`m}U@Tr;KlVjsGqSKzXqVB(oIKkmI&uE7wM73eD*psU6Tu zwMb82K1-t5GErN*JieY}2Rv>}t7ub*tuC*4ot`}!rF_Z#T|sp#*&X9j`jN33{fQbK1>tE-$;8agFJJ!R1GG5w*vC+y zb4{r}${Tu}+>TR+E`d7^6eG+b)y{MQc83HO7z|m0)zGDI;)+uYK58f`U4hs#3(c-p z5qL}}Oxgop_wKHW^{UdYA48STV_cfGy6@Zt-s21XLEVu50EfXQ>fpVc+R7h7pw1Zc z;k}=$o2%~+*MH=eu$8BLe3UkDON->M{k}Mk4W~-q6(N7GAFeYZ100=`9_8xHHty#2 zw4k0AO{N{Xg0jk6rKB-;@hh(gg?x+*MJ8!ai0S6`+2-M^tAGLO^NXf_dt)suDB9FP z9hEimw@_C{BJmq>O1>`WP4rhBkl=MaGLtv_k)=V-3khrpj z0do!tXn?ld5%UInm@Y)-9XCNks2OBEt#J1$#7^(Sd(8_s-103wQ9G=-@b)bKA)tQa z$D$)|t;Y&MFM%qUwgF>$U^ZZdUdS48)rSv-1mE?45)7KeCx%THQHnT$SsgoGqMExz>K4hxLiy9bb7!m~StpG8n&7DozuJ zF}uu?wigo(6kEapm-&K%b(>cR2^u3npFb!n`yn=q4Rv~Z=!%Cw_cqZAQD~BY8!3#y zXex8LG3>NrqnLzh`W`J;p5w8rvT!2eZ*lbNtWBhd;76UJr#dF3pAxONS#o(H$%aC0 zZCM6MT0ORgQI@d)>;au5W7_UtEHwn_NW$r47{jos2hcg8qmz#+Ng)24sIf7HKD>c7 z=ggg@_C$~3l5<%q4Y|>{LydQ7;6nZG66(o>}j7qlE(9h9d{brI4FK@aq7 zsdMu+-+cb$&=Zrq>Qzi5|9p^+@F~W5TmN@V9uZslr@UazFgA3#2E;)7iw}m|3kY0e zOsbedd_nw03(|TG?&}{!YYdLF{%_(X@NU>LEn`m)Q1zm`c4b+d<+k80Iv=<~H#E4M zE&K}mqBUQ}RQa!mnA93lG)><-?TaR#=gbTCIojO39vEM&(^CeJdHBLSJREq>#`0Kj z==AXR^>8xAM?V z9(#+iE_qaP^sPwWlmOf; z#?UV5*;Gs`;>sMaZ%7@@mJjz|m}h07MON(ZSUqt*KANjl*Ph83*X1wQ3s3i@r#*$0 zhk8pD5I#F;fke-1SlbCa5@0sUSqY6$1?KmD7lgV_!+c6Y?leJ{ZKC2Eld)D3S@=C4 zx?n4<=c^tx01;J3{w1OiZCY4 z^@R5Y{A&1|)4uDvP1YZP>m?Y6d;Y=tRe5c1=Mr#$dQLXp%yX_Z3eh-o^~f3A&Zy~x zp3_qT$lUyP&4s?-JG>$J`1t-(4;}%JDtnwQtYxOaL47-6Zn5jods8%(Xys-4_rER!~t;X@d24Wbbw$;sN{Ha2=d8Q#xLF(eib7QZ+5XL+_Tyr=CPp86?d>`9@HsPwBmxuwiUMQFR@ zeUyRO|H|Pmhe`n@wX%OJ5o}o~AaPgd}u$zEBQ^ zPzFVdB|R=4f@Gfzbg}J7!GM(&YB;mO0(x*t*gH?^%=a~~bIW`Pkb7nYyLJMk+Eig< z#VTsq^RVtSI~#F_wXY}USo6w0zy~q?SySsr*(mROoP)=R%Lz6-v$-zM@WB1i8CHOp zIoiny4W`Ng!2v-(-kLa4Hgw^_^giD==*3nk&&R{S&7C`0Mhg50gJhtt@}rn9mwcH- zHOcXldUVYL?hBqWyU=>P>@s|+4E+~~^>uRikGh|Z*U+(8KGIu;S}?MKw43*j6^0-- zi~3m+5g)JjcborC^cr+TQg%u`L*|J3hdt*=0% zOH)h%c{A@e*MOni@Db`xSKEhH&Zh#M>t$TWgHe@Pn>6T>jke*B$+{5UP3mE{dSl1}3sBbKXi1Ar zIMMz&cX09_l=IFb#)um4&)Rwr$8=W`B){JbOb_ghJc)J4HDqab=8S-qOicAg_98~x zc(7lJOLqK-Zi-EKvn}xOl#ClH;W5}1J}LI+c?l@P-G|xnTp#F86Ag-?=9~2R3T!ct zZ?TeoivBiBEz><_3Qj&ld9C^Sa=fcNq{EcSz1O>gY#Aqpl&pN$4 zgKr5z`(1<1i0)3?vomX7CrM}hwJP#Ai=vv@=r`B6V=4?8O0kNgooez0IH@r@4!gnygM55J1rc}(`uRR!Ke!4vDj-_N=Y-nvQk)Q5TD%dIdTp=n{C=V_XBt7 z*`Hr}{#Dmo15f;dUWtk2sb^|&(rIBe49vYKmUWRHD1 zu8%ZyRq1fWdYzwCC>af&B6s3>vGnTu=^yMurv**kX0mK-e4;Q2=@ZQ9k`n|f7Q^OM z?W6D6r3E^exXee0%mskL12q3S7N@b(J~l)Gify`n)|j*(4_9C48zkeV`#w=h%{^FV zyx^|=zdZc>mrMX%4VSmztlg6m(Q1mg$9r|o?>~1J>&2IGtBbjUK-Y`?uC*urn~U7| zctNaWDL#i#&|?Lt*A4OJXYxkR{1L4~De}+Cxx3}evl(Vg*`!=geTK7VEx0k?bJD#&D8pMwRDE8S-4 zWqF(N>r4m(2_fnpev{9cZeh-tOgJOapQ0~rqJ-P!c2V-ZpOtO3yVRMLk&=txO<#g$ z8{m7r*N|Bv+8l&FBKZ40{B6S{H5jck)@nj>@b~a}I-l<#&|)VkW-5^Po zSXJLQ7{kk8hbwkN>R>jPjz3pkf8>-okUBWiML$uq_^9Vq_ujAwY(OuEJIW`^)6W+< zS;+1`auZQYX&Wc+{Fxx66kXpr49!#@M&>Ho=QEIX?R*6`QuStGo0QYvBK>;Q(hYiO z_Ha76sZoD#UlYvMque~Z`_RpCs?y#hO`AG zlb0r|D;lI#J}zD|)`7~8iX)kEDwM9W0L$$*rVO9#pwk&K9{gU}jJ&KAD=AFX7LR17SuSre53-bLd-rbLn8O=^8@s=VeXZ22ejkgEll#xTvf4r$cTJ0w?t0 zotWz&0R1wl{0}YvOdSoRAXV%O#b7>7gZt~z@p1AVJr+fjVWo{Tfy~)J$wHczS$60C z=;%%5QdVt3VUD?mWQi zPz0M@MaE~1{)vhYI{g07K*G5dhaWG}@XAVuLQe_8irX}Cy!m`_MMtQFCjJ5QYWB(_ zSHqIcGLN234ZmTNpv64mnWp{CBg6YW^PoiHA}!cr0+#j_mc(ibi?n2W^9k9NFB7`t z;pMw@toq%DX(G~HzVw`8dfoAdZ=`{ zm+y^iujhg70qG`nFxGO7dgtxAG$-Ggnlv0zxSAp*xt=$4=J`CZf%)iZd=6`YDFuYz zT2+bu9(G*Jv`>=};8xy*R+m>ESY4Nka><1k9Z82btAjmarH)dk=V&bW^+0Q?#*p*@ zGdYn^I+^$<^Bt7Mz@RZ4J9~!ITFkc*aVm@Ek|?@a)l|(^T|HSXnCjD^+ac8E7vK!9 zYo~F{|Bu;nK=uQDg^}1!iQN4(XV!5Fm$wYS2AAmrrF|x8DO4$XpKU-M8J;MnBEPf) z57^Q{%rg1Z2_?$^J2_eXx=5h4gvk?k##c8)sMyYI2$`1d)un}Y|tCtB=G6Jf_)<(Hj?55MC8C(B1C*t*W`$hXPA#H zK3LZCT>y2m>(dRiNI%=sg{jD@$0DUZH891^p8-WmtZg7`OHjgE{g2>cUpGf6k={0Y zynu&*%guFxBeXX1AKoCYoD-`oQf!}-&_{d~)jP-+j&g0obC-FGNil=V@fr(do-^>- zHqOi~vYm{UJFKf~@H)V4(m ziRE==MOJq$kNU{?t+)#cT!DPv8A`1c$Q65rQJOj@m&}X7@D+K8pEhC#&~kW6mt!*M z5_lWj-TZoH^41*UKO$xDKr-dmPBJN?@=taRfc;~n#Hgzor-A>DiQ3bzX|^kPkdaSq zpAxD4NWc(VB?H^QSV-#^a7!4^yzdYFPOM4u1Uw?l$T{AnHuP1Wf@P3meKLj532gMv;D1|OzSx?h0gM6;jMpU+m)Vg{a!Cpzw~+fpuNGMp3oAnHeS4J=kd18?UMnUXZfDs;Gb{Up2w# zl}RA=I$GC?5W zRycH1^q#aq99LGUasN0_M2n*U4PGdQfx{=`m1?G{9oZc)JCNtrh*3~i}p+tyK&C=13_0FB+7uc4_5|oG2Gn^;=mC}LG)ZwoZGP>}gJ*qGRj)pOQeq@WxcEs2mIa|6 zCcB53Is}HMjFIg?(9`v*r(>6u7BM5Vqm9E^fxQa_Ah0!2}|;{IWQ5orl(>sjl2<23QlDqh8pI(Dv|5TuVg<~xE_P|Ic3 zj}&$(aqN^C64TjhFDmh{A(f-v5+AwM2tD^7rtv20rV%`NpJ=r5v_dXR5_PT|ztR7= zTA)k6TxPHso9qxbHGRJ_$Yfp5{Mu!3wuHf3H{y90d3=WWjut+7 zbgzBM9!6oU0fmIg2{OS<{Jt7g`*(Hy5pKu%OD;al0q;!ekhW!}T0)v#-3;Aw0BwWJ zT$7JVc)NbMi@U~qjoGWVR|S;7lyzBC)7*b{7E744bp9^q+rS_Lfc`waebm-dZkLG|FS zF_#Ve*pCr~SNL>Rc2)aMTi?>}fS94hQi7rNK3QINtsCr=CpHP(Iy<3BF)wGfOeb$f z*9r5jMI~cN2S}5eBa~-pR6jSB@V=VonjSjl3>dHflCxAT`(=p@hQeu)&6`rlAKJ70 zUw-bC>yxYVa{TJfZD6iN&W@Ms8b0045%)<FwU#_3qY>dsC zcb?PWu2M!p&?hMFmNxx>QK~Uxw6TI`%ceoSD)E&rm7zgAdyE!a2Gje~88=vR8|j^$Jfw z=hHLf(hIcSAtZv#x)4Pxf4%Ie<7xg(IJ888szzL|^x3i6k2W8=MU!Ie=HwF~ey-O& zLub33fg;0HVTOguBMsCqR{r=lkbgXI?fh_f432V%#%4sbyHmp<`bWMq1h9qfd2zXZ z;#&^f7TF>`0pyBy@bNop9D8>o>o6hK&*kYKsvq-p(?FMMOTu@c0K}f)102R_`vFy! z86}=;z2_Q`2(tz4>CS@m!G!r8o91>?5yMDV>K+4Tu;D>D&QGer@*g3{&!s;68L*W z1mcWhe|op;8tjEvSs5*Q(_rxIkn9FtQfiX5d2rL?$9N+tC@nv`;)DwJMnDM<*Y+)y z&B%dv&`Y!bQ#(70Ebl){0TQcPYHg<(PP&Q~isF7?%lEJw0n^217u|YdEo6r@eP(7t zdmoun3@jprXzz4&F%tLIi#=NE9Q%i^mx zi^nV_(brs?^D~AI`}ha40%L<5kQf)KwDr$@rO+`+sCenck?b&~CXpnAzAo*r=u$!6 zYahrbV`;S79jE+P3}gzYV~SEsj+Q5y-6*$#55FkI{=MAqaMyP{$a-!%^!u}eUzaZg z55`7iVGw=^bIn*$C#dvD!fWX0ApTAO2^{zVu5Y(?&n8YzlA{fMwV2ev&NgCm(R;dG zl=C=QfM6^Sb%`U!t#LO3{X+0+(rrlerE^UnOZ!KOHc$&$e~Ygimv%^YupNucEHFee zVL)6kTWyb7r60|~&Or!ZV5tARTNqFGo}swfsPLa3)(qY3LMsobMtI|Oz9Yt!G$i(9 zn~jFgJ9qkyUX%;^fTB1;-hpa9pWU>&#oO+~*?v+rqo|A|-@1iEm1M&>6! zJC`G?R-fbjHng7g^OtL6BPwFlRly{~HPsvjFD%D7?|`*5xadr=1_*zT3qRyX)IeM! z&@zvytxwGSVMJb}L+Fg6P;X#K9t3=N%4YBKdzptKD#Thm8&@~&&vCgj|CV1PW%Ahk zq5G_nX|6G`V(XES=~p}3!6(qc-!TYBH^3o|-mY#;3adtkf&I>EieJQJXwrgkJVlT} zwx|qSJ^S|Q%?9YCFBBnX-pg*G)};SAA77B(PJ>;GFGEtrtT^7sA5xVnivbFmV^aNS z04KQPg>D%31w_;^26x<8y!3&_x*5YjO75o|z0C7cJm&ne%fM>`Ep_uv> zCQ3VC_dLUQT$}$x5S73WO=h#c=BP83QX2k&zwLb>F@T>Sc3p8l<2u<{PLl4O9a9z% zVz1;P>xzdPaHJje)Rw|#16iaKjkeMJ$z+&U?mB12ClB7V>P1>;sB8TIJ0|=wRbxsn zN<`$q+wb%Wd-9ud2&e)r595@0+q~k!j9}}mPXdtn1RLaHVKKP9Ssdm)2Kou`c}WVP zU>EjlzRrMjlt7sOY#^&1*d{L17_p1e)QMovgYi%$r&yC3@R5E*RsU)*_{(fA6pEA@ zYrt&WvHk52n|Us&1$Rl~q#+Bs-i0oSR<3JOGVA#?dgLc1L6_yS#ZtUp;@Aq^p6Wkh zU+iAX2*${_UioQXmp^F%*pF?V7FnlxK5vP!8_BdFjbIjY3qr;^&{7Uuo)*Ei*~TLM zZ)<3d0&JMA-@2AiWj@=tOyhrza$%(&F%?@V7@ccZMp)H!l_*&c zkvuU^?CuRg)(+I-#SJqPf)6NSrRF`F%X-aSPY&%1D3zN*5OF&>8`~K>nU(9lP&8=m z&}1-Kfj8@BA+FUNIp7rQZIrqex_OeU`{^(}^|ZabcQr7*(bHr24*q!P>+bG@7?b)~ zb51O19?S8(R@K6&5gSkhX{HP%SpBVBlrqUn8?n}F1I|s9H71MMRX+9igl*6jp?g5S zCnmdvKaR9RjFc|#&M}j?z*qW;GWtn>8!*=vaM*F`N8x( zv@Es9e`jlGtmNO4`cD1u;+S7EV-MT7uC5!ihm>hz^;-k2NejiX718Eu;-vjIoalK= z4`#EoI0#Jj{LyuJYAkPx1t2@-6WaL zbsRE!E(g`DkK$9Wj)G~Y$h1w*>A*rXaJ;%dgb#8oOG0e%F2}EX!Lw5F-$}AtF=nH}9v{+_=AAHTM?4bX7Xg@s%^3;NQ(NM#hCs-Raixz3$M(zpl_X)5LDf8WX8 zb1BsSlrz3Z^ns;B+y&vU_M91S!s*D{wqeC=wWj-bs+o!3qHYoC-KpI+%kC_3xp0l~ z_n377HLTB5f*N85*B8&T8VS;c+JgdfF*X|I*be9Cxn#MWZ2_;x$MY%|MxX}Q#*RQ| zHy_skcr+w9=Ju#_d}}T4$`yk;EX}e47fC-O^xs$m$w}9OzZMhZ9r2pW=Q!v3)k$*FU@4oO!Q0i&OEA zu$KPOb7#4HFfhMTRBs?K6F%qT4PYBEsME<}n`j>A1+k_26Nl84ZE%Vh7}^tCy99@TBR#YwaUw@B6pOl+LaiSpzE336<$|_GPmODH@zCqce625=f^w zb>`~E8y_Q-y)t(i^(#HG{q&3D^v&er6`MN_oNokC#_pKHb5VsR=nF{rLsM@W$hcR3i?ji#nD>pb%$QS9{ClxLYgT z1UG;cu2%Tkc)Sxm8wR-NI*`ammW*~V=&{i& ztz>V5pvRe-d2gtVlcTUrVPP$?qBTdOkDZT>^QTYs^@5`W_;!M;1jz-^9{i1a?_W0| z#H(QHy0-RTQ-Q1iJ1yG+`!Knh67Q{>NaiX-lH!GuoQaX#rEee8{q@%_??wi-3GDij zbOu0*pE(NuuNVE7p^0f=ccXX z37DbMSOH$jRzM+(K(DnjEA9qS{);ZWG3;1nNR=zUfk!!8(CwaS2;C_Jz8My(C1sgR z8=pt5))124H8~LYZdOINAhufj`ojlKyEf=A7(`QYU6Q^+Ge98Ur}Ke<*wbQt2aS_( z;9E!be_n;)y}hxDJ2_7~yVcSW_PI^=>llLFloqAzmoGQ0QhTTy$g1`qZNxN@rs9RZAJGA^-OafIl zGslyKm;-~q>9MC{z)s&C;b;iA2duSl2ezDx5~~uFpVGvxTTApRP_)IJ^|rJ^q)f&n z{xE&jKXJBN`fcmx3$+SrY(oeW{GPNnmto$nZ*9K2kN)x*c}ZmDCsj%oGG>k@`mp$5 z8_l`twbT#3)0ABDp*1~@D;$iw)C3EEO%Y~>L~IMTj9Y^&gDHh zm&=Kkzj!KtL6Xu)8|WeCA~5mmRfxQ@>pnL>WwyrQ-{;u4E?dI)4QDV0RfG%s~*<^IFcgm?3Bmx0k?&M*B86VPD7tII${IgkMiHG z&)+cik8Mbxv6_G{7AU3A@b*zaMFmd0E~o)LL5QEPlHt}^Qq0ppUa>nhssMXrpr2&x z+h_gu_n<654j|Y}Y;-i+BpG2JvBfaYFy}sa$@dVHl)T0A%)fR*c6Jtu-vctbOn%!| z1R`>Lid$MqD=-bil{CT&2yU&}SnC{&%bFMXjr~e`K@o7b?D&3pm)||W&JO5o_i^`d zi^^1zi4GIY!en(%$Cern7NL>+&51G|?Su=Y8=N!#N!$TrZaQxCam1X*SWs<&$qpOm z7`ox!{V}MN@blRjfHcp8#Qt*e{@H>S(9a1rGb97(ljqwyU$J58Bvk`pO!Ucg{atRw zE9941LVv|EUF5-7ytu5l{(*ZfO1Y1!Lh-!t&|4$n)O|@2ZpgwF zUjgQ@+edPgr1DO}!fw=2b6eKDkqPo$faK@1E}`cJ>k((1ca6$uX-VgVE5ILqje2lf zagnRb&p=vNK|+M7YEeCSxQYc$n({{qtS}ZBVqJ_E2npFPKtY$-_+}uwy znWM$Ix_0TZo#c)eQUPmnU1LWc>qFi%{pgYLr6Ec9eBOjBXX1Uu@2&{tIw3HWvkW2q z=J&`dr-it$!2Er+bO_#rB<*Vd?E0}aSLc?G(asZe)K+?XkcztyMjHw7nbuCITu6A% zTCdw zrBP+7Fh*L#YVsH4Ji^VeIU}{B=B%B86Dm{ov)6dHDSsFG&p9`Hzu6SK(-GLn8DrYw z?8Y0XbTL`vNio%W2U>4?l@tL!DA@U?@8n)WtnwdnxW<1CiM}sOG0S0bupTuDyylYs zR`rWxY6@NV|6p=%q^ruF0$X$tUV0Edq)TXfUd=Uxy%bT!7ANl5mLMPMTrZ}e=&?6x^ z6k=@u#_8O3c&eXk*ya1QY{|Z9%)?>9m^~D*y0 z&0QDEHYX_2R1APe-g@qi5aS4N_$ld~O4P~#`3C+^_fS2={T(#;D&_m?Q8fuRk-y~yCj8l2J`f{V8WOy#2TLJ@GEuJIYsl)}LmqZhGbyM4Bj1HHYz|pR{sroi+q)D{9 zW3Lx4EuOmuVC>Ry6em56X8iZ%&VBnOd$iw#e|$zsr4$t(Y4N&~!1v8!gdQDuz4oDR zlz-=!4ZrC-us9(We%_Bv9dMfYjvf7=QE6Z8&Mk&U2Px5biV6g}l8}|7E0!gy8M&L@ zO{=A577RC->=#&woPbl-WV4w2(y`rvfq=)wy=4i&Cm#-n4xu7~sxkQLt(wAYl9Yv8 zT_MpTGW*zHsHynD2f})WB=bDtr$quC+q#@1h{rxpGrU1#x+`sBmCc{@Ov=K<7J$Ut zCJt6iiSHUV`3Gcgxu4#0{}j|~KAOOM6U}Bh>n)*mV~ruZH&S)n)6u$%HUn-IF=G+Y z^S90B>-N!U-Pm*&Xh|KGf5kCaCv2R^CI2^V!t(a^N*n)5d*ov%7dh{|q;i~A_yRov zAt&qsoG&LzS3P~^Or?shou2Bd#o|cbeOcNe?CShd689?( zQYP7bZ~Z85QDujI+PxXA$ph!&^)lYs3(4dL-6Z&LsF zw&}mxV%i9LC!|we1$JCr9CkT`b#=s8!kKnmI4f+}tXWBsB{-7Jv~uxoKM9iWi@wi_ zz8M%ba$R<4 zL4GfLS{Gdb?svy~h=h-h+9!ASNhuc+B_q&ZgcpY4&lBZ)1ih#v}mDswcH#n#mffwDU7 zuN{wY`Wc`V7}AMs?p)5Gmbu(=d&lB1(u?5n)iVpcR6clWtNe21d>2rlhZXWm{l765O}^jVcoJuNvmZ~daB#v6 z0v?y58>5uDw3o(0N*r#ef*c1QhMadmN-+vE)Qh-;hc>m(!RE)Xk4>5&kJ5nRTDTOC z>!s=+pIJh?(dE!v!h#&#>8{O78k5pb89CKH=(leh>8%P{>SRDp`cv$)I60G*R*DXZ zlvtNX*%@N|J1Ehani@XzTsAxE zv8t&$g=%O^zOwI+y?mAzPmgF=@K?i*)#xsCbEMh=y)A~{$ZdDyvt_sHFGiaiPF(+9 zuiRzYaUs*_F!b{mf^Cn{kJZq`B=~yiXyuB&DOIPVbimX*Y_gM@UL&8Qfl*GK&Q{FT zD&C@DBz!nbJ0hwy7T>gq=OerufqpNdEBbd*tJ;L}0i z;I7l_va7txx8LiM9U5gagq+Do>Li^qn9>M!vL;T2h(dN1BJ>tVIr-utJ$_$M-~8QQ z(Kz%*@NjxK#%MT2duR^!Pmj+gR-rxkXUk3vyzGZbOht*}r$;bkix3ixiaNU?Ex+gH z(J~$2{&d`segV_4#Ln>T%OO}*KZg9?(__Hp0la^AcLFU%D5cCtbzaXJS8nO@ucw#0 zOQaSc4`3PwRkXOf2E>}GhiD3F$!z1l4WRH?5%#TNWK*2q)zFqe&d=^hZe>mkm73e7 zr&A9-w7F~Ys)7S)odvQdZ0_x#`ehzL;67%C08uQW=Avf4NFT-r|A5!0#rG@F`xNN) zs0O<6RxX~)sm)Z%NvJN&kQPmhfGLG4g*XD1V@yV(b>y!t{v!1YRQX)D|2Q3?Bc3x1 z`YDA!WNlbYp^hhls2o1L0%kK~mPC!bo^(KTZk9{>no;N8bxXXzBwZ=_F56d`m)Eep zX(osFD$Zh0O)UI)RNj9Lz1Zabt{PKKNzOIj-p9>*}Gb4(j zhqV_9LTaj#{Lw9L5LC){satA9BC$8x=;ZR~`IppdLtxv6t^t))@RyXsmOFz($Kj`z zy-l5|gW=e}n15AmY1z5**A13FueW=?c=ePUc&l6!*|^zacrvVXaNw@G`}z8Ru30_j z|953$>|x<;C?aR0M*DPD9@T7Q-Zuiu+rBP^Ii5JMl~57=tKtZoZ*SAHeNy9b!vpb@ z`$_g4*EJ12tiD|TTk~EoAtu5ABMaju+}#*{81n|Lsh!r>@d#{FnNy_W0?fpz6VFlH zu@lc(zdyUobe;OlxVn!9%v#ug7%-jIrf&adpw{^MqiIC^-v5r@JGVn^`=x$$J=5XZ ztIJvap^Fg=>5>wt4tFjj);)la9};aPdEa=|U+-XDBtD}TedDxX*#eAHW!%T;AXr{2 z;L&_~WYxlp)f1Er!FV$ntOt@S`(tkdC=a5ePsV1)eCqmR)HuF>!7kfHquhkzyZY8& zbA49tJ(kv?{^Vqs3RxrA@YQ*w5(eBm#B24Nr&q;?y|9#X^0Nn-Jwh5fQ9}A|QZmD+ z;hVd$F@h~CnS%3Ej}t;O94t%^35(;#z=+SlHt(BxOAxTFb+E`*?>4iq%}aLdAKHXV ztj=;{B-FIb7C-qP^U7lW`&&bLKE(s3M0_y~+~Qf3c+|}ZE~Zc`(UMo!ujF5UG{rT! z*@xKJQo8xR8qkp)NfHF+j{l-5^T8yf zG7~O0MgWp6&-uyI)}FexE_Eh>?IdK@P@IQkvC|>cVBAbm_ibLaHRYgWw?ZZJ)<~gc zfx$HeuRgKr?BB0#0LcOEx%IX89G*`7e2HNOkAn;sc~Xwq7^vKpwyBRWJ0yErPf_Nx zlU+ovsV=$gcu?;rCbuU^U{t_@W4fy;Th_^;7H3DanYm+l5-HxI)=!G;=#p!s38%6^gBd^YxO{L|#{WS9OpyA^N9 zDYNb4;)26a=(e(v?ane2j9QdE0X|E0k~Yw*B0rzSyzNJw&=kZfC6M;Q(_1F^d8Eo~ z%z+hx<}9iW%i|lO#f)D-#B!eoE5n8n^hZ9lJ9OGGG$BRjUOKH6?eTSQh~l02R0i2l zA@iO&;^^D%RgGL>L+F=j?GG5XGZ_X^q{fmh)oGlX%>F_rAKN1_ZLyoe05a}*nLFJq zv1~C;)t^r?gAc20n{A~WOq;~lKmTC(>YU|0Hs?f+rWAk8{$_&nEcjx5_N+*xR)jbo zc&~{BsTTGgtN;gChT~B@I(q4qb6iHAd3yMskqI@lwbKnCKF+8B^)FDiL7g8*_H=*r zb>4|1uz3}PaU(Jp)#Ej#+2YDQ4)l2TEKt(u12};3Lufww*aP9!)01>uUg+nqUTau) z|65&Ot&(NV*rwjk?k9%|i9kP?m9|=)nd4Vqb`xV(7uO#|s#`j8lJy>Z9TQaP<3|lP z4Yn76G56z8()5TDRIyrSyw8G(n}szl4v@zZmo8H8O@?Yw1EmhJ<2hfu=@R zN*KmZCupz_k$r_u3a6+Uk=YheJi)o@Rn0b(6O)P_ucjSgx)E0vUC_6Y^?P@LksOMalDcA3Ouwsm$uC#V3*I`9RcXQZ!z#0GH*GQ zl=@+p0ED5TKLXDd1o^Goji{(gMLMuQZvti9PM9ECvB!0#UG z^OgV}<|YO*Q)*5oQMCg8s;71vZzAcxNvXyHtj2}*)q`g41%yhios5JhS|C+6?TDnb zZwSIw)SB4_;RyBujTY$PRfQju17LR~XGbKxs_<%(!%nDbTh9yf6HvUvzP8v;)*cFa zmn-*zGU}O_M&)_%ORu@$nCI zLfi}0MEffy7q2BMi&H)ayHGz*debKwvx(YzdSwgY7%K{W>0&ei1NwJ-1y+wJ z`UJXZ?Y5LLyaw#Sg0mD|o)Hu^kHKnz4RE#{TELF{0e&u9eBhbMj{_Dz{IUZ}raK{! zxW5r4y|#NqAcgQ{r>7X_jhvjTiS;fCtna1V8?A__fj8u^2mY8xSl7^_!jpnEdJ^w& zzFgqt^2N#A{AfEAagl5Z#gc!%pPB7l*5PaoJW~m{5Y0wZdyy&iV-*rO;x&&~9~UI0$4d+%s- z(Bdy!?^^Zz1%-1xcU!?z6$-O#9^nJ?=G9$$t=rY9N^+GEi~Sq;sq;|<63Qo8$=iaz zIalgine+5YS3u@suE+V0IIvA>LoG`EXx|fc>%3M(`Bzq_2EkjK|17@Q*PCV`vbMzh zZDe=e)-EXMa({Bm0tD)}lMJA-4@)pU|88#Z+u`ORUX`Q#1Z8F99aTYYJ*i#<30V%_EF=qUt^ z&;mUz-`usj(BA_%y!P$sDc){NGo0O94(Ry#64_sw=8kwDkiXDH^9fZ!{^&;fGC zONQ+kubz}I^3dy#ty*0|3g|=8kksJRv;F9=c4b-gsy(v-dT{xeV)pPYBcd%8OWmju?d`XPnjh z={|(Bv&;MSe!uE4w0OoCkGAAJ?us6b1RColTEXp|pi}t3*jILCG`#fY5MGH}Tcu*I zz-H_CwBTfXzWI%GHkqtsQI&;IU95`oEcS33=k95dkSTGUP`(brEKSHmX;&X2QLo|b zE{LLwRsJLSEVx-*{lTRn_vj<;{0`N-2_dwVl%)F`$H)y&6=ZrUa8RaxlvME6e1W{n zPddFTos;24W2`B2;vMHJ(pkc$?Ov=O(tI?*OP>?gf}d8_Vkca#9qRy|P8wrP^h8Uv zrrgN!E8D{SWkpH5nH58vF^J>!<41OO&%`&rk8=^;+CqVMxOFTB->1N#q<{LRgGMvc zPbbWR%xFq3JKCOii73szjjg>k&C}A!Tc@?7E7Al8zF9iJs?*MNjg2KO3b0SLLTqbOrn%-&`}AK4uI`vc01b+g2TZd>6TmT#6KDXYY{g=KXiHFQoTIYua8v z#d|4x#`yKp2EMChrjb>@_#-~-LcbF-SAzZ187rit)@tu}+2CmhBR|@VdO=1dV3 zL9Oys=I+=FhQsmoE8x9i4?xg}I%kM_Q;Hs%rF)}D+$Ld~cx|X%kFVHQyg)sDU%dPj zE*H?#x;u5U+Spmkv4zf3zk#)oFErG`N9_|-yzYZT@MKY}Icg?eEkrsPj-NhJk&LeY z?s_F|WG`IbGyvzVFg7xl)rxtz2S?!uv6&k)A7zbN`dzg#5%F77X09kKa4ZSsb2%=z z&Q5yD_jCCRSQc9+{)tfnNY0(dJzC}(+@t3j`|JOnh`<%IYoAS?i;Y#!WgEEHb=~sS}v1IK6)j@N>4@`FR@W(R3m2Rr1Z0ZY`cwH4#pN|TAQ-#>Q7 zX1wLsQ4dt&&Y(`5O6+vk7`S%fmc55|u$o~f-KA4j@JlSW?_7kAD`{kH1D2`8gtHf2 z`8%0!1=wDtOg2roE8^(mg3u8K`T3b#lzY>Pee(+O`<@%(aL{C3>YOXl#8juEu8k!! z%sNi7(Ma6e^&NpDpfmO3to9C|hbM?N(U!7dZkLI{od#wd_Ealc z!l>qFOjy03&GsC0;R{}q!oxR7*1)lu`Oc?~CX`V|hsemx*B~df`RC+!DhQ%W4Nnm3 z>In(9W9*Q`2ooVvc0`PJ7v+M=cksH;AMtILZQ0n*CQMcuxzy!@l>&0usKt*Qij@D9 zl3}RbQt#IMASf(*CJe{4dIKgbaI}AQb!c|J?arf{`eTH)MPQfXD;1pmMUJEdZw+cn zv-uIbAt2;|kif$+x1i0(T{|wJsSZSL|Ea2Ch^}XB!*Day+caFoV8$A3 znctKu9Wqlrc2D+G%NyfBP2^9GAsG7cS@f-{yGmNY+U%LWlBRIzEM4e#Ux&G$)!&hwUF%;5zY=#!(t z>iHIa?gMa|wx^g#C5)PIb|&aV5XG*Li5{n0KQpMK)}FEbB= zA`cBn9y#t$3twy)URUM^?kyQFE8UzsM$c1OHB z+6V^Qu#Jm4^WT0kkzDBWYW};5Q0mMQ2c4q#oXo$Ma4K-A=3OiCj;Hv=VcGzr%!kyZ zL_)s+w$?fcTFsI#cMo z=bj$%56>BmTbyA&9K}bxxgtA0?r(%V|lv_l4+GRb7|) z`?;kD@ZoLIB7xkHs?NoM7H58>?Ut%=>NQoG27|iB7vctj+lEr6*_s+dvNJMLw})V0 zJ`j50ygMPeQ-S*fZ}hM#xTPS}4d}jbC@g*((763ZE#1w&Z@~9$yih!{Vzzkx6Cu$M zo8E|V8uL>KgNkXN{-MCOtAwHCdJ0Xw9YQRRBq;{MH*exg9*sW9y`>3KO@w`n*>Y3PGCkGb z!lecaWZC~*8FEzh^f;er>!1J=iwvD1Y@-j7-?Otk8vAXf2*~Vn4%o{ta5e{xfrzU$ z=oB!2n$J%E9NeRw7A7(g_}RaJV>}vIJOZlwEgd_($cLTaNpS;7@}Pn+52}6^c2rqm z9eG8zb0``v&f~QIG6)Y1+uJJT%S2t**L}oB(bYy!@qxTV1nVl-9zL)MH>!_WvHSoo z>GwvvqKmw<3D?TotoafQ0Mlu^HR0$H8ey_RerOvVE2jaH~{`Af=HgIL0b z?aps257N0S9D4Paui4eQ0`DR@SKUL0qg!NjGjXlr1H+8xGcsnDm!esJkPEPt^s7B( z62W;Ph32ch6>H#cNa@%2E0a)|wn^!#%575BU=6q_HaOU{E|H(!duH4FAv&STitlC( zcIb^`Y#S6FHtUCo_pm4LDe&Gh{#lhQH7J{2U`?0R=qD?S0V?0-FLqE^TPv{;hQ_u<{u<%JTDIXUnmBuJ5Ephr37Uo3bW%^ zZPvJwhyD*&Z`l=R)HUm(K?4cy5Zv8@yF+k?#@!*fYw+OiPUG(G?k>Td#$8T7ubjQd z{sH}|$Gq2Cv#PH8X^7k$QTLYKIW$>JyAjSiw!85T#_iDUaxy zcH#`p_sjC?Vb&#A*z~*tff@!@By6F*e73o@-`tdTQP2(f9^i85-D;qj&U(a&~kL)v>@=*=ui(iU0)JNcvM%JlJ;FBrYEx+VD@r ze7neznjw#9j@X2Xvj_y|EsJGGjHCkkS4_~R;m2l7DU$NoHNqU}1~Y?orIq^JHN(wd zH8lk0VA;oo74InAWr|H-5=f>W1MT8U@ze33BsCP7zux{Fpb-IO{LNda>n+_R|<@s5Co( zk&d zQl04WZ?v<&m*U)9ef~($`7wN=oQUXP(nR)P0gnhMj`B!N+b2-eNT;V5r5rq#NSTA0 zZnN#`@n44wMw*t~a3mc+xs(gvM!~C{-GW&Eo<}Xm^N_+LLbX$!7p0AdXASEx+ba#D z8BH@YjyL{s5+;=_3ML)>C;Vyf)=94qP|%Z>he`49m7tc3TRya93y;7oufg;iKr-d@)?lY;})V%A={KeL3z0)0-?ank-+1*SQbznh*7s zayq6qUp=-zs2sMrVva5g2q^|;Cqb<7ItbUDG1ePTROe?~f)Jk{Pk;|oUo)(PtDwzy z;5pG z1I#V4ocmgxp(uIbnDP+Ci^fG3*ub*5dZ6{0N-+fSOQ1)W0(kk?YjP@^oI&>HR-yCv z%0(7oc1M@*dpncg=WF%H)#X7uaDF`DW7ZM$&;9eC$>-JiKX{ziuq}+~gE7x;{Mvb`;1&gW)KXK&-)K$@=N6@!+Z&RO?e#1t_ z)C8bb!TF2$V`P#dcWKklQNjBG(_1Uc0qxuq?^*gR3D9d0zF@1^j(^&ebZ`m@Wvwhr zb9AUw;L50k3uKG51%xON-o!7JWa+^ezE7d{h z6g8R%SO+r7x_Etm!CGZ^lu3$B^UO1H(>gcjZTUEFEhZN9Z0P8#FuVVuy#uZBwyNe! z`RTOt0`1*)EN#FbSo4`Q!W0>pLeUo~Fxp*Jap!<_7a{&{m~&&|8{4>e_$b-Qd|!94 zFxT3+jfqI<0U$@8Ls!PRv;QBpR1bg&*TuW7sRzxO!C|KKTx0%z3rc$Q>(AVHyU=r^o(myOizz{u>vnoM}pWNm|6^Q6NF_| zN*|^}_ct9q=b6r8V)p99#`5vidM3zY-QGgCWC7c7bl`6fESH1f-Fxr#vrV$tEitw} zO>mj27HrVx636ftLG*Z9 zlKPyIvb)P!NaDxW<>yBy-ED^N@S=THH@Cphx+ zeBF1h>%azvIkzX?w3`7t%Hc?H5gSWQfEp&1IPI? z(4}>fUU~;4)aSoh>D5p9M@-gjd=AGv@NV{R^?poMnGIvQT21N$>x~bols%DaEU=gmxvb}=;yZjWGT;N}kP>J_X&ygv$l9Jm2K zAa&`LLY2$Z;(hM5c~|sGw3(z%ZSs@3>NMCNHmzNzii)3b;O)oK&g3hYl=KKxYr&y~ zS!oVHVFAmb@!7OGS9WEf`VB&vX+MnVfnaaI=BD5Bae;!*=Gd$hiz)K#$bvFKB_c z4bjR$I#!rz<}wUq;@qVftX~(F5ua72%0uW+_IsZ=jq9*@FkUQ8eZg1pZyZ}(I+7Yp z6J5GkeiTGp^FGIc=Fg`jjBfwZqR?bQe@MX@X^>d_r`^#C%||S#MjL}bLClD9egzMA zIDt=78)cQ$l;Cw~=K`{oGK>Njm8YsiFn6Pu|8Q@TPMPI#L4T)`;(D|>6(j~U?Ll<0#4#{n*X4(v6M2Ybw24bHxwMz#6pWt_irPmJ z(EkYtQ<5XJT&}W^g0)taUlX^nmavI*4r4DK z0_O+WZ=1`C@5^WbaXPljkNHQ9cjLbVp21>Yv7N<4#F=F%7h}_WXkdWOz>6f z?US60eaE;ybA3JSM_S9e$A~-|+B$&DjL+kO*rE61U;mS%+pdh>D|^&CdR<#~+jb>L z+3cKlY;k-104e+dt@rP<#9F%nhO1nyDek%Kcs=&Pi_rdq)sUXkwvjn2WTl8EnX#t6 zZi6BEQt}kE`8oD~6mit%x0KAoM2fRt1|y=HX(K$Q-y{$?fq+NNz&&t_QrtK37CH7?T#e})`u`JZP@Gx>l;j$AB- z6!PEZ&W=AeCN&jBwls-(#Wlbkda3>jhL`}TLMi#PWJg|B)yAf(DhXk=NmjfOORA6d z&f3=6wyN5_-(Q#0aU9ov=-#A%(N&fMDg;Ou2qZ*ExTKD$3JInuhc=62{=7U4? zXp`JXT5v0wbk)FsF3)m~awUtkxNQR2yaC=gCXAFZ|AkB`O4MD1Ob@xw77CWzouHO4n>6w~rsMaRn?(vJ>Q;-8Jpq!++9`2E^i z5#`uaSnId%9f!wSn_Xvlo4A9O;^>N;?48^lm343ZaFMc%RclXWD~CL9)+ckzsW&cn!V7jAI#dxX?21((a2)4|5(Q;L}!YacjlLpR8m_$l`>C?yAzoVMOp zxuech@Txv`Sc_cQ`p+~@RvW6T+|^XZ2Rmg$oNl<23R~>^*~wTzw7IpX zo0JMuymTe|Xo^#-XW5)RXg4APNSfOGH?EqY%SAI!pMDpPlmY7eI#B%yYc5T0tH8yRk=E*%Gql+YVrr3ay7&EqQhKG1Jn`4sN%>KAO5s%kdHR(e)u={tuxy&uB~ zs^OfT7L+*WY=H+2b@=}oG`|MdN5`1GI4lZP4d;K(TJzgGXoZDD4BY>pqKYHoAUTN2~2H0{sy&vyW{GR4PA4fT#cguqBm)rjdv$m($Z*O#X-0n`UV}tYo z-K_$xe7t-=FNm|xiHSguUbb@s^jLoCtfA?|7^%@j0D93-VwnqfO~?s=GtN#O zXtlCH52ctW-CT}UF2J?C#Hp?UZEcMR z$O}#(u!v8fnVP_<9p~Bkt43+%hlCRFId~4m`ZpWT*tu9ZW*kL^>7h@&F ziKeE8`|_-vRH>@z8g@Tfs#>rjBeA~K#03T3!_reXS@z#3A%qMrkE&QU@&6TS{X=?} zEH>@fwp-3%Hs4*=mBefV9Ghm1%H6X@j^QL-k2mc4n)ubG+SaZbPS@UuDY+7FIqnay zNN0U*h?}8`o_49=;onBwsD;y^XzZFO1~a+faG>|%mN`lD+MDZlTi+KsM5^~&vZiit zorGCxww&kCQ!Z+8YjR}d{YcxKYQFE3dYXmmw-DlZqWVK22eoHy)_IGt%4k&5eq&6+H6LVol}3KK9Zt=toW;Y z+dmjA3ak!hn+eO+fQQDbu6Df#0F75`sS?jAAV-skVZ*QdqPXyT)Eg#rXma+Bny398 zV{eX9%UD!%nuI+moCvX z_lvSAHv3MfOpaMnl?js-ROf_LUZv5aG*j~XL88w~X}w>vprzy*Cr&I>TU$YW4|cjY z-ssQ&PKm!?U0ep=_cz%~2D$;vSrfLh;HaW@)O!dvmp5aLHi(98x$n?M9wh}|zTako z+`kN6JmTlHmb|^z=lJ~jIroxqs@#S6Wq>^h-AiKlinf@G@SblCeVU~9 zZt-V0jFoVEVW<)1c!PPC%|11vm|Y*B@!FQ~{1W8$n67QV4!R_S{Hep+vj{H7OVOy- z-|i4NAvP49F!!vSS{xlb19Ihbf9wLMeIFOwtG9H!!MZxy%Im{_`8UCKGch-9=j`>Q zHGQuzTK&{32;X0*3Mg(xOkKqgNu=S@BNz+8E=vG zVA_g8AoK4=#ED05D%dNwaF{3TeOMl>5@U|PeUzgPE5GSU!w{*gOz95Y$GWX)5j$z@ z2xrAeZTc#DE|?8$$-ZfB|D7r6V~U%nd|_pqfssq%fvrfaVE8PLDvz^?fC&t^|9wcU zZAlX#*_hHer&F#$K>3$8Mw*Z3@^`*kk0Tw6Z3Vc&R&aiEY-{jW- z1I1DHbG2o>vD?7HY%=DlAc>XHZh_jJLA2q#~`Im9q;2AO8wsIBNEH<;N1jR>F~^ z5$dA;y}Wpblz&cs97NAb?p2A5(%X^FOaS}Ca{l~FB1guDCX)oN%22l_i(;wTnk=dB z&5cXscM4H){5I{RVi}f5{t84(#+GAbmtOiU1C}R;8FCX@UP!je&`+iXx4?x4?kkd-ihnx{-FWv zx7l=GtaOigv+nd~XjpToDMNaI+U`&yIp~zB*2FqG#NNoXoh)k#pX3xyf8Iyh3a?Y1 z{veDk3ZTBa$!F%?sw;^l+9|NMkG!s9TG2s=MbH&l)T;_IM=Zk-ZF3ToM|wU;wiGr& zcc7^{yhb8*lVP)(RZt7AFk-dlX~_IhkV>Dj!TNC+k*-3HAbud%wZCaJ$aBidB+b1m zmfIrVD1kh*2hiTqOuwidw4dkd81=N_AEW45=8@0l6Y!xIMDW1}l@pwyhOp-;Ms^f&KV*bUdmy4_d zpUTflsnLt)o#)Bt$=R(BVK-u!mzTrIcI=!i;_PHrTxNK8^jqASYe&%4{Q(f1U|>R- zR(OaN8Y_7(=#;>J$BwrwhBU^;2|WfZuD@q>j_*0UtZbhwMw&u|3=|tnCyym}tOQ7u z)-Q_WbnOzQYkhDzVlE}J{>G(Eq?Ol`D+VT?F)fO15eO@Cl>;>58p@OeEQ5nA)r>0}zYHX}9@{B?7^{J6(Ud7N$j42-ls!)# z)-d0$mRox48YnpvWe(WiMcFlT2A5F~bklJ06r$-4Hg@=X{gDxwG2EJjRXkI?u?Etk65&K!Xj8Vn@oImch_W7E zb5-)7leDv*MTK+jDaY;%>|}DM=+V_}r9BwH6{w-<(%iu&_Is<&@n!{@wNzOwW_p6q z@WT|>Cgq66l$&@dKGR7mtbVl`j0;_5s#A}L;>BjyqV&0v>u**?Q{Em1F*G%5p7L@{ zPPcy7X$LzsRl+@IksZ*^g4wj0AYBH;TTOuUwN@?L{vJ`!EmrUI8uOA(fup69Uz}1 zOAgv*JiaJl5=h{wR4_!EQxqzhYeRqPUHC@FMSi~vuzpC-dUwSZWbe3-Fn=L*4A_nX z0MoIW5(9by78{>eTP@%I2g(p;oA7K(p!41-@i@8H`kKBiW#wi#>J{|H>(Slpw98Mm z{q(v!=4jmI*1TahzUQX(*&dY;>-Un7GcmnUVo5fM#iG-L4B1oa+V<+Md&gcahQyNq ziE2dZ_}lZhkLT~1)ja^=zwEoSr z$WtsmYx_6x4|$}x0*?v<*!6TRy9PR!zHxRVM$dDi#6}XQ7K9b4E%O}ENt0j9SlMgG z2KjG+U2JzutDB}umvb{sEf9NB?d7nW)U0s7zQ&?OY+30T_if;vCshs^xuH)TB_k~~JiWa^8)FS7X(vl#o(|85FP413Ao3rdMEEi7;wJO~2K}89#+#q}GkFiu>D}SI(K#s5*iV zIH5rz^-<(fuhlVNUu>R{fpB-5R4(dhR~I<n%Q=_68*WqNA7@ zqeviURV#1TiolNlF^Gns_#U-mDY(OTdR?78syWwD(!ud#%+h)q+**}t2pCjT9R2pj zQ*#n#BzcGfu(*am)l}?EV0H=m) zW75yIEs3R54cK;Frp-Z*g60k(^{mHdZ2JJ9jyMf%7Zc~L$J8Dm8|#Ii!98uu`ObH4 z;6!WLMH9l?-;bl-bIL3}qwxCmv6gJf4xc=St!?|zn6tU2js)c7z(!Kk)!MOfId9L{ z1s|>K(LCE1(%fAy8EvX-=D`%Xb*XJcjF|=VJEs2tJC-9rE8fZ-R@RCW=~?4_8%eH} zrZk;EB}<$me@g;9jN4}>k0sQkb5_Q$u)S4Xe**V}?>1%Wvo0O6v4+mY!lm^G{SaMO!3l*v~< zdKP8pg#FRUWnshqgVXlc;Edz-^C;*KVSkw5`^oOc+uFSO4}=eyLt09l)E`o-=laAd z@IrKlsF_M8ia*+1~pH%elkm?J=s=12=zGY>B zlk4ELf_^5zco~C!5QuDo%}$67Pv4ifYNKxQm!?0%bW3km1ugjsurV*OG*XP=OR1t> zfx|>W&Y|5axr1SzZCZ#|^)*~SdC0lZh+Q5|=gUWMo?O0DCg~g=0Wy_HS3q@t4dohj z(EuJq(Ig{mB2JqcnO=1<$LWcMk{snF@t@V|FXooz85%z<5VE|I+~g9>&WGwvZrbJu zj5TUxjjw;es_jLL-&^MCsArm7S8F5@NK5*Fs809A*f-9}Y`M#4@QkWj#FUyTCb`=> z39pg8DGq@nIah4a{VYt5JVXzj(P*4x+P3LmP2tEk6v3AzmB7H2P;Ye0Tg}SI_`?|C z1*OI0igWHxy~OuD^?N!3vu`<}G7||$K3`%R6L5`92z32EbYZHouqyc{gIZykoMhh3 zQ@HrSIG^X|xH5R(eS9>U&bAu1KXcHYvrAyTq1nn~<#st7O7Mo>U!wxVtdYx-z=JJl zl6X5?cd$K-3<>sFPPX2tLkJCn^8?0H9yBw^%WY}X62~i|+H+@$TGxs<^_B3PxlTva zr?TSsLsM?&=JLu*wZJnBQe|8e+HznI_vjiC>lXvk?)CN6;44d-1j7r6D%Gc=;{~ht zhbeHVveynZMP^c;6X4f*fi-=M31JPD&>kJCnnFHUK0%!?xkrgfp0AOS>i$t~WmJ|r zmJaHQK>Zg<*-d|6{Cg7pr`s$i%xTj|cW3cz79*YT-eZ1Dk>(eUoO5EZ)0(9wOm}$ zae7q}@`1y4H()9X@Js{Z6u8IsVE0qJ>&TW zqyhg}kKCPHRx^k8@>4-^3plu3x!Ctf0UW=$CG1HO=rUMMFi;^U6aAotm4Zl&Y13a>_jSaM?2bS zNGgtf$TTS@bh%z4?dPd;C$dmcY{CAvfdh56EYPUc_*?XMwz5AIv`hL)E;7@F*h-7k zmBlesd>qWe_Tm0s98;8ryc2{h<-n%y>nQUEa*zRE(IXaX$9S(|iu_73Qz|z#jXIsK z0O7^R!n5*GwX`7a8oI%cxB$WKqDwI3fo$5+*6^i1jS z^sBe41yp^73*6e@V0^i|*^j07gMHwhmwDc_m%zv~9+dUZc=L;ujTCNV6#uug+GoV1 zmP3i-#Zb2-KWz9Y#-6qq@k`mN=W4x`JbCw~z-i}XbB<-t-qGT0+#LWqW%0~i?(!9b zX&(y8YuS`Sq5BjNNW*yC9Zg)548wp9Lj39F`C6F%x~B;?YpBnp_VmezUWG>s5X7>fuKU54T(@=FYPaUn zjToktbleWBCE;^+_0C{&&j#;E(freb&&}+@=l@$SW7juZ1iA;cUY@4~eQ*AKFWwC?ktoc@ zWIuKo*f5ZWz`Ch)OEhQ6nqmL#BmIwu6;4B`DtwiRZi`mc#lqP? zfElkbCn@cihZ4=nQgCFf=llG}?DGzb(9`MD?&9Kj#_d@_wkk34<)tx^+K35rr*Mw{ z0T-7&K)-X#wjm<@mJ%|gbblUe?!>IfwPqcCFMV`nC1n6lwSENW3#87R zWit6=I$;lJaut&^rPQT>VbD~qjH&;yXWvBX=J&03Q1YCNP8rEk->-vq^1Kzc%kVag z3Gk!DI!SfsFTAiUj3Rm{x)lMv92G?yet=pT{1Vi9Aw3}s+)Yx3O^ShO@u*l41^WdTUo zVov2N>6vssOyet4^yp(`&%gj8zdIPA7YEDm7Y)wXbW+t|#p;{KUW13a&lMhcwx+Yd zO1)!&b6jSAoM?=_?xmp7={kK+2-57Fth79*8%2>iraT+gh_Kxbi3cs|nM%T@&&KhY zTf5)PxGI0suGKG=)=spW4*bk*SZ;E~>hG$nwf%qh_abTcwC5I{K(~{PcQ6+WbMW@} z)P`7C>lL!9(;6HEcbE%u)as3QO8~|r$&l`ycUrSr?HlT`u=Q|`AZl*<&Iz{4M%04uU^%Cudcr^}R z=gOW(sVW=%jE=9R0-mI6ndk@2)Pv|(9agq#0do=|BykHmS>i9tZiB&{F`fU^TDMMZ zCAj$!i!Kuh-L>fRXO~C~PfPUK|m>6C~(#dZ8XN&?==%5!`y6QO2*Y zlyUg?L`P7E`Lny7U1V8hv0?E+r!tr$h5A8qk0Lh;;TJhkXut$tx;=PS682OxYipax zk&o#DFBK;St4?LAqg!t#Qcbyfb~8E(1OmLxu7;u4vy?O*=3la(o^s zxzaFjVV|V#uFxRmMuG-;jnqxu$MvtV7j=aex~C$$8IzfNS*QYlzsZ#@BFW zt^##tBABHmE{$a&TQvJcJ1rt0W(%bT=fUfooeduV6V6aFeMN>%>x04)s*7EmneGb@ z8H?l|8NHIW7Q651p%UBii8%=yy{scubVB-^>Q%LYlWyR0F}b?*Dy8_VHzDC609|pZ z>^B&S3pmN7Zd?nh3k#~JdKr~q<>_-anh3e)&zGu8=F8xPMme%#Y))yjxt)U@<+xoP zYH^k(6J;pdw1P5)p5(+`&oqbb=;CP@$Z*g_-rWn9JWzebJ#IGrvP@|-%HW^2!Q zYp-oXLCggp3uvsL`EOG#WRL>WJ>?9Cl9Zk}Ah#(1ZL1PCC)`m7X;&c8@otQ`2aHmp z?L!k6q|X@O#r?=*IE5~gqo;@I=nH|NBwccD7-F)eDBt7Bdmg=M-(iKhg*C0W_z83a91p;NQ$m-6m+(j{9->&;E%BDWtjg01bLPr$0uM5cu(DLd&LYBaADrOpRl)E$D&+T`uLcHcGN$#}|J0J5NO=*v!Kp4)RcjKXo?IEehuQ3dGg;%Vi(Bm|qB zA9Z-&r|g=Sc9Ch%lR~H;NyNzey{@rNb;|C6(S^EQJ0; z&k!ra0r!v5?Kk$5lr=3!reYeI+4HcF+NfGH{)ho7)hO_X&xTsbtJCt|t^Gy~=PxHl zM$45Bgnmfgx@jjk5;WwoaOL;?(y*SWiCt!d`^0Iq-c!wuEsxxWM%6Wm!K#IuY9?*W z$HB3U36rxr6Wf%pDjD?G+`r7mf^HMQ8I*1##wM1Mm(x$vO|Jt~_W~2&Bi1lAyq-_S$i@p*|8icnw>+&# z3;L2$ilItRqCcfIYd>Fr z^_uqoWnTHfkriJN!|szP7ta~`_3~qZ={)Hbf$h=u@B#ePuUuWm@=bAp^`>oF+Gkb6 zoA{wLo>#HqYxAcMn(@X3@|*O-#Wx~V4jF4T@KQ<2KG#y%E}$FRd-P%S)c5-tQpl{R zyejrsJRngjQaW?#J9*%DZ;!8vUTu)aioWW!i^YdDNsZ1Ov~>`|*Srbx!NuYu`SIg} zB8J}B|JV4?mv}Re_-q?bZ|^QXZjJ|UZ9u;n6s|q0SG*cNyRmA-p!7%YY?+cbKYaF% zw0}mEwT=THSctvvcBYwmVf_t!p)OU}wv8z07VA=f8Y~$)jfw#a#VJZXYc(g2AZwy@ zl<;IZByQLdZZ1ztqWPR?qcvVHvfkA-WNLRMyl{V6nKhDY$cp?n#~wiR?BwQIw+HzT z3VC}Q+d>zfS4&Z*doNJaYXNEZB;gy)<(?P#C;o*wU~kz4?u`)3eX zeqPtmsE+k|=Wom#h?08e5PQ=Cf0#ttwa?tzs9wPZc-NMnPwoKLwvz)Gt7P3SyI&J@ zKn~6;eFELBrAG!D9{H6Ylr>- z&=K(%62IUAh;LbR#qrZ17Uan0aPH!#D-F&((^`BwRU_@_Xz6GmxpD%&&-g#i?CvTa z*1wkHixC;=Czw_?_8>Mv!^?Ht_bdTEjk-qtR(Xpzh zA}?dIY@u3C_lQYGg?23vG84v`1}tfR?W(b)R6D;kK8fml<3>sbs04&UNHl;K=a?$_HHN6 z8$8W1wo*i=>ZJsar+QNpVDh-zhKKWX_~vQQda2(Ax8(Fiu>8hX!H?s;`;uuEI*TOh zENyuLKbZroD$P-8WtLPWm|Uw}^8i@?)pAwYlgwJ5@7suJ{p@3y+6U^l6j`GqVj(%=CFC`1$ne*Uj^DxQ4eJs+>ogB|dJ2 zAY~ll=&b$>`-tl(%>R;+>>ooVnE*exfD-9YM^)7<+-xOc`WzcjOeRcSkV3O|c{eKh z822Mu%;S_?PyOuBpEGy)B6?DcdE&2;Oe;>J{94_XbW}1Pu)qQ44S#K8O;=}KR}Y#V z-(0^y2zE+--)3J)RvweDU|%dgn_+&Zue_F zEvZA-0ww98N#0BGr{*ky>C6Vqn0$b9Q~=SminJY}R3#TUOG@z(X*?WQUlO;PdoMgS zwD(i3fYlA+JWsk%hix%vM^nma$~l{{dAyq_Z}?75qEeOP^^rer@+)NZAy@J~RRA&c zN6MN&{35-Z2wI`RYwgZUuuFFgH|d+KhXV`KRw5cG`Ups(9=8um8oqX$A40gZ5n}o! zq|&$=0jgYxos)%**J)Bl8kLBSZq|LoQBnK4zuL-a|CQh?qQLx$2G-gEJ$;;2<@&6m z)g4I?y3;1RO)gi#BS>+D9#Ae zf3}_UG{ZN-_o`X95v2>y*dA{#+7&Z*JX)g%>%Uo|$e6Gji$j+sBz(uU_(sYk^~Eu& z+;PLH%0^1uGwA*(wJ#v;?M6{u`y_e=^^$-JlKE%^-=h^j3(S!A?*8b&!0eV&N~Q@v zj1p6NLpnnCdZgZf{yQIvI%h{whA{of@bGjo#2kZbzv=qtej|R%vD3#m2Ym_mG#a%F z_A`bD(PvM}4t&bpa_+mjfIx%Y-A_+@la2SvjBxN5V`4=LOF#^AzVa_!93)4x`kyUs zE7lhV`6A&86Tfi!)zBkCkHyNiFut{vhv*GqE7v@S$iWhu1S!{*iY`e3U!(d8u<5XW18 zu`&Z(84{Urn-C<*0Eb2P&ngd|@4F_tv~rQ&qzVV0MWOt>`dxV1jvU5B+2prLH=9XI zg~5Uvj|pc_OhuXb1SzPPRMGMn$GK2P!jGgaYHtR|t9($ z2A^SNaOvuBKeF(VJG5cV(pR*fX}E4=p9l}Z|CZ+v(jMc_2MK{sPv-W2T4y&=3@0ag zc>Uc-qPrU91&#kY#lSz@D9h8!=;7lvh&Fj%9tgQ7f|nH8wAp3u^ce&$BYk5l(>aef zKWd?TUKVI&KSCASUGv-)DjZy7a=#d5^VaPx>3mSAUai6&S9KX)mWd|~{5MuA#e-dx zAN)w0h8}1S$>=|csHwWL)V;?2HqMlbwUBsCYc0M1kQJdN%^F`tRt4i}j`=#c{MX7C zZDMl2j8M{n(bU<9dVB3;N&Mokm6vApJ(A=5&1uq)5+4~)G;Yt!kBvmX5-{iAcFp(7 z72EEG(MQ4e5S%jOTASSp6|$$U;!iuLjCH&Dv>(!k|U$<@O?Oq{B{EBk1 zaEgZgE#UY@U$jjvY`7sHP6|ea#3hCUtapJc-B?7<;WJ#UC&8vFFc^WWL<7u9z7hO* z{Jc%+emhz`Df;3dOCb~<9}4(fcVTem&=(#iD8Omx_ZoA zKU>m9jx-i2`XSYfwWtDN*04O^^$@Wprd&}$TUG%zHNaPp6h%lQjgSSfQd(UAl9fBS=a#uglwM!{ZJ}XtcVPt z-{@4VlpF9 zV6<#1s-)k~3nYJO5S8&?_MK0>uf9G~{4LR>ZEQn@s7D>`ZlX>#Qs1Y4!&Lb(JO|(D zh+EpGhZaic?L=a{`o*u)=5&Vyq__&I44(|5%0>60uc z7j8ad^;T#S)RCffQE54{9Au>K;PrMk?C0?m4?DRI`xu>#Q=fZeMy_rbns=({{3vLu zbv+LkORCeW-WVEL?>?v0uh?aJ(->iAZ*OlC%GrD+zd)y%{PJ+RL|8zQq_2U5cY1H! zNIO7vz~=d$NGGTEQ$vNLK|ze7Nere-aUb@to4{=Aez1)#!e@C*e#@7$`)?XkMx1oo zkzm@OLbehEQs+H((Ukt;o}J4IwQL!y!rK2CGEOmRbez-m`=8Hg_QRfgM5z4E_RKfD zcA$h|2kU9{>{i)!u53Shehs&uR0*#;T~8~WR1VWS+oO_qomZe~zmM6|1oPBqxAJ>^ zp!~-qB}L#;CD$Xzzx68hSg%*`=COTJp;9v*r>J;pNj7P3tM_?l)UY|sW40=t0V^cd zi4ft0voMtfP1ODv+`KLECFz@lkSpZ}@U30N`f_Q#bLvuGHmJLdy_nkHC>qZ#qX^?o!fyFdZcAFCv;N`jCT*FBXrX5pr`IEM_+B<9c2_s1rI{3T4J5ky2%~9$jWr%;M zYk1_@jNk2Fg#;~^gs%Dvp{lk;npo>!khPGqH{3h zXD5x0G9`ht2+kzp=h~otX5)ax4c8TuTM-$qN0i{KQUmQdcxx}H1yQ7uckhBQsO<^Y zrau>nEGxol0 zXK9F9Gq-fMog@`t@UcPg{uBJ`m25K^#}~Xn_1+a+j?pYGmQ`3YVbtqt$(fC;j3nD= zf2!N+S?}z7j-0UMyriGV!}}w|Ls3TDsH@u0?afFq0k~^R^q%+b>5zMS3E-1=no9Zo za_iuFb+mU@9|)U0NYPpP!=O#c7!rPuZsH76-*hpQ+{>a|T8W}wj#VyR{hxHK+=238 zcwf;xry3a^UE$oKNNqaZ4c-WoJ1JWI;{f|7ZvWN(eM1MfhF53aTJD-5OV-kvRk}12 zEXXNLc-LyCiUTq2eC+1t|4h$ASHt~(G3iF-+=gvI(WO;k*cAgDBn_xiDck9W zQViMEZ->U%EaSS?Bn@Y^|FyRmNp?NKzp)7_-)206sGJ9&<1EH%Bn(T(@Z+ zQ)`r#!N;MIuDjN+uRNKL7n^)yb+6H~12}sP8PfU;Yw?!yKwH zDm}<3bboVvelQrhyllVK>HfG1obK|zrOPupTmd2aYgM& zQlCXB<5pE(qu@IO*6B6~-ho+|s}edobR2IBkicg-Qv7#DSKVkSS1jK$TMk8=GsT+m z5iD^%_^f%J-JLmua|N=&bH9)I*Q$}EjL=R4y=e9!tE^bFO5vI#JU((P+qmS#uBiSt zJDEslUo#Hu<*PqliMtjVef&pZgFl_jV%twvgYuVdTKl98_TAo3oOMZA)1SS;g%bRH zy+t_7qfYwXmzqzxWh3kP-OZQ-98HN+;hpVUy7`xxw0(n(nnTrtGq0+jf?l9!%3;SM zFV0KvmUuH)vABHr1~|N6OC7x}FOaR*c62Bee4qsRfka!q7f8VEakct&`|{^e^q;6Y z3uQ7T=Vqwqe`Ql+QBf0@V-bLC=PeCWO6RVyWx5cAHd3Lo3)m}|Siy2bU*8a3a-TeR zU9ru0bW%$;76yK7v-VmC%3dYCw&rnoQKw}Yp&&-|y&J5T;(}OC!~kH(?*ESFhwxgg zP|fFG0egiwE-gW)jI?gZ&n`CzF3|0;-ZOrTv)Lcz;aEnbbom z-5>aovwXpnMA4*lf5o8QDzf1N%?N{=2U-_UPdm_lNDGeduXL6!`8!a%#mfnEr&DT+ z<-T@yb}CfsRdS4Th|DS^#i(AWpTT8i=@+O;IfgPQov!Yj)Q_8k`$z>k-F<(*?BDF) zoL@baHcRp+*8kMR2xnp#*PYkBtZCk+U33bEQPJdlTrUDp;)z{sKw^AwBt2dyf6HiE!#q;FQ7g*sybw$X} zpga67(-dV|H(Qeu+(1Ye*XM;V#WGoFl>~_oPp!?A^i+9XtlmON#)GZWE#3~9I+Q*1 ziA`KaT8<)pA1elPZ}oF2J`FiYz|UIgh6GiU~3?-geeZK(}AVnv1q5y z1betsE7umBbo`FXw0^tlpM#rT>3J!t$r$R2^c^snxTw)@uh<)To5l5Fa`Mg|2KSt^|AR$#Qiy177{uuK+ug)rLQy1-Q2`aQYLvJcDS*7Oe*bptu zZL0~^XXK920pOv;wO(*4d|QEcb6sP>E?7YNvX3MflFM3(S%c!7bDdVu&j9^>dyc(- zKv>HY65)s*PAbUa6nU^e5$f0B?iLvR=-tx!NnAV5hIV@Lj%v(Jj?q6uOBWW=k zH7Hdqzzxlz$^@M8)x|7kWf99&zVBMd+Z3we3IOtlv7obGg-UBE1pe(l4J`zI@NMh- zbmLEb0V9$?S7O|3-2Z1tI^vGj2iYu?z81dX%Lvhw3z(1F~L1QD}XdVKg<{}nnE zH~jGdAD8Q>ZbU7UorgRzaG!oD z|C74Ox9^_>tAv7|=RH7Ld4ZuKX8kFb-n1jgQH_*%OXZdOdQ6QfB@m5nn6lM?P9HzV z5I+wM_lL`0`?<8p;d6@EV-cnd+3Lhoo$5up6zwkVG(}0zek26iOl_x3rz(=LBk~Q` z{_-ov@mqjh`Jh_gT^3Q?>>lUu!Gi%t`+%(Y94dINxeX{vDPr3UEbMrbYtsCA>FZnL+QGhNug zsX569#a;%9;rj-UD=lTU*`kQoJ;|GzdbWD_!~mZGn0d4_clnrFnfB(p43c*~{I4db z_vy5n8Rt<{_25OmmhHQkDGpf17 zFKN>C(D3y9lvb5aESSioMg)sxH;)MEvKA4VP}5D7Sk|lQxM_ws#%hI{+-yTb!n|t_ z?~tWR8?jZ|*ZCpS;*}HM$DtO$=l$1f$MxsK(^ALz{m=KD9A`=>Y?8>5>hKek+rQdq zmxz1CZ8!)^P2Iw-(hZf?u>(_*yzj@7C1JepkH+dp{?R~uUswzQ0D> zAx%quzOe+O&ol83-UI9xZ13C9MjGZ~O`jFjB&oucU54me<9UTo)CYhckAb1a1VD7b zaBB!-8kPa*%AK0JoRVLc&G?dG5@$j6@(7pt=A-VPwkxozq;OgW)Vw#z?x)VM`h0&RuH~d*QU35rF63YfDDq z))#J8sFBH7eB+>Fb4`Ut;fZg9M!`Vp{(eIYra+~vouIq2Hdl`kQfi#H8gQHUHQWGvhJ>Z@cFa7^#*xMoc3U?X-J1`B%zjO z!*`5dVK~b`i#qez_Cd3GR1`R`uP)PB-wOY(j~2+DpuO>>sg?s3L0vs^vNDM3u%S*Hn1jz zp|l1T+kf9*paF@8y*uB}r+*eB8TZ59fd`e|;?B$;UMt=qP>&8hHLEl2bJRu8IIqZu z%a5r`*Iwk;TUOXk7TobecG&`ys@|mDp83^&|92EXzF$Kfm%a9IN49#yAlaDI zh$uUMHQ$2M%x#~>q;C+a6fcZ;spzs}d`Y3}24gX64A{!16oYDD_q03i<)#MKwtSrs zv3#D+GN7CPaQpw8o$@+2v->{<$X@?!#F;X09D9(DAUrq@n8fU_?cPS4j5+CU{S6!Q zk-zc^0Q@`<+&F&Om*Cok1>DqpwYRkoD|Dprd?!xpz+4+E)vlb48;oGnwTytpgdCK>|CxP*#AWd*?7UJ8mX|xO?*V~b#z?v%7IxE+jrr;7z zPRg5T%F*!X=@5moPCFmmgl@o8Z7bXiF2PdF%MtW@e0WSV^nJf-@Nmu7DASQMlU>6n zsLN&iVGekIy!QVoAel|9Z^IU~6#bAVTN~t>K^vPyhkjwqQ9=aM^32(-*`qVC*p|grjWhfLa|G6!0Ae}@Nlg0&ReKQv3sCdK^)$$4Sqeq@c zZ*-PRA`nfEQC5Spv(k{hk&W8bYxdQrK-Qu7d~DMbjzdxvQy0KD4b6yOnRyb@Wk3w~ zM3091%7m_;DaCZrQEm z;bUorJH<y_`;qUx}oe zEsy=HeCVczPX|R}bxThd3V1eJ2BsBa^S!h5EEJsWZ|;<_Z-T@fBWX{$t~-nIrKM=T zgu}RmW+^_J&|LSANcCXhEoJC`Gd&(qFIY8~mzUYrwAfu>@P^6rivqW_Vp3K8Te~+` z*%G4=v=Eto0CMbdkO`x13ni_9doG%V+3d&q@UX|$o|3EaUb&0N+Hmj~xalRn?Z9Gb z7ewPU2@Hxl&O+_9nvL>iq$KB$O|d?sGIjF}NjFi+ z3=DNJE`II|7);%(D!sWJ9=j1bP@>u-mtQ)^T&*%ouN)sckN%ij>R$3q=;l3nCq+}N z)qNf=wg^T^=NL$m9yPl4n~y0`_vJ-+|M7r83U+73pdLP)V%oLOL8t_Q)vgv8JiQAI zp8|U-$DJqni172v)TK(LO4Vlm8Ik_sGC<58H;X*U(GM2k;%Vf62KmzsF6Y-Wi9692 zqSf{i44P)4%s6{O<`Vui4uyc)7jszoy|K9JhJLxg#`&OFY*X;k+U%ml?CNVJhLR=FuPLpgnfe)+|Q~K zU%(a)e&WfZ5?nW9XP*zrFyw|jIB|@xP0u!zAHf>qPs(Tv_JH=w;9MiWVx3k|2&HBU z2=LFzDEPIvly<%4`?1vFAP9I&ZT^!XM{ii*Pn;p1RI1SRcy$T7K)(e+qNUz29BaZ& z%%-0rhtv(qe5a)5?8={V*Ui~94?B`#Guw;6nTubM)nAe|(_ze&tRnT1FU~5$Md5+x z!Y2QKU$+R7 zjQ#!J1vj$&w*Pu-%E&l0f7dinpT>xZZ_=hLdmEm4lmw4Do8dPx^DWHYR6tA}=!XF) zpa?aW)S$>F`7gZw8jll#d94hSx$}x7HvA~(xriFAQGqo7%nSx+o6l7*zX#5L`?~Ya z`GSvU^Ft&j&l>u^G1P%9hPz`JZf4clRY8yd`TDF%Agm#|7`9L}NJ}Q`H*%sN3+<^O z()*DsNr?$Bz&>dGlJ+C#ccvQ-NEkFYNgLiPH;Mwxk@R=hB60kJ^W|_-PoB!8v)Ks7 z9`2Kf9KWe?5xYDwNiQN@28nT-Jo6JMe)rt#TeMdeO`f^1Fli zsOBWBna}fJ$e<}+U}C@;_y@k}d_Gjq5&#G8a;sLM;;{0vWr?0e@;e|-ogudrGXt=( zM7bI1$FMwFFq1RVL~!?}N_U+X)WYajFGAx5NrC!DjXYPeIA0YCgR9bla}noy$|cBV0>g@I0=spHLG*Ta^!9V7 zcRH}nC@RJM`CgLO^#W`${Q5-N{sI-u_jGjodJAz!!K6l6#HF`1+7SIvBH3^iPnvWx4_Cf%`SajJK?ze5jW>! znjr>_!emjDdurDt0FSg}JWTV>YJlg3H$SMz#VljGmcoHDe)MpFr#RvlL)NBeXD)qO zm~?i=#Lw?~xy)zd+xcNO{@elBk(tK2e-WL9>$0Mv68xj3NEO-JI3b#abkGNWy9uct zqgfZg|3;VxJE_!a4)*agvImSZ)wBy_evo-9z~yVWw_tvWTuD&qLj`jHg8<4FcGf>I zf(LN1XYk>NWc5D{yY$$}BKOv$FE` zofowW!R%hJva0ClvIxGLfhui;>(FC#yyiTnj4cE*KGq1l z>=Ysiyu{SrS8`0UH?`N!y6uf3t1nab!*4DVU#7E%ZybnJ>{LE5)lB$@4b^0ef$Fk( zDY$`fO%=S({~(I@wJjw#a`5;xZ3I52N+vu`uQNnT2Xo8df2x6VZ{%GSx%M1(m{I-^ zz0splAH!-@p-hQ{LXkocGC*qSvnACo;^o#vNIQx92PYqlfJMU&`elYmqg9P>?t60+ zo@I_SVz&slfl>c+4ReT8 z{65FOxpZ25>Ec6J`R^qN` z?d-d8>)5sYdBJXsoe8k=o~`24Hi^7X-QY*OYwjor^L2M^UfC)-6(dLf)l9#%O2(BX z8xc%DMfKFqFR^LfL8+qrC{m_tL+I|I_!O(~9OpBbXq>yju%h@BmuDydaKF6>SZ&v< zz?y)j%Dc+b%h3brAH+6q7dHr_>CzGg)%BrK zq&#kFb)-6tiMWjnz+NXSDrXJlBnTo4eCxD+$6~Sa~Q?f zQL#)Rq*TH@D;M{FD8U^y8&p?}iuNvlwB$u8OGzeqI_#@PmHG3)#~Y?E(#+@r{hkT3 zKI3YiqSFFR>k#3=aTKkGOlX=SDs_=A`y6?Ch^lbq`MCVk{1FRQf<+UxDF-ES?g5#S zb;f|QKNzp`h{HO&3I~EV&qNT-I;(5n3d?$jhMYLic=f|2sd+RK^+;Tj<1xpdL^sz< zcCly=_s9aZORQOy=XFVeP2xYp#csp-v~I?iZtU9sk z`#^$N@w8dVjwYWyU5v3XePP64H#Z#O7pfSUStf@;c24jY%1CHJDV-V|fmH{amdV9t z0;r#R=oup~DD#gU`#SFG?73s>nz`>vQfv&ztf$$@b%>^ajK~>p+`h!Hq^< zynA;_$UaerOo9}2W6Dc17GYRL4m%Q@zbVz@-f46#NFVR!4+I;!eC zak{aw;pMg3T1*KyqyAiiw;xZ!5?5VEr(~3R(PDa??iw;{KR!S!lL)+=X1x_t$%URH z0`L%~P3|&~kRKp(Pf5^N%Vy|tBq$|nWG@j75qU*sB-@?BCi)kmvYzZuV%+*Gj~KI? zQ!aZZVy8AsOYY6P(B#Ra4PxcGhXs7o8@eSC8HP}y26Zl7(rRp4MNpP326Hjzq7i-f zuSh?nN!LkuZBeeAO;Z*Y`(tI;j`vU3;O!(BsrcbPu6VR&qk^_q13<^^zXPrP=1v%x zEmPnCFXF&;YsItZ%${VlML$l=hPf%wBVWe*&Ql_HWt8XKX(e965A^N}`N0NbqEs*n?F=HeIGvL>F0A2s(%rZ0Rh*axT6Q$6GZm>~Vc@ zb1}B|c)DxVpjU$l%NEST%SBS_2Xg6J9@oltYM0N6)OIeMp`s97UMz^*yaUf(H6421 zKAr)eo6i9M=c98_#Iav1a|1awmoQr|Pq2%xjZ~)SG)c}u>vu)`G>ck0KU>Qm=6iU_ z`G#{_QN2I(-*E@8*`^h`ygGe^us=%;1mZ_Uf=c_oT+ORNZw`N+KC!c7{P z_cSqqup=;@)&XD$Yro(U#TVly_~emBPcc4dZ3hba>={jKeD`jJ{UBpd>r2V4iZxjD zCW8s%cBw;3x>OEf(~zlDL-|#V&YZuehN_7E*1|Y=bM>kjRw)(2!^G6m$Q*9otAm*; z^|rXwB@g;VBf3f*{8%xNF=#ufGY628DJN)O>>g`OBrl)Ar6F{}ZUvhXhdR)~$&}lD*NBd154n5%$lG`#=b2WCA`4Uo@Q< z(v;sHm!4eI**_IXd5Sx`x?i;xbGg?%VPW%g+|6DI6RW>B6envjPI#`InXX|12ytu( zTO?kdt9eo}Uv#oPXtd-%E-DWvc>~%TK9n^(e6i0)21adpX_8q$VcbqSKJVp~4p9s8Fph@lTB`Ts z^ZaiwwXkA17(^Ljqo(XoFjBng3h7o0IedlzsVq@Am=&`_sH%TG%eNsJ#t=PhIa4us zZ4dm3oq~4I9qP0lNfTlsjy>ge(q434((H#^e^}5OUDnu5E@JzW(PV@OwC!xu#gY6j zF&a}sH!xROC&DU&O|7-p%$n>ur6XWSBiBN7sBxfUWbkA9pH9)ZncegI`E4U+dOH1Xmzt)58l(jV;$<qKptjp<|^TOV$daSF}P6c z8H6Y~zs&$>ZDp|b`wth@+-_CVBZy*?XE`L)Jtju@$MG-$ zn#G7wh^}@MYl+=!PUbvaatLlQF7)IF4_yV7A_XQS7-h4K;}W#kNX%5yi*x21uWBY# zIRfp<-)|MN5u&B@ek|^S#tG2}7NYsT^ZR-zORXE5laJCzN`~BhQT%eg_jFQi9W%e2 zklNYWS6AEd86*WMT%A_`Ysj(fC(G2Us!T_WtT2{7QBD%l_*r{2mw9ou%M?uV3QHi)zK&F~%fG47&3# z(jb|kR;F3i&yWE1@C6b5>dPgZAsI5Ay`Ew!Phq*B$&NF6f+u#Xv2OJk_@K%*WpC)UE1K7jB_|JQxNzGdaK_H?h9=%T8&S&KX@2Ec~>g;d8Yn;Us zV%Ou&7ObDp3G3(^yz3X^%BgwOi10&LW^66HP|NZOJ5NZwYtmmItAr+$@=fao^>QJT zz!MBF7FSvYiP!G$jO5f5(|d5C)LM&Md#!Q7S1og9anMK==)a{1suZIyTVCV83Wjx2mV;4OrmVQioN5Ja!P`nWkNtE9=phDOxfY< z@DbE%?)$j3QPcBsF)?G%>F4|uLP^hty~nctJN@nSmEF$8?a8!eDfI8p=y*#)jK^2i zI<1y1fs4yI<<;_Zvx17SO@2}vM0ND299&u*qRT78Ji+(3&F7wvGmjaDyoD#bBSR-n zbDMoNo_?$LS|bW{ig@(=`%pF4dCto0O7IMR|3Pqq4a2yVV+~S;Vf>MVnM5UOi%a`< zAxAc%4V?`=pBKxIxlGMiI3pv1FN{wNdd7fU7+1)_A5S8m)wBuJJger-a3~G`zjnh=3nBJ3;21ArZ6d+*=U2)du%(3!rjVp_p(?~PM zSHr(FwW!rnEC0e!ZrV{(-|@b=>5Kcx6=I_FNIY6XyuWME_JFHz~4fO9a z+dvsp$b+ogTMLr*`MsC|^D=GqV>@(BVDh43G<6GKzcN(3a5P3_Q~TU8Ds||jt;F>rE_nZ%XV8StK1_GU3U~IndT)lU!C>|&!_*A9suka9fj?|PFC!90!>o%! zNQf@CLk3A>{B-SP&S?3OI^&s31B_9TT<+gNE@W= z3AgY7Rc$m$+BXjx1c`TRRh8BxD;U@X?b)!L8^gQ267c^Nz~@!Q>=*WQ&jjW=d}w_( zc>w1QEPwJT7EdIck5sj>*KHn*1M?eNjk5mDjNY>deiDCvEPXx6igb#w6q-ZpA?fbm zh_J<4YgcE`+_1V#qddYAL(5T^#)5u%%0o$YDIHN5cF?ME1m^uyK=~asc-v&-e zkRRaf>jdUR#2zNjf2%mqYS-CN6h|vE%P1pFz3TiYM{%cmP!LPrewa(%a!OaURfsuq z9Wy2DwfBds!bd^JjyZtaW{y_EAkdzpJ*o+ZI-#H-w#Rh3E2WvRR=0ENRW~7k$%WKS zn!qM;N4VPT&qQq#e@Pthj12xtHb15Oq*e6q{2sRwxe4{HzcmrL85em(q7m+OM#0@O z-f4?5Q}&)rDObe&E(WxDB< zoE)^zF1P_QiTzMBd;zd=vhW!R$1#yDF_@s;`)x;cgz6*ws*0atNCf-r% z9@YGl?75w@=Z%~ceA~rW9%0?7^>V5g382r2DKFB^wa_Ok*tqL#(Hi&L2ApS?>$W}S z1SwyN$cJpKK$L&GwmA1po6?yY-llhlcJ;huy5APRLBCw{K!qbW{pMGMQQM>j_z&fl zC|lE`ZS)m5lR#urz$6(;7(n%c-Owm)*O+?*I-Bez<%Ypq$!b24EQWBN5=-Y{DR6bL zO}cDc8B*>Re7AEjrwzVM|7bqfylvQIzm-XoXrZnkaP}-1ipcL_?q=ouzYS!;El$1< zE6?0=S{z?n+20+eJ(9faoS&My-h1Dkb91`PvrBH|r}rdnSr-&5x!y)WZmT+bk?tRt zg@zxIN4wdt8V)E9sO0nH;GdmrhxuOO!9SV~Nu%T`xRf-XVOiDA^OqrETD9 zOV}c=*fIR3p2Mv|lE2gY?QPS-u-oUJ;yb&YhFl4pbTKQY^b;-_Ni{VGMOSl6!bc%V zW`5Ol2!a@6CeN+a=MejY>^Q^ES=cXo2m5x;=I|y^N`INCie|%5|10XR;UNF}%gS}B zNCZwDXQj!41k-pKL8{0v#{z{__q|SY87r7kF{s4s99xUa&Il~4U5!D}gl{k}MP-aX zDPXZ-!CZi8)l6I~qr_2e4)ACu!}BDcOTw%12mTJCljGNSp6_Oj2)2~slQKc48@3p@ zh$a10@bE)Fj5LPk`p94=AmzTZM7PHa5CqD&E0wt*QRU+7ABD$Bai>QPF5I?C?`q6Q zziq}75S1cZV1@8)T|OcNb#$Pon5gVxne43nAlNZ% z$hZ&~?ZMw@Qu}*hw(0;R_L^U;RH|xX0*eVLCZK>@zraQ^1Y>o+ZDwYzZPrhFDrlZ2p<9q_ovMUnEvwpM z^s?&U-sjSwWLX3ea?{NxMu9n}2#G+fy4AT^FKyH+P(VgWFrOD@bL;iAG*#5Jp-nF# z#v{rM5$$K<7?Yq%R2Z33mZmf@^p1q_j$z$5h1r-i_g#V^EJk|i>CO-`Pk7n=-P(F` zZVTha8k1~!B0J18#pAnE*GwY)y*AZ&0~gSlY6i}bGfKVvegO+dsx5t7;~uyvJhHB5 z_EiXDnDF1EWZc@;1eaj@%x-R&w(Y+s&g0<6}IT4uKkAKq|`<9!eaQbYFm%O(&*Xo2onb< znp+)0Is-jBtz6Nrp`z;4)e8CIQbFIx_r;f)U$Abs^9KQ4+4r5@ZOsy^vcQhE_A8wY zM+fQ+!+k5f#gr=l{r&+IImSePWjPv*!7YIfqwda)ph!YIjHYrIs^#lBlc03vV26a0 zS`T`#)?tw}1z2Dd6q(gBWLTL!e%S#YTrpF z(mMdOxvP`xEHbUX!hKRF1iRKobxHDY>eXtQgUXkPzi`(~ z%Ya3p%XBb&{W@6U%aJZ_rpwb>%`W8`))DSiq=((*rlSTC%toP_M&SytpjW?na4co3W(BK}CBV3~|iw^;n=ixa5&ln+_;uU^si%Jvk|0++ znjo2hlc&j7O|v$=oO>$yvP=Ibl)bOT@@~|@|LRAKxmku~<;saGO^kUNC?*%m7Zp$b z>lcZ5M@$Z-gAf{wKJ0jgm7b=0)ic*x>r&a`#-UDw)*otQBbF(-lP^CFH-Q~|a}8?g zKrOhjXcWFbTVgG1`f_Hm&#~Pv7Zna$eqV2E=L?(rI^AN}7%-)as+mr6l@aE2VO{)Z z%_4NN_oYlm2@d;nG*d|{gnV~)?Uo`-RUWz727(>l{_Oyn9~E_cvZ+U!_;B&?UCovm zgsvWpaWjHGx3BjV$D7_sFIY~ZkYjeu&yVNcig{V9Bg$z(3ibP5rU%jB{-*$iG6=|F zWXxz{3>+cyfU%Tv5|jqi*KK;z?WVA})33`I`B(?oHDS&Otq98Of{BAs&a$C%_P@hh z5`=LmoWGA)S8*Ul@kft-6;UkwMdm7X_H#>Dsl~Img*&lUaP35X&1zd-SvMGXZHAA%P(o_j`(BW%yGzC z!#`&_0rPs}8y?uj&jLD6Vwt;xN?n~d$&WqBmDqP4BRsgbF z$OeR}H#jXrAwxVeZStW66f@!)+i95ps$f}EB`+o7n+uvz9(H2BCs8Lulbx?EdgF=` za^c7g>S1~)vQe47p#1!J*|&Q9PXM_Qq0#6Q*Wa!tL(YKH%i~v;?#JQ4Q>uivO+JI? zoz$=$cW2tie%$^x4y_1(y+6(kZ!EweW}F*vZTU0%y*D)9OIaY{-}M8ugH5P$QLoH2 z2(g_#E&A1_OoR4y)$E;vd+PwpJxRBjA*T+DFPrkfJq-XIbgN`yh{}H^iU}RsUfmt+ zojsIm&=nO-_OOiwE=p4emnkInl90Q{SIK;gjV-N!EKHZ2Jzp2ESqoiBkTIl~aPJ@a z(czr&v6Mpp*!By!;YlEUKJD!Vy1#Dv#>dx#!^FZ5Z3DyKUk~ro6b_l)m2Z4{>-x)p*D zg+CHxdTw!>>x(zfBs0R_K#nn654rFlqm!ocM$0v~!k&oxc}RgkL*TsGBwN~Ynwp?{??QBd%G1`J z18>Ua?6+ezUuw2y)p4h8fwYaLW`*Rias$%j&^2x`RBrG}v|M>YmU0iPtWaK>gX8#E zWSmGLlK3GYZ;PXYf7#52)C*R3uT-iAn1&8Ct}cUgF~je^a_zw$I9bq{&Yf|7Y$la- zIdVUgtsl!u{JEET+sxb=^F4E4&A>ZN8koCh_@jrcDW3!%L9(Q6jkkfP8di^eeS#7O z$2Hn`3kmQ#fdp#H+`-!Ym4wCrZF+Sgwu`2jo!=&f-b9}qX2xUkTl7o~i+LjavC%30 zK1(HAMGRHy;T4-wJ8y4KRQob^kX0$muz?vrBKslXQQ7nmB!_!4?AlyZJwMXkz`VPsDth7Yemk~jd?Q7hR zj5ra+$muTT4?f{|*h>I0s0ur!XUFhOZC+ENLCY@f{6aGO*G`J0ossme)O;#Q8-GE7 z$arL-=U_-8fXa}$zl0Tp1^io#&Vr+bXNqR^eDrh~=b-pl0}3gFzRy4FOqO}?C+e*f%RLh4DH@#|0j`Q<(d zmx(p^u#?{*>Zv=0C6hrnSe98t(-psR1_P+-wU3VYMK!e?10(Iv@T3FcRmYht@lH+K zS1j1n(y0sN6t5{4s`)(vrzR|FBJvBri}VxQB!&yg6srB%f=#Rgi4zsCKqH6i*P(kx zf%m(LmhDcz575{qx|f_rMh>_0LsJd3CsYUrcDt+{V_qM~6{UERsByjUkh_$VN3-($k636+tCnx%gm+ z-fU435KM|^`HqM8p{J4vJv0?<+qxWM)%fiOtC6e)f71*+Ia)wJYyxi&3r&hdC|{ub zME+3>4MG-s{a|ziBw1p=@C$Q>nvur#oi|Du`rYH39-DI-5=K4hFEd%gu{8||lISqu zqEL+3biJ!mwPu-Pg*MvGJZPAh$fjMxpE4D`Y5z#J{B(hjzkmNNwZ@1w*)ivHR zKFcW>bz|*9^_s`PULnz;*G=Cd<>EjV08wT2W^&Wu%4$+CX=o$>{&n~we%Ur7028r? zf_b}Dtm@h7{I!MZ1LK5HQ_4TEkm}{Qwr7}=0pDa%7!7`F@b{VpP5ZkZS@_>&rh)oe zR?p==qq=@&QqATem7eRw`rQ`yHD0nq0IamISIrKx znD`kH=a>GAP7<-CFWb9pl26+$urC%cz)fF`AaItroEfp(?)EfD!Gr^L9@KaE%-NH% zz%o~C{~U_}mwVn~)c?y~x3Io&%;m#fb{J*sL}a5~efqj(=4O-{cGy8xt#**k%06|O zc)&M82#4A7%_bwOWI_rsFr@bTYPG~?#5Ie5jhDQaoG=6_;V&~5xipu&r`8n4Ex4js zY2uh=^cB!-nqpdXT_O6i+^5REWLV?_eDpMYej%yEbiF6bo}K5J3}Sl=*|^WCwO099 z=81clov{_^cwahwVnNyXZF($%N^h~ZP{c^UnxRq;&fK(M-*Zj{;HWJ;#a05NOkCZHVQ8*xiA2|H|-oVM< z_#tu(4K`_Pahp(?nk8`&7RH>M91b6`yM6CeV|(A*x6R|4?)+-5jOFvfHc65k%Cmnq z&+fYV{T9u?h|+7={d$(g*i8oBEznVoHQt|PK#Jv^ka+xr&j?L27DJKH zveMGL!YTUCCHi;Q!i7MG@6*xHhNhyRkNYcdY)!pnS#0zU6nyb_RG~)K&ga4m?qJTr zm2a^$_}e;mys$e>OtS*U1F?R?nE1x!N`*f8t@IV^k0M^+rKyP}skmE4tx)x@A=d5n z0LGCasYdeiTXTvHYV-GR^Q30e=Gp$*V8j~H;7z?u6>cYVrPfv$2jz`+O^mHt=iaB| z8lr`%Q&$MDoIA{!lix8k-DqV(jZ@AXH})535gKU>N$QqUvaR#5Ny%O&9_OxNnVgycz_I+vGLa6ki(?$)-PB}z}qmQAi&yWIG3hel5ouckXKM`!^Y=bq|{6KTmvV3 z_^J5>QzFQW<*Qu0!Zst(pdsCmnFb)QehsXofbGgJ=$h@^OVRm>uQ7+;*3BwQtB;3w zsAtsE;nL~j>FnrS?;-bWgaQmZw6CTF!fg;QE2frj(BWMaTT=g3NujgYVUukVVUg!l zbeAl6=e~9563!tfMLAGrCAc4$58vOr^q|>WAmvqjcDZ3(xw&Ii7l5@8lPqk_L;jkt zYhP-AVRjmZ5U{y*1UR_%|rin{blKbp9;Tteo$$eCy)HPFM&ek1MTPu;ip| z(jx9;;(Tt%lYjjWh?l5(?SRGWqm>?@_x02v3lrseFZb}cyeSxD@( zu5>(!Y>P`>4rBN4@m1LF$j_Ajs+E)bZM5R-!O_P2DQQD{46s$!qIJxjLvPAb3PkOa z&n)_@RD=No{&$O&sv*jhJL#v~75l2gv*~qsvC3pm49B_QVI*6NmF9U~kN^A8k}j!n z0EWDB>AgXfSD)8hnpj`RFdeB5#;4!g+W&bEJwV>WbB}FZRSsWfHe zayd3q6d2;j>4ss_7v{iquICh!nvFiYxVi@BTP2w9yaHS*R_6&rfpq>+&B=>~iwDkr z=gpF`I$q)nRyLQr`-<0_0O0A5>nD!OlMQDy_qNpzcQj%-L78-)fsUf=I63ngnL~(Z z-pcY({``U@5-ROJKNyT|((0n}`+)h`+@P{*XR79jm{-?qSmU+aQx&gIomWtHpJ~1} zl(r>e&u@K^nmpbnaTviSE1Y$8?f7oCtwzv57o>IE0w#)F(+^>hm);->ZVv(j(KWaB zHBXlvUzRjszTqt@sQBk_RRtZX&|Z4jEj%70GtuiZ9Bs>|p>DgsXY1LFrg`}eBU%Oc z#=LO~cCW7H-wJkmY@;7%p6MJs#O@fPSa1M&e`>cjYa(Jx&e1xZ|0^J|F`qFj3Tmpa zwVg~^+)c&zqOA;+ucd#tEg`Z=cWW${pixDrWpZvKs{Xg4<}m(N5@M`^>tMr(g^JJNgd8);9u>lWCZcp@aP0!q#>q=rZ|;TfR_&)%qzG7Mbzn z6M-G6{Fl`qs{s&Zw*o1U{!<*^3+yY?f;gnBd9eWv40Fmc0b(F8j0}N3NFN_qRDtyb z_0+-N{+xS3c;(>%VKC?n0r;@hIwEVHzg1eca=;)zg%DcA7x zrB;D@HOGYd8|)4Xve)vUTOVmxx*~ZQC*O177n%wL9fK@PzvEjE&C%n|wi-Dm!kuWp z7M0kxO_fYaw_oftVyrh*o0`3sm)C!tieHv?hIK^iC2KiHR;NNrD~x$v)|zEey_bS)+VomF z8Z8LtoC`guLAIIxcB+%Qp`>7i8*~A#On|Ua{;$u331#lsu|TP*MAWp0(l^5~JIc;= z&&Ic3W}&ZXH^}M*Dp&1I&4|USC}UIfdE$WLcuZzvjL;CWS}2qFJ{J;t-g}lW85QHz z5+y8S)t4z$S(?~o6TBV6-m*WN-FHSiwFxq*o3F_B2r0f!tMQ}P&J~HekJ!TMi+fFW z?4jd^nGf?tT7bc^nTw%HC&H8fWkY1{_|i*t?F9oj6i*G?3}{-BG;ixs?~0$_3~D}? zq`dDrV5>nJ>WhZnz6r;W)L}b?qyUTBc6zb})LbH)Dj>_x+Cfh<*|?aJV_CBtjH^-% z_O+D@QT(SJP3s_?h$K)uIZz$3A;_kR(rz-kktIdL+#t}G&C_=^UTWbyGGaiaREGC{ zeXE<+ukIH{JAs-Tp(DG;kt>{9E!4(MD*<+pxh z=tzOJ3M-C_QD&q_Ve-PO0)ZP{*;s38V#{hV6cu=R#A#EDRjyHdgk|)P8==R;mYp63 zd;oXsj!y-B5`fg;;<%y%cnKG}1Ku3GE=4VTnDABn)vbtpGUw85)wM(3>d!zt9UqcQ zosiHHq?z78rvVWXm8&BF_SM?us9&gv3oF9E4`JKDh3i2 z&=s+YH^ZB28Wth0g!M{OaW9OdvKQSSCWm;ZEbFDOa%jt$StUR<81YSzUQO5a_~O>z zpL&Y06-_MuAc%U^yvhK&DN!}t4UqVN&#q|jBp4WI{SVwGDAh1#_V;=wr0cg~oUTjK z*6=Cn_Fu)0Fe2BJ4CN5sM1*bL-@98(xiBCf@I-40r| z?mW&accE++zgWU0-IXpDy-AMldj+(2U!O+Cy$d!oE{5S>wi&s|Ly15C=vIczOZ6Gm z@rDw)M3${zQLEYnIzT91>ohzzB<_pLJffVO3xb6&MaDdRLq7g3{)=T@wqWa(v-h0b zbWDByT>W_t{@a~jKefRwZU5*Wnc8Zw!+@85<(QWwG7>|?5Kf>**#o7J;N?wYX#(9}n;PS_vzvwn^;3TQm0vw#!cu)(DcP+Zx4CB?5LD zj5K^qz|-3W6X`P~xI3?knpO}Gl`U%U_vnrDEN}=qBl?soDNo85h%cG+#I%3_m&H3s zR6yys>^M@~%Rk1KtZz#U4Bq0fjZY)VLL6|!P>o`BW`3VAn{>=r+;!PK(lFJa z1wXkskbuV`@cIyF*9I(=1X{X%|A7b>%v`84JL3G$*V_IWlb6heEt@+z=I`a1PNC@# z;;8-Dh{m-<k4-S%$66AE6I2K7} zrs0Dez(njSZwn1+JCs7q4aJImOX!=yPvQ!*vS$EoU5X#f9 zLvFIiPB3)#xz#Y=)|75h#`1wVn?UWG(;ovp;bZe(afek)P)PKjAB!>yM*}#nDFfV% zHmM|<+ksTIhu)R4zv-cjQvM%P=fGZP)OG7PP13kA8#|57##UpS4IA4|W23Qc?bx<$ z+u8f<_dDl%uk#n4>sf2gx#k%6fRZ=mVy?A1C_xM3NCw>SKzXg9NOG3qt8l_e4>@TR z1wNn3PxdA*$GbH*HZxe~G~lgT8kJqX2Mr=&gEExrziZLxo(3Ol_3x~hEzxngn&$T| zC+v59nJ(sA*v0sqTPCiW8xFg<**m!yOiZ;1D>a3*sS6@ z9j00LdX3kJW`;$9x43Wej=yT(b5%Q2dkvuOw+DAOr3CSo%+4`#bl73)Id?({0|aH+ zM!=$8($kDqERq8l$uP_d=WnuNLA_!>0!6W0-EnZ*YKM__Evx6HElxpd6tR4qJ}Xwk zDpaxp(D_j^wob*E_`Z?FH>GSbQ7?VfsSz85ervQyWAFe6q7o`1g)Pl%9c=f8mFU)N|o^)YB|Cb z!Kp2@LYm>@0PB;_%gMv@^3tSKq9j8`^wpUcJ6LNR&P?LMKy#4s%s--Je4>uW+M)L zZmwD(Wa<8_5D2%khPjJvCvW8&Aj2DRweYLpA)B2hxy$k_iRQCT#z`J%?5jc5!#iTo z#+R~x_4st*IOzk+8#`KbZ{K9xK0i!(|qr7=wI=yio|Djn1W@1#v z!eJyZ3La|y*ujA`_C)eV>?2ZeBK`t=^1?!<5<2hO5&;rv9iIpH{n7g|*VjbVO#W9q zb5loikBx(O`U`kwJdLxlDU)e_Jc_=*fyBMnV?N7k_{&7@ z-Y#quCti;qkFU3{zZ=F^2M6gkqBK9smH1DtaxRFj*w-(f&hKCKO5Y7np<(n_+nEx7 zEkO)Ab*O~w>hYtYoXEhu>H0f2e4UEdB!xhLLI4)e1l=%4NzFWe`J~B}PvI~e!`2%p zP4Q57f@G!juc{1J6sLnGnNegTC3StDJ zLS#>MOSX6gxP5$Y!FK^p3H)%I=HBesXPn@RW#s?M2@~?joRAl4%yqOG0xPv~f6oQ! ziF@78#`3*MeICS1<~k7l)-tqw=46wRe4{GB_qbx)U!DIAy=;-!@A&yO&f-98{e4Q) z*x=>X0`v&*{g{`TO${i{;^t zVVLm{x!C*FxsOWyBQ-2n%<3ij5U5F=2RYh){T_XA?lOfnIChmoC7+hWB8?QsXcMZ_##4w3c8(3`C>he zugdXcd*mwnA3CYy2iu|Ev6fhYCEt_(REk!FE9AFgiC3~a36=qS>Yf~9MPGSnnTUFcULe0cMAM z8I9bIWVSrNFFYVjMyV1q3~sWL4bWYx5@+>TL2AGna^;)FzX9*_pKgHAl+UKL@**qN zGdCK}B*WpytvPNUMvz}eM7y2u*o%(8&{iqshcMV#t>m6=&^0}rdOtD8C z#|E0wVzgxwnLOZ_(~pYY**MLhA-wR9syabKF6^! zi!?OqomLEqp>wr%;+BbKb`r+!OX~CW(yoSe$*s``IIe`T4ExjmyKX+@Cy%%AJcPef z%9(RJ-##931_0S~NW^nhnZNrkovKFg#(COP=ZHF#tB)|OJbrxn$@RD@C%N~+9?_%} zJCZu-!GlE|s{)(LZ}BsM?a!C@9T$dbnA`${6Z({To?E}=kIX4CD3JnFSOiP{sWEDv z=*)fgLib34u~&3V$-k7%QSG=2H{p@xe*adg7fv$6+r zE^Y_9A8bc?xDEArTSF_qoHCb{Y(g8OuG z@=eEH`Q3Roo|w!d0kxq$i3NUuoSi~vj8Q2{pvM@!s^^es zSU$rD&?n5zCCbVn$rj-0@^o_jQ}4A?G)Ky zWW}2#_|G?X>ck=Zb2O{U`H$!0Y7`f^g>@@O4lkY24PUx$>;Mn7>KGq$agBnco~p*A zOHaLEm*YK4CVFSk?N;=4LWX*+Tz z8BeG}#7n+yl7(^7Ey(>nclHRR+o^C$7U?z@`7A@nO9}Ga#SZ4TR$xBBFo|7}@#pxG z%vh6D1Jy6DRef6|AAwH&ZZ6>t2||=_sKyBtg!uKdj0HWx7`QmAm>6b@#tnsMs+SW@ zgsvg})RfiTP%sIYIO-exnnt#VpR9G8vTIO-x+F?hm)_rzuwF?^?6_MQ?8EVTw_Rn& zH6decbN)ja<9LRqZ)wK>iw{m635vSsF=1iygPy?9-SILkq_lAoAQCs-Rd;(bAJ&Z0 zaJRcC`pXBq3rT^6`2{E1_Wt^E+na$!Y$wrR1V~{oFkhK<#%(LQFxpPhZ6DU*eq@{4*dpEYUzvw?a?!o7zaiLDYT%FU< z`?l*S8T@w2IX+EbBhPPTYVv^Z=oo)B)EWa*M3K9~Gm2V#GXE`Xn@Q-B;aA2*ltv+{ zHU(ObPpDvMn>!h`^wh-iE0m(UrRqbOK{dD**ywcs4D7WcRU5+Vi+PRd!_h_k z4oUJtf(zCcH++bk{~LBxwl1Zg+2aN-h@%_qo!3E7W8ot*zbj*?mYp$N;n zp|{)dlD$y~XETWrk4MK~Fdq|=&qmue{@!-Lr0?y0?tHMdjU6L)^h_2^lcBLw{O|u@ z7l=+L32)4BqSaWEL&<+k8r^K9Q8?3hlU_>&TPWC_*rnXdvWkn3k7-dE?3FP*mul!2hL&lCxk!408ayU+38p zIFNi!=B<(wFA!U`cpnDedG4;SSu?Fu>2tdHOJ$3STDu1ywJm`8i@BZ?mvDKgNZw63 zm4pYR5dE8);X^WZ^DYDFy~p;I2J^?>pQ46)1_l168_tcFu{v39{0v_%o-nH02Wl+5 ze1aMvDQWS4i}=Q+DCd*3B!|T=F}c#eY$lCuFaCMvJx6UgT3l+5yp&-f8aJxrtKx$R z)3wu}I2|LCm_(c#%TDRQ;-V~c2-^9}pY>H7xjsEf&xLYV4S;~1X=^dy9sd{;D0mTD zOY1*7HM#UbFrBR>lP||dR*3Uc-rQ{o+qQC@#>J`sY z4%2Xn@p`Pl~w4AmQBMnwC6yi~B8SW!KI0Rxk)GuOCuCAo+(`=stOg6KD z3mo_PKsqiEm;KPPvEVt9j4B<{YXf*s2mAE)9Z9N2R_v|eYsmAqFyd8FW;55N-oCMEaKNzi6t9clG%_LLofM&Z4qu#~m0N_oX{kXhe>8cpU z&{dcA{>8}y*s66kx1-yB=z138+N8Wk;8msNeV05lGPr7=DYz!;-%!q%ipqDH1a8v!-1@v-u0LBL- zm%Cu+#8f389@2so*8d}A{v>Z4Wq%Ih#gmjE-zM@H(D^JM;X1W&0&!{i{iMipsNA)K z+rsaWt|Zhb;lFF$e{nm4Q|QH!plYRjV;evDsF& z|Ftd`pUx@>Oo!;f`bHbrrYKRVqw~n;EG~#^Cl2N(S}8-?xt1gMZOwOKW*F$@8qD7v zT!4L{{=DA+g|-zc!&o<7c2Ett1-3A3*``7q*kDm(QnWc37i z{6r-S?JP?f@-e=^Qmo=qq(#$3BG@!p;D1$##lsz}$G+W;S>y<&CPl^i7EfPYovg%4 zUOs-gd<1TSy4t(z&P*=@Q=u6cE>eOm6pGEVjUe^wnD(6XJmqzdFlw@zB;#=BA$+K~ z(iW=&VNP}Wg2MST3N1CCF`}fu6F*mGdGe2(n?G>g8srRPY)f~u7{K&ea9my-8;EG1 zt+G7-TgLFb+TSjm!gGD$DjmzRavKELmQDO1ZX}zfyJDaYth6d%!FurQ1!UR~hg(Xc2|)o5zx}RzQHv&tSE@|XxG#VxJ4g<8z)@W2XF))t2ZlJL>>0pWV5g=~ z|KPukh3(@ulXYbnK_xL{XFy?a&+(T^vH4>HzJ3D5Af+V?vF5N+^~G@ID^o7RuyNq! zyt4n^_CejGWBH4(g=hQy`9tTt@u8cGezTYGbknsC4^YB%kNz?4Vx?(&jz4h~mQz=aucXeIltZY$injl_Uo7=IcALM2b8AG$i{ zoz{$iYWj48^KLPuJv578;`@DvZ`HQ8KEBvUaaS!3Zs?kFJ!M!|Zx)5uq zvl$pa@sw>+yFgBdm*sN~iL)&A?q2X;uZL}P5qyd zsBEbQY*yd8{{h{2p)v-F&q%L1vDZKnVs>i@~+K^ zIC-L$qt6cpxZdB(LvVU>aUTlMOdcp`h_br0qtS$7tE@OU)J^r+fdGW&c7;QXh~OmL z0)D)Ic7l;E`AftC#T|&izI!^XHYqn*CUGnF)lvmwjb{4C>Wy}*f6I@e5xeZ!RN4oH zW^Kx*`;L3+&2UEv*h{7mfA83aB#!esTGp>PBe8g8!~~HNlFk!I#&*8gj=}g@ zsU^q|CCh*)Z1`@di4MO9guAMhOgkkAmfXVBCj{rQ9eM}6jgCN9BYyXw`kCn=HVy9U z>jVtS)5eZ4t=>wQ zrkrDakyo*zJVv2QddI`nL5}8av&HXi8~`!^Jq?3B5r@Z;eDLhYA`Je?`QscJ49dCe z8sCXGwDk=9M!KuncdfpS4Qzr31(Itb&M2&m_L(tLZn^s`7k-5e^asx}lIq!(QE9YUm36$=Ke(NYAVNzyEj9NoY5G%;C6+Me1z0B`Op zPLj8M>P<~5g4&A)y}|cKjilUuqXErqD1A;L#7O-Lh?-_OL_9`I013Jg_R(I!4VFJ~ z@_@s2hVBU@f~Cbjn?G)5h6b5_u({c2 zKkVf8b^T#d6bN$WQ-sCB2Ra9;!dLRumz%fEP!=7mab1^KL3#^kGg4ka;g=RgD(%wM zg;zRM@~V0>nb6a`;!b?L3x%ip>L(6PxgDFWp1|`#-*Y3Al!5VVz80a^0}~#Rn4YhI z3RIH0lDxlCi+7Z2Yk>l%5|eu$O`a7hHowkXP`7O!!OqW)DyAGtb!YL|l_8#EYUcJ| zQgq-%nI_RTt@5RNGfzhIUad2ulGWr*zJ>2POc;`|h&mkuyPAHr{ zSv)2K=N5;@+BP*E4a=vykPJdm&UJO~YiDO*8KDU^)&E+IxU9%&!APM@H@*n~+s`kY z9%|&$cIMtpS8>E=@}>7nlitDhF%j~pfbP+ZUB|UddD4w^7He(H^3ZLsf#+^M{&JlH z)25kVziW(mSb<1VO;L*660MkURU(T$$2}-@`LdQN6vdk9>Rf$(Fsy`kRp{tzyF#2{ zB6_O|^$i6K6|XNCF9co)`aXYx@5^J*>!+JvJ8#?H8DVW*A|AL|8nrXnrQ<@6SQs6i zQb`Df2K=+jyO)o<3(KINr#Ect;I8^m+O+*bUBwz% z(7vW|sD@NXe@oea2SnpmU{v?5*PB3++)<;*h%61(Pj;ngmPAJ=oD10lA>anZH=>6| zmP^7nVhE~+=Y|ea;J@~W+~W(%Ko-3XvZUIfC_4KmL)QfOYd(+7LuC8d?Ff{*{zE2P z;~Had(2pJC{^t-v;aaL(rgjP8EO1tK+J_IzM*FD_CxPzhgBY%bRV^)+6(@XxHrprl z*C^mhR3N==e|0!9vB)KNZCdwkbx|sEhual|m@uJZlF&$gA<;=n8J%*{H?)Z%C6RO}U zVRJ#HwiYz}*QZdjWSM+E=t6Y?Ua)a$Y8&Jr!%-+wT^w(qN*vi%CzxD{xrlOSDN_A0 zDmlmmmNj0fc!*xCG z>`s_;JClE#TC;gxTZD_@9NVVNx~hNM`F<>o`mDIPROJR+Gt%$~Sk3msF~vESxdv zHg@IP60%z-CTgRN`JgEUUX1;*GSdum$$?HVdZEkX_O;^J9!yRKJCdGw^=|ANG#M@G zAB{trJ#HT!HNf_WPdCt0*fsF(slg3Cn>b3UWL}q9x3Y1ZBlJ+EDQmhUU-^V}R^+tm zbL#38NPByIyX6>WZqb&7D_FmSfgIgm31$W~7AK9)!m&RZQ&^Dfo`ba*#`=9vVBX4v zEM`O0J`%oMatI0*fL6_q)RMXiYThmwPUy(3K3!M5FSO!OrYxhak41}Rocma}`C_OIVJxv&%D zc9gzlaQ+bP1-Wn!0?42#?>O{th3?LGY6@^e{hLfZo$DCSEV?S6i=y+RJ6Pb%ZC#C~ zqEwaoQJ!EUlpGo29cxD6hST?!$7GDpbp%Tq)1^5X?026-`0a?3nZI<*g?j*O^X$Nm|g@YU|yI5;%y_ZOhuHPte0Z3CxZ=y%l34AGEp`)n)>*i4X9M`&}5 z6v^tz*tW-c4*WgsIuU5_eycsH@)?nhH{I!-?gWD;C=x-dMP9xIKTEJ5JSnwk=zP7| zFDRC2!}{HSq$w7j70J}B3SQiq=!#t90?wmq9oi)v%sHLz z&#znt-oW*eW5qbn{2K;wQ`XmAe3n3^wIeX^^8G*A0$?eeB6H58<{utK%);MYBA9WX zS4?*E)tFmH5oX*7OC+UOVGml>{kYNBs2d9p%)wpI`&c1b@YYNx1V$bS}>)IluSe=uJmS% z2;K03zmsj{p#SPR;;duF9T_a(gzdNIa9wC9NKXKKVNY?1zgY$mV{RdT?>tYWkDHKF zdqg~dQ+68ZwM2P1H?=QwIVwT!Rbs^tNyZpAvPzPOXJyihHn|mi`z5IBL5f?U;;QUx zLy-ZgDv^%Yt5m8WQi9_!&@P9BBr)od<|j`vOC$6X#!5s+kWyd;{5l5Ove-PO#0(?) z$5Ql|F3~(}wVGe&5=7mt6 zip+d}f3WTKb(K%ayg9kR_SI}SKxzp$z7+D1KCgN*ZN)aW9p|M87E&F$e8?9^yhElZ zopjCBEKub+Q1#(*MDu%&O+t(Ks7%~axy(|n?KwaBL#JVMivOJ3?|J+5E4Wq7`ZO6# zdsiFq#I?wUWb!{sDc+3IBcul`2$&;~ zvn`?0i0LneG`%OyY8f?rF#~NGfB2UcebX`~_0kcn`%@P>?22!ZCGgbLUc(E}SHzA? z2hyc<`)Vm9Gq;jy=f8Oqa9mc_Q`7#WwvP>}x34#7EbQTi;Vl z=!+Yx^k<&3ygo>OEOP@i5%cP19=-=EGobc($vcv?jfk?x!gs*0WW9pF7~UV zS9d}`-jVjUVUG;7!<)&rATq_0#@;tS!3hJ@@5Ag!k#JCzSz0y@w$EpW;A$%Q#oNc% zr_;H1d380}LoL}XYxT8AuS`Gy0Q?W}Z=VD-jAP&3%`I3!#K&QN9JN0_UeM6cKcBc6 zq+cMe`mJp8VLmvF`wje1w7Pgty*E0tlz1yfM`$ug&8Qk3sWvr$2|KIa=Gy5cHQ(G2 zgo)l~eZjtF0dE0jZSHj}9DKdJ`Yo7@EURy$R4zsyU^sE@kJUw*#wymY0;U=I=@@)I z?7kHY8>3wWq%bp~Km6hrr8|Kcq@x5xx9>1=HRhp%`EnG@;fiya0?ljZX+%#Q%s^etI?eZfF3i8xXBM9#uwb7#Jw=_yiScU)Z*SX-3+o6N z1)+RnuNL@EIykroU>jt!5df_qw_3;)#tx!0s_+FKhN0$Qq{5;rSoF&9Es)N)@g_8vWce6kO^bkKuL8)0zN$~lVl`W8{f~}Fp|?Tuu(Cb z*5p0l!#dI5E^u5TBh%L`)X%P$9+Qu=x?6#`X{v^J7(j)bQ;oW*5{?+Jr#pEZ;dg4j zVl3c|9bufiO?NyrBajj^o5_ehC)Adw^LYwXZqO}?gSeu;6~=99uYAoKbzVp|=}lLo zpqefwl@fo3Y$q5vw9-_$6aLtPKTfE`s%pTAIZCh{RQRADo#tshmBzELmN29b)V||q zq%?M6QFuWY5Ps7wAx8oI=Wz+g)J2uL(XmS{pE(w+8E|SIA#o+Sx6eVxTP<4>D-(W=Q!a_#U5UYIl;#mhGxN zec3hgeFSObb$Z-Q*;?ivJL734D|qJtdadsiE8$Hz116ZD!3dIr5erfy?`RO~?{UiNPr zBgtkS;HV3&nzDt2vFIJ_XhVjtS1WFT5aB-Lkbif&6YC@`WzA%0%j)af8`?YC?TROd z%mt?ayvJMjAH9%hUu3lO#_)p(7+`oda)sPxh_0Wnx{fdGuf3n%#%sD?o(>OXqkla$ zyJa3~tHUaax$!oj1P)2rmMs2GvSA&Y^Cy=OG$mPTtmoG%z~G5K`~kCOa|u!5mT3pO zH5qi-Wl=H>&SGuh(s}vzGfz~aGoq+b^(VAriRXf~Fs11CbBlp+y8e1Hj?P+P9sP_C z6?EQ{BLhDvto**pAr2A!n(1@yMY#8u)Bruw<`?=hQ+9W)NX11Y%^QBSd_;BOmak=5 zQQmZTgCfNAdn*)1&&jXi(e6R|VHdW6)zc6}Y{7h@D*hZb%e*M?>2wStn19d_!>YRC z6Df)7es^-lG8ly6U&yGra7c3(Q8*n_c2K1KopAWk)FfZ2+uw~o>6hYe^W)o-ta$B! zQI|Rz14YQ_Qi&#`WIxJ8{nl#u56KCH`d}V04qJ%>4a+eGec3vH794Y>GzE#yLNG|r z`mNa%L%N%WQzz+0T_Nm5Tdh>0#}a!vH@lZh5M+tXz{$a>kb@Oklsyw%S(m~tk-KW< zBt}b@L1H934%k?>v!ZA{zStTKR3|ZN$&J^s2SXcUUVgQR*ZeXh7A;#U#mS8K_!Y1^ zkXq%xSb!oXRQ$Vbv&UNUxwCrk42Z)~gPW6*Z{?Aq zvFT$Rdq@{b^&7xR1L(vy4#3usu8gK-bCBb(x))H$U>>KFMbh$nn3ZIpcSX~*juCnt zfJw^swmmnvI5Ph3L!C_k+Ot*~B2kozuhy2`Ro*CFYA(+t2$A8?sEz!Lkc))%)Ti0%2m}8f%{_p^rZ-)kAbmn z8Zq8jUq0EXtvsBw#-_=hDphx!QhcsFg;{+uMIojE^8tk|bWJ-s&b&^RC$m3gXFJAN zoV~RNaIQk6I$<8?hJvyl2F9nuqMu;=*8GUQXl^#sZ`2;Aq4xg|;IJu^2mfQB)AV;^$=k^M0Apv&`V9>n3)<;Lz zERDteSB|5lB_>5C;5+CA0GbA!gFfHRg|e=Q0_Ey%Nqj-WLcm)pB@dR`d zgo9BU#cV)U^rUc8y1Qtf>-Sl_qqK7Jy>D?Qgp}W*8DaXr!1r?=8lV@z-RFDZP~%v< zQ)ikfTntNzgwV`3A>h%%$K0Af7p zmW(o5;fqD1_GUNwh5n-O`vV`WSke+*C=O$|nsqh$n zyJnlL-_-xuX0#= z-OeM&&rAwvi4b*wg9vL%%tSGVQQ?D{E)ya(_;~O%f0~MSkD~9G$sb*OobGGp!`xZ1 zOKfAOL~%h%x#e~hW-1m>{rGyY0=`oUxXdNB6GNr=RRaytHWP2WSYA$av(UWQ1u2H% ziKv~9DMv>Z0m*bn43zErs-b=yE$KsCeYz+``tJ#UZ-Zyc6E=s3>};OJvpnYD(D0rc zKgREL=%iE)BWcIjV!7E0CdfqiR|iLYs5&=y*YHyN4yJ@s5G~;Y z_|6$|o=I!h=SsJ6B6#Mi(Hta2*0iA&V>_H8LWCFbR%u&Zy^d5?WSHv73+xzj*_(fx z6>rR%Mq17amZ?6S2m9EqGGnGOg78O*B$L@}z7ONO75-afen~_X`nbUXynxx#4&NfR zK8L^|Ug)EMiOS|P{lr)#jDKlwyJx#Oc{Nw6Lx$viv{p)B<<0Ys`O31sGsN*jXA~Rpl>JIQ&&8`D z1V@3NQ9v!-%@iz=P?PNzfc3zpRIL4g=WWCicuHuywJ zj9b3aYlYq)O+L4OkJsy%l#l&$-;Hd)t6ki|k!DeId0*Ar$!|HXvwV9^>O|PR;r;%c zqcJ@cw6qN@i}sd%#p##2?YMmvp$~cR^eXTG>+asS!8yl%9|qv>76(q#@|Uly`G&au zcr*(38CP&IGZ{efuV?CXWExX^$2^S?o1rh}32}M4dsxi{t%Kf5K(8Qg;8R8arJn!& z;OHy(^QZc~g!w^%uIw+D5XHZ$Q5c{skehz%BNb!S;1Dg>&d!Ij?$k~HQo`C9vcNke z6cZWB*t{mZdEY<3|5@-^MT9qKXQ(;f_ZRgiLkRw8)t`mG(FgGqjPC};9KH?~ zweehhfoSQ|Qm9;lsW;h(N+0s{!BvjQ6n183s%1dw-FzA?ndM zr35+U1egs@iAj>SUKlBg;?Ji7Fn=@+WERRFUImjmWbEd4Pd+Kdh>?Sw{?FtP}Jt*+ytx=XRn691o+Z6N=z0w}f6St7Vg}kq(XR<)2)X(YRO{qSoYstfXb1RG( zo!Twt8&i7{M|2I>bc&9ch$Ttn_~E&M3ix!~5;+gMKDoJ`Nc;`q_E6u>;9u19y7jP- zril~7cOl*IJyBnfg=ZI+LaT{>9B_q0-Zz9VZBkjN%z_TQ`C0byYvj+pJ@p^0pIrqaBJjXACVNQnAKanBJT5v(dD4vPIx(UcfBm~>)n z=yXdJf#K>r6j|RW4CA_3_tL=~uo1ZG7a(}3?EC`_Y@&ZRY2`ZJ1}cWxZv%9_^p~4| zn0{V@LBe@UwI6#zz>=_M;+ItZ9?WP7>$W{3ujj{cw{4&I5+Tqs=+VvZ`FMQ3V$#@5 z&-`80-MO~w`Qu{suucsurNq$f2^S3(OR&L6zJIHD#c+KEt_%4*Zwf&qqBgs_WnSW> zG6R9vpm(81lj;ek#f>aYYapK$Y0JfmM8@J7~`0h7^@YUG)X!-{r*+| z)~52Vk!W=~z^fqMO(8gtF{ws;@Nsl-GDi^8(ZbxEV%UyJq(ydGWh7Rnw(=zMQlCz8 zQC~$rfLOJ0d_dc{Y+r)Hs-Mb;n-KEqH8mym2wP1hx_qrXqzGLafJ@DY9@8~0IzL1* zzsZ#<>^QN@(cdR>#_<{?n3&u}Q?BdWos6Y=X``A7I~tVYCqG)=NB-(&0*+AU_**}M6SQxQsx0M&UTKjFR&^jkmabVB>yGgAtMvlf)uD8*xr;exR>+lGUmGmX?@G- zq}E)lMyieRkLXWX*gTv1-0EFT$5x6Yj<$<+NfG?Z*;3(lK?~z@~Z)O|~J| zjqipUqO7RBjmKUxd)Z?Kznq#+=MM}Vu7&|0hmvCe72;~16>h>w?M1rEoGc=h6tWMfcmpAVrHdTzY<)R7f8ETGZsATCMq+f6dY`@V% z{nI|JiF;!=Y#?LM+TL8-va;1cnyWk+gpEPvF4_sm&;N;qY0Xq^ar+aZJ;}jYAFEo7 z!Bakgoy-w|1}U@TTiyPs)HlWCMWrOBE;@It_;#dpMhgb%lzLZ6MnVLS-n96Kzaku?>#pz!z|8t)I7S!dA z4Pe=amz}E6?mS6{hS2uo^UcvGz(-H*c};MGxChYkHsZ-G`}BOU_U!Fkb$@;1OyaWC zzmC@(qX+y1fKZ>QhFH?z)eB7!z9uUC4?6Cgq#HEt_qOl%e)PN@#6nPHO$8|iMU)EB za12i^=_M(Tr<&}RxgK`;8FaZhsUkl1qd#7v$k)^1Zf|e!J_?5#p8Dm%^7!U*d>Z&+ z0E`p*{1gI5yl6PRCM_L=^5?;pxa+&&4nL!DQTNI$S~IIWq?z+L zV2<98)Dm}IQHAQ;Fmeb22rfm#^v7wvv(uPw|JO39fGSB_!Gq2eULs)&hkp*(4A)qH zETsi62xV2`p?MQYduTes?Eck_1dg8001$9ENmBGdTa>>68l+LR+bCP%m3)$uV+vudCzVXEL0 z?2@^2T=JjX?(8Aq%dYwPV=Yk~vhL6bN$#n2nTI$nEHI3lcNdvu!OmXHcEQW>U+o$2 z63V+J#4t|A`^DTX4hYZ*Im=eeO&~L5Ll*Q@^;j?lVLh6te&xHQP~bzHeq*hy5)^wT zd9<;3ETiv8PJe&5LQKaK%)zj3&Z;Puy7>6ny_{mVbqAf3jZEL+RMqjeqds|NkF>G@ImIucXGv?+oZA_Bv2KVX z;I(@E%L-Ah8P~{#df9r!I&i4!*p?`gn#04eFW`5B#Lq?bL$AolnYqM{R(wSgfmm2_ z2w_78;%JIhQFDO`?-u1!_CH`@vEpVHHY~KpZQ0T_weUcucv&e{S8wouDc%rP)KlPJ zhP91#>udHFx)4#SoE^LTkBZ-xb(#_uVJFkEPh5ya>P6j@t~VGauz&YdW#$Wnk_lBS zv-y#;kLKv!Ijkkq*5#{Cj5+LtxvS)*Np%`3mmQMoM`Vr*X^PcW84&!J zqp*6s3bZS1^xY=X(FcQ~>ULBVV0zPB6TV0a$javX{n-pR`@e&z#5f?bD6C=nqGVX??$(cNx49# z*yMhW!=($%3R8a1i!IxJqppPxAP08dAtv0p{DVv(Gyi}U&FX+u<^>{lmFnZ<(a zpz-~2RrEIN${LwK8VOat$;;2Bsokk9aAW*B`?@%Kcx(^&cqakgfagn|M~ z(%Qm^VcbGU{j?eSm3*xxQ@I_^|F2u_7~G=QdWK*MR!7Ws^Q9PWV8RZt7ZANC}!q(&2cv}fv28G zy1R{~sCi#hhvZ5zRZ&wnJVA$xY?1rRX(<9WJ;`uqJsmGC)e3R4(tKaUixw)u*zPkL z7uUE}#~g!S@XQmOjEX;B()6VJCiltY9C30BMl$&J*LnrxH8eR}Xs_1A69fOLu1N9fh_fFE8)62);@>|*>QEa%#6 zVS{5ClCS&pn6NZChN|mBR+UwaxCv_|FPeao&My2#d8Xf{+!|*7pLZ?#2XXLn?S*GxWjp-KKoXJD1W${dee`}BrMyS3F+#ly`n5<*X0(cw7e!#2Aq!`?wz zHXGj2nns`r>?%Mv8V4lqXAiyp*%@$@+*fXE>GE3HO2q#gQyl6^`J{~rc~G7dY|Bo` zMWrzVUxN=FQGU;>Pia!F!(icTY)W-yZUZ%Sh~LwuRozrLVQNv+q>6(zKvDDx{>740 zS4(KH{*kYm)~nOl*)W{Q&$?` z))FC;=$AO;h6`X_6pcTfc{H{vP>XL+kFc72NMSXyRb@`LqU_afA4 ztX0tPwiWa9I36@>iN{!A*7&i=5cFdC@)R_3a&)<2I!?0Q;#ZvmNQDe*Wc#2ADt&b& zX+g2RT&rODDBSWAu%82cU*Etlhm!yfy6ew0DXp$sL(>6XKT)@Vz&LvY-_U1+PT=0_ zE8AC|AAO?~7>4ULf}l?@05S?42ad;ZJr##J?im$ws%;T$ruP9SyG<5dV zWma{?>V*pIlBM?zk^jojg*2Y?TBML)Up)1eD*k9`^?R!X?AdrccsUhgSC5KIIiehY zKHb-P2y4XpBRp4!02fx>TB{x4GKi@pf206xAYLf#g@NMi*P0qEDcdh+l~1qyRiSd2 z1hFoof6H^1wqvEq=%uUBA#y=hxr|_h)Tr{bYBc&q2kq5{N9kLT{_oS^Ss$miloUMc zk}VGMk=WsCoYdL7>${D>HEbKX6s@tT#k?=LHeQ4GG~b%UH+Z4Z8bx&!jv8pkeRKABKmXCy}yi|PWl2UmIWRttHr(Nqej z8llB7*%B)FO$2;S^xhrTludFn;1(6Oe(A$4%Y{#2kuIwt+sHJ48xi!$5x`ZSeoLBj zoZn1=m&$ipmF5vSX=|f1+WxqoXReENIJ#wT%BqP}z>3rPmD{q4muKxuhIah)kIOQz zt4O_}a6ESEW_l<$);h*l)?=+&7jFz4k%C;46Tk#C&HnQQMYK))buh;ztYLXH7IY;5 zC#teq3x+?BYiR3+`1idrH%#Z z2(FGJP_F6!5cL*ZZ9v=BHqt_Ywpej@cXueot+*51-QA(MyE_DThqQRm;_g=59m1RQ z-TU1$1{s4Nke$8PT+f{Iu*;RpIgrR^1SC|Ucun=nEa(*l0-KlmcY63b`T92obgwVL zy+hOfvrE|*92__=+c&K2?B;n+!i?<|K8yzq1umPH4%OHFy!76n?XD?B8ksmoQ0`P; z=d~pvYMK&Yc0fX(Un)yr3QAAmz6~Do=9TlRu{zb|Lvxp-1C{7rUpR=%hK>71JDdHE9WY=_cc_gi7(eaVGH&CFNs zI{$rr?~ynB7FY0;yNy|?uGjNn724~x>i~K@czry5{r5WN0RZ`2;e}&H8hSEeuUfT$ zUhXeI?~o}Asd8M;Zr*^W=i_;Us)ryngDk`;n{8;yTuiY}gpu1w!k8|hMs6(bhCL=W4*wk4*-y3)a$I0|qr$eJ?o z5lxG8OcN_BVC8JVj_fk}+x{NGJ3rbtTYjUI2RHnWjKN8_X7!HAE3hq8!AMKBUm#xp zFCw)Z{N_Ra_zu8!YqasJawBg6bPhV<`xO8ij)pgyL_t||643#)aX%&glDi(ADHY1zoB>pGZ}WG%VqoFlMI_rD~QBJhu` zD`X zV)asM8&00wv|t&sUr#kWTMt0kQ3A^PIPbC>Ese(|W06Zl_^o6IY*en{L(LNnp2nRsMOj$%}bMIDrB?)up9+ zF?o-W$-)<3A-Y;gg3`(?IKnmp-LPAJVgV>#xv`J6#%tY|-KP*rM29vZg~tyAnU5@! zrq6Pe^;12GSHqig5Ivs^~-ggp_A%V%gL{VX}}Dm1~yAh zq$9sS{tmMhBt(kxyn_8~R%ic?3n9AQcw@S?Abn6ho>(Ppc6e{W@BNYnb=|yEAS95o zd?sL>d^&Eb1HJU;_r7QZgI-nz5LbOJ4E!L+$9Iy2gs8v72w!S)9sD2q+csa{z}sNO zrnjBbr|2dNT-j+9_}%>e+>qIj<&8GkM% zOG2B6(i$WXXfesIeAQ~EKMi@}78x3boXAq!??;(E{xW zW98-@6FnAeWQp7e;uCe)9}G9qFiT}x3iB$VR)o9NAuLF(MeyxEdv!?4)Z=4huozd91c=h3aw zke;E|BWSBPz5bSDYmT+jX+f|XEa1+QucHoAf!~f8n;j0?L>nxtu(7k&0h;b76FO+{ zcLDJKCWcB%s(CHbjmhuo4~bgo4}4$AFyOh2YQque8>|XQP%oNQD;5*Ek)+s*dLmaO-5% zL{8A(NPOg|%q+Yqxh^oTm!eFu{Wi|ozpN#EC7Se3c&?}JhRr=GyHT3jL8ByUQO)FL z^NQiyymw-?WFw__Vg%CTxXKQ1>5=W@jeN= zN>#0E^l@w1q8ZTpmLtWqkI3HYhn_zo(=AzhE_OG3S07D%xUK3qdEcki z)C{q=s_*(z?++H{ul5JQ&{0?fkt{x=@Ru)nYJ$E3kVZd8edzYfa7a%I77;zRSVT`3 zoTu_$vAPqH2;TG$cP6U0@dNrNxaU^oic`+kz#f)5gB~x)J@nc7N^S|3PwJT1xk_P> z4aJEMtCvyz1A6>+5_GR?7+{;PwL4CHelo~+c>%>lG5_a?v+F=A)3#4tpl6pyuHK+|$n``zp!eV5>%KgiT;+57?r;)fXgG5<^$J)g*b%DT9M z%qvC6X04kn2Qh1PF&u0XY}?Y-8cH*U!-_Ay8COp$ERGJS;cyrZk4&@#{GFaNrefJ0 zksTo4{PynG+D>hNzLU1HjRjMtq#E2mr{#X#CiLg);0x2c%3JE| zi9WWOEjYkHD@n;rg*+k}=`lCgD-@*^Z<2k;{Hez1QY)CKm=750&Bdnc-JUhB1DTf< z*Ma|4lCnBWx09x4BQlAe5H0M3T}P*85=4 zW$+f3Kc4AMyo(yLvN8%%MP6xa7$=jzpTuo%ipG+=(2=5iruO*WplHtSvG)q2Ja?>@ z=u$IP2d;MCr}4mg=kJ(pb=NX(kNE~)b+G}P+V!-k0jtFO!k%?X4Y&{8nV%EIeDr&i zru+&gMoPwdZ|L*zy0@6x55_>0C3D=W2=mQwRr z9(B@!JuQGowg^r^?4a+N-w;y-7D}{2?O(r**20TYabj_1j%K_yQmgmAN;D1q0JcUR zzAtYd9R-bu8HPlRb9s#q=#wJ}V>LPaY~t|xc%53{!r%XkrZq9i^y&#~Qi9}mLGhsE zl&8N){}!1wF1b$$bqhy?2Wn4S%~rV8BmQ(n>0cr`s+Mm6&{tPLka7A$0SBVsEnYXb z>Dm}@nr5F3y&V6u`#h^8OvIUk`=1f_KbJ5EbH7(*z?)+${@iuJg7-o)UfuqtSP%XN zkNaIRo$S?S6IC{r*x5k5G0vy8L#V*k>k)5#55LzUTenU4bt@gW zrFPJmAdG#83E&60^VozgSXn?Ff?m``MvyY&XQXO*BqlWP{d*TAbvw*#fING_<+D_w@$Mu_aM`6T@ zbQ$B;eiTl7TI6_fMwBr(4~0rt`-04(Qv-9%~AoOSz&?;Gz`o~um-*? z@#Pj7>2eZ)wv~Fa1!6rnI*wJ*`n}uW?BR3w!2o?R1IgzMPg~ul>7_W(Whm05`*l7| znVO%CPE*|kdV_hwI)+X1daX=ur%w9K#dtG%Wzyp98*vXKJ5T_uom>?AVIgLW9bD>Y zHq)m+s&8(-l{gfAXvJ7s!?&U0f%l&4H#Y`aFsvx6W2hY-`+?7d0!1fjLxGMmy3SVw5HsG2hz01IgGw;z-N}*ZWlq<1axwZifmywRcMA?fGCNnyd zP$BdRMpG3AENQN#?Yl(f(HTV&1`Yp1Y!@EyKSBC)JZ~A}_8>c8Gx#|{F#gULLDst! zS!;W-P(3;ChUa@+s;p6yu{Y6M$p>|zl>@5 z7$eq|6+N)hv^3g za0~{;l^>3ko14EOX~0d?j5EP`LPcML_v=15N6&LGCQ$$G*_b(+90~;GF@~2a*!^|- zQZ`k$Z&q%c4y(=D`|U95alY{(k6tnmvWp6-H7*m3m>M%`q?Y_0H_aq8_ZcwCb(EnTCGQ zB=94+Pe$EbWBQcpy^+arp`szL-NDHU0-lBHNQ!#6I5aC4wX%7X-jn!tSs!n*V-fqn zTHRF;o^Si1k^>IM0pLD0e{&tKUa8j>&w)GMrG60pNLrPwCLRB`8FJC)TX;972vkm^lH6a`i8;{h$h%X&!&PY4*d`E` zbJ%?=d^rvyfu8g;pcQ53E?KF7Z02PsFuA2y8M*vA_7cT8!0bHp1J_|sctGq~UGni- zv69&?NHy;HmU6d4bP@1&jLCKX7VC|u#7pLXl*H}{6&A+w{bjKjsdWfksHpxa3BUgQ zKIJidIUHC;A4WiYVND4~KcMQ`*5T*w=u?v84z>0XRb}JyARZ*U5E#r$e*+9v9~)p4E?Qe3+V;{>Vl&`O{kEU}yML|Hf0nV}#rnEp&dYG;;C05` zhIlCQaKY96mVJA8u=*LKaW1)bxjJ<%M1b0n^tK8R&*J&FdU>&41}pwt+cRGKcs*DV z$@004S1!JAB{&T2%mhP72Xp`X&N@bG?l6z(rltf^J>s%op#WLkxhd(j}G3wzJ74Wi*t?N(NQh{k;Teq$HUmRl zKDWgl3D+sLAR>mf6GUVI4lJFDzPSp$dvxGiFhM%nvH zmELV{Xq!O&WBbzxXU$z75sev5OLj6087P1Fn%VdrYZrc>$Kbo5*?Xgu%V0XC#Inqx zd5Me)Td4?8{yRHOY1KAv$Rsb$*=3eB82KG;`(tOwL1h$A!?4Xh)C6P3LX_F?<#ACB zQt6Ew9XHJb9`+X$c=;D;;ZL`BRrRl}q*ny)w^d34p*2@}r&>U2A-~N~IX~T~V#LA^ zdZLxaGQOeX5%t3{BC05UrzukwB?ai2zGTt&qq7=(-NxJAL1auibG~-l7t}o@CD=Q= zQ7-bm6+dQO33e!b@Bt{*M zv2<+sMj=pXJWE}*76ee8uGaE%NWvf6P2kZD*q)_l#Q6Ar*z~KORWDq2uRGxp)UdE4EaRe9BQ{9x*eEA2_b6a%jqo%m? z_gC0yaSZ~}gabv@sDL`fS{M+bzzas`x@EoMk1{;D19XKgJ04x%jUA-!p5>I`M{}Dd zMz#g#-oF*LbJ1p`lol0^HW4!R8aeK;eT-})lmiZ$(dSn%>G37_Z55n7%chDg)oKA7 zD%2>i18-Q@Tka^^h~(*dC@=6uJ{MO=?`1PPrfRj=9DEyj9W7jyJPuVCGjRv6BOC!j zD1oI4USzpxNb|;6m?=Kw*5$`0SE1+>zCIw1$%IWoJm z2=UN1g#hCJipsm}IcDJwBED~q;hpZ;s~5YQtA1<~**Vh%kTu_I8{J;_ebA8s#4DcH zbTivwIiMrl!W9+Nx=08m6Mu#T$#Mbu9CtiGZ~Z)=m#*~mI%Y){0}&q=cUKL)sckoZ z*ZZBF{q6hnd&v_=p8%!M^ynwo&WyowZG4Nrdg2H=?A1xEAL^+Op?;Q~X?!FU$_3=5 zTh?vvYUkv_zcaHiX3&;jJIJFL&Z`Vd+0oMU5txc{pB{%GVKaEb1=;b{dkW%NkjrBG z#2O^K>pt=#9jP&O4g4WSY6{WFb|Fo6MXAzFf#wXH3D*srEPGRUVGj4ubYVoU}YH}yp&`u8TH z7Duds$tgvCYv>^g9Q~Q#4WK1CR%t>O1y)z5BnoB!xH=Ft57E?3xL0 zV&PsE?Q&ATD#P?R0u1UbEm2ZZ)bICx;QuNXBRzu^ktY>@PWQf%fAn2Hw$}YolQ8JQ zBMhLONlGkzv;zW0U`8p*p@=rF@+|{#)flBug zC!0^%yyL6l8+&ab+O3f4!8jjm$B4>>pg3fn_AFyU8VB#}itV~?-ss?62VzFt<;Ye} zp?3$`12D*$rPf_G;!U3ynN*!Ib}`KOUvK}~0-Q=em||uu{BWHh!OeEPx_}Z;R2iCT zz&kC_^W!c6vV&s@Th7W55G#isz}nNPBcIK_?vP8I2N#6e`k;pTWLQ4GaA@k@ zr1kN>GEEKJaBSGQScRn|sP?0+ue+!B(uN5&YktF0Skj0QNCZ8qQCRbP&(UYC)W+9m zQ>{S-P4tT`j3@j#;MG1pR}1B*E@pHsLBc)7Tj^GLcXjiI?^!`1K9~>e_`_2J?j|3j@Yh}32#}?z-2tkWJBXACqtp51g_^wiDfYb-U|9MY~^s|Th z*}vgJdcfTM@d7!E;ScxsFl}qw!$cd0+b6%89lNq!9Qab3gcR<&K}J)*NZzOy&&u_K z#CnM4R$7L40)(IbQGCAOsH!Txdo{3mS%*HVpHEK?aai*5Mc%L17okFa$|BnWeXkb; z8^#Bk9BOY%bU}RPa5i&UkuzcBI&f-iN7<$g?Rw+-YhX zaot2$|K-IubU)C<>RZWpBZ?=L@ks`rmEMdJlkrT2r2-36p~yEYqi0Tp&d>4$k7o9* zqdZoxYVy(lboZKx#p z$=9Q}3e!s)AD9yOv-(xWj#|qbl-G%67*v`D98&|3!d>%P*7m~xy|im>HVu0Y zn6f{$B$o&kuV~Z`92{9`I=9>^>?|ICVw5`Nul?C=?zg#HYND07KR>#{Vg1L}a#0_S z5r1XUjru*Vsv$)H-=>V6cCos(+g`T_sphQ3YAP*YJ*~IZ?^vT_znJM=woYrJCUtt8 zyx#Q7har%y>Z4{PE@I#EHn+@&{zrlIzK!m0_pS5)17yR!?lPqj1082_q^T#kPggttcJ>FOq2-XAVX-biH73BEsCCr$llCJ|7qgOH z1M{J%Ot;AXvW0!(ltzH^G6tEYmqxYv!VRenv#v}MAT@Av>gXJOGVWT!s!(}k`dq>KcOd(>PXW}PCSBz4XY%?&zrp+1hfz2QGxRE_VLET4FY3sX&5iEWnm$G`yaMP!NpnTuQ z?FfIV|IEO}`xe^vlX}pI%fD$N_fX2X5mL5h0L^AA&L%W_e74c8UtP-CCj0thk=XL* z)JvE5nL+>JgY6BD0W5P!Wh5f^`K1GY+6WEDg!9?Xzw7z^ld9P&C}{zDKJ{Q>Hkd;m zj8)k`i}rxZSY5Mk$?hgEhKDc|$vR?X&vHc#nR8b6qTHEkKWhqe!=tKLO#{WI_mB3W zH#($gF~7LQlu~7Mk0;9P*yUKuCe;Z!rhTUByAgduk{KBRB(*`iH&l~3H?C^F&M(Y2 zH%B)$IZ1E7{`KSwFWn#c+m;WbxHcm|@E|R1jUO5gWdN;djQ@vx*w!(W=#4?DsbEW$ ziK$6%oV0a$#LobYY{PK&H*)iRs0@_GiWu8k|D!a-e|`{yV>97{saUYwXzDkYvhY;p zQVn8GHibo$kpoNlOb+8XX7AO0kP{+3o^xqS1NyqoRYE{<5DZoMOs)4S7ezNA57M>) z32E-DT!Rf?G*(?`;I7jch`00Vz0^JPJ~Xvk&;$JWAuCuAD%I1G9pJ+m`cZDaZXt?WmqH&SAy&{mv?=_$PQvivyny~s z=~d*(<6=VHgthx3DTk+Zb|3Ti0cJ=kI)+lF&x9-Q3Ms41!u7?hR2*${l%P%c%{RA7 zygB!g=Y}eIE%@0=^s~wKp`q5^C4@!=<~DD>y43W1-6B+Y`)JH(uW2#K3JHd-J97k*0%Cvb=f94m% z-+r=9{~BOPQrob`AOg)b>hfW)hg$62Ch-r_r9m@He2KMH@kpXxJgg z2>Le}yoyF0l>LQ;Z$V9ru=Z*{1fQU|9?szu^z!9F#!@8NmZ<_xb_6ffI7Z1tneKYB z|5dB_Ie{~_++E3Et%*`<&7H4Esa4N1$g=NUte5IbOjjn|XbYRalZfk>mzjgz?_wpC zSdBAgcyD2$Y4OXV<-4{(N8Bbp4C6v_fR%+FORC&*jwvIeI31Sqz!6F712jf3=yEP> zX~mNGjF|9@(9q+l^l#Kw1|Z39FR~`tStIk0pe>i&0O<73?%P!eVt&kZ{{MeIb;4N} zzqAn!NQJZ#DyqNfeib3#++4%4`iau-BjEdXcD}Mf_GeS9rbmnt z6T!-E-S=p@t(?X(pQHhT1FcwbXSH3jIm`J^{C1w8NRRi+&e{CYzBzD#R=sYr)<7r# z+8Ec|v%F$wYxE&Z3`dgs$&|iOG>R-XZUDUPlzjfTFkLa1HLnm$eb|Jn5Q)*Kb)T>+-OD|Lj}cGI za$-mIF`aA+E1r6bj}rGY8`t776MU@1IWM*@*CPgzR3%RBKROGhje8d8A63~DUZl-C?W*kRz`RUYw$}T^f7cXF=g!a$1EUZ{iKOX}>Qe=rKOk06Xhf)*m1~$`n zG-v#O%uF+(?!;)Q8To7jBWyXEve+l-MVTsjo#|MU)F3TflhwkCR<=Y$pXf+e1ucxN zIMIy58r8OeYi*wuLdwVm&=aH0o9hW7Eqqg-|4A=t2G1F}G`gpW)_vBGk9?J9x6tBC zmUi^82V(6Uq^MKah?)N4dRhpl5MbGr7LdWB(EWXK0AM@IblD(?^&Ia4^9VT_%w_f2Akm8s!f*4rfPg4F$FUL@YVz?kYzxU05y&8^m7Y@vFVZ@0%V( zEobEw#(&$6@qh36lN0h0WD=OwZNgL}-XiO%TGJz}NmF759sgENs$eh7bgT0Tg{8fX zLG@1d8(msi(xboNZ-!6xJ@2o#%SYREiofUxpISag7(97^)@`|Dv8)}ppIAJ+DZf6h z)6TbEa?E}6@y?MWBG?;y1k_({-y5h}TdU}-kV@d?V3iE`{Yc&3wZ2i1@)U$AMKiJ5 zzZw_c-b9Cq{~vH_s^KEpbxvF+V1D@|^Nq_`7{!*9*kyqJxB%x(t&ir$Ay{VW;iOgtMKOh6UxllU$n;LL1e8~ z432|HnzscS*lxszS4XNBeeC_`p70xsAFf%yxZtUN?W~H2rfnJ}V}C-NTLHK2p`QUW zDqGwB;3l3HNfoI|3Z32i8CaRCl63>r@~*K22Z?;r?bdS5X;_gB7~ z|EF&d^fXZ-2X``Ao}XkLa3(Fvq12oFIlhOhaXiNwA$pk8KlYB7==H9arev!vA+dT_ zkDjVla^AaGjp|jy<>O@mf<<(VHIb6JZ`QP~_&|a4&gIy(*JUwoW0f3w-neJ&&L4xm zVh^`e4>A5cR`vccmv2lJ*8xpon{Y5zg%yx)3^y$G&YwR_W|JCJ(QB-H zQ>IF1t4HHM_U|B;cfz9chgA6j?CliX&>x^tghwnnal=>AfLKW<=2ZfwKqhaki9%I7I>p*Gc8l3Qq6hcF_ZU^igqr!3uERH@r$u|Kj>f9QCC`{9 zgiAuin^6|$&=O6Nr`yd~7|;JTvd5L?>xI{WWNdhxwmW1{c#eLPB6p>YZ1}9@xz|#4 z+2}UC`(Q%OE)Gefy4|yNnW6uR283J)4HQf~PnrEx+ITr)!g=?OXPA9^3yDtxW;by~}=p zrRX%JB)&nZEn3zv6K9y4fr~fjT+Vvc>Z>z}BuLKld?RPtcc~N*AIEf;FeGA3;uK7r zN}AF4UQuzDeUfWK{Q&%CCk6vU+XC&tk$RQgMKRp6o1FZji>fA86=l=w;?*@XQzkY96Sxwzdlsx{m$erwDB6{pK&Qyy)GYKyMtW z#nX~5kURZjKSBv^*4?L%*Du`|c^Ycz)3d^Y$!28((7551{~otKVZus_jEjS4$=emu zBGj5delA&-aE?O1L)QdCUL=UVS|D{5&so2RN=Y zG$rZ<+Lk{FN4KXY%0QWkV{6x6 z+UJ5c_p@+y_D|q-0Z=ABNk87lw4QyvuL;uSI$K73*)|TXml>&iGF)KwwoS%lXm1l7 z_Yg%&vU#d)p+R-MFb=AUBZGbv{yu(|S>BB|IZ#Q_OV|_xsrt|Pl9PTRZ>aFPUyevj2^#fMXM5f6zau zI|RBZpNJQZxOmoWe{%A{?{KfPSq0s(^nn%)wzusdOZSMmV+D55BUob(`4|hw%EsJ> zwzIdjw+x;ii%xei==FJcj)sn>?pdoX-xDkIpeDFp$M&WGXzXaCN3(V2*A{eAGqg#ztUxW-=o9zg*?rfQ4QUT1%#;sRO4h%RNIoT9!kfC-yt zY~C7sx6N~oh0ht+538w&f_}f0I3G~uhgX_Pt~$JmQ%p1l!if1Q{k;y}dppjhHkoeX zFKat08sg)}c$P^fM&Ode2ykN_PW?h~=q{@b$&vIuoDjN9AeXRMP3@5Ir6+|NV?Dmj zU)NcEeN3YQ@x5(&^mo;BKQhUq0GMie9OA8ZC9xjs`_cjLz< zefjbZharwYFVo)5PCjN^^xGfPO&ycAAEfAspH9?+6 ziNXr*rHmXm`Bw&}iMG5m`_Xgi+cs+vKZ>GOrm4Gao;2Yj`gT$IKQ_J9)!Lq&r!y70 z9V%{y284-bMhdM*|7LzX8|b1Tf((N30}N<_Uzh0ATbV@Aj`J5f%3h$8De$;wI2hp3 zQnwG#K(qO~JpF-yr0FkzEt)m_pE8X_unr;-W`aU}#=Rs6(n8>Qc2c{7vFxx+|2_Uh zD&~D-e~6!928{TVpF7r7^Gm!od%U8%onor{A_PS;7BtwoOKA8 zN{@5@3SBOG=-P?(9U~BDU^#`2MQFIttBzsSvyo7XPD`4>TgLd5=S;wJe>CLD%CQ}< zozY+WB`&@me`eT56caodxFz{VhB7Gth(6UW}OUEyt34OyU=;` z17gdTj`Q<}_+2?rr4L`k(FUHK616;(5+nMJ?Kj%cl{Hq=P{B+zqIlI;-Qa&j<*Fr$ zeH54U+90`{WLfWUvG~6;soD6Myc%Nn47C261$hWrcx~QT5e5+O_JWmb&3@;(cwO|i zZKQ+OHuJMdY#zBTHq9S909|GQ?+*Iu9)3{U0CC&l=+djjXGLeAYm<)1(gy6i0Wko^ zXS4VDwQ9=$;r#A!xJwH6#*nZN4(!bB@pnT&L>TAn?{T;{`_OS1dpNB?Y>l0aCU(%j z#VG@j|JD8JW4Ag^|E6{Az(4pQXUbg5$fP|#n*C0*rqCl_|XW%5nj z8iPih8YepdWD2>_=CqM8PKRYnu3{78*;AC4nAp0l_Zf_nxZIyzH_pM8LvhPuieVFh zxp)zk?XIHwrShU8giT>nF}wBjnJmfWM5jM-Y8B<{uG ztnL6dKDsJ6UpEWTYuTtGv8X!pjkfewj)g~Mbu>Xww!wo=`gZE_`okJCfOi-4A)VlfAk(^EI_RyLS&yM)lid#!@`YDTJ7Rw3Fr46X(Dh zuV#_f&weE^qGN-ws=YrYX9AB376Gbu6}vqqj`=CQ)TR)`_~qH2-NVBv#rq$JUKULs zk!$zm=qYKv&^_Uu2R8XO9PBtRf2d>f%lISEwb2su3WP{QB+wlRFDzn$K^o zW}F51&+ijr60M7}KZ_!2oD!m$|A_(6n6rFz|E;m-#^#eIsAA)&a}ObQn4z70Cz68|IfC* zKYcDd1h$m?3A!cuq0%C4Q9m_b^jxgI83)*OAuR8w!9?k~9E@*pE5W6d z@w)1SPW~Q+lLX82e76-Q9vdg6%liZ$^FAr$A8ge6?OoWb6I$-a0DU5MR7vgU z;Y!bcqP9TFI9@BPkHblty1>1Y4P7K@jvW1yIM`Wxd>Zc)%I$DLa;s2<&pawR1KOE5^ zTm!`W5?h3wWONs1B4x{taOZ_GR=xSoQ{PX$=}*hcG^oTXo>3Bw$zKb#;#^+v60>b1 zX|=8NJdSoYk@`U<_>$kO{zcYeY~_(wN6siJ>d2l=x}V1;=#(33s+MKom>$PvVkqM& zETnZ=%~@@N)6c8uG=@r&Qj4C&J@)GaOy!?l(gmR%v474sgjL5!iOO4_r%*4(IvhE8 z7LxP-L#e*xqO^(SMas!!Krg#B*uZa`iT5PWsO*Gm!o+u^!^7#*uwE+a80Br zXFa-atU&aXq`C1W!gw{cT*vn+=DXIpZhGLMzND-r1>^hhM8&gC>Uy}eI853!)tZLq z0`%~~1zlMVHrX&0(PM@sy+)i8LleZd_1y7SyCzz5)OQ25?lq9CnIxb%U1Xzi6yF-oX%Y1I^A<{OSt&B4=$udONlRUwsr5fYSV92T-qYc zxAv02mb9FF|2=zr>Df1$?=RU7e7<$r57wUo-YPb}k`HI=#frW8I-s<5%~v{XOhLGR zfk-yqxBYsBU`$?oge^DoK0A6?2tRJ&L^s`JLVc{PtWlQpB{|2Zm#0u7AM|pJ>HzR< zRdx_NuoR#y_CemUur4xPeg?MkRcJyyjnz~}I+YHFkB z`Sd5o_BGJbS18k3?L?R0%jbUD%wRI8JKzQCuzgR*Ib`{|+Vv8bM1vsB?@(t}9~7wJ zP@~mh&JnJiRKm5DRD)ZZ$owT9CSC=efNiGNDIE)4C`n7-25yu%@|}5n5;kbscEo5V zBN@4iwrChd80jKv7xm5VXh+P&NYf6e3?zSsLPpsVglDZZ+$(du6cc!@rH!F~Dw^@w znJkex6{W^PxlnY-%Z+$u*+Q*vVu^CA5@JK6u4+qwCT5|)U2g@`EgJRTS=iEFOs#+D zVyFGBEV5j(`PKvm1^W4q=D3)%bd}@V_O{hm&MF~M%?6ZY2lPMEV`FO`95xW!sIWO1 zH;%;A${upXXW?*Dv%SSRDCZ#b;>*VUd#Lg+7L)AJ6j#Pp*iChPzKZ0%prz%~zL&MH@nTX`Sj zKkiLp^X;dpEx4_)dfs<4X_k^xJ;m>Wvqu}rc+>7fWBMB>arOjEEU}ThrGm^+%a6U) z!Y;#^6$Co#tO7@(Y|#Nw^S`88_BT5+kI_d1w~@sK9HrQJ1zLqo7ca7gWr1fLW1>)> z%E)<^Ba>SaR9(jts4i%r-wTJUaU)Scl^0c@D5%p0ZCRuVDuU*=U|-h4=`WU&lm1az zYlZ;Ro5G57-;#TF!||`-qBvv{W1>Iyc}64#z&6eMiXrR9EbC#H$fLR*k0|2_XUoeP z-%$JGbI+IZM4nBP(Ea9_N+y-_h8_Gjuc7W-f|7YR@5o!Q@SUIUz(Nh*V!CqfYpcgp z{3I0YrHriTp02cwDEIY2UDulb#PUqtu~~DbBi1*uQEu#$8_NBygU5k%t-ld?T#!yZw#J{UNqL_gE37p(rZWDf1?Zc z4+iGmA=J9};(q}%Rb)ACXT2eccAx(AJXm)>`2HfiwK&`)$h%XBT#GdKwI$EF#^zsJuwoIpptsLtZ3DMl+?c;A$75rP-zTfcJe7$

    @Q>1fGi1sXiNx@v711bW*xPc@l``gmozfH=#NMN%7(yDsGRlQ77ws z14fq31a55%R%*b0yMN+)-(Mc=Ppc!#vyW5=r= zyg1rQU%560lJxB82jz|%Rf*p%H4s8o9+MBJd#n#QI87$p>~b|G9@cGXOd`jZ7f?a$ zp$zZREvdOHDteu4tCkL~{2)EZ{J>E6ox&riMq)ZnIgug5=6kbZT4U^c=ZWw7tH61% zrA?_RT<JIV^9nT70d@TFVpuyz-#Y#;+Qn z+7CWovGZQ&Vkr0p$lO+20_|T4ZJ6Vy45f=&+)cd!`b-0GyvhCLmL=*nCWI2sK%6nlZK&_i!eYvuEp3`CSxY}+G!54x zFndH;=qt$R&N&sPc4~M)U#=zQSXSPB(4t-~Qs&r2T`|fmPjXe(r0e&_6HU{j$N3fJ z>xr(;bkoHS5{sz7vv&bC zngeFKz>|`Rg%PeLB4_-9D@bmbq`Ww<1PPp*vq9$+UmC{HVdZ>UOD~d)7Mql6Do}+m zcRL_7mXVud8jCLC>Kur-=4yy3uyJyzP@L}zubMZuK2Ct9hEr1B}|A=}E zwl{|{v%Bg&e zY#>vzxLs|V@_p>KO;yEb8wDejm?ivmb06RBQRG8{agVKv?+SOiIHS^X^az7RVsZk; zzE$i#?A*2Calh`_S`u|8iSj5vGKtMsG*7&{a$!8E46&+R+%v}V6aQS5v~8r?ruG$= z0p0P9#A4!~B;I+=UArc;Sp!d6TyPItF_B808t#wSNS+66l$L-Q3Iq&K zp8cpG`XO-&JlMkHIz!Xs_y4B--fzaqy-(inN}IeY5)#5~SAqUd-7UJ=oJFLM7f|Ba z!Z~CMLpW{SZ#-Wg9q8S^PIBj`=d)oW{9>`Yt+VNZ(}Lv7EQoG=ml8#z_!zIR-`UF7 zZCeqzxCmP8Sk4Q8;ZJFpMC28A6)}laj0#Y|K+EkR%310+NbpfMI|pG z4soDoqs1|R47y@6?nI+)EJ$pyWh>5AcpB@F`4qZZ~w+pqv+;MKyu) zgzFtG^Gj_o-xtRQ#hSM62s?tdR*usIfWXzX+`B?E0o9cnh1=u0mS?bQ&a%Yv>u*Y#~Pm_EL~7t=py z)F}$o306r-FZ?$z_qIW=Ofu&@4}7bA^C3?fDTO6ua+?}c=Z6Mo3fcih)g5nYEi3t- zcP_3mF0LQkzOsasf0;kl;OwZ>Ox@Jr^1SN71)m=Xd$cc;e#~w2NcdxeeJ9qnbFkeJ z|8UbAbb@S>OV@ipT{mfK$>p4SdR_@$G%?-ExCfX^+YB z^VREU1lgVe$q$J6#YpJr7#LcS>UFsv9CYc#Sbx3umA23REp8Z8yd%&0LxwVa$Ebnx zN-F-9Dod9=n>eNMlWpvFjYXC~E4F9|ezA7Mh6~y0UenJlI;wSBu!Fvw0;lj4n%k zBHfapm30m(8Z#euV!*bXG_TWd%85C#(ZxwB%xK&PtaJ(oW5B5m{fG z7`MI2&bPd`P5XXBS}{-5$A}uyAxLlyXWB2GmmjYxls4m_aC+!W=lXnk8|ZUC2-+Gg zF)?&)4*)~i5U0luQwh^hO5vmo`u^|!hc7JZ(F@Ah1wE)@$+~Io}jhND}>Pp!0v*>FpRyvj8c?8M^{v_d(8&RIniL;*W`(~o+3qlQamlOHR%t3a2%uT~uQ&r>$R+dpp`R)ktTL$g9-p&rFHQPG`zx9QoR z#li>0;|WO*m3&GBUcsk!1@y1fN_sVn9_Ts-hGU$cgThvGV(m$oDp3}f3TgHTkXJvp zng`aDsiujmrOQ{*>C5_8O}OnX8{G?C{I!Y>=e_<#0dw8}uGrPno!E(<@&4-qP-7YE zr*ve_(34DbRu&yHLbpYPZB$JKga?j_m{Z8qh_10p<-l4ipys!L(uuxE7%u>hJoVWK z#EdFxsMIE`k>q9_j?60(q+_)%emqKMu3OlZ>n=_X-LHs8`~BFqTSX zauuAjX72jlJBW*Gg`5uF5Td=7)w=5NcdfU?FY>q8f<>?^6L(OJhn4n-gz`RG;l}j(#y>n&STAu z=!mQ8I(PSJXwu^9{Ux9PdP z2>owzpAor*P|6f_5+MEGh>?jNt&mihT)2XyC)heVUb9Q~iX%6&!jn7~d!oDgc>L*S zLyQEfjZYy02IDcj0w+P7P-PUnct(bRvU;poC6q9|znr?jZS!x@T>9^{@h&A5J7ae1 zM_n516@2{2JQklQ6uzy-K({4>El|QlP^4Qu>90-~Ctt|R^SXv+TL6QM)*{i6 z)nA?ZCY6Z;(66X#L8S&E7=Kg!z(p4V-8KEeAktRGlAMPQPxfv6qv{&b9I;u3+j z0pYhml_pK#xe5w^;J{hdx>-RXO^U!`b1j%ON^=PJ6Yr*)#n zz;F^8MXss~vL}(0BL2R!;bm{g4+{{aMwB14LaYoK*B|R!c`-(z=5HSPQtlW*lEYfa zK$@y6b;Hb*Gvh=qC(06A?6oO}!A^9|CT{<2}@ zf#`2`$LYvPhibD&3S*)jY=( z4-j&nKIy$kP}gxXZ*6*QMw)CpTAP$4upf`1lSeToqw||1y8>$^V-!^Vvhk`XBwFGO zVX5E;-739n?mKea|6I$npstIE^C<|1h5(3o(UyfRWTWQHzZ zoz~FiU5CbHYWI^j>Dc>+!VfAzfA7mOz%3T=$YUlcXPHpnJ9te zBe?w%a@~1F=tPE#{=WT&!d|ju^+Se)khfsW)KC3uZNzu3^1tm2zH~yJylQz0u#~ef zhV?xTOr?(PQ#5eTdbVMOPMK6zU2WI|O`K9Q{fJAh(pWviU?=t0J z12bbX?mM+9eelyH!T;@o3t!GDDhfxBY@9lDC4~5E2Y3rLLEVgq5sfYt2~_VlTNnl} zI{$C8Il3P5+-~t!W#379M~ZHJTbcv5XzjXFqILQ#vnG5wUn0%qF)!}qHtUnA( zt^)C?nCq`;G-)-tUH<;wO~9@gzsHsbM@zKd;)>}%hDklXDizM5wdbQBR9U@{wZMRb zjXTH38Hy0TGfqrFP4n}+->N8jl3!d0>U5{b+E7|^((r{JO-0F`>p(J7kHeF>F z`o;R>jK5`^EZH~e)^s=)N-hJ(raY$zch;k|x~7v~CRlovZ|Cl3v`y%TI#~bKDdiaJ zHKdDpb;i)`k+S^IUwAT}NgX}F2H(F}3dWvm-4dg_gA4{k^rGiU3oX8G$5S_-&a+_o zU(=3wxI^kFdqNsEyybKH^oQ3+a!B|~q^E-0RjS#HB!A>^{^&N@{{|)Z5+526vn);+ zeV$Iyo^|pXMWh_KmOlM_P$Fz?xB8+x^YT%a_$Z;mW)OAYWK>sl&pZN z$Lh^++F=2MZe1|HNoRPIuz-}lnk~fwV00I@q2&0&+vxOmeKxqcS9jN#&dR2@sd2x| zCxfLu9N0v(_RkqksW*%4{U&XKqvUoW{fNDTGn;>@OQD=SYO#~VXIomMb442ARTuXU@AVtlb3kKI?__G*l};HHj&8DIZoIX zJP_%E?Gr~Gt?Wim1hFK8XH>V*j%AKBU1|WhnsWk-%&`mi<@S34FgswZzV#^1l5^R5P9H2*W;ETOA1|@Ls;^=A?BM!oJ3PI4NqcK#ZQ|36tdZo_vJ^4 zR@*oK2W$|&Wy_vLvk9mPKhx-Mbe~z5CY(X1r&-3D9#j*x7<{A><$$DfT?%mk)7W%QvZ4mIj$qh9zZaU2FD7X-R z+!*krNhw%S`gI~G*o~V>5>-)Y-WC2$h@xPEMB8Qu_0uf_!|L))=Zc->LEj&xxe0FR zZZjM;+`OM^p4aG>|AB#a)K(T3>W|T)M%fqv4ELiWGDn}%!1Mzrw^B_CsYVzDJL$7p zajX6>a14CZBMm4`6vu~;#Cn#)BcnaqEOP({bV=_AHt7-BF(CbpL6CY>nKeQkmDUaO zZCt;&!V88EnCK@J@)$|53MO$;U&@gnN)nrQHA1s9CuNcrdmQ6CwS+!yp$uUiyQZAI z8Cen5uq#x_G?ce&lAV_FM-Q==&qSnx8cckf^|M8zf1Y|!+v10DP(FnzsjBIPxaav@ z@TuASGAHK7asM`Qx-48F-j|dBJtxg*gP;cL?42C7Rw4~Z6JC!XGX;v^7BX|9^3bbVP8g}U@pwUntKcDtdCDVrKSUZfut_z^6k*YF+~Ah%+-UgYB6w9~JI&YPwECIx z#fESgM7t|*i;Ux@p=FbH9Xmvq;bKf>SfRTf7qolJ&fWzc_ggiP18EIqm?pVNVbq^% z4VljePE8A!&L@Abf)ZA=7D@dV27zMLDpO<17SgY3kD!OkiG!l5U~?wy9H@IKa9hzI za%8=-=&M(#r5Fk=3yqCXW{>M+q$o zvp!@oC|Yt1n?#Oh@_3v#12dgyz2Tqsmg>+b>qo_~eO)o~u3(4J2Id40dV+zkKT)sr zZ(ZM?z*mh;>o}xbf3_Hxd-|{^k|$+xT?{Mftxm>O(*kFzG|O#&3G>ZMfAum-(WVqcMB#9eW$WhX0b9MVUyknap{lt1hjk6^8Vq9W z5luKS9$m*FpS?4R_iK<&yfJl%PUZel@0Zrr?g&z#*JIYU?`sQlwSjcI`1fF+1gNtS znw2Jde-41uygwK~YM>PVcV91O1-NOsZ+~z)6gau{_2xNNa3{-WI`zqLDlW~$u;j(DOSM7@=jL`sVru5+Ua zUd{B@@n#ryG3cJdJMBK(niQO+$yn{*6e-gJ=4)oV^beQh#X4@Hr391&aR6qYQVKfC zo4D1`_EuHiG~5@~XC2w-v{NV_%ERdwK~vdwR*fJEck2XD&%`nE`HhvA{iph!%WCXn zIQXPrXDx%rz9e7AJO?aD3J4=`oCF$I@#TP)uM_YYnDSK|6ZKvxfLO@@Eg!r}~8>^`yn;^8QxoWSJBOd9-S=Nc&d?o3D%2+_~At+0~!Q zu-uO~;u=w_e;Ct~xm-zeUK%G<4I1s^2(Hg^+CHZ_ESsBZa5HVzX^OrX;+a6{yW}O4 zcXsZlBLaB2-*c&cvvCzd{&S~f>AG_z#e0XDWX7aQB4h&_Jz&w1qOW8oUE{p?6#&3ZX7{&o~d0`N`<# zwW2HLEb%MQuh9d?P6`O=|FFz}6UAhI?q4qq%ZUWmuGm3RI{jyy69Vs{?4520{uU+M zB#3#_TMp>#Nk&sWfn67OyShSucEqCmDXwC!r!T2mnu)BZVqYtixe|O*3cKDa_Q%sS zn70K2V(vF9JPf*?Uk(>z%&WeR;vlrK_iD>nm|*=mr~Fl@+Qrx5?G8C>bn}Gr8xFIe zpwUxd@Jq$EZk|5w{5KTtv8H1UW(d?7_4FUH+q1!Y!uxR^WdGgS+c9yjdfIMdN_wN} zV~ovs#m;0(>9~mYCnkc)7qkdp#JyxMstKhN|K%m$zoF&zfCWPIa3|Dc_W=XI4*E}C zlA)-GLh|cKjiS)VX-`pE?tdplg8A^yY8Iv?EcPn`nXwIxPw)o(O-(Q=bd}x}lGGW0 z&3+fI{bHZ^*#!_3(pHW!JYjXT8=10jg*GogF2$>{1!bLM@-Ld_(?YygO=2(}u2k7UqLl-&_D%cS2VhT6o zwaBc7c%9^>)6BoRnFej0RcK$Pnsah^F!~+&`5Z|}m*nSB+1ac6jxZo@6M4`xed-M3 z{h5sn|K0sb2Jk1@r$zyySF50FKX2Y{wF|tM`Ih$Q9#*fM5+Y4s-0{@1nONC9gE~)2 z;qk~|l9l0AsfSYEAk>$ha70$`m?K>8L{l+RLhkm=>tR%5b>jxFs{`jyRrl|H^Uu@S zRn0jG4eaTKaYFc{+|g`l{aey-f}`{Rr%R18oGjZxOZFtJi9EthiEAzF+ep@07k#f| zpg|p*dQ4!E`V||#Cg*(c(bkZP5~HdDWmLtzF+j_q(fwgXgWj&wI#mLN%dQqAr{woh z4U@6XTT3kMMl~agKk>Z+9k^zhJ$f*2I!uL+PetNZSl^FmdIHR3CdW_pbVVgI3VrMu8d``9_-`51 zM=$(q{uZNfa(TGdqyK>!(7p5=ZOi$p12g^jss>FTkqpFgOCm6}8B~6{!_E%QKG$#Q zPJ64)3JA!TT@LingJ=LW(L6q`5ry-IPT04(`#av;yd2`!Y<2nEQ$0NnF2-ct+H90@ z&~Ycze9F9kQPlleO*t`nnBy!F>7)jWZzpxVFUM z{^6kSd+iYb9u9b3et&RyKYWM00$&r5;@-qLGFNc63U(XRscWj3qlj$kod#=0DUl?= z{u{-f%YxW?cfXu{X!oJ@SmH5?#gQx>J0sTbZM>~fuSe1je82-1I!sB2YmKg>Et@f99i{%Z-IqadkWX{zfq?+>d&brK<1 z!l$m0;L`eGTb@IhI*{Qb|5)dyfDxU4hH8ab@9ii7!lt;Wu@;jDFTm@2A*`33rVV?V zolaaUasrj5D)XH})k_{CNO@N#=986Ct&D5#Q*gl_D``?bC&zXLD-b#Vp0Igd_~y%C z%3*Ln=`N5>K`O&)#YbeC?8suw=Y`IB8!^7G>{7+T3M6f$6xKRf#?p4z8NMtYl=y)2 z%gkC%AbZ_ic`0~wcXAa#%STH4Ev}8Dmo-zkA|B+r&liZi z%>VVLgvDtxr{Q@K2mwEWPi}J@X#ERKxeyZbPB%1_zO)8lxXf& z(|cj&537RM%r53uS5uszM1R|&)0$q7rHtuuA54Mim@bE`*YSz=bb(JFn)fhgxt`sx zFRKWpc`6>fB0&&!{egekS}>kfVM@!=aX*>c z)?GP7K=@DI|9d-Lx)4ryyfvRmsl5%69Bm@Sx-1{6aZ(<3J<4zU#P(}=-|5VrraCkgApx#z3QAUmzW5bwj4M}(o#fUp6(s}AqMFE#m=b(;m1yuCVf zgYO|1TU?(8_NB%DM)nnTWvwy!mLe%=0lsNu&q@vJ7kWpW=--c*YtxUDNw zkf;1#D@Eq>uP%z5>6)9}mK*hCTPhPIH?kAH#B+%IEF@{wEqmIr`e^t^5`2;>dJFj@ z(la)U<11YwuEAFCTvz96KGIlKK(YI!}FcYr#lMqkR#-zljo2_%(@^ zWbv55c2D1{9{%oA39&{g06;6BWv9c^rnc-w`&%8ZBFd>AO=;vwKrvG8>_a~71r@82 z9Qxj$c-0Tkh^vbE2H^eShB>aVYH{(rV!ST8-a+H!(|qWrtwM#hiSXeQug9~5&6~?> zr0ttahyOaE%u6y2wW{Eyq@jt#;esK*{1|FFdt7}lFg+JHj58Pc{k*K3>vK7Z+@sT~cuyV)IwN6JM<3qjiD&kWnk<}!I`)y6}PSo_JiO=kXp4~o= zF#EoFHtpfIV!$=Bq1VlAozyMn^?Ldiwh#RbRX+3Q1PAL|SpRpMFxZ;LCv^NUZX%Tg z<7+iTRu`FjgQ||mGO5NDhTC?%NqqW@Y$Be6rr(;nrH*lSs_+spiR9{xO7XXJy~%ai z&_`z%bumhNDm`p!9qLF+F0*Wr17Hl#q^D4(G0OIv*4RPsVCkzAR1unQXq%KmUX%{s zokmHd=$%x-9})LfkrY$d)vwAhbdl)FpuW_8VOUFmtn~v>v3*g3h2W;usH^7iJx&062sp9?c?`J!hhyL?8|tL z(B_hdEcX&TCcs~z#PkX=H?)G{lzH;WujSZtRRkzN%cM_xzk}y?O zG|9i9hH49E#Z6-*2fCZk@7uJmtE2z6gBrW7*_cHqMkTC9|(9SsJ z0p+_lxOwH%)|iJzH1%aGMupSSWNC%u4r~?Q3F>Di=`6>ALeoPh^HePSVs6MgB}87E zpOq7AvY2hjJ^cFlw4}FY*4h&`$4>R<>taYbc}Ln6V<4vsKI^vR>oS!yb}CU4@93i$ z$XB5RqD!u?<-N(%t!}fda&G#=&SQiTQ;VY1&wPU`Mx}n~m}HjZL!~ebbMaDZmrb-1 zpqriGRy(@XH-F9%?2wxKVzuK^lE%H73wzt%R&7WV>Go7%!l!^2p(;X6UC-A1Y8A~W zeR zM|4JtQ-9j8+Vn!Yc6fL@;_;bLl28b&0k!VZ{1=+m$AdU}rG;KwOK}}pzEvYO8+AwN zlM8Adj7~jIT7infuZPTanO78H+g3=nt5~+(Gl*NwqAifx5*qPSk9AQGSyq=0&QA(Q7$kIxr@Y1X*JJ_Ncan$qH$6 zgq2~cGIJ{pUcYT^ENW;82dE=PUTj#exWg*q+DR`gt$U0bnzk)>PhA;uSCuuY*Dmyn zy9*I#pLlvo5%mYiXqj*h4Dzczb%Kn>Ij=4!2OA0{QJGH)>|~M?Q3fWXMK}l~zn3fUw;4;v{kl29#cQj_CDF5ba0e8xa}oF26_bS?k*6aZefGF% zG(;#c?Qb#E?SJeCUVklVi4U+Ke_y-wmx8?YV)|bRLplPu*?FU~U}%3=T%4s+tz4fx zfwMe-kp9ben#yhe=k@WV7tUTc~x%~&w z&Dja~Uu7z@a#c^xBB*z?#o+BC4+7f$&l6ODmuHk}?}v!?_i;LdS&NW@^WWvaiT!Ib zwP3u&7uKWgDk5q_Ps(5G4xT(2rV+m>{HUHwRSXGTu`7>iUt^Rlm{-MeXe3RPp46T= zTXYM7DDZHov-zkw#I-+ZX!{jYsM*znzk28~Q9&hEq&0N;^gA{tUd7OGw-(8bx7E-b zQ-%6Y@gt{uua~Bd{zGMD^jXJ{Nm}`(CAsCRMX|*asKu`1CqM^BuZBCv*g-|;oK?ny z!SZSO#h%rd_hg4|vJBK>!rj2C<}Px${b75s%FJPn%c7~G@0Z-=CbpPHYL1U3ynO5; zlLOiOAIG^=dHe&SYUT&{hcKiIWIRS)Tn_9 z#NcjvZrQBiqk1cc7r{eguZ}cbD?WHQG)UnDJup-*&(_g5E4j$Xt@NbgB{6MY8lz>G zGOA8#zu{Aq2|9NOt&UYL6~uIn2KUU{EnDg+$enk1P=&fTeIb6+Se!%1*kZiy#nd$} zJJd4StUM|IP#C>nUM_PwFpW@Jtz+ApOuq@X(YTIr|4y9MRslG)U}crRJvQ*Y87&1q zg~eSjTG@zk2dU;%M%GoLm3F1a1W>&YuFo7>Z`Ad$t5la@GkD-rAL-Jlw%@O zEXQi@;K48={*8 z#>rH*HP9ExKG#!F;nSV4N@VZ=1W{K=9nq)k&Mi?yx{JcKr88Av{#qRrw<&yUtN%wu zmpiu(uh|q{t(T)G+|k<0B%*{eA6@)oPq`D_c^W^1GK!yq4`3( zR^{MyY8kj~00tlLz;0;eG{q0fnmW9Bop_so5vdd*+A2lnO z!VpVpJbW_4nT%ni#6Ed#RN@79Cl`djy;VwD(eve#GF{MERxVv$>UttnzSzRN<$rxM zKE8je`%ONBlcDRck%u{YRdt{_gcGxj4hxG+HOSIPCyyUMvv==c^X$ri!}jIZ9g@4H zjS6oyJ$eL;WV}R*#(DX`XM#YGp4O(O5}6gN$4z1_v;|f5EM-SoL{&eTN_7E+cu<&k~#HLKNCc^rKjn&U*PF^i}LHu89T;3t~H7(P-k-=9I3ZE zuHzWm0_&RN#rk1n9GbdOyK(QL>6c%|=(?NkJh9#nUEsjfzc`Pql-%`~QM{P7{ADM~ ziaCfb36xg({-yiKD*oGmjf%=fkU6O=<-}@N#~-pjFO@U=-On@75>ZXA7o;N3tjt-< zPUqpi#Ach;khK5Au^uiSrYqB9M{Igdp`V^vw^x(Z!Ahu{r4~*5ZCXx#PAfB(_OSKy z`A$J~3TcM`a&yUA3H5c68*=YdUF+Xa{tCe6Ty4n7ZL%LIL>|c851M~Sp4+vqUfzwy znAWcEzM9F=C|;E_^wPF6BKgJjmKp$Q$a}j75lsr=U$-8j_$yyb_- zs~8t|Ye+Lp#gHCotL;Zi$UeXN2PB`HT*bcp(Ja&j-mmXF5VEd=3qK9djtMWr|L{ z$x!pfQH>GZW3W1ZYEh#f=|qW&Nsq%EMGqOfD9Q1GRLoSiMpUSx84U6_9y`0qw@>H?8;J zmlH4w8D6p(;d&^AF@U`=ZWSVzWX-xvr{NK8MkKy}OGUb_U~6xVja=tFbrjVPm}HzV zpa`cD$>8l<4Mm%x!#Xq|{Ct%aEy=B}@&BLA@f$1#E^uv#!SjsMOWaJ;Bn#N5g$C23 z#}+BTuO+DjNyPZ_v_CHcW_{yL<@PeL@SlfeOSc5``(B>#%P!`BK5|*5(fwRR7sDs4FnKWVmLu%LVsH z(25HPlPvN&j?q4On5Us;`ejIZW@QJs9$OKwzkQ5%@BRp|7#bJXg0(^7DHq z;BD4*z*vb}woOgiMgUt{JT|XktotOix&1<`Sh^M3Q_5)#6>|9V z=UEeO|05ru!f|~@IwOpad2j%!`YJzy{r16aO`0%1E2o7hZ+v1b5HlwZJ)-%!@${6J z8{CeXEZd|5?ia~|n#DBzm|J)&1KXBmX+_x6k zpqE+WBFlTu&Yqs-VTKEQAQvJMyAGzsdm#d$enTwDX~dXLn68iN%ZL`&Jdr= z$&@Xj(?X_6tSyLLKyHX>)@D%I#Z97TjkR7vF#~h%-cV(@f?~a;j&DbCAl=Qu*t?7- zM=>YyDceemp1?Yf+U0>{0=j{=#TZ=Mq}BN0Vr9N?VwrJdemGPt?*K@ zPhsONfwO!on-#dKjcPU>q2YytjdxU^71NzBDpf5n7u}&4ycz|jlLZSE_y<^X&2i~Y zhp=}B9MHz#@dr0h7MH>T4+rCMJSajT{=6%={hDV6^1)Vr6<{8dIE%MF1^Ni)t3ctw zJzgofx_rZWkN+PKSe_qfSUjMd^)*glg5Q6m@})QPt$m!oeLMR#j^*j64>vJbzh&x5 zYj% z-SvEO%G~{YGr8Q@)t9rf`{lwS(|3e9%r1q`o>5Z|?IXetP9jLMYO8F)F(G*?8lQs` z?var{jLrUpDSk@fF#&`4M{lcQ44gEAuliChQwTR_yt|m$FReK2lY3slB4s@iB~$}E zM7a3xI5HmAE&hgFtv!M`n()H$?+Eh6^v|p`^<9yG+ia8P#2!geA#&zagwhen# z*hA>TZZsIz@rSLQ3B$AZJel*0shE8mVR~}`e3w;{*ISA93N`v_C7BtwQ_0`$dOWxq z7=K*$F2r>~p@(Iv{p^XJdVP;{X~h1=4G z0eYVULf=ppAAu2LW7+K~G1IM`iu`2P+TzYhUB4|pp4BZ@kmrgd7u<^ooKz6L6Kdw_ zmicG0@V?4aJSsv9(DkYsJSocEb*!^lHisCbGoU@M0gKf58sguAhc4rGFGN-U#Q)FaF(lF3|L?e+EhgJroJr11o{ zJGk8q5DXTBNBf#3GZRo5-nU-wR7M$J7HcX=Q}4raXGDv{Hk3x8(LgFo&Cnxcne_xb zJV&qIOG>5$>r&nI3d5AO^i5-}y@RooeREX&(YMW`Ui;HluMcGt1MmW?EA)L8D7{p; zF--)Txi@C}QO492QyRtQc1ZXq`$s~E@W2rirf_fZmjzk}N;Q%oP0DX(698NDtm0)h!g}83fzZ0w zAOQ+oJRz&m#oP`WlerY;B0&5+bSrI=VS<_6Xf zD07Myd0UZo9x~CIjog>)m!~}375Sl@G%zB2XK&b)U9HR&(?-gXDPqfu?0hoE@R6BP zrROR;RfN6Om!728?FeG=e@jr|$GLy1L+^V*{ucF)xSxNOZ_gNx3lxxnB!I`M4vx7eXuLU zgfULYiWD~VmKM=HGPi6}*Gnm4(U3h2J0ricBy&aiAa?$=;Vnth3@IHg`r4oA_^N-%=HsIHunqlD+8&)sOic(Db9-c$%=eW`T-%hqIJrDR%v$_up1+$C#Q|Vd z8t|}|WLDZyoE$8<>-H@WemlSw(!RUb`;*98!zeFd?%O=@?=N6+`JIAk5Rq$rJlF|} zq}ePmtcUK({>mgSwDU4mNU5llY%#h{^v}*3+d)wzryVKU3$8nl^+ccc_>qFcmFtkk7U$P9+K?eh%w(4kmB9XeL zr6PV_Uzt7k>&s4K^E7pv&Kgokj>|q{GmX}*?JpH|!p%?i_*by1o2}^4@ct=#h}qk1p_la@D%fdd%t9%eOdG=ajd>>xEW3V8JL&XgzS$s^bszXt3OauS z-_mM4VcFGalE)Qne5>D-9BLEh61*V4J%AT%3XQx+9tvq|D;}h2EeYD}F>C7dl%7?R z=?^&V>x+&%%h+UGF7j+ul|E@8*Ol!B&Ut1{S+m&x`1ZRf^9Pe<@Lzx{Cv&`-q2Sf! z?v@bZ@V4r}C5;018~ko+*KCSvpEdr&S<{KTva#F>4PV3q7bm zgQO#zlN9uHclDG%YprTcl&$)^z;xgDYf`VNW&xucZST(79E$(U{~bwSnb`-&E{__c zhqsw)BnM%E?alN4s4ixVTm83YaQ^egn|3-AH8s%kC#Is)d*G#hj=pY=L7vSo6X{^0 zmZDt7dRlJAldC9VmW_xVE@}IT<~_ITKSI9l*Jm$hC>}h6s*>#?RN+H#OmMycKt19I zz!QO^dcpWTx(%+xyZ-!06lt1R1c|DSmllc=A1IsQpZHXz;efTCDng9xZa?i5?n zadEjm{+^d-AmZi^=B!lDE;}?&!0I9H4&?dagDz_Fdyz90!qz^b?w!<8Y~!ic9uBBQ zYFtd)a}%M69$5BX?4Pr25s{nXgc*pBXXrK(O><~oPVh^^&-);qn#W*QS!q+#H~^81 zd?#`{I5MbZoEESzYT{u16KiL)=<(sPaV0!R9`JAJp~Q0aX;9N2Yzn&G8@eH47keh@ z*L0vYm}fu@fhV<7{`EiRb*r!hD_9?{8%@J!emYi@?E!`+hUzb;J$= zoz8KBZQ_mHw}ROZHApUtnt4Nf8I3)(RJC-Q(8lw>ng3AIZT_-$AqBq?wqU!Pc0c{X zV$|CmIs4Qo`rLBrCqa};LJWKal^$$Q3%{un`Q#iFUe~c^!7^0LAK2*D>IMN9BHLgF z4Kh_bu+oiYa0;Ipp`+cU6=A=tnU3ywgJs)q((^QIv`-pr;qHg^$VXL&@MB|%B&t@U z^lE^xNZX?%X$q|pHcA69Cx}dyq%ti|7FZQ}9?iRpA<1ufc8*tJ)hdJ`Jd|kbk#b`~p<{~Luv7J1k70)~xK*%;VnbO=vbesYAI${0#(#XM#h#0WL zEc}O(t>JQ(Ey*MO?yRI&Zfvpxg=`yr z<+SUTOyDSDYPf5Xr4U`%{BqZ5i3NNQaWGR05F zXSGIH<&fp*<>|$^99=)}>Yo<5!87^$Kf|tbRCJ`+er?J5U}fI2uMDfPDQJ7v;!dR2 z^bJP9+!%RdS&t;gAV)ta$0;p1>-%V2O1R4P>!#-E_kRe)WAt?5H+c)+2B|cQOyl^ z`z3^6AH$4CoY7>wd8Bc6B*N5oPG!*_R&90PX;Q$Nw3r#D9siqZevO z);9Pf@_Cd)X_$_8w>J`e_9N>lihYl;V(da6J?UoMlNJ)|Ir2ihXJOMkXatrqF-{;8 zFnl}(AIR||dzhDyox4|A%W@u9KXEP%Cj|?rnC!cDd;_y(jBFy!OW?9GZK?zXJI1+M0`dPj6O!4Q?d=Eso6X?8$W0Z|ad5GWOLJPx_Ac zhVq_D=VNA~@I6;MOj(F&t(xooh;%DC))1|`G;XMs2lZWs(G{i=>S`Z@wY%2lX{}M!PDuf1?kL^TYRuqM`l>l(;n7e;4JdGJi%vn7`O&-j zLs|z)UExz3#i490`^Z)$JrH>D)59|EXGwEK%GWjFZwY)R+8;?3gDWwKtCB)Y5G$3W#F!J;o~Om#uq71Kg*uK#x$ zyO{fHS9Z>Qq^+N3yI&=FtqOx^?U845r1Vf!(>4Jk#rVGH$26~u-?O+PK(!0xnabJg)jv( z1?UxXs|B?lZ2nbw^UKcWY=uiVl;aEt>Ek42uOirjmV0s{O@z%fBE;T|9=7JrWm+1k zhgjW==EQg6$h(S2=B+|T6@LF_4Y@($9hEOt(zw$VM8Vsiwe+56%}l-Y_Je71!l-s& zS&vkktRzV_-%4o;od12g6=O;_jkLh54VM+%?5Q)O_>sHl>qrT0I#~8il`+lAfeLFB zc4T~I$Q9Jy9}lO1+F&qVBq;lLP!_+c@YbHsZ-Ar3-ey&Z*S+A5gGV2Y zWhZ)iw`La?F1=+t4Kp8Y(i?5hf6i9Ti1PNLOQdfmx(P!$zji>)`L+YwQMt>d<_rOF%C2@uH1b4(vtPHhOd>d~RIWqh{dxz`BtxuvfA$VfrwYlFZW zTT@?KcU{rxI8ic_Wu#}77T4gTNf=}oEB~I;_j{$+}+*X z-L1I0LrZ}|aQEQu4#C}B0t9%u@4b7!pFqgT*?X-q$D}Ns<)hwSSH8|PX~C*VwXcK& z>U?IZgjIOyC^V$VQbpm;kb$DXQ zgJ8d6hoFT^fESzt9+qX0WfQr=46O5X?hXt_2RsX%+d&sbMf zhAj|-X+zMCi@h^X1&`7UJIaeHBnIitN#y^eCWuU(#CN|zSU+vvU(>O6+Ba4Dur7Fd0C8sKKsB_u!QbBl@lDuLOx`}(UR{BBX`oZrzt@9dT zj7PPX_R5r3Q+i(o%i=R_giUvQ+;t<&>cpk+KXIr@Tl7ipq^z@;gv|nfncYKf{-w6w zA?W>Kujpox*pT`OU@bHlI)k?-phY7G#cM_cRyxl+`Bvb}7))0d9c_Zr}3S=lxSv_^kMwv=hR#v#6P#YWk9 z_0Omr{~dj@4dyxo)|Lh3njP8G5ntE)>3}~SVlYm1a8J5qWaqfi?mI)RwIX#gRV87d z5o?=ftg&6Rq%B@K?MBU1!_%W*IhHro&R=nSzj((MTFh`&V-i-|brzRe*`D+Xqw{SP z2C=xW5_+GhSuF=M3I ztnXC+&Y$!%;H3u{m@>jLzE8IONLtnIykRc=44Q5pt{4m_#DRZr$}0vz1TFLG?3io6 zI+Vs_eVh=@in!3*B0X^f8BExSK%FYY!tVof!5?KbrUC?9#z;i%y7bdEWgo z!kb_*ScsFq5dw~)a{KTTj5AED(%mWiiI>R6SH0M%d}%y86VGwBg&gy5F^QXaK8sAK zjW(rcPktxpF=%U{m@STm#rG&~d57khE33A|+*^eyO> z^V@WbUMPETt>uTIp@}{V{lt%9k^KJ*HKYbMTb9+OpPYp#na91^J61)Z09zk~-H0Wr z8^TWZ@d(;6QXfMEL;pnZbDNIqofqIb%n#AU?$KleM%Fve3bpWwh>8jg__$M8M44GK zpKJ^aML&I1{_x^vM>O5{zCPdFQQ#;( zHyYA>ih~Y|-H!zNE%8Nw4LJNMk#;`mnii#&R{)OxxiCpH0{rfNQ$nmQ?@11w9-HjQ zAJg@#*N)8wdoE`asC}D{{r$UhMNKvzv5&TxKb*Zdi)c1?^`gA*MTq9-XWms+#i&N> zL~dCWCXWPrK+_`UP;cJlX6M_<0pwY$^81(QU|oW>tlaV@#_CjCGvl?Z`4~L$wV3*OECuAR(Q{lbFysYi4eUhYdT~#fS=-@%4+F)FMt=MexV)d?%JIC}`Gb#K z)2jQ|tda7z?F6AePtL&7OVw#?pJ6bO#`;IXXdkS%T$r{L|Q$ct&pF3v2^sSjn@P`Io#@nJ#`u_iy>;oV z*Y2@w(8f1qJzZNOA>gVzt~&;6W%;GhGe^OY$@#M{8?S7a#Ukfi%+Wd1IN(W=t2LQ? z3k1#}s(;UD(nLpYdeaX=2Lk=raI#(WBw~iA?RDD`-p@ZzcZZlh2mduQ3kw6aoZ_`za$oWN^(; z$^rA-odg+oOd3gPXw*YifGCWAtV=QGCqT;&v@PMhZpm>rd1*rEtT;rB&RwfW!@LX& zbFaInF+_zd9;x93BUsVfq44d71yCqM*;wC`*ezBuxFem+^UARb;SI{LUwyhgIk>-H znHZRP8hQH^Zm(t|gn+NSYxLyxkwEtW&D4|p-J#XR+t1nCFFb)%55Z~DISKX#-qBFh z7ZD6y-nZBH)$37wxp^u2ow#f-?d{#Ep3zM+QGksw*kwD$IF|xFR@(jVVCv7(*>Lat z|2~DEaGVr(FWwWL9vv)kZ?>3yH>+X-&s|QR&Q>26vu zT6D{|Hx3?wFOPwbL(mlF#L}O48Mm1#q3Db-NjoKBe!juZQRAY4my~srR^=)U?(R># z3fU#jg;zPi+IrhSR$& z`oHQ}pDEiiNwezQ*R*8cu-N)U)%IY}$KzSM4|LbfC>9eh;bMW}muhG}4gH|G7}B?$ zz|}Y9tKf^}rthrU*%kZFSp)r+4qQ2s+krI2=QoT1)fr!VjpcDlkYoUsa3$)spuAx* zabe~P0S8@0M{ujZ6e$PYd)4PRylewr^=a7hWcSE zQ*`H+-753zz_pWF`xq~D(*s*pl4c^-l=Hdy%eQ8a$%jQ|)zpTG-q{5~%HKRG zst%Vlup_O%JdW$i|B$Tw#MGNB8);ME|9rX_dAR1FV6U|(Wmxj)VO6G(#JSx(0i1Kq z^8yV3O>gghHC+J~=FwC+&qXu{;F_nxvyE~zGrIvA`aGq}QFPg!y3yLgZKrrIVt)$E z-3Z3CZR`Y-e)`QUfh%Xg^y)Evv>Mak)nn8X}7P2U98W#CA`fz1xPXB7qNM zhW}Y`*z`DDFWppgh1#yN2JUy?pURFMdl3_S)-=Mf zA>jRC_frL_K*lsiOPm|4;W%@D$o$Hv)u#}}v!%vVlIO~V@H6x8IJ~S(F~n^X%+FAE zdkbfKWuQK0*ENx&q?G=L^w*WV&Y0c$(_7oZyWgo=OTquJD*;nTE9Dh$nko>zi5#7y zqRz#!(+o$$PG65F2;@rckVY$dWQ%Hko&YUk5FpGrBD>-zP4p+YQ14 zn+=%3i=0A6W&zi`WbbAkHUc~MybO3B86BYA5&~UbuV?q0uh(SVKu3cP;W-YA5&=>! zxm!nBVbK9eH9X_htQ~h7)Q)=W4>L{(yrQ^ZDLK3F;td%Z>MthSl7|Yw=G|n>j&rx*$m=EP1Ggo2d$6B zZ`Nf5kvV}i&9p~IZ|Y4}6myuGf$180zUfrw8AL(X$2I4=X$r;?g1@ZZ?7&OXTpDC- z?EM?$n&l()gX~00Ot0CJ_Q@f50rmm4D6%SV7=rnxTsHCHKZHESfa4L#u66X$JmCuz zmI?H}9>plPEs@(_8@qajMf@wiVoCofITplEZOFJUE*`o?`<8kAVru#*(hi+%l+`*n z9eIG2l&#(UYOj9L+vT%aOp>%!j$PSUtbw0B?jJlVU%^XBf&@OYA(iQ?`_$$+y0G<3 z)$W>TXp)Scx*U!7Q&@+qUwW__u{0UF@zVL5`7^Flb9$KHRfIE&GIML=S5kA#^XJYr zE7t5Jb*ItIqm(^#%6&;X+hnE%$7(?SU3b7b>gn`AW^&mrN6Ez6+>e!B1v5qYIru^( z_3~X8Qj`_=(b~fpnR!n3R{%pu2te@3bM(T*G&!i#1}UDEbaH&x5ra#IHT|@hV=Vbp z#}$oEP*h0Nnw0Cbz0psbsgf#~E^8y+bbuh_-z=e?=(4?Wj!c)5%I#isqDzQB!daQ3 zT~ufr*ObMtc+P7v7tU<#4?%Pb+imz*wtpNba6k$}I6H`WjAtWT6GaCBfUbxyCO#@0 zd80v%_kZ$M=u;JShoC3bc7~6)Bh!p;@|YUGE+QDD)!kVW%c@8p7rTLes{MKnV9RA(`$C+t(aMGmhm9TV_q0 z1tLpHORq;g2E6O1YiIITU_tEjf1_P5+RyB(Y>)-PUKk4BOXSV{`$vxTb&&w2i%%DB z9+jAZxS@wn&Xj&f27S3H0kTUEo<8~TkTUQit?2Ve?;ZN`cfi(zj=D8QyFjPko03-^%BL*xle;^>^$tIAT%~EH^l`WGi(ktqtbx^|%D5fLiF|KWg3-4?p`O!YQ`*f`f-2{v;7 zcp$5*Ok!mnz!7}WwN`33A`Q+}HJTIy+(LQ$iS(Zc-ZTLBSKs z4F&MNqb`9s>{3W76h9Ncxhwe6nQ;15GG;K$bVa7njPEY=-Q}!p7n^IOjb$bwlT11B z!BBJ)W_q4MBXI=*3=8F^yZUUhWes^Md)*bQ_;I=&#jUClpoOrN!kCgu^}3H$f9}ra z)d=2i{4qEuJ@(K%!7?+YV`bDHlvle?A8uGu*4OJ^M_b$XW+ZQKu`C>B49dhj%eGz4 zQaGC`+A;$7JLDBXP3E@)ZtZM2hsMTjMR%*D`jWitroRPN|A6Qf(E00rI1#+hBDO^Y zE=<@Bme5N})R@8I1P@&(#>U0js^69t_}#3q23nt0>KRKQn2kcqI2pkNK-mhff?mFp z5bo{FA5db4al1h%GsjTZU{Jg;dEzpip@j|g$o%%3PSEzm)BVKCg!1V}T$EX}GIZqT zT$~6x7@D_Z@Q+YMqC(L#1IFQ732G5*AmZjoBL(rGIlk|CI>4*QPoOfYTNmWB4@-4n z730ipI7|y$8|5bC0B&xpXXR0SDgUm?uIR`38|f@Q&*lDX>kguH_BXmLwxjFI0M8C) z(#Uz*sS$`s-RrSfrjI2>cx0J_u2>LwV)?Ze{UD(mZfC&m^7cR3QVKk)`rR5{S5UT>HIJwKB9y^Du^@Y{!@}^0aEvgW%>91I2L-v{96;sjBD{m~6+!mPQE`PVR)wUspuWD%z)iC98r!A9fOf2sU zAqFqZNyBA!=tPf0HZks(R3uHlXxrutY%`cCt;)Idtqjn5x3mnH=;3PE^ov;lj3hj-NV^c0VMFC2!M+I#<>Z8? z-v%6%lrOj%hWQvk-HXoNP*Ns7qdL6L29Bv~FvdR7t*q0`W`w|F0n3vbPSuu%jm3)9 zNpp`SF5@tFbgv5AYB$n+Hj=cZ$k$qHV(GZe?rCZDXREp?!FPBzG8H!SBu+p!nVST8 z*3bO&L}x^Ok~y|h2WD8sWqp(UHlhgcazqFUFn*{}CxzYKW`i$$Vq%4A6LgYWTg!-8 z#yKF3DKk}`0$;4%U18%fUeLn_U1ywSh`v9uR@R($Uxt~Y`d>m#Szy^qtBAn;b{_6! zGXzEw(d@uTM(npl^@cPwQ|a-zVi0bkySvM^Or4dZj-apjXdQ@R%SN%P{~C8e0hrD> zgRUJDaZ9z+wg_WuEsqUDC;llQkb@ABulb~1%b8@*%H*9T*u>ZmLur7#MJ8j;rFD{e zAhkymAv%!O@KxSH4Tc+T!D>DP+NZL;e2!Xo|w*N~N` z3F+H^%9Zt9k(2sfhI+0?Rn?#DV2J}Hik%GH#WfU4tRThfb8t9t97wX7a@7dY^WuoF;@S6KK_*v>DTRDzv@KO^&d~Nis<>I+X5W&Z*w*U-Qr7 za|Ci~u|tDW>(p;DUzfRDW~D~MmZV-8mMu-i;p~5slFhl+#9W=tQ4fr><)!Z%NR4Lx z3Vel=F+jBW;Kau2wuSbYIMyDeP`T?3pUe&H8|@Bo=xctADvC>jaKN zBdW|c5H(fLnX{|I-s@VudM1GQ!R_ejpkT3ajL~V$u^=s(ou|0yqgDCi#416b~!0 zc(t;~6KWsa_s0!T+U(v1M*!V?87|{ewZDW_g&EGWAGFpsk#4RbK;W#$R)~d*oRa#v zZ=sFt2WtJBbFZe|`WC)KN+?c!OK~peMw+PB-9ViPz2%u%b7!4I%#~gR<;*0W0WQA- zGPo+zANGymT-ygR-qzId*DGo)Ny~_v=V!rAPmwBHyt-@5&|_Zzpb~n^9*xo zkZNbrY`7d|V%&3_;+|G5>ywmVXj0-dCT9%inC74-T27D7m}5l@J44bt==f36ujkxJ z>^3B&C3^M-Q*+Wz2os!Uw{KTlMPn*+M4@78<`-wJ))1jHlLNz2E90A1F8^iFAfq%x za6c~s4eNhz&cG&fwo-IOcC?&e@b}_jTf5jQ$`JK?Cw|MSL@ZQO)-AFX_*i#zn5J zaz8(I=`O;k|IsgEG&#HT$8q6jF-JKrl9U;iosu%4r=-eTc{0nhDxW_jng`fOUx2TFOZ7^4Uk89<01*taCY7vZ`!Pacyl86fIPjz;_>yB zf4O7%x^w$CfzP!lO)@<$l$K8!3CMI9rm_`a4IkN^@6OtXRJGP68loriv>u}x^!0byyd$|aItF8^$e)g=OSQ_U ztsNE_VO`Y=Se{TMJ}2%8u}?F@k8{peSdv)__x8FsHrF+tx@4Z3oFFb5mEge;1F3>4 zvdW~3Gf_eqK>Q#CfrV{jYA)0_65i^TUpn=#cMUm#D}-x^z%!S|g?as7i}w4THlq_j zeUYiA$HkM%647RThP7=E>d+~^&?%`5z%j(#+dw(2QN2GsP>_7)x9r?*MQ0z$!&1Ek zH}l|m`EmSrrc6MMZDM^)bzay$;-f*g7Qpk?%*9=750Se!+ftpAez_d_<>Z3Oqj0uMMlW-vTVIzxNkD3 zd&YDx2=FAH7*?KkBYT~8y7*&NX8SWy}kc?J5DvB8v%5sEi;{c3@?XF`eNCRbGI<K1{d=je#~j?K*7>Y|I|!YeLs)Rffcrrg+I0yRJwp=My7KWDPaiF5oh zDgML@;+Yxb%<_FwXQFvuwJZ9!nbh$!De^X+Vk;aSS#`Y$!U$LUual#$L00zKRc$@_ z*GG0sVttl;slle^`6e{W1ub1bS!3KY9$38*8VNhn!ke}H6#h#+Y@r|~U9SGRsa{qS zB^7V@>@WT?PdC14ZKj4L^G&rN+=yCQ%)#m5wZORTzs0IEL<ITa$G6;XAk$WHm1^Xf%QqzWKU1&1}tK{ z`$g0fkBZrTT>k>O_)6K~5?qJT-|pd|U{8y#n3lY@Qy$MwM&6p`QMxpJ+r~;7G@8GpQ^Not@(Gy>+)WqNAocJUHFrMn<}pJMLT2;6#ViJ-<|LGKLzG1vKb86n)>YM=F4F z<6kT$`|L!=uQ4~?7K<)c3vD5SWCOr&=xelkxw)Nf0Z#`{po}F}Rz((_c5EDPXSe^b zHYax~uR@;lDO8p6#wep@V8^d{J*fEce8*J|Zy4TjzRA1$jOWeJx)FGKsgmTDuNc5? zUaYK7IZ?$>aV63)ctmyTX0)W2JRCI|HZ>!BaIX+*ps4`E{S@bNi5%&uHHz$I?DI~0 z`$6(ddFtCpp5;fVkz>yDE+NPqk5OTra#?~G4=rSA*mAt@LY~sczyq6 z1h%g=*HG`vb`<%V*@~JY>fMx(A{V*@7)yZl^Otl~c zz<(Q|uvw-1u5NYC=HU@tWyxQ1ZspOi`ayVq0q@AI42QQW^Mr?1}fG(E#8g=mpO-fu!f6Ph60>V2gOiA6& z2kN*!=hr@T8Xi*>@mxj~TYQ^Iv+^euK$EYtTY$FF!$Lk;v|&1o zi#9kTe4#w_(CLRvw|bOT`7RybR9zQ^3M-9aRW_?wa+TGxDrrYWmXCUQgAF)W?eJUe zHk`KXT&>hba=Y3D{^NZ9&cDXMH6aQa*!69hs@H(`G;U1y{JypUJG)6RYU(iC@?vhYuaiRX*^m4(yOrEgm){v-8? z?L~I@ykA@JjOkgg#AbQ_urn*(*BGY@*M9;QQ9VP_11ni;4Rezq6&?3w^eJK8HsMK* z_IZufJs1U^`gdLT#c9QoG0@c%u7vXxO227rwIRIgQa%f-uz{X86g#06j@XcAuv%T! zZ=S20pB6xxxpu-uE?7Kf^EtZIWyyls;H2Yr?f5aixrJW>cf8ivc3_Y*<{tBoS3hsFy+{-VZmMmH;t$^|D|a?{U^wie=#jlImeOI+BdI5QVN3D3TIi$om72xl~-`h`9)8AA~j%G z^02I9C_+uH1odiUEsV<%E$d5nVdV{*0x)$?%c~~!(EgTO__Y00^|+)qWOZBCU0*#1 zY-o_24?@z3(pxE?mLP;y+Al4Cs?Oi3Pjub}PMdF7)pu)s9~-Cwun(sXuY(wSny@`} ztAfGb%x;X>s3tIVs&fW^snr0QLO0D?C&ikz4l903g(Nn3B1MGU{4M0o_^_kio$v(r zFn}~m0`=EvKn{Asx8!X~Y^bOUBQAH^{$gcN^a59e+QYNnWp6Ewm!a*%1j%2D=Y^n! z&qOR#N+`n>us=^SsM~W%iGdwH*HBLzv_uXw?9z4#ddqaL_6c_^BWUPm%~aD+&O!{s z3zj|WRPRbZ*^l14!oRYn5JF2|`eP+MEnCX&ZGn)1SWsNsoH`P1y1dvlsdQ&Jv6K=M z>hgLK3|5exxK&nVssu}@7u!LUoP>J>^GR|ya`n$Id7NXj%Nj<|l)t9gpP%Uy>(7q~ z#$XZr?~b=Q#zFOQ{Y$*ri@z}RfouLE^k&pgG(F+dtXh3WVt*y%Na8xYOUSmZn^3#C z7S6BPdAQvfal7G-=^B3Nado+?$AK~F|FUylACr@^`02&(^hrgQ;js$p#A+An;VD|Oyy`PP9$oI6??L?|3xw0Rt&hJ@z3}FuGtAteP4?Rd?mCH^HJF~QOq>1zR_nz z9;@$YE3vQq1UrlTZK}PktD&W(4y+bi*aMUu8;jZTjSa-c3svyvSc#(-!VfNrF1A~0 zG+)-uR;5R-U|>UGVbR%3uWeQ#R-n7j;ZwLbE2(RxmLBS_~tI2WptJ2;m0 zNN7ahiQRv=Qrr^7jPq$0VpRG~43=A2eb$^akn1el&w{Z{rf1n5O4X>%EEkUd$|%;EIq}zcrp7R!w_xn zaG4q%B;zN+>cJ3DsbdqDD!){TV`A&BC7ZE$GKv8_|FM5;&HHH+6{ykYE-2ORNoA)q z(;C;QYCo~s;+vE~BH)2#;@^f&DY(V}l9N*=Ueeig7NKLqn4d4S6fEyz7EFmeZ+4*8 z)@*msWyQZ`%%h@=TDMrz5X1-jcSJ5okhhwfyRd+lCR(c+DFsHaF3)o1>$4YaycuC- z71DJ~<^P>?x+WpGEF5~v1WMQREL%R(y+t>!F7sjbwAbZF(ZT{-q;~31)aE<%uYa%3 z5>r41Ljt*HHDyv&bwMEGsGef)AC*criynI>IRw6pv;XMoSD0{;P|I-NVgOY->^b2k zY#dh~{b<#@;?keRq-Qv6|EhwVk5ks8VN(G7ezLjMK>-wJHeYU`%*)DK6c=u3otd2a zkNx1!59LP{T)CR7iH{8TMHZ*echC2?yp9E(og(dnJu(OS%BOLsaeW8D&pNR;6lDm?-eQR@drzGNkP4nTMg-+5WpIsGSrauRb2)SO1@xz1h zei53MKc(@pU!)f+L5!Nk+p15?rWH;g4z1Db*YRH0_YtfHx%%D!fk>uehWD_4sP zI7xmNOKE+Xo=2B#>fex=sA$rI*aBQD*&9c^T>ABLB2FQ5ZumL7jmMqXMtc}uc^k%k zKnmSksex-R>nLLhyBmE&ZEgl{axqr(Qd-Zx;hpSt(%e&ns}IiP7zx$Q|GKr z63NW8fwxSzfvNlWU?58VALP^M^Iw6Q=W8h%4Kk{m*pQ~DVYJgq5P7-YeBNtvPk9EPCHS5Y2>!9YRrHOhLFgM=3#$S(X zM@=k_1W#j&D*N8ETnf-%JBGnhVpb*;%8PiEL7_@G2b*3H-jXYi-pI3Pd$RWgp9#nu zYv{XCyJ=1!8MBCX3pZTLdgz+Dz5UnK2XfDARzM*=Y>LMvJKV^%2aotAMt^i5i{o@MQC zS8mastiU__pqyJGKME=0Z{igIOphE%-w%fov;>j_mLE#HjV->`iZ0bwP8#>ZEckJZ zbQ=m|F+FV1z?qsFaZA8_H#I{HJpP@|orIrJW725w@vpkFE?9s}k-Ev``X5)&))k{o zcVp2PKR#v^#j3ABArt||oaf01dRd7c;6EQ3tj{8U*kQm(mSgk zb;JFt1up@v7tL|LVS=MT+4;b!YJ>F-krmNZ#wEhElb#FG%tvU9u-Rj46ABCY#RL=J zRSNgT5hqfep#=r;%qK{-X~>h=E_1Nn^4VQlE~5Z29R9hdWs*EqIwm(pqqcWx49xK{ z*Sjp2h7{q-R-;Nvnt4VIz{aEW2~5-OFV?l2HWx$x{Ytj;D$hcUKwpglmP%&k6eoM} zD))*ylAdfaJ1ve2Fpunqs%)h%V@#(w)X0~fkT}XPE0Fd$_g)H(9*~h`6f*?=+BS># zDWk<^Ii+eW9|Lt1H)i0cueZ1N^~m#0^l%-aFw@ib`5kH*zWxi-IM>-b3Ul=+42&?T zx)~#_lkPltH;?MWOnWj_gwXMI3|`-dKIjDsQ*6ne)H)=OrCs& z!;ASR;k?{6%q5zkl9tZen3(n8?}V?Eh*J&%OwEkCe&+Z@1izYZ z;(1#w&(Z`zD__WR+C|h%bhdoD>tn$>L1b%pGgBO4?QYn$6i3N~m7pP!4rE6NxJN6I zlGS~jKZ}i8Y>SxtPuL8iycCmGABv;2y+6Wlq!gEp(H-)0KV$P$)zJKt-vE}3YY2?n zx2=xn4{+(!8IpDLr@cV$S__81;#JI64-PhrlPYGFsEer}FAfqA%Rht;(~feEy6@PV z(e>sqUdRdvoE+Ebw#wVt=Y zCuh$C_W-Cssnh%I;Na{TD*dln>HPp3x!|#SVMA0WMp$N=2F(d}f7~GX$qt~yQQYJH zN1(c}B9pGllQq8r{ zNpq8PbiW`#CGF(G4e5O^1;Niq8t-xY7}_3}Um%)-9BO~<_?N0vvy6-vi#1_#3TqNI ztC#NG^Zz$F=8hR*5_T+IQDOm?uEu;NyV5#Dq^^mt;>iU1wwocyG$b|Vm#44kk5J+9 zj>en&r3g9eF%%{(5b}y_FDa6^y#b&7YuzkAm*Je>egauKZgxK3K!wM)3xUpup}zUh z;+}o8GTe*0?(Z85+|nTB7eh^mZKewqqY=nZ_eAY}u1B|EmBbcbr912p70wY{>7TBq zQC%I{7#alJPg^K9-?WkRtK@?hL>eaNh+Ab(Ycl~fc1RSNmZA$zdoWnsH%guWGRTCr z18(|}wp5aEm1jqmsk2lho7CG&)U+BkfB(QBb-Ask=EEWS3)^1~LTc#NQb~~mRp4}* ziJKj~*d0lycbnt|Y1$^xcX0fUqTS@P5Y_GthRK4TeEJ%;qi+|*Em-n&_wB{wb#O{X z7g`)F@8ClFE+8u7`j=6qgmfN(dhWiW*Zu)Honi@!ZWrWB481V!%?}a{ zS-(v#&+Q1ICjL3yr&SErG%=!v+&qDoGk+0ge@1(sUGVPR|5q_N=oUuvuF$3uC#Ub$ zjBh<^wGLslTV4r1l^R6TuTp|W6LdA0Wjq%+p(o7Hk1a8QrQrvg$6utmUDWh5XarBg z4Rf^2#$w6%rF%S9^%Y^(^t<)_TO9DA!`Zy0oigrsCyV@n6Ex0SEJ1s~uRt=lBOn&{ zlqT=RM)E&j-|p+X2E0I80oQ=C2L*=r?0&{`YBE}=@*+1^M3{fT!8tZcw7`vNqvA53 zEH9r76>?#7>?j}NH7dxU;oul8FZ}l0|5Yi(|5hb2x46+op!${4FZI=tQ8VI?4iTutPLyH)CiAO7Kll6d-O0cJbilCD(dPZ@(qJoeYb)~# zRKa~RpdxLi{ngEhaS&I$U1>4|1VC(*5rJZIS%F&}kx2W#Gf&MU?;4iPE`x69BWR#3c$A#q>Bo^56QhXO^xgP*mx?s*;gUKG_%xaL35mwb!Hq6;7A zBhVXbH^+!4civ}DL=VVH7CmFj@cLd|8KEB1kZl))uW0a{wgc_u*Mi|#I|Mv3yDJV+ z|q*=fBwleQKGK}^5Qq^ zC@g-^O^FhtF(6o?zZ9SY;ap`)(O7Q6+;2i1PXYdVMxjxaJR~mBov*e;3It7Cz;Qoq zKnd^BJ26ilPy;q2{`lip0lI*7BK+GGx(OBgwMR_7QMk-innH`sSH zIwJT`r?mZbk{moAM@vtl1#Rf{2To9NcuQc3bCeJ*gru40=~&%Xe4CWB?5^eSW1x7% zZqS`d3!)mGo~w5tU}|rBdQ4(G7}p^POim6=OD;DOINg*@24*%&ghQz zzjY4!NF8)qX&fb+r3xDqvP0WhPOd!gXOUE7z=|!c)<& z4`Y{{eN7R0K8Y>H<4sE9~_z~<$7_#Wp{KKdkW@k}DucPZOIw-_#l(MAi-gvS@}ojQ`9aT>?v`8Ju z(+$z4HaWh%2OrHNXz4DMo9fWz=!YeneJm_4wmbIKHz>w#sBIbyBl$rA2(j)SAT@K3 zKl%8JC69Rz3)04WdD@2IlVSYgMmFEPXVwCw%=JdBRfck|_zhG^ zlO$y794$IrXT*cHG;{jrg=S2dftFN^mqob+&u;OR6Y@&P>Am-S3jdK2(-Ut+0vzr} z@p*Q-$?|x6-6VYJQlh0dvyq!0bafuR?vj6R`P*`wZnDBrQEc^m3jYbzBaJz^TQTbG zVSCgxDfH2$JTK45IFF68*00>NS||WDy;eja+?aN79b&7lkJ=?>WJ1F00qlL)zDPCD zKV&Dr8dcx3^9dkXS$e?DVX!3_Vh>!rs-D}iq1Mm2q5RC}JH|6_yxw8QlYjbA_q+nX zVNc6k_4~{RzfQyqG4z;M5ctbAkd8^EtScJ*!YA}Dq z|F~2l|5C5Q>xIjnd6MC;9eh~!;u>A9c4G>+FJG-ay>d)tQOx$u*=^?1*UU|kwXSi} zAjzjr5hh(vjTEFj`OSnHN-RGWJb}Lfb_o8&m-gZDzmL-WKP02=!PB5DfF$jP35Px#O&b? zy@1s=ZHO%s3kSG0aDrs?e;L1eW>4Qb?aeU_ z_;4RqS&Hc`2d;ZU)5x>U*QU&B>Zm!Pw$6p?ZTr-#c<6qOi*w7H341B|yGyw{3 zMS>L}?$rv}kQA;Qb9`E^wm0inJ-qw=73=fkWT?wJ@l4ZQg-+2o zKzaq5fUgkJHVA+qG&k;eH+C88|7xa#^%Wz*JmCZVmd9tV=MoU3wDMv3mD@s5*}Cum zde7*5gv3)yHwkGo%b+ETV+0|fgdm_)2G8r*R#G<?f zVoiPffvd%|zD=8*7a4oy^e9)jLtx=iUEZ*+$G$J_`dqcrD$TdlWfQ66`t@9CrOt)M z>F;C+zBw)H`r>nlg9|H#rV{4gS^FA)BXy>%1?;hdmh)tzuCPozCdYp} z+U%4D`MP@91&2%yD7z|c_vJpQ!HN<1h6AIAhx(W9fR1?7_zbQ*t=6HZ|Oqd2nNU~l+-E2zDw*3i4hJXUC4&_ zVUG-;T~(hU#K78(AdZ~F7NWdISK&rtF|9BxIenhiT1mwzYsG;X`8WG{k3rL=2PrS= zNjcgsFooYm@K1$B6fWl;5+A}DYRztPd967LJ$B&1v}*`;A!n_a0CB0nnh`QYcl1*^ zS~JgBV?ccb@YW2gUwTQbvDS=V*KSEizb>dc>5D2w-`jVC?&_E_e7bDdkrLN^zp~zv z?kBJ4v6Pe`?Md~LAL~JLKcj|7tHVm?lC-`iRn<9ua;2*gpd6WM^$I~vDME=pG1=Mp z)_>R+Fwi=IfTRh(S}yU>YEgdP&{?GC;6=CeWdhPB#>-P7IxaGCOt zZjkv@3FVg44p76C68~Li!bYQhm34`wPt_4L<$Y-|9wfTZIN5#y^0_ha8{hX8aU4Ia zJv6WKH7Lkf2{gbWFf_L+x%{H2Fuvz2aQHN?ZD{<~`7l7hsXBE=anVqBQZMLisx*lw zaQ~o?LkcEPIsU=1Ud7`C2omHCH;nLC7t7QXACuxrr?0UxTgE)*uV$gwF1;5wcc+5W zh~?o#tFO-vBzg!Y zzeP1itY$$atQPzLttkmq$4z@mrM6w9%FFziDV7`i8Nh+P%GS`qgWxr>(Un6(T!IXa zUX>%SC`{`u@raOW-Qf;W-oSpNKGltgabV?DEO#F<;RsGnZ~P&(Cgdo9(O^j1tFQcJ zRR&;VZ6429sL6(&Jv>T5ZzbJAOa{AnJA$CJQ+vfaoW~?qY~r~a=Fxm$s4d+`V7)#F zYo*%nCy$(wmwmhvBIHDVxXHc$qqw;K1L10}IrEM+haox=neY|?nLyUP)Bi)%R|Uis zHpvEecMmeSyAufR?jGFToj`Dc+u*K)JHg!{xVyWD0haxD_ui-TI%j73`?{;DtBy6d z<&w@Lw^;<1Pos<#{tyPZ7hmH`{Ul3&#`6>B{^m(Hslgzf+a`0JcD*7$_T)ZUHI~fX z0d#0pTt@n9Hs!%helQro18&Y)V>nYC2Zzi zh2=iRiKn@y`E8PuDcCsJmIRyo4#bCTyK8hGNFnipAeGu=+RT`?ILqGO8sRo-lNDCN z^7&G#e)ncSpo_RVV5X4ccKm1=HC|A*c{ZU@2mvYj?o@ZITc;Wfw%ybH^C{0t@y zNxi}=^xHAnb~*AD8c**n${mC9=r*%1AsB?cz^)*N!L0RKV}+YKa#bDL@>K!U!V9N2Kp^M_Wrh3FN2y( zQ;^9_rGH9xie_wCB{MGWsQE@I#uTm$1HXK7xwijm7hQ>j$0)**$qEX$tf8TH?d%VT z(+qrXYYEOKTK{aVR{|mJ^u7zS&xAo2_7r-obWn6FXSa4jqX#!@pW><##6K7fTqXv( z(ulQsRTplSsiBey)CoDFe$dvzp)pEzw*lkuz_ny*opFz2Z8h856N*i}FU|Ek4 z1`U@O5IW@vg}|&ZX}*1|okE*?ve_j+60RR?Tcbk?o%!N|g$9e;^?jdqR>NMM$`?LB z3g_iCa|_~wFq-8|a`t+bjr8Sb$!z|6?D6Bb7TG~dr3&AKk>xivzU4h^Fu;#=X>`B8 zVFvW8%v&{sLA0fElilwz=+DxX*`iN=r)y2$=RCzYxjn(C080-<_|j zf%eCi`^`Hy{fGkv%hjoJCql+M6)l5cfQ3H`dN>^gv6-86GQq56sWZH(U({6{oG4&^#=wbeyDTttK<~1CtTRO#2YtvS)h=<7Ot>r<#_qvAU z)E&c?rN85oJ06RZ`?^A0yLLtsa8##a>hT-w2aq)!O8I}4LxOh*2&LVh5XSb9hca$A@27EBphi?|oLXMJ_h6Vwh&KIX+>!!L-+F7nG%NdKTenD-v)|L(A3(Q#~XO>Gdt?OS;rWJ&LhY8Q-@54JM(wA~ij?v@!hh7% zDI`V+RHNYAD^$c!HnoQ%)=AFp&>NGis~3;KMxn}j@~EF&{_dX399@=%Nz=j6!TAJ- zTU`{`(Yds~}J3`XI@{s)H3f`>k!>hd#}(xWMj0?-4$nYxgUk-yxhf%{{3;< zef|x5iw-{Rm1gGorSR(_cmgyjHWqSiCokxQop+n7)OSUjHhj8njb2tu1JNXdD=!6v z^XLgD`pb8^80wnq6nQhC<80!Z$!Ykz{HAvA8d{4sKA!z!vps<1V-5%9 zHPV3-f5Np0M~_=EtpE04*d(AP7RN66bjj@JKmnZ=pLn|x5Ff}WJ;R-WbBOb<;6h!C z-DC5f!mc;xtw_a}d5%YSqW$$Zd=dy< zr^ccw&V?jm`asV}C+VQP(`x3qR~0mW;m%)I)Cx_4CVhlx1-2ZY=*IqNTB93aBvsWX zU^*C0{#ZZvu(6+Mx3W1xhnUKqKM#d9OMkR${*u7B2BK#iWc`(c&6mt*ZqX7aYUHJ9dzIQXU z&foE^r})+BR&6&|FCE`!lB_2+R>odTDRwW6)68S$e-$0H0%FO&e%wfo+E~yicP8D(A&Oi#z`Injo~2nTAHzu`Z8q&Z^2R!jknh)Wr}n>I5uAV4Dw}YYseG zY2*YecX4ECl;gA2*i!jMXMh+JBCLND3R(vE1>26kb^G>D70gq0nd=!2rbTV1eGk9{ zYpf2IXy-fKd|Md9zQb|1n(d^JB_TUTR^vLRUFzQyF~Kjw(0*P5Ci%h2WlAel;-ZnC zDj(hrjH;TZoK-%6hR9HG2yKZ|y^hgMMJ#?%#sV#dfPTElQ@Y)9zK1!7Mt9r~&ymma zD)#k2fX>)Z1H8BLw~YO#%hB+qL!jArUs(biYr<^K{Sug1xPwtf>taiLUPcj4SLSj1 zlLLP*Ri{^Rn8p`rEaCV)29rah2m76ZZGmvS+M16+BzfY%`yS8jdO-%#hLztm$G1cM z82=h{Xp1Rsg2pB4p}0Gw5tpJrn^E*f7+#eAofS7_pYX{`&(`8HZbezm1geoZw-|rm zE)qYr=$FXl5WU_M1e0ZHAjMQ&kzL-b7(d)U*gMo45VR1&+{%{-uzg10Y^WKdD``{w zNy-<^bi%v7biJm}0f@2qj;iYbE%-npg(MJ~J;AGV(IzEJB@mvYkJ0JNsFO2MO07%{Z&-8TsBHeSS(qHAd;&^#J=t#D9OK9DALzL+xK25k=6+@aj>DHESm*ZEU*YphckYXoOK8N zr;GeunjqllnwBQnMt2|%*mv;%?k$DJ=$A`&LHCS+O@H;$lZkc3r6a?D#-mtpr_M*K zj=taEQ$WD`g2<`<4cY$IUCnza2;}s3wcM3pM%z5Uv1#LI-+=I=Wivsr(V=0jhRfOW zXtj}Lx&aC!Z6*pIy9`U7es(!!P$IZP0Y(%SEAr!+W|jcY4B6m zrT#IFp{E)Uz|A4V#U&y{=^(JnDz~yq{EhR5#T*Z5GNY)DyDi4eIY&RVl+HQR-nIPR z%Ok+qCoa|v4<^bTrsgjylJ6?=FG^9nPo8)Xb0N>+eMbaawQVHHW? zz`v-%x7@mIIgi}tTm?J=7dNCStS#U=m<6FwPC@sjM_L! zsF)5k`{E5t)r&!x(4%(Z_-`nF!1zGvv%GuJ@l7Gp%!FWyow3;mXUbi>zqURFy zOqSu2kMa({%XcOK@7*Bm{0Y{WuT`6?eN5I|VQ;3XXLD4PZX|&dITFGY1JLOA^XTNr zNh5I3X`*OQxYBB(<3r7_+bh#Y>Snz>g*;#JQ5aiZgAjtrvPZk~bj$C!?ylhV-ejll zvh{c*;E}%TW@aOK`#+dAsX3~o+R^TM`Vzi}%fwL#jKYY#^e@$sNtWd+T?FIjy z9v#I;g|pUX%XH>vj?}56z=fzf=775K6CWnU^^S{-RH6{S9uLu?vjb`or_r+F!AtFl z_GxSOs?IKZ{r=hfGmLJIP+?ozEo7YSLl%q|L@YBK`8P1w{;J)~?k|0bOC&topJ_$$ zc$7f-xgG5WeU>A+9{Ht1YFub-`+MRo7lpZCCnSANRYl}WTghvIAX(5~*Sw#+Av9-Ll0oTt;;7R?V`GTO4VR`g8}a;EoItX-a22fis%qppxzC1F#cf4r~cJB(NxX0%oWPb0rm+s92(IPQb>dmCJ+_( zvj=)@i%FQkl@&fp2O_RJ4W?^=)LdN^VOf_b+wU^!ktj)XafUh=)z(?$@RAbq*h|!G z_KUZ=?2~D-Ss9-RuATZ4$9qx61mq%!c`_@~@U{sljh0loz|dv}Zouha%HQ<7mFjfz zGve&k~MU6o??ma5{k0i90}Qj&WM%MGL@vzX#hrM*^wbV)1-T+-zt8YRlh<;!WS3! zc1+6pS&esBXq0Hv87#&oV%mi>Zyxg%eTB0Xs#VlCGXvNkz@uuCc1hA{eCk5)zbCSW z6kDNkL$*XoZZgKS+M$>4+my}p#rp=Ar7^eN!B2~6Mj`$^-Cj@c27dOW6N(CZuR!>) zu?#;ZkbK}Z51f$&SYu)!aZo-#u~aJT3)@(0?Mjffal2-5ut?F0HljA(wbuwn6%k`SSUxgPW;YVMfcB6`)vzVGz%ImSu@*7ZTeM^MLXKD}NA{-+cI?3$ zKkkIZfI4H0>ksm81!*jz5LQuiQdnZ3HnR#K1NS(}j4gLgD!YjyjR(A9Ng;x=C3!YZ zH}?#WsMR0ols0oakmQwSgnlUY1~p9FSWPZ0 z@>x6Q?-tf)&~gD9<87+cn4W9I4QgtdZ=i)L3$DsHk5%*MOVjs%&Rt#OIZur5LPu41 zae-IZA32`j!3OSb_kYF@eGwnK!flC6U3>wqjlRqFZcb}?DPjkgFw37&Bvc12x_i>U z93tN}HGldOOZHaLKFR89F!~PMy2rjC5z~`)tOj_-vgwE?iGO4~dj_MsTbyRBb3?6g z>riHL*rg4=4R@IwE3+xhy2H82gBe;3fu0Kfvin+KGp(aY8NmK2D}uI+LY>!ZRCvl_ zHO1AohK#gf6T`bf{`N!tt`VdVTcd#`i0l!QqG(WKG5NmHpj;9(_Ep35rT$hHH>IA!z^tIbLe1%yA@2wKD;sB#Gwm!VA~>hQdO_OP6d7Ax2rick zQZ7Qr+=wW634&ei?Yvb!DWqFTyNiGfLhe_F28agb3E;ZQ5uhj9dZ=!bn#lc}mR-_x z+aNRYPkr;5?w#Z>Hqn~(fu-xc_woAZFDx`EvY1%qruwqnjF+d!SR&OsxlApzp&NmN z_1Z`kMd6$YS6=p0q^MTncd=b1^8~I!8yMO02R{9&NrkW4%n1%!dfB=ipQ}x*D!R-E zhzIiIsPx762sGcV#Cf$UOeLyhP*dOJ%h_r+71UZe5Ia$#$C=0ol4Z@B{{h|=BnyD| zL^3}q_fyaE#f*22>UX*Ns;UAddXfp71kq+EkCKelz4 z-ya5{$n*TWS77!beNN!M&4PZr*vc2-I*W7nQ1!5i#~ha!9tX3W z!WX^pdyF6n0E`En+7t^Lxr8~eKT(We&cc|dd<)n1r=|lU=!`eNp&3*JM9FJERYAlfRCFdJ&_fNf<6B@PFl>R#;siTn6sEu2Hbfs_fo%r@FEB$&{|+lOLv8*ZGx8SC``eyg zs8N*>*6C#Jcl%>lADTYO7DS)S-#ZCR@N zU=-cKpm*!4M2QbyPJ#r<*4cn>B0GPHY_CK`W1yrh>aK8@=s&-$gF25lew?` zc*W>F#GaJg#1MM+#6CC)(9HK=z(QTK=Me#Dd`x4DJB`<{3)^%bP(pU;fURNLcs~^IJVGX%e@Qa~X zrx`VwQp#MLJk{q!wtaTt+3Ms}sS1an=`zSzye)Yfsot`3!Nvde&u=L~Cx}`^-%*mt z!Y(!u4njDO;C6)FCTV_5xDQjP50?T^ZfI?gRbomUTqxV)qsGfLx#l0l@B;m!m?@4~ zGx8L=5_TXmF*%F{S)@_IwkthTor-)CXVbUn(U|1j-4VC+nkXCL z&n){y=^(;ys}-E>v5Fn5(0F8*q$HQbJ6w5~aL^m1VC&C=BuJ+U6M{Ev3JWH&C{C@y zgH>8qhw(H_?b`ug;c|xjZzx%atTJ3T;HWJ*=<6%|U0}6XI>w{g0lRIWNw3T|#td== z>%)K8SpXB&zpfMrv^9rOT|TeIXXrg~Z9$9kbwAfGiOI-Xo|it!wakTp4G#$WZ0}_l zdAEPhmV|=R$-z`zwzsj_&^Lr0x0UF%cR++s|N&2X(p+$L_h6fksGPy5F^_i{N1R~^_s@kA} ze5MDbt!`g$#f-bT#w`%f!cuFb5YDWno|i-9!%vbTt2Hp^v#~^Cea;-UwGI;?FVUPD zWY9I08_0ELp?6kgyI5eAn;UMRsximzsjx*<#*bvj*HypbAAyd^i zc9ZAbIf~+F7U?qoq!Yu_%t=_)MpGb;v7TX)ah)98yw0s|v~9vgg0%ZegrCeX(NAHX z55L5!0Kk-2W*}Fp>?6z0#c@OtfZ^F(AgeCHSG~h0Q2!3ZE<(sL;q%PMw?RDl*S!fb zc$oBeH`Dh5eib=MTcRz|*o#(|@q^`J<|Y3sc}Eo6qF4Ga)ot#-Y5a0e)|?3EwyWMk zCn9LXC$f?6e=8N-KO?*^D1L+8s{}jY&L);Z>>d|U^S(R%CYd|~x#eg;`-Ry0DqVwA zgsX0WTptx9ug?Qmt~kwfzcP}BXgHUYqHJ)Fa&s980_^%Whb?-UNrHsScL7`@Xb-MX z`q)W>jF%g29NSyIPnVnRFwcYGLio+Ym;31!lsK_NkPr#E1!C&#=N=6JhkPIldSTce z3}VsHsI8qjjFDHKW|#IS4ZQy|OS-twxpVo{E*K?vs7n3ZG#s$T5^Us(o`jWNXzg+y zi}2yHV1xPtJ;}%!_9;mx5luR0A9)`FTrcgO&g9va$qNZPJviUjtJv#pxTSw()wp0Mi(tsm@`?J4aU=K2cxV^B0X8VB8GG}#~cUh zlVDKaO?T^Ko?QuVUJ8ZjuVD1CSX|}xpYhaa>k|AcS4W1_ypZq)%UCh>k$(PJ+wgaP zM(o+F`n%lOihTn^Lru;2-t?cl)2J?^?%@6%Y58d4?MgWDuEyP`(L!5*C0^@_FDY=E zsQ=)|Ym?sK@Zn%-XZI7)?9Z_E8WeBRQpCI*eA5>kmLnDPc~a!WU)|z=K3w4WB_P#m z*;5Sz16b1DkMfI4T}0_H#8Kj$)0qTU-o>Ik8{itMjgA_BOEor4qafj=(#Ls+p;v88 zhN-g16&~)Y)P93JtKA7&kl;d&s+?kBx|5~~s-%xtvGC0HjgLB`&1hUVxa#)6xSs0b|27NsZPqkeX7R~(g5()9uUm>~BspXKew??5( zo8p}-xunx$FbGy0NiZ=OG&yH#jdFe*yQY-iocTR%-*^r4nQ1#U}NSYf6Kh@J3syW(z!fj zxw+;UR`BUsh1+J?u$0uBZdoDc|K;VLjMC{NrIG&VtyI|-3?z_jeb$1`omCn+vrV>z zTl>|~MUtu$rwYxT0c%oc;i67Q2bgE<#m2*+d7>sL?6`OoXN~bh2%x*+jrHvH?~;U5 zMn-m9S#CxSr01c9fdn(K8I9_tQW;`?S1h_MDj*)0Oj>0`XoO!!YVZ7V6!A;E?2C`2 zfs;6vTS!u>KhQ|jy@`sJ#FEZ}9qP6g880k_k0(8yCo`G;#|i!TjxlpgwUdn};ZaFH zTaR_=;wiTbWr1N8Bz?!jlx9bFchkr2_QC9>bN7br(#S-Mf&JdS8z-*Y>&VjRiK4`A zwJg@~5A)jag3G}wS?4uV`X%~>tWUx#)2*_A{{52_^`|Egz~ai|9XZRhi(eN-llUbO zuiMzvaE>VvE*p01VOhF%8vL|(E)Wx6sQJ6M#j{-i|0Vh@?aiZG!xr+Qus33``@b*B zs>d_#;AD;$Pu{eLzdEI#uG7*}9g7)-{?lL9-(wYYaMFT@vxtjXvEB=z3J~!ylq9g|@7*G|NZ43Jm zwQ;?>PRwf?deGcRUr&zQ1o=LgfbHvZ>lQ{?JLR5LgcS-W^JeW}cz1=6VeU-Lz5;=E z$CB{gGayAqz0k^^ola3IAEKLq=-IgsW!fMo$wp^QG^S4RHV`KfeteH8S`+_}CmuW& zkk|_c7LWqWwRYuZ0{3CG2o4MKn)*())lcQ<&CZv{6Ljd?Hr$r+=d|2-H=S%TE2$Tk z63^Z0lXWw5bF*?_^+B>HY{C)6<|K)WrDz2&#B__2qpEFHFItYWd3Mg$CO(fRd&9a< z)_yT;GXq)e4q6f}3J^Nvt!$|8n_d3C_nQVYm;0eusgmu)+P$Dz9OnBTW#2`xEi*Lk zSZV{T1c=(8iUUE*QcB5+lhj4nR5FJ(EFADWzBxcY=2u_wlz>@9%6b*KYB)J=VL(TB z!liLiA!tJYRr)^HbZlhdcTrn~y8{0`+L2u|G;yx38EsTt1~rNJWEdMY$5^Bg%Vru1 zp9h>%r1!!bGngDKl#}@tS~w{XCirAzIR3_0=RahCq01QoSA>odYRYY?&@x| zv=zGe+m;&LOi0i3)Vi5e(df;uxQ9vIe7{ED=YPi!0fA`5zeFMnh!`>E1WOU4ML^>8 zH@I;Kt@_XGq4FydLV%Rg!DL)X<|9nH&a>5?E0B-+ag#vLYSEotgytZ)XzwQ;FK@1N zVv7nDEPWC5hIrJZlT2%Rd1|MxxCA{`tO}S1AMocGrs_u)e0`4=E%ak)DFkt;g+`@xdSbHvE|}=?l@CFXUOqcEp7AlN6w^i5+RO5&f4X@uFK+$-IZRu-at?fPQH z&Zn7h%Z}K7_Rk-@i;U#f<;8#-2Fil=QD;4-Zo%Xqoz}<7Cz<-iNfRX!h(Az7?Y@uO zt_&oO@0xawo~%${P?t!r_DAft>7y}3O{#vHpbmJu|9qp0bUX%IR>2AZy!gYou+d7~ z6W0nXu~DzzccVP=*=aR!DEA)MhHkdZDUzg9f_T25WzHQR0O%YZX?A^eImcZzuu37P26mq&O(!f z#Tx_FBe}C|17Ps!1fHfyWCBVkG*OM{eY3F$btut>B*SLK|2z{HADBoPXFu5{uPcsl zyDfTWCGsv(cR%r!O(sjhPrME)e#%%J(*tQpmEF>7RRCJKw~)dZYTQGPyr=BN!q^Zt zpWk?texmu{?f8g_VqtMOCHj8etE*?LS9Cx1DV#f*gDgs-Su!X(z7wa3#vXn7jP^f4&=edKMiMm`4jM8@?Y}7u zU_jXcSAN*R?s9&qs(C^IDw!0|4=Q}D5%Ht^xOW(HAse@&cHEg0;+SR#1HJmlP})oO z9=#POwW=x>FURn(P^&m_PLT4rZKlw117OiFlsz2g>5ozOSi^b!`w`fvKO|F#wHxL8 zW+RiKJJ=E=%MmU1i4S?dV5JEQd%Y}-J8lsNcCBsn-egz-=`+1C3PdpvDH>=FjgUJu zY=imb+DtIS;Ie)sVdX zfC)A7*{xza=J5U=86BBoM4fkW}ced5z8~iI2r6>ICj5$ zVN8Q%iK^wmS(uubmRAY6{~YXg&w+?+u9GMH#bgX?Br(cSX(vuz$)MI+PYq0; z(Xyp7g+;bWlpMUx#MaujM~}%O=3=oPx&EonN?>k`clA6gY~oavjRdSxrEIXbwyN*E za_=0jn7SAP^0=5GJ)|60o2zzv@e1EqSL2HFyj+^0g@mmRL`rUFK0|gnvnK|s5d5VBSzUu+GMDLSCuikg~XsBUE^OBfiMS5F%t3cXd|47?C z{OjAKNQAIPYAo#p;9N#epOGqze9fP}Zpy;LZ=`tcn<<`fpF(KF)TYC`XMAsbgb!g{ zk3E}3lWF~=G2B5(DXF$ZH`Uyb zi%_oacR$m=j;Ct~zBPt4vLE^Lva#}NuC9IuGXxu_d|I^9adW_^;au;D;;_agx3a>; z!95J7Q-_m-ebZj>L`)^m#w!U>)h^wdTh;_NB=H8cOjSxC&jgXcF2+1+(sf;^SrfaA z^rgjRR;0=F&Em<%z=lA* zTp^kLYuaw_g7Uvvvi8-i4=?h!E+0K zDp7%eN}bcZ-o0&|&gfusibyZz+cF#&BuLA$WxlY0fo%jb#9%*uJo9TbZ~q=|KjLrO znC2-*0uPIt9b1(xdMU82Yt~R7y8ovC)3;hQdD>h_XNoLepv_%Q&oWzVBBkH6SNR$x`}f`Y5wj?}kS>Be2cf&Gh$&sKSRm8aJRn@qUZqi*+%h$m z*+1aMFE4N1LM*9oy1*Dm^C`U2TVVzfE)3Z6KMM%SA!^+rWig^N-O#Q72??a*B79?& za-5N-Rq^WD_d5FSIP7M*zAjeJ3V2?Z4%xfzt7Zf= zbgyk}*o64mZa10o_m{~z&(R-2C4Ey9grR_%LD(-@j)t3nG2FCy_!7fbpki9*N3p@U z)V#KKVZ(tF`Al52RMeOZh3F2^jhTjx!?;bO&3lR_oxtd&u!$)|yJJ)ntdKkpbKkjf z8H(6%2pX20-TzdQ9e$-_jt!t~orvsp;rBw9!*>EL zoc&$9&~2EsgTJlDk!vz7{yhr87u>Tw7ErlV-BKB*N`XnPQE8kkvo6KqGC$N%h-u)K z6HARW>L#4fXF|@rF{nsj4=`dpqRaW@-dRN%bqm!oZZ6DNfrx|qCXla4OHOU3)LD@O zs^pI!#Sds9fwSbk&__KZRA~xi3Y>D&fckXC8UX$j8o=h(>^tgENv@q&HuLVM6`P|m z*M9`l4Xe{j@5bQQoO1YoA)5ivVAO-$tU$l%h>`g9KSWNxPDaoUFzWS(r$3nZ01@r% zEwnjpupsC9%2a6zu_AFD<>^((8w|3xJYsLJ?~b;2W)9H-MN?^&kve(Snh9T@mn2Dr zka{52gGF-vqOy6zqm%$St@4-Byj~usFAX$G7Nt4X^Lk4|;jXUpT_$NGC5l8tq;ngI z_{CqDDt{#0prv4iyUmg?x z8m*zg10Xl3-Ul!0woYzV3<~N2sWO8Sni>$o*_O>jYnrbAOBy~N20R6`?oj>C=S_86;@AtoJa;X-wQ#*Smk`lz&;Rp@q zlM@+P98$MF=!#+EMnv3`*&su_D z_lc#MK|&Yt%;dfuEb!~d_ErLhi$MF$LDyP~bN*xsPVKaZ=aJRZ;Lf87XcodIVOxU} z!Un6d(4rW1u@a9#=a4;Lnt22ztV?(XpzK!K0Tn}0`|t|U5N3u8T%hSKBaFjdqvVg4 zXoOzZ#@dwYdimb>cexzw*RL`fp{daYoFCW5+k@P3D_y+gT=hP`_G-;smVr>#@Bt>W zuLTXu4fdT=%5O?y+)`5i$}?+Er=y*wbYeTgPny$WM|s@3xIA~faBOO6&U~w$(rj6* zQ3+s|2p;blfUj$_@(cdsZo^h;IZPoeQ%4<05$CM-6(3LHs7)IYoP|29qns(JA^rP8 zCGrzGE5+=UrcQ;n{jo7O%R9M&m#mWF^1@z64^!m|B+QNy=Kx|&wXc(cSK?tIlbsAJ zeyAqiX6O4{xN)bV@0HpK>WtzN{tYb79JbUcyXHV)&WyuNTFG1E5$1Nd`5%s6N1??i zocTj&tpjxNwaE5!VJd9|#5vi080x6s4T}p^D=(7mLyIpqAX*$UUnKOPkDdOB?T7MP z<_Ko_|MPS9v2YIWt7pL8%r?paBfP&JLbw?53U$Za)mB4yDhSws%c^knwzUy&AhqTv^VS9)eGz+xC)AMrCq( zLOKG7mA>?I5eME;73O~Kyl;1+O8EnpChEtSHr8lA@^u%_Gu|+R5JQ~WSx{@XZBjOJ zH=!L*YYjm|Pxt+P?~tHvgWPW)<%$Vi6N?0f$?k6!!>6n4L#S~Cfj_4+Awvo+_Xi07 z^@n!q2OCM$|9FBiiwNXP(3sOvf{u_Hsh5Jx-rx9fE2fIj|8!;R&y=D+*$pZC=xsKj zkMHXFCsej=@b6J9v*LNV5>v?VEXB2b*9)Tg*oIH?&kW=QR92HXz%BG9l5tevy1jf z)b%3~GN7)-edbf8^%*o9X@_0bkjRkOaPc^+Y0H48B-MFdAZI912TgGA)oWFa7$)l) zKCOs4l9~^_XOpikeb8fzZ44ORWIe;D5noT&5Aq)~NSh4mYhT0}4)SovbrZzL&N$X) z9r2#RP+i=0-gQe%Xc6em;gxVHx}i8l^UB_@7jMm!4jzUGLTE?V!Ni;Qjtqt@<^Xyj z=fLcR`hAXa54YP7pUqr3x9@{uR!FD0{7;I8K^x%=2q0$U{5>Uk?(~`4E(?M(_8U^H z>CX_LisC73LlQMdm`+10Cw171DcbJ_V=Lt!D3oTg*!^LwT=!&;FQ4l+>VK3c(*WwR zHOI4}tm*Jl>^D@3&{J3+tLNKWy7_Yze`PNCu&Iq`R4>PjJvcF=M${yIDpybc>R!ke z8d!Urn$62&n)OPvB}G4r?d_$$H~dF7qhmkA`2NPk!!h^AQ!}UIrkA{D9|bKZd3xyUb>u6W!&bZZ*--53lO#>hPOGy& zC%IPdSw?v|AG?H)@LTe-pNWTNebvgGr-!$L;qEx5o1wwi;A5_-a_-zFag&2V6gt`x zvke@9gJXwf=_^|u_SB}lB=H^@iBGG`+H)0tUG>$8g9%yTRqQVYm{)r^lm~j)DO&2# zz*ik$@e%B9f|=e>GkxT`hleTV2`kR_W@8)Ad64rMer|D3ogFcc(ckNiHu;BloDUc9=N=RVOBGDL}S=Z{g~eR0`~t7S3?!xz(ZRO}h~J zs~tAH+_Oe*aizJE<86)bGBFVjJJ+%%(Oyn(H`JD4+~}u5nfx5Q>{nnyAox|YI@gX? zB)*Kx@2lI(J{3J-!tsq1<_FgusE0)e-BVr}4>?LJWsX!qC=I>uDO2y6I~BRr%k|%@)`8oT1~#!wu0K+vSBS zFfB^*E<>9g1HQDsPBOp!yI~#Z$;WraE2=MBI2U^YlCR&8Y#9Y#V+vwW$>3uEGP-S*bIg+z~Av(HMVmZi66U?(5%ovQ)F`4OZPCo5@H%hqweV) zNaKP#S==;fnotu>U5{YgSsCUW>;yCYw61UiFY-SvU!6TR0AXhJ!ztKShX=AXGc`?* zufFMrOP~*r&W{QWdo9;u$;jjk8Ps-Vn+4r!o5Ex|Y5Jxjr`HV!a3-9PVX6Z){xEAI z<97v&3sxbNk+Sgv+c0)-zJys-^#%4MZ#7PmxTHFe$nUrzss%wx@EOf}^?r1UAA}Y0 zt=FIgNm}&hgx=fzY#YkeoAC8soytTUi1ordE3}9b+FPu*KwYw8>v0o&`S9e?zSd+a zLDhP5GbmPv5FJ?kscO@?KwD)@e0y1q*IUb_fA_VJeLVRwA@BiC6A1**O63OJ(!IZ3 z7ov%HefZmv1^grv9w426WOKa#mlW@OPq1eB`O5@4Clkl?3%@+8xi1crjq8wAQi=@2 z-oM{ddcUpEkoiXic0cdCp1)p)qSelp3BT`0E4_@w3yXFe`8}RYvVh_-w_`9(qoXIG z%$L}O|839Gb_WElz1H2-)eSRxjkmm+l@|CpNlLo+l`8IGgLYQRt({deyl;_xYiHw? zQld~Dp7AU#MOVHlb_Trf6FB5VmRMS7S>W}ALT-#VxSrRI%WQDCQrI(jPmMD&N$m5A zOrMTb@N3g(g(ldCH>aq`SBp)cDh4;#b#iBbW#PSiEM%er+my9-$5G=Pk_wsIFlGVb ziJ76}XNs~IEggfw$(2PCO)*7{7I+r9BE!5qt+3vgEB6zBT}K7eLX1+E3{A_8DRcn-5dphXa@|isb~o`oulS%typ=xtd_vEV)}i?q^zdd z5>ga#srse>kK^X&HV?M^j=`mPOcHc(@g2sa?}4YnnAZ0M{oqBmV)d$DMSRYx!%l<0 zM%+@h5o~>T^Vd)ELnpbWj_AxI59(xdxp%r#s}~KWy*#5ds?C111JivbL{6VswEA|V znMSAYe~zW6jTl;UW1o|Z2;Ax4FSqi{WoKpd9Z8vPbEv89YEq~EA?DZW*5|~3fZogZ z88VlbCE~CA#y4&xGTWb?Om&UWb)zSCA1ZF;t@%~U+m!fmK=~+jnED^1>t{%UV3DQs z-gDQ`66u!qHht?=C7w|?uUFT`N(~PEf&3pt=&AkPUTJzvn(ET*!o4oMH%U0`Lw8=V zZ2t<0TL+~u+0n5@PdY;VR;-n^`8is9*YheC=mjd_+wZ|DOz(Q0g4lZRBX_nCb-7wuV5u!I3pJPx@hcBw2ARpfe4Ov>EmE47a8mj=? z8zDiuemV_NVl=!}8+N~h(s@>9s6*lpZn5OB+Jjir*6GF7dG~T4;H-yz93j#)jnBSy z?Y!C6o>4B7a?fn)>>(5+GdgyL=SmxCgxBDPyR<`1iZy9;J`nZ`UsZ54EwoAKCIlKp+=EzwCRCvGuj7)Y1IaD*r} zKt&RsLrIkuOBY&oHb}qSqEhpyyRjq%+Uf-Rw6wsz!xY_h6pK@ty!`JfJXw@b<>>in=;5s8 zPp9+IVeA^u=kwxUnil9*$4ziEF>mLSn3QzbA}wrvq$mZK96Y&>(0Xm$Q!`_{Y zUaaiTXOvF&uFfmv2p>RCA#B4g|2&g)#svWPHcGM6^~?ZupIE5rzNPrh9T4pg*reGNT z)3B8PxXC<)O<0;ME$X~U;avPk?R>0a+tbWVIc|)7eAiH1f3#6RbiI^S$FX21Cfn0t z{mX|eLhboc{9#V(ittxxQj!DXnrp`3yHF_$6WYPr@Gni`v0;Jc#>cUncEMvN0s_k8i z^*2MHR2?toYHBHT>4@`Hg2~$QdFko zcIXdN8{z=QwslDxo&dGQG)-QsVRy^xrzLRp)ET4|DQ*PN~S&V7ch2kiw+HF>$JDs(AfoxGwnrW-J8Fm2^ z)qEJ$0n{fJik7DmIXY%*Y|NHz`3@-m#Bt#JU{+qF)mNlM7u1{czE2SAPyJR`C&bqt z#fz4~)I&uQqn=CAF9%MB!ts%knC5;hQ2c5}o(+Y6`QQ=!@@wr^kWn5*8Nmo$&3A3A z(7-GTbqN|5M9+~u6ka;g?6^c!kEo^!Cwyy0%iDquKzL^g<8uo{h@@6Z%#1T}5+*+0 z^p;rEeXi)(w;%LaLsf6;kn-M#q$1SJXiw`|``O~ z+WNXPq>;(2N;e^|J+iWShK&N>P8~l%FqfK$A5LwmHTWo!RnPyc3I8vqzA~!KMGF=v z6o=w2rMSBnX>l#?F2#epQ;NGgMT@%?2~HtMvEuF$+#%%U+N$03Nk8A7r)vq;0mxz4J+9cly9Nf8`DFZs;FN>WR!3GJ5(v7(}7?uiRY#&3x7IXMBBLn%f|RJ<~c)4JKgM)o)zNypN34DqXUzZY|9z-6H{3uhU# z+_!MqyEMQpr6yEZ>zWI8R>uPA9~ zS5Y?k2W|oybiKSyX4qrz^kXGTqNT$g)_B?wo{S)IUaU*Rw=D97zeF=D5^t9hrP3V_ zIgiZ7b>a2m)QXF;xICrACEndp@vU=zJ`+qjH&P)2Mk()mobw-j|Hx@%qy}B<+Xm6? zW=1FthQ--tL)`u;r;xuH3xE{Ddn03+<8OqC;$I$xF&%Hz)_ZvREvT`#)gXnYN*po9 zEXH823Uuw9AM_ua4Sij1uEyv+RZ?~mXs^&8Fnt2xsuX(MoA0-C>Rw;>hjdoJj_>FM zYmFS;kMnRj+0x)KJWs&ve`>y{gqy!lD434iYl;c#2BwNbgm^^(^QHylqg+QROEEzuHhk&mrUZ;Z=x+g)|>Z-dYVC1ppT?;m^4OceM&cF$%0hEpIC`w#UzA;>zLgEIs)d{BT$k2(LQUmiw*6y3?}UG>bNx7i_?y(QtDu%%~8Tl;sM zopIb#G0Ka$#=~*-PvePwc%&~He8DOU!}Ma*<_5J;Woa5+Jk!8#P4L``)RTxTnAuq@ z1!JZ-*pPe2%|{+O_P<@h((EB%Q0(1`$;yTZR398le|c#SyXf^Aj@YRj;u@W1(h0Lm zbuck5MiJyc?Lgaqy_ua7f5w0CzrCKSGwJp{0dX`Kbw=OUy23#SQ;r;$oHRu9;Lrd+ zB63UuD-?(5I07&@F$;SF4k$@L@nS`%f1^ecC{^QOXCvdg+)nn{&?bVSX1S6%m_mc* zBPWAGV#Y3<%)far5Fck;Ww&wMzS=JYLks+0ju@zdULL;|7#+AxkIqkt50rKOGRyT& zDW{h{YaF%Q!_DQC5MSpV_KcJDFxtcQ_Ze|VOB>zjst`${I_Ewcr9Apl>#bP8*Ie-2 zWz|JV8oTb4ts~({8pGKv)+kT-t;@!dV=?#a$B!gVM*8$I}$mT^8Da8H8=-;rynyl+S!YjA4M^qh1^j4>y~t$|n4*&zSydeZbcF zmUl<%vcaZt=6j~k7ZaBY90{819L^Z;7ApA|b8wohFf3|MrrbvVQzmPNm4`f z%-*18WcN2X;Hz%%U`jX%lYSn(S(PD;)+8aQ1Hp%kZg%^x)TvTbUym-MROo2ZH*dln z_pZGyv;d4ZrtND>%Nxt$tLx`;%S+y9yNbhuJ#a|X10}}c4SXOE^|vu8+{C@w+mkp2 z;u3OaefEj4z6#9Od03-iZ)W96y)6~}W*c8>_#(5o0-;Uo1DGk8f6sw|$D1f-xV38> znDkAF{N%%oSzty^Gep3_I42CD^9Ra2bT~N^J$Rv`;b?tvkO7xLnw$LeYMF7Loy!TQ zZ#c14L zp<(7?dmeNVGB~&a1wGTm(!01|#a$b$ioI+Gpt-v_3IeE(5}%Oqwaba{k)aPeKZu`X znd?ZQQ;z zh}_@!Yrvr|$*rA5-D~?qlOJ@K-@WEuRpsj;r~B_|Kngo&-=b1G3Jj~juM_|q{@l)7Wd>2jn>hHtiOGU_XpRt#uUVW9kBv24sDhNpg) z{4NvIr_Y?$O9}D#LOAczG}63!Jm9bZ%{orsl$z3(6%VT3PBKnuJvd-yXk}PQI7)!> zx%7`+h03HdYGr!q)r#f!$^<6)6=l=k{d4$8D%M;sFLF*tWc-G;#??0l-D|JwPF`(# zPQj^RPF|@TQniDrA>?MQHFMEc!5xeyA?yKI8Gf@{txH^8mYmVIM*`0)Mx547N(6t# zB=l12oPAp)==-Vv)My9A!oLTWd1F#8HCW$`kIec(AjL3!p*3=%im{49 zRE%ZO(GOYXofeT1wtw}%;!;g0hZ{fiUhG>o0!8juBJ(ny(_c?F4isZ|6P`qFW%DvR z%t8x-o|fizr;t!gyS_@4b%o{?9OMZjR0iebG8pF~z_{Bh#FXdO<#?~~#= zn+SAW<~*3!ZG(h@3!_khoOO|We8ZF6O(tI+FBCS6+4UH5=n&|bv#0qA=}0h8J4HjS z-FjtkVhG!|S$X(~1ix~uvV4Dn@|WSZ}R&izIbHXdrKQqE-l=m>%k>~%wdtn861GCwO+FaqGib&OMFLIqu!!r+sYhA?{ofFKTR9B zv~qF|pU#z8;(a^3t>L!iG#V{k-YvJ{9 zip4~yLgG36QelN2g)u7f^_m0QIOz6xCGcyNHsk1Z2)=AY49VEp@K>;x-^l->{vQ-2 zVg<0(bGglxi#sA*3`s7AX|)4^6Q^|$1N*<{S3_Xcpr=__fhY(R-t!WaFRNHy1%tu2 z_s=yoHFty$_wzXKXJWz@Af6^O?wxU-rC(sLf^B+q5zU5RI68c0tZST8(;D;qRqh`8 z*oqV2{LXV492i6;xK!m89M`Kg&3Lz*7f7UqnL^I1wfPh>fIBu0zxt_UPO6;IeA7~5_jC$x zq~=i+;vIMmi$#dcxeau$YCy-YJ7AoVqI7vhkcmel%USf@wqA--vjX()DQtIa*KQs7WTXpLpfaX8` zof4O+f^@cB=l{yRZxKCT^XhmKxpN*G1d4Crm4NOqK-Ker4oJJu7}Ms)iHRW+Y|$Lc zl!zLq%d_1L;}y*3*9n0v$eKVPok4;3VDW@|lT%NxR`_~MqXNdLPyvNEhX;!%7B3#0#b7ucogC>6x z{nUrQHT?~cLuX9RH9h84Vf`0ewIGF)BiYV^HR`CppX8V}E9 z-Ss@{(vZt<5J@0NdAM)OIX<7Z#Ohl=kozrKXPDiN?Pvu%Cv*l`twIOpYPK;v$OOqb z3606kj)(uE;>{h-<$n(jdL6lkE`!hK(Fk&NIkb*CBzp!WU)aT39GC@!glzvu;7!;8 zC7!3f+yNd_4n2MXZ7jnRKVb6erdD)HVD2NP{|e-Q!iQwLXIwDIxmUcX+c83%%EhEh z3~18G&#?gG=*sO20xtcpDl8l+9FQmxf1Wvly-xD9Td)iRTrRGtHXsSmhmoLw>nDRk zm(IWJR&MhAi*zkja?QCMa)_|hw-Cek60-oa9?&n;+;!?+1Kdl_Laggn4&ly%OHGxY zpPr6iwwJe)9kUw4N7)3D;PZa4^b&0n&1t_KCR`+7B&X9^m0%=^4t7gs!NSgN`QIk~pY^d2YuICbrC6p44%#?A28i?* z>^#Ig3jwC6a)Jt!#TsgAkqm2iK)WfdLiDgCmLN+&U_pG>T zZ-sLUg-kzyZ~$AsX?Be1RF}WJ2q(o#;cnHJ7?k(BFcaQ+ck!41hev_`BpuYhDJk*u zr^gS~>6o_=@cn%saLAp0_wK2~IkTj4wu2P;dB0 z7r1F{w501xXLHLfpDOejTUlyUy5pqnQ%}_0y64YeF~ZGu^?))XpA?JNfyY!Uh9%tv zZ)kMW`MXJwd}=5~khNeuy-5gdjeq%+Psz|^G6jp6NbsPZni|H`F%ztITc4XipTwaj zL69I>zmbP(t}El>S-@Q<=BCdZs=>=XmVeQIScdegx?{hO5J!gQ`%KksP<-0lILfP; ze811N3)M3O-_kLwklk6uCNn6r!+ha~-WD?tT?2 zt)I51n3>wvg%-sgo^CgQ0oV6oc>^*Xr0C!E_H21Jui);PAI)3jkjnADDjifla;pHe z^gqf7B^uGm)_&F^*Jjjt;7p|N#Vki&qr~|U?ZV9QxVt@5L&?q-|BGCX?s@~mZ#nu0 zXCVPG%G0%wQLXYya1bO!lQBJxIma~0Z$E|PhU&_9c6yNTKz!#ovn&@OlD)*OP$iK% zV~{@O2jeSJIjnM;kaxkBhWBmme;NTS;3SC(_O8Crds55c9GJFeGNrmbTJn-wN!ut9 zrb2E(fF8&(ENOsYZzQx181ziVfn}@?HGTYK+u0P*?$!+Ss9!r4VA|D3!nrqqFvlpH z^))!HSrfe|fLW1CfJ1o(9(OZ*o_2nT$37UHfqs?sYp&#|EymCI2GQBn6 zg!#s7%8=@zHs0(l9O*Z#+Iw`~@|&`K7V97}rO1J*N7w0I(+(g8|A&0`aquh{K%yrQ z-%w%=*^!=6Ah-)9`J7sii!ri%YhC_V23xZT#I>qKYdlHRcLY-k`!*@Q?!~BXci%|MccY;z$mPEa$9DMYdUyYKpyj*1+Bd^xz))1pAwAZ*_u# zTrTW7n`SH8NcZ&H{vv3H1vTJ7@1kJ!uao1h_1;BVQm6KZQ>vS$F(%@$tNfqVY>vyB zp;C-2hXit!x>+VQ2bB;Ng^#XG28(t83-wJC+&vlWj!$$`m1~#yj}#**k5Y}9O7~YXT$CR5l`B~Olz&~p#C3C$_irqp6SHH3v$}0UW)G-oOHxLyxuwp zOQ@#hmi*SHwb2FXEZ_e1^g~yIDb6*Lym^T+{9dF&1B3Ww-s^7?d|{cI?5aRX8{8kH zh!Wy0P#R4z<)t>J%#=Y%AB*YNqKShbICWT(rpi9eOt4>@%2Wnx;Lupzq^nw`m{rb{ z!u>2L`NH|GPV|Gz@H{;nRR)}mj%#TcI1I4<0-*|e zX4t&9IY-)TTR3evvk?G;S4aFf>H{GAojYL}mNevCFEM%%S-s*( z{i!isC>XbohTH`A5pclxc|M0TWxqc=^56UMNw8)0aD)wi@3yXpP(OWQj?mLkZ{FS@ zXP1OO(=C!vrB%aq= z9urvf6to_IZmt1CKphpxkjBgN;{lIq!DHUpCmIbF?aCo_uAHf)1C_E|HhzT`SbI=8 z7h>^E-|U?eD^C17SDB(-7VcH1)RGzgZFISByp(8aiA1Jk@udUIfUJRbd71s92Nb-5 zVU#gvrSGuDEhWz`X1I5H#hoCu{1$7DgHmxl=EeJyhNuGN|y*-+}Vn23vch?yQ zKDX6DFP|P*k~0Hu+XmKl>}pwGrBYk-W=TLu@>}Ue))yRNNpjS1r)#=;Ep@fed9}nM zTvkO~)ydT|LOC1f;PbnC=Pu&c&>Ps^$ckYo&2P(MCABMeJ{<=g1BgmcU0d7A%214P zQ^Is>11HR0IL~=yZO7tYKfZr<>7H%M&uLXRjK`EWVI&q&-t~V{+o-3{dItuD$@rIy z^2+N#dv>1vS&R0UOMpnRmu-g0b-~@QbMAbvqsNc4CZbCmFELOfpsz=u@Anrw9wAiU zeT^mFuk)e6?6hI+riEJm3eog#@90w{L{Y@_&a*A46w}zec&ur6Ft6ec1WbAqPmB=1fPA zNk9(?$|K9s{hE!h%1{7TB6}1iC8*7znQ&)9entTcS40-gok8Ihva}}YF@9u@5!@@i zou-rd6{)?oH46T=V*$S!JG_EVV);slA6oZrVJe>g*GN1YHOHL85L*JwBnucGw#>1_ zuBuxO93{H-MP7vg9Nit~>%Gt9oJ^{PLUZ0B5{+xZ-bDDPeVnKb6su zmDn6esrrpA;x{E@K26@1HPNQtJ|n{+H!cd|(g_0znj)r(B~CC2%y@7d|QJRtNho-Mk#<0Z%X3bpa37quQaBm1V} z+l&mfL@`<9S>%r|=8v>uz(L@aE}sc?TbU+d3CS&z>*cr;;CX(lYR3reHu=S)V;XSl z>DTG^F+IR3QQWm|dhN`?Y`~yKp;(_$jnX@n+3hHr+zmP1b+J3dg;1SD?WW(1_|0#D z-OH4CSc zUwe#RC<0d~*{`3r#Z;j(hSs#=XVozyF#Yb?f^fh%hfsgP1+$I{cU^PH7}fQ8oc%)j z0a0%`l7cn6!gwk|#i-`eMG8`qd<{DRQbwh_1anFZUEdc!13%j2@nDQ)E8**g4E9SH zV00~FRGoYJwzIT23JsmY9<*srp8zrL95{DZIMu!K*4Sbs=%t_4`@AGi^Sil#*e7@Z z6_s7KXw!TWZ&J<-P`ypTqIW-t5qc!-W6r{ZTCZbS+%qCN8gg3ll^!^lu@W+3GqI?5v)go!#C2CPmFVP$Wp|Rj}eRVO60| z8cf*En4?#!MIEvb_3rCib$rQ;W4J;^+fE53Jow4bpG3{U9lm^hqt1ykOFq01#C|D|=4_^l|?=?39x?cy@Zd z!0#K(?eWNyM5Rk~wi|pB^DGJ>bID42X>VeuoZ4IIG&#B90`8&&^;a2oAVSw+ab)Y1 zkEZ{D6{1OfRBl(RX^p<7-!Q|v0Oz#lkR)F@^K&lz0nVkcrWiuRfo+l^?9QwRZ-QOL zf(KQ2b)(+A^d-llcIJHt^8%y06IwoV2%CnB?NtJTcFaGRVykg(@eG9y;1m`~@gsSR z-Z8$5d=6vvNaOYVZt))1a=4Vvg5;Y4ht_h7XWiNe9bEnj1sX7V3{Q;~DKaX_fMDBX zj7#M}V(GB2#dbwk&&9!E@Xh;E0Nz8&r8=|ISb@Kx8Q|#X-!Jr+tU!N$sb;gpBw61OL zA8gL0%cpCJm|xn1&HD!DXcM)Zl0X-Kje`K4O#>(V&Uyk( zzzd{MB(LZ4&)qt)&%O65KQ7M$AT@V>4(C^E&n|;rm#?!xWx#XW$<@af!oZ!t(FO?j z0yi{Gq)GnuI__kF$l4l$l`-nviiKF^w%d@(78)t3TYWp1IHOre{@$2*fl((O+qg&U z2@MWqQbEStg-%gAu-!J@>22G0IiaN-ZQPM?56*|S>~hOf2TiG;p9(F2APV$vJk#G$WEmE*<;I@PS+W@aSISU&wD;ig7k+g(z&=I+6C3E^<@>Xopmy3lxCVC#z0|+=kiIAv2R_=PN z&V05PjPf8rzDLbEYCz#crSN*e9%z@8!zm{^A-|C4TQ#Nq`_?>*r_|zoLIy^xAnRF+ z$f&B1#cW5t!}t^^ye_it z1W3D1oi~(IvvrGZu7AL*p3AYKF=u+`l(^vBoy)d|x9bvHlb9G@*~ai=WGs zxYzUjuE}5EFMh~PmfOJFW2Fd-QYCn$xmx~^M5|h)bU5?Qzr!ljTH(n>Oo$lYE7Qhc z)wo+Y@Xg`u3)wC5C^ifis@OtQV_w>kv4F*2Q#i-~{0c)6gw})fXy;r*Usvy-1>FKc zPCLJ@dVYM(H(4iHksk(Bs_zN#sGKgUaHk9=OGlx57LwT%65XuB`S$gs;LH0cl26gX zgj!P?*W$npH;$n%i12*U3hQTF3UA5U&fg|_hzlP0WA}0B$>M--+AqmVHm;J8A9!01420YU1^C{T zFFEgP*cvhS?%J`P5tN#L#>7mVR8Ny%94qXXas0Dq-i0XS%E1%mu7w&%a7UhyJ~OEQ zb~G{V<|9IiYj_n(^{7;p4UdN#?2{cjX{k=fYNR|+I5&&2f8xs8%7zc(_V6#XXJon= zH+mdfUa^mXXs_V*{3?ST%VuIWWEU#K)$=>qQ5&(`kiBvUNn{#>y#~Z;-p0%zoAmi@ zF@>+u+4Ze5kpNczx3732Q&PR&?gHyL#-|lKPexOKm69+c7Ol#TP($YPkN!8;UV-cn zI+>hi{oeu~Pw(4T)SfiBNME_+pF(>b^|pqi&W z>z1QO--7$Ur)3`kH9UR#b$TG3^{{)X&_h{3&+YUx)#=Ao_>g1Qu)V~qTk!-E9`urFtEr&)6YEX0+b-~{X97$RbJ zmYkg!?YMHf6US%llw}=%1k`B4d_rM|hP1+tT(S;pawpCMuipJcxw8~AjC=fuY5X3A zdR&3}h_x$glO5F@?r4@_5E%5dW0FsvfBOqH6W?;p?q^qz)-vvzi=FDFQ0-u1cF@foW1MME}Ru@OmBt&UXwj*QLX zvN1cVsy(_BSkErl7G@{Elkz}rZRckL5lgb2^Pd{j(lYZ~agg7C7xTMXa{Xn#m#crh z<Vdq?a zahlcj!OCAVG$Uue>|lfJwVQiOd76Xh<@qleAn@k3t{2$iI&Z0aV1SjP&mg~F8A^Ife>iTDty8=niT*jHc%)lR zoYZ-gbsx-@RE<|Pj{ce)Gqn8*ull`Ip`FcjS^GL15+U-q7Es8Z;bMKIK?{-covVK3 z@QJpnHB=7ODYitsc)7VrP*nwHVp=3mt4^x) z25T4^RmXDZtRBlk_D(Nu9+-Y@|5)C!6s2OX2iPem zDW(dpCffNL!JDL5x@&k%%{If#yf3oQWi_q<8s+YrDxy>z*k5He_VdrYEShhG1bOt1 zYFFYz*{3+H$?WR~x6-wB?mRs=2wqr}{)wxeg*)a+@4BbehkhPM>zd<{wAoGRXHZ?B z&g8HD9^~{_FU#3-$W@y1!fdmW_?Ysus<=6+U&q}^Yk9X`u!1JJb_9drZ0nFJwLx3!Io`jUMs6nh6z?(a3s`dhy67 z2U75(v&@ixxh!bu*v7@*)!Wne<#GDz+ZgIli8>#}`0ywq$cqo}r@>^(wEz%^jTU%k zB$-#={UgK@eywTi)CS9#G7A%Suk=@5JB3-RLU=Dpjz*nkj#gCbFB%fVE6}CTW8>T@ zKYv`ei)KIS3rKWsB<2$BI%?(p?6i5{`djJD`vFV*1l{kAQ(dEobNKx=q#fO-o##C) z|I3OA;Mz&kx?fYu5EH+$i7tF78Y1D{GArc#cbV$*9!pMbxouWp>J4PWFa3Lg>mcu) zD|o>XGOz4aN@f3yac+m)itT$zbh=$fa;BJD1_{p6_ZcjEVGc|gRcV#qi;g^yrrZ+ldx3|@!GAA9`9Jggp)p-;Bd@2` z1-!ds2s@%CeNZ}#(y{92@TYeP1kNgG73fNcP>=q>cEOcMz&N6`dxF-t(j5o2DiX z;LGV$L4JUbpm_ETJ;VuHP6Wj-N!5G-4&2`d|Ip^1Sd|pkY0Jl#megVl@GYDD`qG(A z5%2dw761=eNl)0bfO5?%u#Z%bu=>B2hA6E&SMIJv$$$Ta=he;6aUk_`z0o;f_&OX} zL#gcK$=l$uQ(`cV?RYrMN&Idgcn^Jt;-GKqur-yV=l;wuG$OcdwJaymxA_j!;M6?l^0qdW1gKy z3T;z&Wgp65$0BjgYanaS8{@SvbmO8iK{C%&z}vsT*Czqf2HHqClU4;4^>*zG!Y60KcapS%gt%?spOovaqhUR+aK~TIGEAoLcVjwOCgb#VOetChS5(QyS2)tO`@%GD$T3v&{ zQ0E67JWcIU50Yzh1#gfyv44wh!1>2M;6Ig){`A?lP24Q7sWq_ISRC1!|Kfb_GhqL* zNUr}|_gh71XZm+M*hAbfXac**U1w}9zw+4o+#5WwPyA{%S#lCEI=Wk0cOSd~oA^ov z?t~XY;vVi9#C=cNs37|6sUom7vTq(?$P+5aDSMXiD$Tk+)E61^U;0W+=Uw^B=k1IH z;Go&cMrp_6Ez7PRpn2AO-D6@x;<0JDsptg+8SHo!uC{E=k%aLmrXQc9k=Mn4pPdoh zHyM6=+`P1)<}^l%=XxxghV_Sv>O!V91itSRSn{#=oBA+b$m+?r;#c-x(4E+*EYm7a zvnClyDA@{3*;*^ZEG1KmEtT^Bv?KRu?7ely?J_jKF=8>h;np5WtH7fCIP8y)x@b_l zk1nAzjya*J2R|O~mm(h&8kI+xAK-iSIJ&ju+DJ-QtQQo0zyQ-%lOe0E+;K5>Sgpky z1O6&%mC{xuSAz!2r;Z7kQnjl|dl%IJ?L{veP4hR5sQtBgrXemO`}2Ob3{@rd6I(>@ zCWJ^oW8hY9fj(q4@Vf3CTf?s9DvUp`f`5sv~VZ;#nK7t1L>3%50DW$5~llkqt-R+p>a3UbeQE zPir=*U`Hpr6`gL|K^?9X9kZPDYcDd^>zA2z-<=8U4XBo_IJzNbx5~;Ljd(WZfoeJf z?44B;MP%Wt#I@yue?RpmhiSicA&Q2>^6EFYX>@rZg33yI%z?yF2_AeMMk&0^n{hEb zx3Wy*b!=J1dIoQ|^ArkB4lbh(*ZOP5XB(Z0FQ}XC6v|Jt14EboyvUTx-;Y|W8Bxl^ zmh1wX$vGqs3;9QEKF&@e^zL(+eNXA*q#Xa=6xfEX(ncz5wGh95y@erViy$0hb;0WG zbH0T|S&eco=>mo089keEtN4-(k{XmQdJQ#X{ToeS{7953|D?aOH+p<}`oJ``SbF|W zcy#n~>1ev#25y}pfO%kdYp_IvEy-!|Q3vsq>`hMT`&sFMQ-(@Ycqjl;#mpKX&9xthBct;$9KOE8-e>)tW!b5_W{DB)H`2|e6L^;yyVwD0 zkGc;P1yZ^pyQzL0P4#hf7WT~i*;Q+bw+`v}4JDvg%B-h~4$x5%+u-+uJhuj}gSrmi z3tVHI_oV91q&<{Z_7ymBp`Z^_`&eisEB;`~ofDs&(G&s?5=y(!13&j?M>D=2BfZ-KRw)yMDX>?`?fHQgp^|1=ycg-6#6A&u(};UL_B{^kM~{w z2M9mk0!_`+fS+22`Aa)T=^;YqE-w&d2cFoI#-Xdg^iT zrR1DREKw%vCi~UrZSIb0xTx#c4}Aw89+l=hT|vWP8}gvt1fawVrq6* z>fmmQIp~&#^={cuAkKTXf&aFn8w&pD07xk-$jEVgqBM3|?QFcYHBoFoS>Q14z6YLl zU)}?{?p4pNy(l|nVi3P|j&hz&FvJkV>?7e_7Mi3)zdpbb6cD;ops4zK#p&Ozvfc z2?C+cU+>|=KNr)TZR;Coz6ca0?gR?LS&c~I`xw1@Y8MD>6h&&X$k4SdSJ0?!Nu~Ex zdN1%xELO&w0Ni&9rydPc_$#ab)W(0e=ps9P;qBwz1}yiBWz;owJiQS zXCHU%Zo1~c=RuffT(KW5a(|Bg`kxRzPwAf2h_3hOguDWTpN+OQZmmx~Z;W>6WY(`N z(xY|09N!(}JmJ6i%`TOlZ|x0t<8^v2=Lp^-y*y6=f1gtXM}42JKWPz(Cu;jF>JQSg zS2zkDjK(ZQO|+bkj}#zF9xuv(uM#Sy39*yyzBI?Mq-?U2k~wS+nC(-9lQ-Y39N*3V zX{kOFClh?CvTA3e-h*;nal}<-*(L(<5*+GP9uq z6mH(4YZ=w6DK%;@RANz`YwpWj4O+-S1I*vI*Ji_bj^AV`z-n zD0+2c9o-+Zdv}bgo3lAW*_q}#G~q3_WiQSrNA9sbDMNx#3A6_OPPCpBQ&Bswppp-u zu_Dh7&>jp3-Thcl{(}p45n<8M9C(wnPrC2l4p&7#m2NU_T@_Aajc|;36(-*x6ueP9 z#Fd`#_*@3sYTE!`O6y@_k|`$Z-CB=aWySbEek&=5-rVde#;%_atAJdy78j_=H`lSQ zQF4?g{xY$XuC-Dm$i{{RNpARdn=xnC9M^m`+sb@|Aq4;JN>887>cIY2AL~2UsydIs zfCvF=9ZeH%4&i63+8B)S>c<#>xT;yd@g#r4;vGvyU7c4;;KHxctf@Pfwio)cmpp~p ztMICxBuD)P$0vV})}y#hzj*QQ2H8foQ&88Q$Kf2Rp8G&L6GWc)Z5)Y4NhJRh-#psv zQu8RH6ZpK41YMHV?EXp$95TY_AqZ>!LpqNfBeC}%@CqrDc}V#MhXigcMt^^IcJ*e| z08IqERnmquV9(*sG@`4jvp{q;NX~5PuwI|>XCp>DdT+tw=D{# za#z}#5kF5nKh>RNVSTBkqTe*B|DkQ~{Ad4tPvJvgxmTm`4qw#w%iycX7D83aRy|`! zx(x9}pWL;jiSx5J5V^Zbnu@~yY;_K;#sp8UftNGN+Auq1X{29o3Ex9GNfXhvZ2w?M zz3Jtngj25_97-)!Tr9QA&$rPWhc#;KBQbyMHQ+q?O%^})CYOGK2loLb)<#WzUA=$h zQkWP25&H76i1Cn^IEDqWreu0ebB}cWLqVF7etbGZ)$Hs}IYU)BXw|Xi-*miwr^xro1uDc#^P_e&a>(!~_ zHNPS)exI+!y1meLeJI=BQ!P!F(ix*Zq>IMH?o3|oGz52dlp9dX zgV#61KoM_e0@kXEklWs_UDQ1BKD=aY$_c+U-3o0tKfhl2cZRzfNoBp4!mR=*&!)#^ zv=(1l^ewbp0@D8+-~Ae$enI*68)eyxx486YaF4bTQk(F1)H3!{tG*6zQ|UwUYlbN6 z(h7x^{&mT-ON%mIEdZY;EAr3*qKTs(X=HgDIi z4W781F>lVrEbG0i`L`hC$^}p1!vuYE5_SX$C2_-B$uX zC+Ii;YNUJaINJy%IQDLJ!_kP|dimP~yt=r~f}-b$dVG34e-4!Wr; zZuw2I)YzA=-UIX8zP{K=pnBcfSyQE?I29FJ^g*O_kmDwr%T6GSFzp+~-Qqg?KgcE!0x$lZWce*Ac2c+?%BkD5}5H9 zNV^VcJRzWk3J{&;@^7jY__-Nk_$*Lzs)>na@a?z)I^(k zlM~)vsUqVs>&Cih8r2Edyz(up8vCHpijk-gX`qQw$=C>=@gVb3XDnQ6?U6RHU3cw# zJZ^_KXb%}xjo@*h@JT5ZrlT&<@v&~4ArNY7gVz2Fh0>prwb-k=7(57EpXz45T6!Na zc>a?>XZ*z$M$gD#5Da9)a)_h#rfFGhL(VyFjS*2UhXbx3*XZ91V+FL|uEFkp2Dqoeqx zJM!}>*V?Psj3Q=DzkzR=k%+(;(#}|DV|1<)^+pGcjGNXU^x`CT&zlS#LimC2kZ52** zxMa?k{Qc5~%h-%{!}IVYvJz2y2(L>o6W2NIrl+4W$`I-O!tZ|n@wY;&Tl#z;L<2+SU9_srN@?MbL?}3&q>tUFQ$hcu98jOF9Y9QHGB2H_ zRpV=U7U8I!6^@_Mz+LG*%Go#oU!5nhHmG&!5zoYG>pc+i2)cc7{ZK}-H)fQDsYgb% zF#D3$DS9IWwU&b(>i{2yil4DdKB=*%#iW9BkT8XO(R-!C?X}(Bc&xFJ;F&|=B5UYReIhJ}`kz)Ox& zG7Ubu3+sf^y}JQQ30yo%sn3Zb=qlRvXoO+P2-@vBY4We=FMcqPv`ethC^JF50)aoI zITIuOUA?br)1^P(M{))Wu~q+OL47fj!8bYrCpT3nxVDu-m&|7a7C%LDOcbWrfD#)i5BDx$S7BrIkXT@l!9 zFhPVGXpfdSF<((r}3F^{JjHe7P%9m%VS}jm?o$U~P9a8EA zQq*DcYuaN z2b+Bvpt)qEkBmdM>0XHH>;Iw3m(-U~Qx?yVv_avX@~7C{H11om2d{{6J~@YKgxQoC zsUiLcOkVAl!o6Xz%}hb?Qvv5F$5mxpamxJB(&$04<+m17vb|4HTFH$RVITF&YT6uH zq$}rS&;i=3QOm6hKNY&{nv}J^dz_uhU?1{aePZovV`Tev;>D*FqUCFsT7|!}_Q!u< zODnjk)9?I6>7wo*IuG^PX~ih-?CkGML0ldA)?Zb3jtSt#WFF4l=X$VzGmO1^Rxa2A zF9@u4LKLz$mU!7_r`!T2ZJ!K*ERgZ@F{h1#?yt$_IVc$d20?sHWvL#IPjt|8KM^W% z>a9H*$)8JzWzug5WypNNB^05{Pix<3awYwKRcMx8!Bzkf2WLcHw~S0nHMC>)X0br4M?ZG_*4_oGd=ohMEN_l zN0@)78M2O+x)w9<$SO5DJHt5DH)~-hl4XY)Y4{zQKU{m4$b~zcKU=`!5_gmbixW^8 zYxHrU)kKYB31RI; zxvXk~e|5leLBQjY4$Qyh){>LX_RNleN0z}mY&kw6KxV3XQ!}Q@wL|He#E*rifxBA; zb#j$T`PF__<(ItpX$!@M1z(Oc`od-<;b9HnH@9cw$sZjmw$jJL*8#7wgKP z**j(xueLU}rfrT((H3yJd^tu6&I`+_fpvzs-$}u+^3=i#;0Y$I={Z^l>$F09N&s1b z`6q5FvjFTn+{N@@*MKdB+K(m^>c z>p(9+%&usa-)aVF6=Tl54?29LxI+%0J=d6Ut)>^lg`a#;K}`3p2(P6FR_Z6_EzxM| zJ(_I!3%jtNO2ca0+*W8cg}V@1e3OfMvb2PK!ok!1p_^Cea`(cWBErIX1m`=xBOrbc=-Z(K+ztakftEBg8fF zrXjtIc4vdDMbDLvC6?fcBC)#WD7}(v;sDN+od8W2VgG0)UrmRvBA$#ZPIB?2#bSoa z{%6+}jvTPPpsJA=K+P!zmr1LLrtNvQLG&*NXq?a;&9mq=-I{yCzw{KRqmpp)(XjVc zpzVv9xXp^n*M-3PHh;s}=B4$(+3uX>lB_9ZgZ1W#yMWFrH7C2a^MiH$blH9Bpf?Czq+)OH5*Y!q53EB3X~>DO)8r$6<&0nWIfI-D;(oAfu;Xejk0#KfLuADIG}VYmq?AF`{= z8~RLg7zLU>oN?^^e)6ZywD>ifMx%-W0%=if$C;BPwWYN%5r>8cf3l~4^c+9vE9@KQ zigj}M6I&AlH;v}i@qT$z!7akJE#&?Tllz2%Rbf;?v_yV=E3u##se8}3>s356xn=d? z6%rJB%GxIn30CGJrTgkA!W?6Ix@iN6^`H;yli}|=)&_h{BwR{!{g6Wu%{ytU{n@ip zD_*O?kjbfcChD=r=MMvH7{R=cc=6A!S2O$F!|m=)VKLc7M;6+5hZ?s?^n9f-6)9aG z)UxI-Mz5{9+BKdm>c=>%wwZ|$HRj<;a!+wv&v>mnj=Gj(wl z+~N@lE<->|A9n-$O4%}|(EpWEJlq;@I~I=cuzU>FUR^%X&1dSyB~H~7_;+kE?ai)=h7`mt=5B*_t)*6?0AdSes& zMx{|RnGn{(VNE8OQD^wGsfp8tVie!Hn<>t2tQV-ZCHcwJoIcgGPhajj`hQ#1tl5_% ziF)=M#HD%t`%4XdlJ3aTeDQDEI!680tT9cO-fYZQ-yXpKB1dBKr=#xo=8Ar)4$!wx zkX`Gx7c+8W8fi5`wQV290lE7}1YVj2tF9VWlJlY$nO82El*sjPsdgB&xjGDvc!Y}G z4i?0npe>O@%&Y}}0+>=zq<%Ovp-hd_gtP=_-ozKBdh0=6R1{8=WdYkLjT%Ry5YB(; zYb+*X(?%0U0w%_-heBQv5WH*6HfTc18sc3RRH;zImjf#T8PF%4uJp^&HfEJ{~`bO?aekUCQ zttzn94J(;yHf}NZ`Gd+PcW-Hv?I=_dBHmk`MnZgrxIEn(+~>h--867W2-Zy=lrs<= zKwUu{g`1LKd^c*_rQy(@&1+I;`}sk`-T|4p@~8hF{h)c+26Oe@&a_OWx|oy_H5A1( z*j{yW?-0JT(XZk7KFsGAI%^1+8oOe)I&R$?=GUJ;Z}U0|uRiuTt@2h_RlM^!T4>|a zeap|quPo6#$#ud1XtA-H9d{BeBVLvyC|g$NR{j%q8UJa>ii?@DCn-Y^6&MmPSTmwN+ZEM_S`*kTiv~Z7A?y`8=|{ZUEq!$uL^D zAWilFcBPWa#_{*piFne{AUQ2re64R?f@mTdCZ%Y17$us{=u23`G!f=g--q&yE^Msh?qN!dVl?&(KL?4;1<&_H^(S1GIEUu1hAiVLDiNly?X&Bm zdGC(DPklh_lH8i6*_egVc z$!#j#p|x(y<6_~B;qu9v{@<*Q+{=@NEnTkJM_OOEhx;kuLx2A@Rlu(_x@6pOld|T` zTRYyey0}5vgZx0c>GV)=mmWw4x>!KkRw2)^79Tm-Y8To{@cxjC(9%2kHU!xcmeM

    3cy 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

    S(nCNYz9^86eRTQPuBH@`;7## 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

    O&2Pv{O%`m2(Wj|$H%zu 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

    ZSDoasuv+DJXR@OHB_GgeXj5@02Z*P$?wwaZN= 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%0A%m3#e($qq_Zh@HXKY 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

    #gv@!1+d486I5&t7vn==k1U7oZi|Mh}2z zjWKDmBCniFP#tBB-<;&6e_iQ&2~-V5iQfEFWSRnaOBZBY z5+N~a1u!o8f7g-_p=MP>0d%;x+G%+?vhD{dBW2P)$pvS(3ueM^`(TDWV*paYO*6%( z^7YufNgHcR>lP6334Bv>#kulT9)W7t%81ZsnYJ`EPKYV8@Ln<R+4h0k!+9T0&WO%W1u0rkmuup1pw^0)fWHPu-aKLP$ZQ{|2`HUQR{hC%736PzSsd z9_#T#oGt8G2Oc+j-!B{c&1S5OFPXj8_MzRNi?a^$?+*Yt|CSmWL{|iJ5;?+ctVKwBwo#tsA1UlXaL7KdFC_$IE9!0^P*48WnncpL6 zxhvwZa~ar_Dau;Q+nXy5uy2__P$ zlN&?#sRKGngR48~uWIYd>WaMeF$5mcz#%aa*s09u#SI=R+18)*i~TIlt@C%}ti<_$ zB*p#-u~Mju;WX_F;#f4YC$7WLO z!q0V>Jq+4EAj&rso*q4eg5v%U)9Avrsj4-BeTW$4UYp!_YFmwUd73{nX$Sle@n{zo z9m_w$?}iMrYRj&Sk1G!i!rD3}L9odZn}s{)&VY-7XOz0mC4K#MoFFfjyl)CU;~pjc;_1=;B;-H z!g<3N){m9WpEg$2#I0oB zI5TL1sSpKTZ{T!o;mw2j*MU@d$AFaKnqPr9iYfKB$<#KuoR{zQ!J}Z(A0gsQKaLR< zH7PnlmE?UzNb1Q`PU*W~JIR!a6 zC2hIRtsNdZI@p*ONXStS_2TGJf7R(VQNM6V9&chD_f$%(in0-2AqB@qF#rVC_l~ph zeXeWk9VCp)&})a~6!(B&`nYGSidrkhAM-rHsh)Nzxu*{cuOk_1NBZn#w5P&G`274j z8^P6fJoBh78}asfLga{m-W9*$zal9UDq6}*ZxvUdQeuxR) z)_a0%IS*c&c0kU)nw!pRpH_0sI8l*rm&4J*b0pRdtJD{F!A~%kii*<>|NG|da)%W` zMn))S4h=a)W_I3&p2-H#sFep&BP?FeBOoH`>*n}y^=E91_2RsD8r9qg9UEI-g+sSd z(8zMn(R^Hg5%nf&B5j?kJYHBw^c#Yn@O51}1GeV!IfD?xa{rz!X6W12X~7jE#u9|& zGcv-MCm5(kzaYYsl;Yh+Xi0^~YU!^zbP2`W5GCoI+EHhJx@LzBSYxL zQ*>4B8m~~SHB=-klL(SQ=Pc2tgEP)pF;$gvMf76J?r_;anxCmvHP>hHWGA6+k)G8b z%Y1@d+Xlw+E!jciv-(^Qf`D$)f7CIg13g?+Twg7x1B+K1(%R|iU=%?K=^(2#T2>E^ zL@Q5|MZ+TAL{Lm?$4#;|q0I}uUe5EVw@9v13##p}$5M5f{r;c}^O;jv)onsD7i~QM{_4zS&dG*7P;WG&F;K=zQ7&eu&dPSu+&c%*d2B0TJ=Moa-4L z-U}~UD{2JC00Kg~>v@l7W&krYXuXv6^~WKTy!GHLT@$zm+HQof zrH_|rtUjgcr_gUQleS@uG5!@}%_AK5+yqWF2)>~OmwrqZp)yl;rmD|mh}#Zv!#VP$ zrAV0{8P-!m?Xin-Gx-TLNi2tKIll*5>K5>AK6#LEUGoSUXwZyAzCZS5&G}NJG9vc6 zxjP#@IB3lTE07}cqXe3V=2H?XXW#%*cSsm2xujH7mgkZH6C@`pujNZleHB>d=Z4fj z0mib&hMN78u_#U+W0zYK$dVh;=}ygJBZ~t4b8ij(`~rvIdF@>>47u!BI zz5E|)MwU@i6ARX>SB*@nN2Fi=3p1A*45C8)#R_gdKCLtz+p8zm&b{1`t*uMwf*bE{ z{qHBeBz8JX?j4%j2gZfGb#*#oRPTJ-5Zj}Z=(}B)^^o=_#5uYyFz9d_cLRX{a~h{- z8tCh-8|y6=upO*rWX$C&?tCMYD=8)=)Abf?0vfKhphi~-2?;?SK7KJiVG%KL?k+CT z`nC>lul>zR)Dr}S3ItztrsY1&Oy1aBuQsQ#C%!o=c%g)I7x`vy+s%~u?4i$~MC%=a zB;CO&)xqVhw^wAqlP`ms9o7pnyV-+@Z&V70f9ssnq}N+gK*D4cFm?F`=x0-*E9tLz zLE8#bqAZLrBjwdNY(6n1*;@b)6~>=a-91CKSJ`PaqZ1OzV$yBTcN{p3+4V)k>Thza zr+4iSl-T57tQQbd$o64uSyKEYPro+;B3rw7zjyaf>rW9cG9!va%(Klz##Mj}pPnM7 zmG^OFiJ0HM0)4FryQ~-z_)$`b&BqoxHWD&2lZ+8Z$aTtOlpTxnxf{Z+95+7+GOZ(wJ*r)w=MpcGH+6d;9qRm#g1! zl@jq8l=C6;_GsT3I~U>>6y1cb{5Em9SJPJYxvsE?)b^br%1Jw~aUrSp>>BVdLWP00 zEsJ)+cQrLN6;bdN1CdXxJ8RPS3m~ z-1E*do~XoQkLR*tyDxj9Tl39ztCJd|gPtO}^Q7C9Px_Ic+m#W|m{e_8oQS)~S{^6H zo%{ZF=x2HMH7gHCl~h?U#}R?jZkCzK{`kJMbGoE+SLkFSD13=*yac6%ru}*!I+Ewc z^YO3WB1s(t2eH>-HEp857bdR-!qbE@{G(%9)c{eSP`Z^A^_I4btC> zO(t8wveL|CH4-$#SE5!ZYFz;!v|M^bBBq$UX1nO5Z7G%1oqPnp( z)yk6ynQ3{D+Lz-ECr4fmd}pHns}U&YA*$S@|p!gtY^Y zNxT2|@*wh&69FB#qGpcC`3DzbXIX)`of=(l57(~gvq#pLjah2BDxM+T%3kkvn#ht3 zH!p7s5ul66B#l_5lWGw3#jk~&PC=jQPF_ifu$YkFVK3LulZS(olU|&k=g@V^kOsi< zKa^GwMbkURHMVrLH~4$`?Vxf>DA2C{{MnA#0KrmdOwxhNYn_O@`4p7)yclw`tBDzo zfktpUJ?1^3P$u;ICdH-}d}mC1S-9D)}z)2a-;+!M4=XEm;h8<4fMvTXPh zf2;e4W!~=ID)$LqyDoZ5qKQ7^2aM2M0B=>yfR1Z$qpe3Q$)5sDcPm5@+?7L5)-|3o zW1r;`T_^hA&v3v@ts39rF^YZ@U0KPZIGSr%_wK`O8~=-*5dH#Z!%m8Vm)ok=Px$)^~x zB7o0=Uyq|^f&T~s2ZM;5ANC|AR>zjc_kYJbwk?=dpX43~7OmY*>@1Ee?*Rn^wxNgK zV2^hjXR(K3AX^7#zirLDu8X6+xmyRy_UcJaXUyUFxQW=fab;x=b`F>7^R6b3)10;A z^9m;u%qwh>ca&M-_$XOuNH+@75U5^VUu@+U@4V{0HwlD=>q5y;*GJWlI8*@+%tcJV zH8q4=n=5P$UBHKjDk^mCafqYLag{yc4_6 zDZYNHaxV7YYT-+R;@Mxd#H)4r{4Dn&__75iYtP_L2eo{yti)8?5ebMe)+YozX)q|XJC|Guxc zU#+ZSioeC^mW`?=Wz{7WVpkjbQMGzuW_Y@?;o8Z?X-lAM^>vG}o#gD){J`t(ZLS9` zo;riUm!SEDxmq6`qMmAbYyOnS@(XPag!T}wOTJDoYn}qaiS~2z{B-%R68nk?_=32yLeM|w@SD!OeNWZX_ zfKBF$U!?u$Gto-~Ss^#9%R3~3;Vrk2jQ>6wk?}vwTei|9JxeFOcn#Aw3~083$D%#z zvntn`oppAty-4J$>KLbN)Vb1Z%cN~+MzO?a}rAWVwSdIN`HbM z78qOsKb1wi`iBwX$k1oPLK#DAamQ>1%VSzUeX^l}^7oX?n7=e3 zOiFh;k3_Z2Z>e~mwMzp2Yy|Ikg^fUXc(e23yR($8*I)9BG1%q+iM#R9Dd$$^*3iFL zc54|bdXRZNgkN{&tmT}Zj%z(13vbAckFT0g+1!3zq^8C5t8s=yXOkj!zT##jML?5e zPbG=8jF8qwQ?PXIkEh1%LfuGvq7r4CfyE5AJ&@kyE7oMRl>B4rUW5IeSJE_aIP*Qb zo%%Q^)#Yu)a&ro|a!zcaNwvb*k?oP$=~v4(jVc*q>ntmsJq5EO7y&}Q^5@oF5|hfo z|2->D1QREBG(<-pYh&|!&4a8~#O*XQB7*Hp%R$H1GCtx-<$dtu;M@sbPlUx#eWjUOM2Ry#RDnpy(_0+6REjbM~`V-gbR z=4%^`=7;H=0bI<^G3@I&=s`uW7%Nv_^_a~$iF}(F?nIaTThPq(_Zu8{_xXD~;umAuv?CS>>}gBvq(&7}?(Qm2Hk}dZ zB=O7ar_tz(4<)vI4lk4P8x9D@#3N$0cB#M_X!TqYtR=R!DKf11GEd?XEd**>EwY+) z^b}mt^E0zk@(sMjU47G00O`|^&Ug5ZinN4VJ{W(pg1XmQJ#hl4B73t_#%Zg+=t4W3 z?PZOAoqY~cI{0ddd&8u`YR!}OsWF=;`sN?IVG#CqoF5UG6ObN}nt#wqqXdUwSq zA6sHQbXT-sm?=C#xVzkWNP5Y1(NI1%@hhE2L1l00PYU3w(!zqK0Kar+FNBR-Fk6J7 zUs?N6i$K+DL}N?kb}bP&?A+`9qVGy=&QKJQLO#S!dJXUzoNY#T>}Qklc2;0`${7FL zs@{AY0n)x{vi7`|Z>40d!G(rTeq2SV)t#Y9)X6V47XPYg8dv_`-kaB(v3c@+U_9jv z_T_2bFV|Z)bArla5OU_z=f^m~>thmwl9aMUO!_qM&+|G%&&7(@9*U1)QUQv`M0t-l zqnsTg;`Mbc{@67>&cQ_SMRT2TYlf7f%~NpuQ`75_V?{s!YLP)%C(Rr!QFW0PZhkhw zW)AlDc9yFPR2tFk>_V)dGxG-(7?;E>Fm zyQkAJD@?YQ8=4XV3Z+{5OkT9!Fm!I!yX|OpwgqUr__GbOJi<$I6o|x+PJ30Yh9MjG zb_!33_zS7%HRIoC1%r=@V8A!~-xZy`8Mg0mUBMV_dq>SUL2)E69Bf ze$QDg6+T98RxxhV(#h${p;`0Op9Ilw#w+ZFl>%yg`PSyGq8f)!GVkybh2j+_oOH_c z`Fpa5aI=!iqPgS4f@bpIO`!BnYU*+lKa)zf5cbduGPN_nRrMepY#~!{)Ng2dedG^> z)x|)6F3j#L=n!~Rt!3dpQ+HLJx$2;ytBe9de$277ZL6_9&(hP=&ZyL%*I{4e`~JwY z^~R;{1gudqy_lB8(`Tj)o{MbKsw38fEwpiHXL2qC87_Yq9?;9?!p~lxU3?A)8=@Wm z$DZ(-`d+hTpYEP&7vX>0JaOI7epULL+DkCo#(mai$@rY>iu>CE*vPRxi$r*1Pt0(i zfYoG@W)oQ-bTyMFj_kYsSa+?s5;NM4GNSxPAqvo)Z+5P7G|I{`L@7IP5XNh55@KRO zmvi}3C~6k=s>RgI&By*F;42DMd)L9mBgW^4NErnNoPqNm7nw9_-`4z?T%mjsmQG3@ z&}zUbw}Uxs^ex zASGBc&_#^!1?;JN7R}bkag>!wyT71_cZJR387ef``b|VT+E`!L$FcYR@5ph`Gp!La zw)|n%qzN!@QYkYj_?me4iR&v-AU6_27o)T8YSc4Nv9L(OBzdn{wyFMzL}y!~{}2z2 z$A#sVzFevLYbL`!1zZs}DZHhU%1P`2!x$M{x}u9Ew$+~+v)iq)*OR!XgGx-mH7OdW z%{Gmoz>xQ<4q4SRxbV>nT%nn1&$dV3|0vEW$iIKj|Jj5$UG{5^VqWQ$Y?=wtyYddZ z&yeW7+C+^EP#KMz@Mzl@B+}`Z7WXn%$&m+)2X#BJxojKxX>h2?EJuqcYCU6}d%2?Z zqv9-NR~bhMMcJ4L>`7)>I+RH$nh0E0dl{E|J3@h&zWA4%<8eegQ|cXMhlT%#r3b&T z35M15!u021Eg2=(4-<4kd97(VZjcop?mml1*n)D&&hM(5Qqgm&d7Dq3UcR}HC;OZo zo__xRR;bCtD+uHlMDySiZ0BILchtLm_po?!Gj?>>*o-1wGcyg|b?}Msh=r4J8iyY5 zLj_BUbz}!onxHsiU$2AeuDeQ~UDt!jO>|m!a?y3B^XbJ8^m?Zr^pWkt+VECSK~qngV=VsC~yDRjJbtdxKP%78`@O%N&eW zCM&LtOSgGtn6PQhHY&HyMCNk%871WFe@lh0EH3(9{dw_!+sPAw^Y_E`zW<*ya8HEn za`!_iG&X&lc9ut$wKsum=h#g-Mkt3;de%nE-M}Qui+PMfEl~G8C-Ch%njB-jRsEH= zR=>U5##72`kF0J8s%yh17qLnfGKv-sHyPuQWsUt~^{gO}r|+-_rbUr{>_`yw13eO* zRVK|uB~%4Xq@Ol;S0O_K@T%gwtPH-9#7oN#ydAV;bi&tfPXi`?Eu>y#LN$y6{rTb* zIPBXATCiXJ`gwI#mzx$q-$S_Bjnkft%YNiHd=x#C<@fPz7))mGY`~iy9=&Cb51B6R?d-m!x$mDIa2`hr(0H-`*Tb=|(-7vMqqi;8Sr zG&JxC_rjKw8XNf=ZR3i337VKDQ0TR8T zpgH|AjrNh*Q^rY~a^$I6*Ir2gGvHT_sM*}YG2G^V#K01`_rw-t&U#~^QLO7;vu-B? z4eit8R3}xQ9^>kA-X>lt7Kr)|aCstUYL@Wg_@H0h*A%A`VDzBD^Jzu{FeqdMEd+QhowspCWd9jEihFBY?q3J$1&b8iqCBKR9pG%S6o?dUV)5_mf8b@ zEp2VhQR-i>Owt=%QJDzO0uKExB6WS1Fkm^lumuMJ4oQk(@m)H1;D5AwVcF z10&9=|6?O6yZf06XRc+Db_*X9TckcC0ZJu=>`?>#2_=*OJysZH;EQOeVA!U^fA`ca^i1a59o3T50s zDm_*$M#W@?*vfNa|OKECz#kZnW%(Wh7-=Q#$@W_yJN|Ji``41 zpIOqzT%lYRjQePqO7bNv&W(Mx8J}saD+ZMN!{|~y1AFV{*{)skUPAC3qSW|ikMF$# zYEeC5=L2*Jw(tK`DWBYp-A%<7%r4C{%S()Pe5F~^k7<7qDMQLv!=-~QKQ$v`KqXEUSd`O?q6wOGh21;1k^ z_9Kd(t$IEh$%`5r6v8Ghh-7@AfuWB)xPA7HHdJK9KX94qorRyJYtvHvc-Ch`Gj1Tf z`kV~Sv+qL~!cqijC%YkzGZ(tvSj!pfzEN#3mhZr`$!5zyR0>%P{AXlL*{Ju5GE?k5>u*acUd z6?Q0Ul&hIi!xrrMoPrugAYzW99|2GH_Err_0RtP$2X$IK`%4$C+cE&=`o`0b_~ml4ZVmS*opp|a1+xb|>p2A5)h{zGBCqqn z5}ELoxpl;>O>WD>)gDTRhvFx0Pbsr>O*T3&cK{2ZjwTNeXEP5+PiHr)^Z9lNs_yX| zEo`5xscPN-ywL{~gc4<*b>5vp&rYZQgEhgfES_u>^l!L1ta(nLTFD`@d(D3!*mqVK zCqaeP$XZ^TNz&-Crh>xcP26F=xAAD%IJKpz*Qrav3d=0G8_>Sf;FfQb`o9rm?c0gA zxO8a0Z#}&OR>XTuBt_Z#HbdV57dZ{yyM1j)xX((kTfsZOn#$&>EN|0WR2<=DsnJS~b_2q4b^*&iUMAxl)Yg;!O2%=C(Mrxye`$mN{kMb3}?sze{_}*$2PNE@ z1h|~v{X-c9Qgy4}p%`$7^C#$$!+CWDkn&wF9I6XJ3=h6bk?);0lwXur|7Yx3Mw?~z zv4-{oA?Xq6zsEYikDsANMR_Vhp#r1art)_&sSjm$Zxc^L3-jH85*t9~JIV>&*sAn0 z%DBkD;Ob{dE>9-F_-Mc1h@X?kukId0M7AcovRyOH`CDz7JH$XZt`EBYezn?U4l^h7 zGR*8oH8rnMj(h*XJh10pb4&X0M6jnJ!W@}D`%ELpO6i1(Ej5j8V1=+Msg42!ikO8 zO48L*>aFJXzP?#H`H`9V z*G%nO0Q(2>KKzh+NR>~R4I#8f?oKv%%u_ZQ$2)R9x zCovv1egufoQ9Nu2{FwqW^uv0nudMu5QKf{%o~8*j3^2O>U%L@actCKg=ml(Y7;<** zmD{IobI{T3EYVIrC_=LjIFE(Xt^KzQO<4))10O%@?p;`i_fIr7Z-HGvPt_9l!>S~_=}K9@X@Sl>0H+Ex zmmNzytBdLjkqBJ01GITU9HjZU%X_R}3hVma9hT>KNLixKWCIfQ>N=*aWHp;=(j9@4 zBAg_x_3W1}xeUhYy2rRT-rkrt*#7?HraSpxY6i(pUZE9p|41vv){sB^m&7i}6G}b10o_)BGRQI0@9tsNH+tLLwEO3!_<8S^nLGLcir!?{w@B8u2pXbEv zv(MRQKRZtBr|mbi6l_C9wuJDMqz$cCotE0(LKuMz1ZY($vXno*R_bp<+LPmr%!G}E z_iZ}Nw6uds=pJqa_I+Y>kQrH9awYZll}^!J_ZdX=ZCXBZEuhKD%%kLbBb_o%6_U`S z7Ta0a|Ae-#>+8jMyQ2!N6=joI{p za~>rno&vjddz&d8EogOdIdz;ZsJ5)g)!D>hwo~8Z_@e)H;Srwig4hA?xEiW6;>0OY zZPx*eu7>iTqhoJ$o_p%SJT2mH8*o9x(`z+g!)^|^qupNE zm#O))ad|b&v-9cqX3n{)_|&Ku-5Bjniew|fd=Cl6IgK;Pcf%;(3yOO@8v#A;{lRjp zxxCG^wh$^%A5R%e`AULUwJfCIUOR(emjd>F&5?+IsWFk^b4f^P0q7vu)ueRtrsSrx zFLvp;r&l5HBGO(W@uTPB@8(3v>>1$0LpLOP=g8ZFP`wGvH22E=sAjg#bq3g)V=FRq zI)@iFHX7(J=c)(h~AeOXPPaIq{I zHT+rFcG$f=@k6dU18{G-T)TK^@+XDRWs97d>v=;IIhDFm5J~Rg9Gos7QrtxCWX1=d zY?hC_Z1zfo&l%pf%=yR#vo$5R6q^>f79GJpiXz)R&d(fz54J{vzhetdc0z&BD4gS} zVMvA=CVcev);$Gm?#ctZ#W}OoA+E^kXuB47WK(*C0n5^+*(^Wf&Q>(NK0{)HmcEvx z=0tT-u^+!=g*dDdTJCD>iX0_ucy+BFA9Qcz04F0@xp{Q8UQec^jWIK%;(A2uu$dsV zSZwQ+U!Sl7UdsD4_#Z~+Z7{Qd3QEVFm%Gxv#}P{zk`5G~QnS6oznEB=e; zqKmKE3mZk@IJUMR(uVLIgU7G6DHud!zYDiideLWz&?-3Dl?b`1TL*-asott+G5Xd( zKSegL;@>lWFNRV3j_ge0m8bJ0pYwI@*D7^N=y*JSCiQx|fLo|#m^k~QcECOS?C;_r z!2#zFVsR+Z$e6zKkG%~h1B@&76cWVsIteYW@*{F4>T*tdZVbr)}$ z&#pEDcmYT@T~qPuP?O`&&)K{7vRDlzG7**^+G-v`WqZQeE$m;^b9}cf&^Ep*2EVnH zR)%&TEF@Z|r+*woRT2YHE;^`^ZpoUnGaV@lRV(v$bXM z9XvNYpxRp#dOSMnbsRo@n3t26mzO=0o=-Ms;=12Xb8T?&S6yq_(cfzVqK;c8ChiGk zsvA)F#^kWYf_}|T3Os&umYO!kbm{WCK+)EFosmqTTpDz-Zf0gfi*e;52YOSZ-o}ooj*itqt^%wHeh3XnokcTIc8*wJ zTVtmR?0v8kiET$1MQJxR!2D(7<;I5PUGAWN%V|9_*|>sDyYtok*D{M2w!YnVhmELE4G42p7tWU>=-qv<`KWn6Cb>p*K{>5*yv{G-r zFWoG3zQVdp-Sp3GA@`GiF8*j+f;UMQ>iX2HgG@nQLWKm4txjQxS9`hX@m z&bDmtx2?dZETytitKS9fI-#Jiy9H0-WyXf)INR)jW=+3W_nwX<%1;>S<8$&A*!_@q z<2A=dEIZmH?7qba4DRkzmX+;>2R!}Uig6Ho@+|87bai*GX?6U0_tnj@@GYMfm*IPXxhYH8dhnS#`{D^IjaRe!!L(Y#))gf3iSVLZ zyIZI@zQ_ngW#xh{K06-n&8}`+?!3(n=33wVA+$z5-U5H1Y!AbunZQ6?hQ%`A{8nfI zmG4}RKK`gm-udZc)}Oz+4;Gw=zD8cFDtqR}%MPaJyrVHxbPyHJ&klS|`^u9a>F0lL zhpUi}3DLI`OQWnJr)%?xR8yh@iN&MI@Gs9hOI@8AHA&z}j%YQWFG~K9 zgrb)neEYESwq|1>zoBI6TZrin-yr7q!}pMqJ6)P)feR*T{&zbUJg@6NG}xr-dS@Vz zU88JCHKhnMj?%lLA-)JoDSlC3*S}^L? zV(K4@b&N_&Wn`A*&ja$&bV2ANAfi*Eoyl0wLfZLuh%SN=c7NO zx|)n+TRFOC@|j+TM_qY&R39xro#y`hQ#H%;uV>(@+Z;aH+SGW$4Kz50L{E<&>mN6$F6q~bNlBf@ z)D)JM6uY^4+CqGnS|-Cmgk_OQ%mNrUUxCL&PhmUr4*h^X@Vi*9k4<5E1eJXZzx2k< zEQ$@heGiS%)NXRCFuC6K$wI5+DpiYS$Fs-W&$LuTuPXVaKXkh-$m!Pf?6HyTo;h!! zt-veDR%aoa#?+YXTIgWyJrC8kxVXp;pr#kt3Qrfhz&!$lNq~t-i{b2Jovw~mMpNqTsI;&aUHhPs(SXBGzG%34G0NnfLS(bTMI-b3 z(91L*8OF~-jT;v_q_X}S?G~7(n z%Fc?B7krSTNV?>mp~Gb+i)hPS>ArufAmw8@-7>&LN54u#C3uLqP3fJj?lqkc)QpT~ zq_~K_zE%Rc{q36!y7g`8pCdd}Ebf=xeCB@%xcfqp%*n0z!XZ=l@Cl!Fx#*=FA$;{% z#@$_r-!W1-6|&RNw%r9B(E$$M0HL>ly9N~plTyHK#0m&X8Fn;M$7`Y5${Xh_boMTnf@6~FzH`*^?D%1?29YO<&@t+ zkBaHay2iou(b4VA60A!PN2Sc~WWMZzRk@5VfAV>c7)-xTQ-uiQA`@*8%f4wU9ICeJ z@!_@Df|k78>UYsAg@S-LECqPW31E1EnS}r-9Z?`BNo3pgGB)f3n?&+&LnVQdA?kiH( zIkP%ICDDF6$0)r6c2jjYi?sY$sf=~=cV|rI6&s~vK7KP*W8=WD0YeH}S`u~)A^kit zQs0zbJ4CCna*3t1sF|*jeNt79rYRGuv-{>X!tUkuNQpA8mALU6nno%D*vlR~Tf*H# z-2P35LLpF)sC;lRcchqGTfr&sC!83b>akrPeBS2OfUo~~jry^>e^gL#1pZgyT)Ox9 znw^bQy`Arh)a6Y5-3jSE9iFMQtx`Yc!5URxWNREZH!CXVXa?<54)GDxPU4LpGB5R(%Zi?LUw{OVkVSwQNGT`OJy6@TjPFP6<~BQ1doN`A;34r@Jk11n66&cZU;4= z)M1wf5T{GUpE37*I7h%Mm79tgnlrLT8Sl#d?CrB!$)B`URdO2@iz&4K_Ox4gB>nE? z#W0=F5A1N0fM!Hb$dlyJ8?u7uuN%!skSd2A6(KHRJb%2HRtF+Po<(yuXEVIG%a(At zAhI<(DUXx4heI&AHx$XiQ^pr8_%!NA*Xu$RC$4Jldf{KNy3Nhh=k{NK{ZDLmyygsD zsuaUh6=H|mjFdr_SkuoxXQg|?_w1MD&`Z*dm*)i~!J&fRXXt3VW zB{G=26?VLi1WsGDhWbm+_nq}22lZYNw|k$Lt$6o?Y#C9={q$dfSgjdU*G)d1U(zPz zoVPT#vu8eC-63zR^Iv}Y`OO)XYBp7iD0$s4@2bY(oR=fM*$Yw<|Dt81XRi&5kq-nF z9p=C6@5m@-h{{ef$oQmM98fkxe6#f?1){6uVycDFIHH-Mc6{lHha?vj{PS2?$kb;G z7B&SFHRA-zX#d8ukuR-*dx}p=n_C_|?zjTZP!-~iT_TE}d8RGYFA`Rg6(%Y>shWGv zSw{R>qb7r|*|c&`3c9IE9<%|P&io>;mAz&2^{nK1)!A=mNAz;MFSHHm*5L2u8W|oN z966S>tz!gDV{F`Tq=HX<&fkaT-<;26Y5%y)cSKLe7~>nxd1Jn}ev76Wa=na;i5F%sh>N!ZuQ|JLk%V;S@GZj$VSA)>M1cw3Oiedd^- z7JqNZOUV45d1t!GyPmor75rg|#cXpi%nPTt$S0rm^RxH5na~o0(@6Nb8E(kedF~Ln z9b4n;mJ0uR`Pz2QPvC;4zUOf#5QzI2Yv$!=-YRiVCF@kj;veH*il^5kEf@APk0pZY>Pep z<#;s;k^e#VrNFC*&hlEe4$9aDi+5Jxz&Syi!Dil91NX$?*?j`R2~3=V8Xd3aJkHYO z^&L?>QP-3+uS`y;zL@DDv;0c7X9Q3z1jzt#I_PWdNtO-e-;5j|27<94@i!KNuiaKQ z^WnMQ121H<*&UDLD*j1D4h?Nnk#kWTb*qQB>gLR^k;ZFtzuh0zp^cEIg1pfb8%In| zKFl-77%N#<%h@fsJJ%tBXnEFA&?OyP+PTu3{5njt1M7ZKsl45RCzieunkToU^L6Hm zW7^H6T)E$G80>@2>Zk_B2@8Fp9B7Xo1Wth6Zp}=j;h4_)L2~WD#ML$2<&D>oVUGl_ zMjzubcP0b)B6$$|>%XoGq}u_`Cr?>pE)K8n-glcCO;LeQbz&CIwcsUDGf4XwX|0+B z*b1;B?1Q1`8$;}m3+gklBxifEoRYe^Vu9_wR=Y_0upOLW?pJjc@)x5sH%`?*)HyQlIoWMyMSE}$s zYV%vDT*p@j?rYDVzyZ@zD)ETj}xmUZxG3p^3VDl&yZY&(;HY~)Qq7dVx!jIkTdoj{K#9pRLrfJh;?2;<%x_vJOq2A@g zn!8rh0C)8{**VKDx#vzKI`zAdso@mY4ai;r{Am&>PYTSzM7J*{y1yw-A$rTmBvw;`VoaGF4~)%O%eSA z`4!_0@uOsCK7L4T9v`IVU{KhmVer$!m`;cX_`DVwH+k#XR=}l8yfAYEkf6W*2(Mx_ySu;*t41%&cY887I49perm=a{y*RmdPKrb@ zm_h=$HBKW2*CKUzz*JHPgMQ zC|CahO1D!`Z?&=Rvhn^jKWg<(`%%UqZ|gs99=?BWqz^UBt0R+tGhIA#4tIy@v0E$G zL|ATwnX7ksep@#UA<*}3&s1W5cJY#aP1J_hT?8yT}JJR+PWfV zYv9C;2@n9y$z}$ zhsiprsi%ZTwe7yo(7{kZ%(Cs&+-`lsa8ZjiKh!Y)bh!$jt0LcpYB|?OWYGm9ir?l* z7uB|@C%^iXW?bi*Wn6T{Osv{PVSRr<_bO+#f+*khSzdsq_b1mSJ-w}W9p?6RQlI*?{}Z z+%eGe*B4{Yj3wubR1V|IwVkNk=>dY&K_xvb*AaYvsG@)~(|o@e?!zYYH}AXiZL<{e zyk>JQch)l-i>-umccw2hF)M%1YURyjOS{1>yu;TR$N!4`hr+vTmQUce{GRoIu!yF| zR^z$B-slEW|I#;*cCv((__1qW9|@Fc5`QLncsBVqbTe`c6X zPvI(d`)-Qry{>M#d&ATESFNHMHUqm@UtH{y;xf=n<#7x75F4G7J$!}gJrHK7vEz<% zWqc=nn4Zf0qlL-~^`p2-ZIeJ_Id`!u z>-%VLucLipEobKq5pFPPY0`T+ni&mvRtWu3A?1$u@^Jm@~nfo5C`|A;B21fis!@97vaN8Lu#G zRh5^v7cJgLPUy~Ue~|>%-71D=)#K6;8zH*og~(0uR_V!Cu2=C~qQ*amCAXA=%o#WU z&%ZzhjTso29c|ffj+vPGdVYEe2wBTTzNG_2ZLT*g4yR&Q)3GF;)Ai>TvBaG&W$t@k z)pIkPaRp8|L3iPoE^^P;x{0UmjVy}UtNSw@gvY$O^%Q!K_W|v%Cxh7!(x}lZ1}au( zkD|snb}WAHg=8pxdA&ME(^Z@xI5$dl9 zC4w%Gau^cdd)pCDzA|)c+hF9$VX5q1-!uQ)szeRa4Qr*1Uem3uu)=#HOXK zoy>$s^@0n9kHvy|xf0Ka;NjIDca3SZ#W+W1HN(k;5Py#bxnSa`MdxQ1YbV-<;PTZi z-GQ5xyi05#SE02H%uE($O)7Un*RElcSG2^5RTVnv31Rjlg}B4@We&?$vKL|ob4r}o z;`qWN!n%NfesxY8DTu1@E!^NC2tU%=za#e1{`PxHH zzuDCp^Rulj#AMQgnO(4z2J`+4-}KgMKvV!%dVOI*$=KS;d@7wWu)5S3Muj@T%J3K^y)1poi;$-BL-n%$BNkdlq=(1ebO(X7?+# znQ-uRU!L`OR6v1V(7Y6CzrSW}b+>k9c(%RIdHZpwsws>fDUO z?W-41fhI@eYe+9>N=ga~OX@*H{z1fMkKLD1J$ns%b9W7MAP{6aivykZ#Fep!L}SIS zw6eZDS9r_MNH~5Qb@(W8CJp2<{WX}?2?=TVMuH-Z2wnF_b5tWXJ|xW4njAaiW|knU_@pI8BuYx103X5J#ly?W z$rHV*4O}dqI$o>*?*r=uD;KX{bD()iyFfxBMdpRE!727A+~GAPbuh*?W6W=geU>be zE%0w*P7o}4>J(e-5amXV?L>kklc#2{ekJ{*Q4HA!q35S zvj7BrmZAyD8E>bAhpuN9#=PYJl(}wQDL@zT&I?PleL)zqHDPOrNnWP`yvy zw8Y_;O_5)$l^FsK1R!sIfqUos>-)lE&gA=#*3a$pQE?P5*xhD6ch*-1Mt`Y1rvwU3 zFN3B-S@_GNBY+PBJk+$38W?c+Fn}0c9c6r@9EN}D5m*ZefsNH@)0x44|dk$2rO+B-Rt&lNXZom#Ue9dT}O*Lb`xxUbtz+gpT1 z6$owN>M40T)7o#p5XpGmN5pn5J)|h>$-;o? zPgkYK{E`~#M@Fpnyvicaw5;Z=D-G^oI(a+_i>MHKmj~tIA=v_=jAS~LZ%0rc>Z5!0UhtL|mI#gQKH0??in3Y9OHD37G0dL znr_|mbC_X*ps2^2^S9fG8QI%E@El6rWwed#nZGb_{v3s?bGu2%Ych^+eIKVlltE6K z`AO}D!j3mrgO`HZXzwOAt&Vc`N_=#B^V2%pL!>L|7av2l^n`9M+)D~Np{K7=P(gE4 zo>N29*grI5X}d+-WxHl!Z5egEo}H*VzCafq)yK!6Jya}%_8&6;XPLwWvqWKDE^(JK z`xbK<-lkd0_r0~F-zJN>Q|p8S>(`EVkO^?}W{A5_e&dnbqbmKCs71hm#|_7z$wH2<)gFla+ZyH>oGJtZw#RHxdReYh*eT^O%mAsK;s{7GJ7?BcKm&AJJ0WWM303FGnK;U%}3;m z7q2^iAt&vIB7$Go_<9p z#gp=}{`1$yCIX1YhK7bF$5$=)T}n&q&!lN5X&1dO|C(J_o+>f)AuGKOEWj#rN9}c# zckXJ*D@MnEsp<21He!12*MlD8pPmgp8r5LP_cAppW6?UK;`n+C%dpdWBk+NegI=pc zo#35~cTTY1x4IGiLpYQ&#BTfdNY9{X1@$B&C<)yo3d45M=wq6yTAw9wFR`|^e*hxe zG0+B}3vbwP-%))NWq4;TK5>T5gk0|iImuh%r5}R+ISrU+y9H7l(E%m6B(lc zbM-LbsF9R}>gqx#CMJ1@fDb&6O5Y@@s-n%J)1DG}LFNR+;$5{e8+-i>oPS57Pu)7^ zAHNRR9}FtIMV}*G%wmWL*D?(>bCcQ+)>LTLn%L0;B3Gu(I=wYMkan90Gs9Zq@CTb4 z72&xNB$YMablobd#2sJi8%eq)H^u$v$;;!6gMM+-x~tBWcjw7+vcgq~R3g5Ahm2AGWjI-HfU81ueOiDvSd}$r<5jzKRxVm1` z$atx0O?ezmWBL5>gJ2vM2E(txVCcP0kl#^X&0(FZlf$(Sd>d}T(Egsnr#wG6pS;^u zs-PmDz*C3IL`QIqogsJvS1PF_Jltlejk zj0m$%{fuKN+3ldzzC<^H z3vZVTuEpb)(tJ_FFzgZ#DsHJj2DK1aF(t#my4OfG-s{aNl+41KGUUssjbv_~>9rNf zUzPg#C}yDKLe>8EHj|^|cW;i0Eml?#r81h1O*ndsnVl{5dAgki-}c=v3MQ{kxAKb7G3~sK12=bX`%73i{`bWW-~nkWw)C;^MRn+;olx~y z4Ycywu3k<*rMJE0*vx~CMXzi%or~G7riNcDnIGC%n!4JW+WPY3J28VZl-zoF>u4Wu z#jSrMCGroAP4O>|>;f;&S0LGQJ>fBKx(Jw35_~?&{HGLc%iV`?DdSO=HkrDQ2@qr# zq*!3EWFkCUkUMN)>fy7gnR%tWmwrdnfpAvrK_uj;pFRz;zY`4dMILMf)?2E6m%9cWk}y1voc{AHF*+7RvFo!P%42c~9=a0ez@^~n|VV@oI~`qDf|cjxp<9cz7mS7tg0qxH@Z5y6K`*s|9L zL~x#NIA|DZ2^QP#$gbh5%u>bAh5ylgqkDcwP(I$1oE;dX@-B0EtwrRZPbr z3_ZOB#vzntaDC)k6EK=)1k|sXN_;?Z5}`yV4w_*ZHhE8xci;Q7YCOGHc-PN3U zz;~f6uaLc}-^z6s_LXeF49Z|S!a1m()2DS;)b4F~=??E`CB1ESrP@VluUXmV&>ib< z^c(wvPz&WWIGrBk=8`Kh5fNW}f~EE94$>??8)RmZgX{utyxt8%cA?x??fb8oj*b_D zpVq{dN`5qFN3uFE9`&KCcDF`HS0~cv&|9_Wjp&--!1^9_t`#H`bhO(or>Jbu!lnG- zQaaSloa4B-FDoctI_7xMtVVB3NIS3l*sO|~wdb9U_pR(puK*T_o0Dh_4eg|$2sMVA zNBc<|(%bgj0lHOCz0)Q*S-~lpZW`viSU3;!lpszs$EjvUAuAACPOI3bGHKj#($2)l z)O+5^3G^P>dfwdd`r&-t8kM`k)@7WHu?iXCgM+}w-oE$ljE=r`tkTqZ{rWtE$mh2g zZX9%r!dMkjdwIjHSoEQc8KV`m!_m5>H+hMOJ~o=pPYI@_F`xt%!TU~5IJZeml22;v zGCToNAO-cpWVFG=Z#lTAq&FS6FzHh~6^U9;CnX}PJgZt_YdC5*)IL|znt(Y7qe%8V zsM^Jdpl;h@k<0OYX9TUKr5o9l7h9`_Xw5w~&oB@XO;;&&!aUs?%pwI*8>H{15(KNZ zG2Uiff|NeyLnb}W?QwAsJ}YJ-BLBGIgaP#@`rS!8ISKO5TYe!krxSoFy5~&#+xe3O zziF?n0ayW+X0{+L<`JIGGyS5>oa?Ru_Z?uJd0f zB&4J+@F|+wnY&nA7ZwD{US8mnv$SzBb-K2*F$Wg{z7 zW0wnjs;)*ZCnZm94b6dS4NDWCg?j>G{1^D1m|B`!xLg;wCjw+1+1uDVsX7=M1JI96 z-7Jkw<(&*YFYrCIba8%R>h#Fo*1_J+)XwF)*aaDx3x7K4k-R<;S)xyxu!M>*czC_M z^a6?H*%-=)6vQ_lv}I9H=95`np0H#Syl~(@x6W^tgECao^cudR9+XdI8cEg5X5^|_ zZEh1!{EbrWelTalGjf#x{_9sS+1xrSTm^$wl~e^-00()TduZ%sf``}m{C_69OCO@K zsY|GoDS)~EcmMn+6N)Wt}egRwB$n zSA5l0Un^fceyEY!3wy>{U)VfS+HK0@U>#AjA!0q0n;>XjhgqoEw30dNWzk}X<~(6f(#>AP#mbAEjJy@DTX0OVD~)3N=3$nX8AL#vV?%Z^fb&9A{GdkawS@7X5WKOIlhd3*bVx|Z&Q4KLQD0wQ z6c3@3+rhA8>Ns6jlxdt^bqez9%B7Kz_3EhxOnVG zbS5n}cK3fpU5b|}p#pC$a+OQ@qOE!K$Z!;zLhF*BwoX zD%#a}(IRJ9Dx~ony8}Lzd$R!H+$RqJdaWDDoV9|kyW^*)CUMB{AQZYAIdj?wm%XkZ zvKv4RbYSt(mw_%4W!P*$(Qk}xCk1k*I(x-Ia;Y(UWqUcjB9*$rr>1t_XL&gIK1mH` z^Nj*-ERx9wrDE9WBX+L{N}#I;4h2w3yH0n~OJ;BF(U$;*5`DBh9tFZ4n2th6e8hxV z{MO=-GqLt@KzsU_jRo7JDrvo=2(K|W#B)pDgn81-_AE)F5dd+fFn2cp$8kr|g_ zu@eT>ZEx%XlNVYCt+fqi_316|_QpxB+Ir)hJ8Y8@UsZGqQAqZLA?$I7`kuLc_WEwb z+OU-3eV?P7_Izm-N~&9;X+=t^_V@Y5so;?3Rki@Owel5|?fIr^2~9vOlYUJ4*SSba;l&rqmAZe9m3t=o-b-R1 zpTnd2j z)D@;kboZD@wXfb0(8jy+&Uf^}!ZR{nc+onqIeiH369u2xp)p7d)zl4(9hag$4!>;^ z$xsq0cG$wf{-Z`+NJMxBw+Bk~n(YH_-%q&vBAF`23)efc^%b6X2ez`@v)@ehmI6~h z_qDcVeM>KByg0d4HS6t}hPx*`V>e!DS<3<%ld`wdJRDd(g;AhO!`25u#P$!mqJmj` zrg4i8JXEByds`V6{MD%8Pf1JlG49;3&BShdIJb;-Up9xWFm=y3CN<3Ql3yk)4F|mn zJsIqDuX7R%uUEBFFq;!=Cryp3XVR;g8i)D~S2S-+3c7)RXF{N*DD;*Ra(aO8))sa_ z>Ij6}0Hy4v(nMkdv+YB%ULWJi8EQ7%S6|6s*D~lQQxlF&=ZBEfQ$90rnVRf3ATdM% zxo7s6>DFA2e$h}Sgzt>@Vm(M^djh=)MZ+eX0`;kPUy35X2*UPypO+u`vlw?uiIt-c zLzsq8``7s#@q3F*e6(Xn`_lth85rw#xZXOU0Jbw682Vh>@ ztUk<>b#Lu~R}QLM^mt9fPg<-LhsgHqEg)aXJ5I9SYegcb?T`1rcz!gHoLywX7Uk(v zCz3xEp%k5ZvVRlCx+ikJ{>Q>1Q#Nj;fE=pyFh6B?k?BsY(!-pF9~$W08WE-Ih1{q+Bq$u+|{`p~6h zL`nC%b&GNtRL>!UOHd{+Poq7^#nz1t8p zCJB0eSkl}BA2R*9dCCJBo-#B) zU(gero(>>Qg)Wz>KKFwILUO>R(o`ln5g0nAXCM&se}-?V(H_%!xSj{GJP<=IQubrF zDBeK%K{7j{nV3`JfnF&AksH>Bh(S5F4 zzhPp>i>*;;2u~uRcnH?`hf2+oi zIP8Z`S_uaq4}&C47G1#ILK%?Wi4hY0qhCyVGNDhsmu1dxHKESC5!MIj*@6yll5T)PGop z6^{gZwHB9laCa;X2{a|*ac~?|4krH%Ubb@D%QofMl$n4FbgzJ1${ew)TvOSQ0ATct zx!Pqe0UPksw615-20R2PPSkYn{B&!d?<4Mk#$4o7;Sv9sG6?`GjB6_{p(@7;5h{$S z^~#p-|EV~Jc20Tw1A+4ZbbEE3&nMvru=~g4x(HnIGyE5>u{2cx+!XD67aN#w19=Y6 zC1wMj4WKHI?L{EnLtZQeFw*9hH0(5T zs}L&$Fctj?Q`K!`eg*m!?{PdtG4%~{ns!2=%F})TjW!%CnE&MFV{? zL^}&$19<`3{ebiaZNS?B@ItJ30?=YPn4|xH1Vm*6i2#67H{ggp>d_LccoOb`H$dKg zum${J$>x}R1DGWx{1+%dL`<~knm#u+@Sp{RU5jKfLR+3>SdSXWCk@aiHF7Ytd1md< z0SuU`jlbM$v;r#q%e^P*6Yl+e`X|Z>T&w-a#Gg!_*qlG&m|g)u_*GkZ%KZnf`8U|Y z9=qFb1EB)?IXaD4qaVdF17pu?@5_u$sYJVg8%r}Gy+bYgIR!qMI8vbJ)`fP1zexcG zKS{eSG@nqx!rG{tMzz#O{)Ujb+bFl!3#fi}Rb0M^cfB^Lk- zK)dJoFKlCJa{!Q_`0>2{DK%5V!PrUt+KGdH3xH0Fm_|_<&(aM@AJ9yK$7&8evmshv z2pj0eo?5vw-nh?~hOy!$T$&#r)k{xa}M`Y!_${`3z6pJe_purmHj)n5h%s9<-(z?)~V zfh}ZkJy`F-5^FEm;$PXzI{{$$D|@BCKzauZCVpm6*gyy%Kgg^#^lZ@1pk@%gnbTf7tQcDb0?;Ck`nRynW47Q8Qf#0ZJ8p(4O=|Q2rbqbOY<7X3 z!`lrA6c|re6OCw!cO`EB4eo*9A5Jcy2O22CR)PP0FhC(I+2}QWK45r)PFrjo-DTL5 zzcEyKw>x@!Vk-zR40=^Z@1^%oE2`(#J)HqU5%9nJ!^|fb-xWXsJ(Ei4$%z~ura2}L zSHxjjg1i+EofRmtf$V>{xqt&`bmXW6VLhG=UaW#l0wh)nlg2DW)~evW2o3DC);aYg zoi-4E)VBfg8UReD@t2Q)y83Du9yw>@ze1p^NIqow0+YcB*7mRR1u}Z44Ybd+=8Hf0 zlP(e-PW=uc%*lJ;v>ibEFiL+ckozA!x<(H1vyhTAg#>nGz;8kJ3#iM_{5atw2v6!(tN-618@%>1-gnt95%U`3cUcKmrYrbCTt%;sd@5pZ+A4yudh%~vjW7o zn%`t=-N=BPRGb2O8tQdHRU$w?35jCDBUvyPmM@Sq0 z^MJN)8EMqVwK46VfXqeuE-*6@^#j`S-cI@$et_&3L2X|g!eY}v<|K-M0u=efnZF7D z5#L)LY+WPhMG^L3P|YGW;3_P|*#T-ho>|*@qG1Y2tRn&_O|msR-1NAXh=D9HGV{g_ z^X?>L67_%eFoZ~+Q1NH#32L9A>hM$a;;26@U~8rHq2p4kVU(ID72exFWyx1h%z+k= zmfKLh$gjr)V9X8^9Z1BwI?bROU?cMr+otpk7r|8c!@MWpCq_J_KOv2%^xKaSAu=OC zpP2n8t;P~Gl0%ORxZVYLm4=QNGNBz5zW@_*l(E`2>J*Z(dd`N4C>}QwUR2Wa; z$I<%0te#q}1d)Xxq9K@?MZqvkl<4Xo+ZNp+E<&_OFgs`EEAZKr{(zS-%9M*ngTXyy z@tQzCY<2Lxv?9Oe3IB0g?#qcBKCyR|sK9RBpv`*|%J*yuof0o!tPX-Lkyff5le1hL zn!waomDv2cK(PAXjlmN|Tgh@?0H*xK0v(^GR2&f%p`vX!<&lJ+~5y<_P81y8)5 zv74um1ph~b=pEpZw2=J*CTC)VC?23C6BCg$@IPY`175%lYhlH7LM%xP*a>OKkv?uB z$%ZJ5;DRtc!k5!v2G0rwbia@^yn4-E zPBz`H6c9LtgXbQ#1XFGeD$v;+;ZF-Vg*AUQgd@-z(}{(HJ;O|>h^mQWu82GJ=jSIC zo+nz9s54^&H|4hUy;gA|1}BdGdVLNZOBUn=_|z06q9Fk9wAyR>jO4EPC0YW0XibQ4 z1-JNbvRpBM?36?KwH|e+?VdPHfV3v884yf}QKEPP^dGeWw0hw$OPsXR@JC8m?or>p zIN^0%CumD_F&*;4(4v`vylV)?e@ssMPCXeVfmHxXAK<7JM?qg{&6&SI{`KWgbaKVC6m55?FxD318FDM?J?<5EcafFZSL7D$AzZ8wVsr1eBJ%1qGEZ=~PNu zknRo%>5%S_Qb3SS1u5wkke2S2?(Y8PzQN~x-t#=?JI}Yiwf^V(uXRAYuDPy>J$q*M z?AgD4&A<%EYL_=*_v>vz>X)M6Hgc8h3s~!0ol`(T?p(JtV8UqI4+X{|_412wC^A08 z_Y!JnaJuZ3I~=+)MT|SQidmbvVL-Ej*^1gvqM^nMbeIw81RoHUoy^slz}CDU3VS|L zVzfasmUshXR6K3E2@qajWl^EoE@}?_O^Bjp9nPW!6M8KbP)&Qe(Kp&znHwS z2g@t^>^VD^72VfI7>YCQtn26m};t7O0cSMlbY z0$BH`-t*PINnSsMf#TQR8BjCWYnXQi##kcMsKp5FTUU+*jn~)>3~K-JzP*cY{9qB9 zK!W>CU-?Ni;BwG*bKd1q@(C2DM;qdc02xf5h(PglwM$U|m-?)dwSw{q)c0fTFKaHK zz`o90LeOMQ>DB#Fr!|I4`g#|XB!Y@_;1N-I9Z-4G1YfvM4>jLCD@~}`lz<`r*ZEnV zQvgFLO0FB!nA^1<3WeH1vjg)l&k)}?U_Jz04w#Y;022Ta39DoyzzS)7P65T|bKUg* zmFV3y{0lX4Uc*aDMR$?8DtSYj8Gk$_6+LuLtQU?ztG3~lx+nlQ8OssgS0uM-j2 zJ+L*d!B|)VSO~QfuaYf8lRL~b@i`V=LG))mwHL$pOQv8L{h9~;+h6F{fc;*jn_ZhJ z=;Kgm9t_qRL%wq~=zU8yeqvc3EP4BWDAZ677zV~#4z$Aqc7Zl4xrP9{pyZCi@N8nh z(i|9`4F$YQ2B&Ox0AhpK2T(9^0I3~JoZy2PBtv{Vfa##;@dC6QFddK$cytW1iMe)o zxdP!~4lkRjATIN@!wWC;#kIrB)r)I~7nt!Minx}X^MYpMO3mio-IyAxg<}4}6`k`! zfsXgOd=(q&C-_hV-QpB*4S}K+$fmW90atzszx_(4LDfDw0KXEyu?u2o0;rpe z;$<(W8RNy#J{h08bvfVVO?QC?Q#hPz*hfuX#ybtT4sO?+CRGhM~-dj$*)%^-%+aD zdBL;SwVP0QzUkWgz#0bgUHN~N@Ey8e2*`o{a++|ymj}c5uVp0^83dC=&A%=tOCg1e z<>0d@fCHjmOM7P+H-YabX#liCF;5k@zE*&LzZVB!rtg)whvDck#Lg#| zJgo<(8X#w3D6pJ#e~8{0TpkZ~odPKLajn}1w6ax~gHXf~ed>6-VV!U326*IKYdfjx zas^1DPwfZjYNTGnnfAPnXS@ejwYh>{7B5t<@XT&}K9;WYDHzhZHf`F;EqVz9O1DLF zc~0+~ufli(n_UVsPDj$YKsl6ymcGze7U z{@)}5N{WpS8U#99#t=L0t<3JjyroU4u=H;K&3ZM_86b? zLubMNO&J+e!aS~Jss&~-2 z>w#SVVIodT_y=G@!>4n90QEpb3WK^Wf~E)64w~lTb1g%IK-FJ@i$O<=eRwV4{7Ls4 zr-LeJ!7!X|7U3lny}ZWhkiuYZpg3JQTm)2iEAY$X*o9nqQXWwZCAj!sDP@0v{Wj}!*gxUUF9gSDg0G=eBh|AP|)EC@h@fM%-zeG=*> z3OX`W)kO+}sl{*+P_-DJ-wLW0za2u_)y#1V2a)fUgWZpuS7ENG!W-3dY2|bfA&|}h z=F_o>@Dipw!f)Ma)2d*-U{?QMbKM8 zF>P0My5bQvKL1NV9_X!5|5`OTF_0+oiuWK9bm{S5CPL<`*_9Jn)r3N($X#zwnJqwv zfUbG2!CKfN2MX5O!_xtHPmyRSucjBN48S|;k|DgsYtLcJpcpg=l<6QT0Cep^UjmeN zB85qS^#!05xY2Uq^D_ZTK?j7bwcuL8A}1aV67#P_x|nK?6=)Dg@PtU!W#4ZR3?nE` z`5VB$S{MQV-{Q(?TavqaCM8u3E&#d${Y7Q(aza3q1Y6Jjxr~XXeN1)G=FlZ3r5|ba ziNiT;$vU^CI|PQ^8&KM(>tP29b4RlTt@H#8Ca~73@6O5GEZj#@OFqQ#PQwL{Z70zX>C_--#K?5)CPFvU*~*m!`H^~HG$BcXDUbno+ zrjEa)UfCGyn5Qm&ju}W_Q;FO)ZoOP^RRQQkqnQND?={Q<0sVRfM*K&ZeF7Hi2h_{4 zGiGBk#$XTAIy z0fYW6pqmfAN!Z<|hh_?0xv0anLbI7Y@yi8DQxJH1?E(wU@gvlQ2zw6}8R}sQJYWF< zfn{*`U@{6svozkr%mR}U;QD`Kpbd}%CY-*a1|UaS(k zgx<&e)}6t+wDW2{$LEJd;US_7Jg}BZc9SvwL-RB(0bgCEUpZVMrQHF= z{8poGo_oFUGORg|DFx~aSa(LCS&D&d%Hg7)|L+1H&@2T&j|9;`?W52vIsSVCAJHrs zLDvK1fGWhoIPrIZ(Jl2v_661xe6Y?QZGjmC=pable4n2loOe}U+S0ir!U8aR08$v- z3CchdY0bhha{^MKj)dK6mTwM!$&bY2bCJYel| z`vhfQ4Xzbr_;&%{%?hoH?0t*OOg9;exeYXY@cAGY&$*Y=m1z|}%+3j;?E7ono9T9#wT3VVf;c+Lp=8)sY5D5JVD{| zM6*QQ!?Z)h|An5`$O=hz+J$vB)5DDFedpgwL~o8={zp#LO?=<|1_a4=GDqI zJ`TiWxENOKbbNoYJ_oY)4#-qgv-yAq;o<(JZ<6K$bvE#wUVOr(rDAYPN(oU(9sN*DZr9-33`Os=1FHFO#hi(0yMA z470n9|I5zxKS^#8dN{r{-n4w-hrlxjva>iCyPQ3AqjZ<)1cglfe0I@c8yXD0>&ICl zgJx5?VO@W@pOc85ahiB*4@feu+UWBQva?m91mc*u4L9m;HfX5^KSvMUj(00vb>O^p zz%qMSzcblTeK!pLP9SLMU-PG=mu{}-RJsT^(*ftVzD@DWX}TPr^6e85Jeo&P^SoCG z_7I2~-}~{y=F-%|^$k2-J)JZ0QLRRa$uQY>nKq=do0V&hOCq%=x`}Xtw4g12fBMf0 z?|tjN+*1r>Y;3;MQIx~@Wl$^grZu+9(>(5{yc3t^Nhrvv&W6FhU6TEiu@yAv6x7H{9aZd+<;+4_*2j7~JjSGiC?cCqD$nWF-}j0W4^ zRUY=$#!m&0oF-mqUe-~$=S$N6wD02C{W;1C{Q&ws%4Y51MrF-@jzvz@Y)Rha+rIrF z*JW|dij%-}e0q+{OZIbr#nV%^?{v-yTV%DX*!&-Nf{x8+j!`Xa_Ks0E6&EUjnG6vPl_n=z?T%PUXC0>8O96KxXjJnY(ZXm6AA54)cw=z>lZk!DfTD)$h#`H=mZuxb6v=7H zu?VT%mH-L~%jWm<#f|+H$%8oN_M&LxrnRAq9yix|LPQOOk`v#9)*QY%RoHGJF0S>? z+BIC4AA1^}}Do5n7Cx1SscRL3AoE$LqX=JHu9CuwNa=E?6#H-$t zu1R(&kls?@<(o1)M%=7wB;(l)?$i9Z^|Z_0g5zxK8RjG)D1XXT4m;sEx7mQirfDGC ztUeRd^%!+B>Ucwlx9-!4uboNF*beHXDkk63KFXO+y|Zi0C)U;DWAh>P4*T&+eK_{SLV`RN9)Iun@Ux~R1UQpBxs4hWE*JNT}@qQx$xL(TfoDE z-w)f)Drg^%?T0kBUhZLYZz|=dmLrLTYnDFL=b9>T0F0{AtqYmQBffNVJ`Cw&xFZBF zkD4TtE+8nF*7@YoqvQTHFHcsP{D6M{DB5nBp6+iqjmUeFL~k}7JfBr6&c#aYq+j?l*%cXwTOrGnz9CtHd_kKleCT@YzRj{dey!1j={s#;kob z-1paQp`Nn*bz3MFCN{{`&);ti^`~u{M%N?jq-GiJ_-;DhB3pkJZ1}pl^Nojkf20B$ zdE6bpJ5}NjBlvsqwhy?Z`T{fb8}Iq22eWPur&=@}Ct_&@B8v)zk}SN6=QbNBYVP?e zY&S}Y&w_I*-dUK#Ll==sHpxlC8sDbz!jUrZ@VIxW90+ksB%a)MRCyj9&zS8Yy z4DLU38VSBCnSAK?UmcDSWi{&Rs+1WNq^Nbd$+f-4DU|5k@n%T!REx51F7F_~;%C)j zZQDXF&Ij?a>TZN5NERm-Ky9JeHWvM?cI6iRxgy(i74=6^B;zdO{rx)xxVXx1)?%vf(w8Z{r>KgL$XkYM;LSDv!{ zi7WqT4>VRL)<3pDV}{=U%}!^3vn$$55y3w;Vq<3KVED%)Zo<(faz6h18>?uwZ{hhj zzxn2SA;8z;-3-!luRC8V8W>c_nSpPV#d)rFYlR^&1w)97Gn09MLPbce(?%*@R<$`@ z{!W3AvU=81IBhT|4f!v%;B&!w&0c`tUxgQm&CLBM{-YnV0_Z+p~!timn@@!QPg&)ehM~_3&(v|PI>-J~7$`&EJ7^v6e z)7WU$Z^Pxva7_S*d(P!dg{7F{|2M!V)ZOGN&UPNrOV>_ z`itUY8LtZ4^$N4Gl3JIljR~&Yz5a&d`VDnXi>Vr(qgL)+L$=oE;}7}D89XY}DWzkV zUfpW(mS{nQU^Csvc9-b)m!kG`TfOs)3Jo-;Cm zX{Ou|kGI-r+8%6*Q(NYC(Y0C0Wr* z3C`@VuY)Aum;@rFxRaOt$f~G7agggjKmr^np9#L@`Fh9mAOp!xcC)wLQ|}(X^X}C{ z;HMOPTv9DX2^SNF8Uv>%NU4XAWJTG@bNaQZyxgz9)*_JvB<6Q%|G_r(`e>~X6H}L0 zxz=@avifmEfSmNb64N0?0V1}y3UV?2LKN@56^2MPAFN;OL?7xSh|Wt8@Aqp_S``+a z>~GwYcd!bL+@xkY-{^MU#HN$!^x z^qM8si&B8TB=aC|!SWI1@{tjdEXO{|)xq4TfM*6X*?Bc8MOy*Qq%Lzy!PF#XVjiQ9 zD57c%_S>SVh53XBT^hgO`)lwib_Hz3ur6v%KuE zfN$TvEp)^>)?Kj+kOTkwPez)lhlSpLZYx>f;WK1kxmhVHKy`f$U>THcfBXgDwEieD z8_SR?H|X_l50RQ~rBZ&$PZ`pKD!J1X8FGt|$4V(MZh6jIiJ#Jh8#`5Q*bA+(KXpfJJz`L~tjv)fd< zcogFKMk9XwG9nZFe7&)8k7XG`I|38Dy968r8?FTr4tmS~V!5Zd@5b&XT7`4xni0F6 zK0hTy&zYnJ@z1{x6lD`N=+B0B1-fWdmL#acP#@u=`Y`D%3!wM)(V|`F^+&dk=hMvN z$xa&21r9sn-)}(UA4RR(La_h*8z#|sBS_)Q*s*&xuZGw<1G@$B>{S_->0c=n3w<8@ z)SS5g0e#muKrzSIDnI4bFC>OALxjv_Zdy^(F@0Q|zIr&vnyTFsT0tgw{_?YuoV-|W zj-?&cXdyvYXOiCy7$(R>)HGUZM$(^a+in>f39pqH-VoT{_7ufs>tghy3pU)__5;qV zmgJ{|6U{h#nv)yn;MlDntu`k?^*b9#`VaE(jCZ@9v2(1@_9K#gS!F!yn`CRM&^V^8 z4|fwZ%pc5d9jGzO&Zd&S73(k}o!V&ww!gjldD&XS9KU1b6*~u7(|z*;4yID6on-g7 zbn&=lL}+FI=v0uHow1^dmB4l{y4pReyN1vmVWB_7WIdLTc!+r?XF?;s4cXn9E-GrM z%}PBb&BhiJ&$eUCK4#mq+}C_rNR8aDFtJ?U^nr4Pni`nnXN_Y4yy5&`5$MS6^W}mTas4A6#0UxVgusz%4 zq$)tt{=+oyqKmEBjo0C_T6jcR#L1CbG50J(*igdQcs|={Hq`C&4yMIuS+e?SRDhES zUHOv8fck(O8oq*~ocVT=fb-!-&Is=5q~oHas)t0&b1bGeJ)vFEsQi>bO8y}(u|5Tm zsY69=%kyGahnj0q+dnArgU`}#ZMc9(pwMZ)GDn5Q^h3O?a>L$IxPeYr0?!yW8<+i> zs3>L4+03qKrkZtYBfjEO*YRPB341#MLFNLsWNN!Gj>9;i=1m*&# zSKNIa*kwioVuwNX$&-3IyBY7|x$qvWc&H=}>#PobdqTE!pv=eBD?y`LLgNu6Gh8Tg z%Rr~!e;W1Yk2ZS+mbSJnPZZeP03=-);J}I_B{Jrt2q-U7IKc!K{%5YNXi%0|OdWLB zj=L@Lo$Cs6Z|$DiZH&v7GH>tas*6X{xULUGQ>*SY%~WoDRG)9VeXqZ^Eqleq>TphP zCU{#Hd!MEm_h4<=3~B!Xw%8}m_W_bbY;&c?xSG9fq)uCPE2KKT^VnHcSqVH9lvLQ( zi{s1r82pqG?*mpkZD2G(XE8u-L{z|rx;_G+`SVlk2|efylz6?FC8nNqFke1S2;gzH z+Z=HjpWxh$I*AL&&i(i?oHXa_GuO&I`}GJ^h(7c7WJR%IqU-2Ufo@2tc|6zPu|zN} z36E{tK;#7X>`7@9t@80kVB27>@~a6$R~=?X69=)#A%*yReYvN4=gmL>ZV!GEXVxu< zt*!z!S(%&HtFAulpg1RT?jRk!>-Or0CJ~4P=4Ysi@UOZ0PkICF;TxJ5rHet;n1a3M z_lEQGI}LT#V+STU?M=oqIto_%lN$p0F2#TVddY!ZS$p9G`b)sh@ufL9yfsavzQGsc z9-q0IKIYHF=U|jiAr`Aik&?CQS3h?fYczof{n+IiF zz$iH$Dyu}UKTs?Ht;J8Ur;o;{0^TaYNC!_^euSUQ&hUMRG|Lsp3?^0%Vq#4CYy=2l zt<*70bTlAwYky09uzrcexgm(&+hEKj@NTuQa%d|eqU~gVS#I7?mZ{i$B*kTHko8fa zHg58os*=)tVB;lI;$3m+{=>-({q`qh4>!^_CbG{Wj#7u#tQz$V4f_2gek3l;o!z;M zeryc18K_3{ufHQH1>uHHl2H`f*HfLYN>Cj_ZTa&wuDS4pN=dpli;g~QECX>G1Br<- ziijTik_36gjQ1Wj3{@{>yx%l$%<jNpueT7}@ zJWEAybjg!hs41{Tq66;rS%BF#=JSy;*}J0U$<5Xs&*=W{rl&%er}SeApRJG*n}z8Uy#aG{*nAV8K_V zN>U!WDx3O;?NG%FRt? z`D4N}aVEm~7Eo52pu{#5FbnevbRyNO z?{R}*D+mMDg8%}1S+W<(SM@^5rH*uQox6bTF>nU~z6~5BBPcCx-)NX*shGp#d-8<} zDNh?O`})u!*r$@!2czp_rR(++AF_ES;Ft=g(EBit)Ct%mKCLVxLvy(PbDvus{i4-L zQi{@XGV-p+vZW0=K<i#5-*G#TW?Ii)1?1FNX zCe$!}qr3yu1KL4>HU>H!Ofh>YE>QV&NV1&LXeTY8C+ri*Rg3JZHor9rP;!hg2K8jo zn`hk>#o2(P{FLr4^~UHr;W9E#Kg^_{y3YMS)F+^5gjta%2YyAh?VY2}J7ZyZPbFDI zX(`&^hjFskw=a-AsjfYR2sgi0kNleocfFO~0TOpFfk7jPp=DlXftpFeL~QXG(CN?#Vg7gT5(u?j-U1 z`Mir%UHHRooOlIm2)lhcxLe`p;hHLHT4ZcVC3{fZ* z_F%sXJw;X`wik`s7!)Qw3h^l+#ZOtP$0`!ki$`X@Vz`A!)x4$ARJ+-9SAu$Sj6+Sa zfdiXO3@ggeb>=0To#ueuR9s1i@=u|__wXg2k;H8g>5gJS#IeC$&pLJQo>_%9KepEV z(qNb$#EggkrCI8!{Y{xDr1*>-_ELs>Ch+7w&*lgRB9L6NgH^3Quf&?1s$h|p><^l2 z7Zev(&9i+_zOkAF6BTLhF`PXEmP@-jFvf_9nziK~zFh z_`oPOle>VYlG>{ku@J&p(mRsoLu@9yd9dFT14;Ht)wALtxKER78q{7FL(?)jly#1w zPw;koLFh@-Ct~&qYRd*#aeyf*H(bA;ySMGeS z*ZY=|q&7B0R(yU_b@J+&gp0}O%2~e*H4w8p+WXtLnadhi58q3D@KF5WO6p7;#xDL5 zu2xXA?dy?d*tpXZC8Eu5Hf9$5IjJAJ)Q{8Vh;Q4>Y*a}oMZ{xpZw#EKe>r$>^ARR$?nvn^|4(z)U7|pY~C9Q}JU7ely6ZG>MGttpT#u;;(O} z#x%Vo?#`1ktFZUd70I-r;tA%(-@5fH@W#LpmU2Rh+E}Yl&gYGm${ZW!bYs$INp$Cw z8aWy|&186#CQ0ZH;x1aakQ(OEw&Uqx-nR@L_dn8AQqgz^c?%(3zQ7Y)V=R+h_*oZm z?45^$I(viC!gkCo*y(a3Gm{7DC3<;Sjv$dJqHq0%YI8d-QXscck@fxCYVtg^&cyF& z5I*_WB2!vgss-+jBXUVS(l&(ahkHES(M;-i!X~=kA1xPD5GvjL=DozhbU#Ia!!kPgZQU3MK%Lk z=&fG9Ss>9N)mfV4lV60qD&JQwo;kss+1Z%zm*?RAYev4hQMjOvrv=R;UFn%2!MkG3`K4!AMhT~)Ci@q^DJf9&TMLzg~;Zcx5|bzfx2%abrqkm%jg)(-3ZTMPBk!f zNaL$X7a7}BN&5;H`2pd()Y1*OpdE7R^`p-xF%~zzTt5BfCs?ZMFxu-%33o@l+ci!Z z0KM%m-_CgQ=yxVu^bVK7fgWBTiR^3YyxrG-Kp?b#QT6X~G_ zJNe}3jChXt?>vPsc=+0lChAPv&^n85g_>7H&>~{rjORv}NukHt zc#^em1!2{tO^8VGIouQ=o%RrM-ogz372Ogngao&A-*i69#I3Va_|{k2ajl&Dy%gfX z77m3yuL_^O_dgP!EHaO%ReDSLp)%!l&AJpEHs@&QKr!FZGaQkiEM*_AUjQ)F7~+9L zeD?N5h|dZ}+nC?G4y6$jHv#cChPq)Z_E;M08u6x2h$g&0zce{NScz$9tC5JC!#`5n zNhIJM?S?0fFf_r;6A+g!lhAyDX3T2PKNOvXh`j#z(rNC=mQHyB3!ZIWu#G`Aa@e$_ z>*7Wl?<=##9HX|9hq&O-jDsfeAGXPZ)(_?@K3&{owo>&MCK{+vk4BDC(@-IcyPaL2 z#`P&G;j~3e_1nIyhRfPOlE49(|G`e*yqD1pJwpA*uEtz0RT7;DIQiSPzPs|Me=`+B zPayeyD#?FlZ5Ot%G6P5y_#YO7@fN*|ypR$dIJHDyO502y@`zr?*7&uaHNB<2p0=Td zroDyLYdv}vCR$xvD{EV8dSi2QeJfgBV=LX)`t$}inl@J2=GMC4ToiqCU442heQOI_ zD_wnSdg$pV4)pfgR_1h;dIpcLi;)4xok-c5>3{=LewQp}Zea1;SQi{&!U)I*2dD@N zS~x&dp?C@_2P=e~g-QJu{mb9^LZBzE$XHqE%IVucR3Y>-&xIlM^7;-o5PH~IDuUP7 zXV+ITh&uFSls^t>;Q+<{-3cv!g5lzFUWw=8Fy0f^@R_h%drqhn)HXSoV@j)Xbv)0X-%HZ+ljSlN4DNWP5sma+y)+E-&tkb;Fix0hnZp)gX}1c3=v$hw%#Yj-~3$oDms29 zaWk1Ec|7&OLu1IRr&)NW>dKLkfpGRSSgg1vEhY{lDK@EANzP$|VhPzTLCt|U%xx8p zn;t$-Hj6^L9}Trszg&59VIiFI#(eha8o&I*hS-4Yu(e>d0?m|LBk&u^^7o71X@@?f zH=Wjb$6}G7Ul*QM^n%p_iAd5+v2tT;PqmE1g~W^_#?81bUENvY%#ZGSnVzi7UHi?~ zf=m-fccXgJaj}}C*F)I?MV)be2&bz&d3X0PN;xPN4cEUw3Rkp45sCM^fX_NNXXwZs z7L+Uq2G2`;Kjemz8(L&q(Th41=7#bKsxJN94L{l*X=Tbt_+%=zMz()+|MC+>Nk3bG zw6DmdUZcCNH4Yp1@L9UdI-_p&>aS=*=8PX0S_H@3f>grTfzjUgL(8*IS2(zosyv_K z2tZDJ9>0m#5Zg5ulT}4xJAX}>8J`Dsn1O*tp)Ye zUk|uR$}ao%?TIMu(V7CMkQz55eS+S({!;kj>RCvwnm{v`kZ&=X?P}mCV$R}dm>!~? zirpzH$rK?u>9e7&ukJt{8?IPw!82UC`pT`Mn;!ps9(#*7{BqZ};@uQA_B~m*zYbIO zzd?x^+1a1|Q;oS=Y07%GK+CQ5rkw++q~*+q4U^i}i;i%*s> zKKUy?%zpWi^5Y#JGKZnOLF0Re3r@wI{On(QpKMS~IrOOey}XP0!tR8xjjbu37+<&@ zL%0})Z=q+8y6BF9QDLzwHn(9)ZtDJ9{5l;EJn?V-eJ941&pLXYa?Cptg;|{T_s?&$ zd#8L=PKflM3gvq!i*{m>;;nCsTU{o5DmoXJt`Bd8KXHD0jA`bfxFa1xiDT;u&0%G= z&%Wc^_TGWmU6#;Id1iDcH4iLl&4o98Hx|6!P}S_oW99UDroUn^(0cLe$9Z=ad?Poh zbDjxYm#ky_URFoHtsf-Tpuajio^0Eb{R>LA2vQA>7}jQg(wUMY&e`xgr)@KFRTQPx zwKuD|LLnZH>ll|B=Ej}50$jSxU98lkYrhGs>t@zix!!`*I@9lPP{Ngfm8+a*=p%2w zhgDS{Z7?4Azw(u`Z?O2;hUBk$D5kQy1t(wK6mp)VLdHHC*Esr1HHUcKtH{Qa=Rh)Q zW}{9WOK5{;u~O7WEAn&wQ@h>`t$3tbwBTCuVBOllX3iY(vUZM}?$$3aDWAJ4y)tGe zoqWDkfQgy+F)^P#q1%=R{XDQa)uah7X8eWO+EQ2KE;AgKC7~X!%Kk=WZO$M^mo7Tx z&)N?`J&i#!xWSq8_y`dXImYivxyxI?BhraP{R|1Et#(`K*SLomAYU>?P0wS}=k#St zCXq0KB%xt+CCZm4&k9~l<{6|eTp)UIJA>>k)lKJBp?hD&o*iNkVGpZSsEu+II z99>H4mYP2y{@E#ZHwr=grxtM%gO6;4Z}2mV5)C`!AL(~qPY(}2 z>?|B07p;-6sPga|VA$oWbsbcOS2P5DbH}9QXVVo~bbsl=k#LSV^eaLmM||U~*7rrM zp9(&^f-v!_^Xl+j%WR@KWywBiWS{MJ2P7=I?N5PC=OF}jbN0We4Q*$T)oancb-vN@ zCE>xVJc=TA(7Q!`@AANa&|bWl5&P?-kcPFo5R=Uze#~D83O8v=R}9H2tteu`m!OsNyWK$TH{`tL$p4f@1gEj!dnJ=;_DT#vku7`-DX3_i!p(o20zp5tJ-N(;}c_hv3sZ&C_2!n9$Uf*VI!a`gFcH3q&u30<3TS*`w+=vp1#v6L0* z?(esH`vH^qtSnmsGM$=v0@c@FXFuK!y?Quvn0@PKPfhr1@uNGH8OMzr_k1l-;Ttc% zzIeN&C<7T!%n7=G$2@=j0P$2nc}5|+#M{c{EO2@GQ_GV+QaQq7SNTgy%+1JRD{)d@ z*PZnb86(nMH{T77Cm4Kvv08e{b7MymKG87q6lqirLe6)1h~`^{o|<7+o#K~+N%d^d zG<`p-BMJVtN!iN!psXGnF_F!8S!DhCY@|I8>gHBD^-O7*KIcB;)ZE9FZZEzuu}EuX zA)e#)lJ6gpBn92HKl)B!uN8W^eY}RzIXj7hWe>-7Tof{2j$Bn!Ul}G)^OU7!6ZfQI zQpM*sO}5ZD{MJPy1-vgpbQd4Qrk_?|cHLy&`2aDCEi8QG$@U%jR#b$k@$xLow^4BD zWpC?H4FgP)`3KuLfA(c8Q@*&H&+fLMF`ROG&^bgd);iP=sg2w? zEe*yrUHo8sE5?0jW=A`$R~kNCyH&(;tE0a>E1GP|WlOue+dY~@{g&A|y=Bq*{A$-1 z#M53GpXO{C&jx0N01KU{Hj?40&w6+Bm`kT^W%ILMoHsR&5F9z3(i@>@!vD=|&G9Ft z`r5w5#K7>6Jxr>VltY1i%XLaKnfDd)V4!FK=gBaa%ZnbD$D=9TqeUIUeyJ2=9eJC# z4MoK@(t{p+&-K8yz^LUoLZ6!OhxjJ?>m13IRGFGjmKzLht=Lj{ZB~BLoW@5HF*;jb z7_0oG$VVv#c`pCtp;zUzuyzQ2@1styN|!AW2ZBq|(<~CZiiuUbOg6WPb1Z-I&|9c| zy^kcB36E4uN7}g8M#nmydeqMf<7uSJtT0Va5@jA33xdGIkAVcCy9Vbp;AU@4V(Z+d#x> zBTrX1GlnZ3aDFm1OEq_Yz@_6MH@WMvKcYqr4thyz+L%Epe2es}u@xt!29<~5?oq?> z0*&~eEmITLtL`O9=ijNZS1hKUF=0*^kLm1lF|#Wj^e%mwA*-B~j?SeX=e+Bh`YS)R zCOs---)f`s?p}(0>ZDxzc@tqVNh2YzV#Ai!z{qCm<*Ugk+yW%y-m(eD^JRe$( zF;zEdjXDu?4i=C(`E8U3)T2aV+9oKS`x;`jU*y&cV?ML(&*r3gg%hnYYyLju!>`-U z4#+q$nc+_eKFsV2h{?4kr5Vo%)G1)zvb*zWICw{=-9<9PV11KzfBW8etfepQbJO9L z+x;f28sV(`AK)6qtd(}s$jYaLb*KXt&PPLPB!}c2LZc6s!ZT!g?9n~gIU^M-)!B-9 zD-5dQ2P%1Y3#Rrd5UK&sr+{}o~r+dm>1lbFGWihelV@Kd1 zr}<2CmFm#r-X)oH`1g~D)FY&mwZ2(*6>_5qOv&#F@8}@GAK1Hf7H6YWe$Y1Go0LSR zC$CQQL-+ATDOtw6(3@3t8^Rs7Qj2Aq$}pJIepOjp^U`_3Ch^uxqq}az|(N$rFYb2_Cl}bG$I_E<~s?9F@Xp*Ac zu=plYFZqjRS-j^3cLRNhj_Sn=Z+`CV^~M*xo#>f+ghkYm`;>Ct-mj7N4sfir65e@1ec(;Fc{ZjN$}>EQZ` zq4tTOZo^M!W-I4K0?FxqZZenL<69{MOS?^+w$5pz1t#NonUmkFKYzF{tcX=)?|N2$EzbL2N7vblgL!p=gxF&bJVN1xZHF(aS)@+)^OWLXqC;o?{6f&gEq@BI9Eh}fgj^AY1=>=&^i4aSxjvnqf3 zL%XSu&ko$pAGC?z{E=(2en1oWNX&&3;XxRInp`#OP2~uI!Cm&?3T11G`|m~74cu-F zKb%b0B~u}PcQ9G6tHu82 zu;)fvc3i#fJ7KbdjxdH=cRP(#CizatXB|9M+-ePeB0JBlM?9pT(adnc0&GdxSKFXm zfwwPTmD-S~d77u@jbp->wRA(j2UAn7dIA}NLpo9-aHV&q*JJ6&r6nBDD+LBRza6Tx zmf1{g>AvzZd`KO6e3t9+`YVDuNk;7XmrBcN+||fC{t^AwwYh8}eG07eeHPsjJ=;T~ zNr<)?yKHx57qF)I5>jbpWF3!%TF2*$siUm@dC zul8Ly87F1pUVAnsD*0X6+_vM^fYv(Klc_9@AqB-ZqzT6n`G>yfUSrGL`5(D;EkrfU z-VHfE9&ZV#a%y^=wadR{&W!8F*EKjV|J<8L1F8NY??aWFHGLy=uOHFhPLKO!xV%IX z^|kT4eK%|M*AG#-(}sDN1M=3N&@K@PS(IXf(aI)5B}j8~NW8=rXYE5Ocy<5{Q?x_!t^N@Gt9ks7wRCrs}blq}il!eEax_6)aEhA0! z-^d@?tY#Z_Mz@PDG)7~q#*|Y%iBV7ZoImghU4fmt<>NQ~jbh^mDN^dV`$`JahMhYe z?J2X3pKZl?LIw-CZ_pmYW!Wis+h$Y}d_MKsKu5}91!v|B-;kxW8-MDx?P(!gOt9N9 z(c$JRDkT0_{ea`oMz?GIfQ9X!JO28})tSdJ+^OEhwWb!WD}W!feAlbck%J!nB=8B| z?VzY)?AsF=np2Fv26FnZ-fAs4E_4_z9CK*#Z!-vP&jzWJc`c$(y06kVBbrNY;bQt= z)OFQK-cxgXA*U6L6GtUe0^m_c;m_XRJpA(GT_tqW&2nr~ZE{kYcQBOb#1gbrguh7~ zeRsxg47mNSCU6GlUG$^YXUxuv{g_^b&)Ks~mfWZ}B~DG8s455(9DV7?i4xWej^$|n)Ra-@`i-uX@t&pWfXV{h{vhU+v>$Mnz4)T1Cj)z$sV3FC0TKh%C~@WiN~ z_hH5m1~*wQGd@S}OEuGtMgaocMypE`bs6+2`9k$ZYVEg8WsgvC<--IY)T0LIKfW7- z81shws3H;T(B5AsVJm+$#&IV@p|3TVdQz2(+Ic=cneUNBhswFr%l$OMO}6TscZ2?W z!p<$hrY{G=g~<1E*lQ|%D&1Z7t@Y!7#*UVlbR-ebX{F|AUg_#`!{(zZQ#LB|f62bzt-GUhZZnPD0uo0270ajs{30Io|c6lZM zwFB#Fga4scTI;6}4yemGNNmjk0q*nATVCGZ2WP{QIIuxDpgK8-G?}%JP^%T_Ac^0!{o$GvErg`ilvlf zxzY&EJZ@4!FAAIEG=V9;zI8u=#6*nj)>y#`Wapba-Sf|TAVIHh2H}a}a8;NQgvw)~ z;^A}lXzPB%Oy?-05u@OsUGlMX)Rx&Q5)7zh!p{)HpYeJXSXIWfe202ag&-JZVXZxi z+i!NcmD!7X+e!;!5M1$rx-5e=Y>LYFJ)FGk-i<73%Ba+y@)WxL00|$n3y$(7?e1q8 zy~Vs#Cp-8Zyc5KsHm5i;AI#n8oQ~gZl+GBZV;MG9mdK(CdQH|Ka3<`{66_Jy<~3Iy z9`P>CPVf2Z(P~r}jZ*IMN1&cYKoaRFY~P}IBdrtqTlc4VCJh!9#mNa|BHa0aGf{(7 zkW-B8y+lab>A%5nmi@pZ()7ExO^MnEb;6&hH%5h7UylvHm~k;=lW#SGBz|8S`lb5K z@a=~AMUM2T$_ssBO9a9XOi2SXHXn@xyOG#~Z33;OuyAd60@Wd+-*U@*8R>5^Q#geYVEZJ2S-j<<{&lgR5kc zzoA`eQh*toNjFWr1z{_x)+-o|&|qTsxAjCpu}jZU{AxzGyuK3rB4py7xZNb}PgElh zFVrSe@{OK>7k8rc$29wIHX4`SU^wvMatV9u8Kk9sW4X6nU5F#iRzR?H%}e z62cR!bn1+pS>~PY?TaI%_czznZvAz9!+Pd_0>S*tIpXj8=D$vbzrtv)a1hYB8K9%< z-$ob|1i1ouU?UD3C=WmoC=g?*Z3S=`a6tSs@Z{>ic<84Q(4p~vJQ|^iWVCI-VfN;* zfoI7I2HVvk_u$plzduf#*AEkudM0rD`JqdoO5v6Trdg@Q-HhIvb@9iE zdS%ChsW~jQxVk@o>RGINN<2J-G*&)qX0amG8phC;eDpmpIbI%O9U*P`z>)F+mok1n zQ#zFbhoC|o-V2I4FXIpoEuD9t)-tqEciM8S0!&N4nS4W>W{#xAOanB~Si~ zCS+mz|7jDlgC>N+4^XN4ADhrDgbM?K@%Ho6I31H)7H0vo;|L-7fk!M~-RCdri~LPk zx^{kY7Z48}o}P^|*wci5=VhZYZM3D=@%ni$c7@5(uU{&jsOZ&8MoWT$J4U!xD3}y^ zH?Ra#JOapx=Q{4M;8f2)ZmGzy=w~Tp4lkxsWV)z%$eth62fV{=i@^-8nIh|(|g zVv5o{7Nc#G6Qxt=re|Q0eI(U6%Ot}f!@yVqH=81#%aY4a2PZdpJMnKh`e%*gH%A$- zq1gX7Im!fPeMYAL?>NdN^Y9A*6TM{mDZ1k5b|{8PY}?N(q#P_>I&Aw(S3 zgI33CH)BQjIJ&%%Bfou(PCx85{G0VDLvJm!Xl(h$U?-KnoM!QQu@J99V!rCR)BBDi zztGDnh!D%)wDN?+5#Oz<{*h;EwXaS{j>DWjoyL2ILR9+&W!eKW1(1ms9(gYY|@pBj4)t{j5wTYVI5ICO?j;=&p(3)QIlS)MU7N__do$ zWiy_W?5FyHKG;dO=roSa(<>c^@`icYdF!weCP#DgW~$$e-F9E35E7WU{~WtSwP_Wt zuvsn3H5D-jZbsiKkf6D}`8IhV)?$k(_Yb|zD!=m|o_q7g*!K~c<7QRc9?p_;GLo@R zt<2H4-RV2}s}{h>1l3&sT}&}Tn3$NEemf#CL6}&XIDnFR)jz2%pl zu-|zD77dLhR@&dSAECGt9F7J*`09IyZ9(W4CC!jsh>0N0C zF!2P)16_>OJRN{60BYmEfD*{rg~7zw`CSdPx3IDY(!9HffgC)YtSl^D{={HoVE7a1 zkGCizK*reA2ITH+V+Am_Hv`Bp$}<8KK<@8CD*!df9$*5rG`2MdfXo4EKrMi}s)ULv z;FF4?x{@jl<9lFLR|f}>)BkW0Q&m&{L=O-bQBacr05#|VpVU>={(P$e?ce!Z&;u0I z-t~X-yc_;;mzPizQPWnEU}5@G1AqnK26S?^`jhs*xKX|{1N=?x-PPO)WcODB0JWuy zivuqcle@b+qlK%p3nR$Mg3-bDFMev4R?Yx-kdqDI{nrU-3;e4wuJ&f{?R2pO{wu(r zBLT=+nF8&dfq$GNLH|0R#fZ({F_aQPF{_Fv`zXCUxD(pVZh|K%&Eq$CHh zGq$pK0ooheo4y;m7`wPS1C0KXz5fBtsQyI|2oQ61a{7}){(n_Y|4#G2)I~w>mFd}f z`x?9d_lX(XyE=RQqc{IqwkgQo*~;0)`Ck!%0COu_;2-wRf6mOx{x6xlh=R1FgsK{Y z-233!GsuJ9yJOGj;^Fd_^`Cem;&QwIZe~sZ3lBSh`F%(w?9IeLc6RTqo#FqqPu%Lg zPc9%QPp1ExY8!iyyS?{+OUH|_2{3kYGWLXLexCtW z4i11f%ljys0X_a25&#pUJ;>$V1>oT7;tMbbIl=!qNKOs_lgJ;@zYrIIN$lT2JgeV3PV9u>qK*|3>eA@_!>90F&as5jQh{N$GF&?x*@Ude5%@Z^ZK+#rSW;4PY|) z8@v5BSdA?r+HQ&ix;uSl+pV{!aF83$p)5EiCV3 z9sX8xz9XQM73d$uv%ItYM=dPx)SUmW^$!BN{gXS(dkmMq4c^ncSULg!(VlmHF7BXz zIJ{Tq`VaVCo!dX)J7f31A?tfQ&ws#o`d)v*|D0{5KTG|uoyGk3u>a4~?k}wB;smk* zYFe4SKk5HrB5&;CWaXjD{JwBl-sSI~|NT$@KN3*@(mz6Ul1q*Hze$w~3*`+W!J* zl%4f{EJR#p^eg_jhJ?1Ylr5I+!@P8=l6g^uH)%ia@wQYa2hFen1JP(OJ^AyET!>@T ziLqIE0LM5{Vx&9eDCcM=``WPk9F5xV2#Vu4wo}ZOfro{9h0k4wJZHS-L_19kplFp$ z@gemF(Y2j&3s~}E5Hz*#c36Uc=y^g)68W3vc93W`W*i^4Us|(=&&u~BKIp4Yyr#7T zIJOY?!z=}j^?g3;ThIYcXDUb>>dZz+)R5ZpF*$E`7~m|eu%zB{iz ze&~?0SIb8t2fonqgMt0Kiy%X_j*4osegP44K17PI9Ev=%^ZA=R{xdsB2F9w|wE5R3 z#i?z@AR3ORuA}H63(TJq`HA%L+;K6YDbV?}E`4U$NfZ~5+;_0vm!Vw|hy0f2<=3*9 z-fpv(NioTgLzUSRu^$ACohTNl3 zUi0=}pj41kZ4rcoPAdd@&7hI$1NT)#(^Cw|j&g>>bf(mos&9p-k(#a%I-!|9na7`$ z5<>NB6PT?Q<2KCQ;(->fLSI4+ROqLNQbLg&=tZPEVtDfhsr&CZHBOQQOk$@y3d_ z_|aVKdGW@;>1#AYzs|D~_7lBSW#(sGvc!R)MxG{s%M;M!I4z;QiNh z1kaC$PQE)i(Hq{5oVu|rs4UvI`piZ7AG@J!Zn?(+tr|-p(i6e5K9DPluwi8qWlX?# zxbZI=S2mWVQHC=cza4+hn0z^gwXPgKmm6jm-Yl*v>;6^V=n?E}#Fj?U6~l+PZ%K}V z9Ch%Pm?ev63N)AbVdaMJmErxZou(>15dkUavNt=ut64##FM5=8>3qc2ly5Ia+x{R2{u zD||*xp(XRAQl^^+zt>N6Ua4im+&F0o;JWX()A>F@2b_Ln0(9b49x+`?s)YcuOM*;8dsU zOXLRGBj>bPV+X~M!J)R*fgj&yT2N@C(Dg;n?wSb`7+ysAHW{ z761teOfcZiDs4VV=#!%kA8UDJ?oJ)tcnmChC(|7}pwspS`q1yKrR{y(ad;6|5XK}e z`N@*OCMhy*Et_wKDAZisNSgyxD_JW`Ul^F5MF-7;M^YV%T8zt&^$NZf`apRn_!1*>C@HG6VjZJ<}mTXqW%Opu{sE%TrClTK=!6kcI^a~sDg zc1E7s)z0i=dXDpgcR=*3R|P~1H>=JZYlIoOgi|5P!|LxgS1ppkh+8v zPRFoonB+5}Na`QlJr!%$Iy$mMph{;IFK~a52an~jm*||=$Ohn`)}|~Ulqhq5P791f z6XmT>ApCvUZ~as2>0^(V$b=GqC8J;At@DW?`$hK*f>9b4 zf8@jT-+)clcnsPDw2wR9A*}6qizVanOmuI-d3_E#l+UgHF%qLp%cYDZG2D0`TI3X1 zTpY6Q~Cac|jje0()SyDWH-g6sNR#$fcwLO7hEIQ3G+;ayKAB!FUqevSdd&^}&si8Sy% zU_AAaB0Dfp2qAWyaa^=>Ok2_JQC6a1hmqyj>osg$Vt@@f6J732B^K|}atepj6%NZ! zJ|6D-#{(`HF^RH7Qya(S)uvruloSk#7%-@HXO1wC<_ztYr{61FTw`mPJXv*j*Ny9S ziRT;SMQyi-+0#%no%=F3%Irm)X4|i@lY7F}X)4KZgRW+Nt$}ORALY&-#Un=XH-|n% zh0@pxDQFA6BdLdSfxbYus)S5m*+}aG>doXAa6fzmonaVTk{SAsx%~n%hkhy%Yc3s} zEEJGSceiCw1e+(}47CclLj{-Tc|wz@U5rcZc;{(-zjNAwlYNO|qgcu~1m8DLhV%s# zj~|37u)MZAX62hOkSk~a`=^PRlKVP%6()UgJMSuUYiGnLB>U>;gZCl0m3k?g> zrGp9@*8FPsJB!2e56F2IHOMhGnIclF4w0rr;Ee) zanvXJyZ+RzgYTgCPI$hx+Vae$JhNHL+Bhj}ydkP?I^U~hG(X8WFN-4a?Ws!t1vU%R z04#AbaF?gDrcLEOIm1h@V4f+rE-LOqxS9P(O9ey=Ib)g1ll?%f*c@}aMO{9_0LPsD zn(Wlz@9CdaUxyLD61GdrwIy{vcNfqBD)+0+o<4 zxnDX5f^OyMvMxTDfq6b&Y30aX4m0}}HU4ol^j%xgT!&8xOD+Xxof*m=;XR#!ws!`_ z@@_qsq=YTZ?AKOI==MZ5z|B_=a(wkXYa0hN0fYT&J<09FL;-rlbbIw~Gf&#~cz`Q1 z$UwL@wqhK75l$3Ankcr03`OnNQYrt0-JnQneVM0_qkB6dW8W|7B^+k-hHEdFH(0ZW zSurn&iaL@Q#5YIq8-ftG1C!WSep>SGt)UY-z#!v=B zhW7Fm!7cgPA$qjDPg)G;m6!!5Ujbv#oWwA?WBdb5SOSl3Ne@`FcoX^#JKyXMc}ofxNcgbF46IFu0+-E#yzyIMS$VgfW^2D2(l@T6-)7my}npr z!nM}8WqfHzCS+)MJBG|Be50^6PASHn*W;Y&SGSY-opMIKmy3`gx3fCB3}KjOqTTie zk!(#DHL11Kx`HM9oG4WYSxzu*CV@_cEVlfcxM#w<$h|%xJevDtFZN0BH8>1z)()d| zgLC4s&dmvrkr&w0Uo}`fo`(rfi33~uKq0b$0V6aTs6!V#=|``3CN*2BP)-GLNJ}v=%+%S29gS^@zoRYwU0Ud-_eFwY*`;qzDsgl$ZfJ{pIyfj^w$t^0f}El&7b>lLQ?3{Kx&TV(Hx z{6pz4&m^l#2BY0CPD#(6r_O?X3KWUz2QciHJJ&|M4DKqI=+weQDAk>ool_;aMnf35 zIA+5wkz+hK2FS<<%1{w3=yMl`!e`bS2ZeD_?lsgLYhU@Hy;L^0q`w@o*2v+$WT0?< zh+MP9+Em+dk)~>C=IJactLPYPP4!R=@rjqd zkdbP>ejxFV-G4yBf1DePJE+iF?tZa)D}aBpd-$1g|5VxUsQm>gc6GxbE$(J7KjG=J3^HwnR8}pu#%j!kn}3X@{te5 zD0Ww^_jtI!4AyfrtS{rg4X8fC8ak3{HRU#!wlx_>vr8YA58}kfN(gb2FAzU98UBLy zy+=iAAMPuNq6<7u{e56w$riW$G+c4J-QWDraJ` z$DX_@%}}z7+Pz}5jk_GJWl*aY4yxXEVvXy{(c)<`Z!GPWK0=5INB0hD?hZDcvGY}o zj?LSxD*&cSAJ#cyHK+z>K{E|Vn2G_ICiuK^?Tm|CYbo5U?vgjW$;~5qbObHt$jWpm zOaMJQ|C>PCk>q!#1$DTQ7Ij%|ZTA2R|M@sgS^Uhbi?e7zdG)a@LxmquXI3;JEb|G% z;J(Gx=&W2cOA7)HN`RvDX;qxqk*A_f+t47WR1Y$qPR5|czBTpN8pAgj;rJiJV-%v} zwy2pc!)M?mO;+#_A`ES9|NFXBt_S3MI6Ee264R?I?j0ig5|_wk9vqO^RS?p^ zDTxE=Eko2xm#aj6-StxX(U?Q#D<99m=2yrLHyKe$e~)RsC=w?JB3o1$<69M|`x6RQ zRm(XcM1WfdB$??~!bv{)ADh?qT0QQ+aAhBF zAT=7Q@ND3~VZI?1hizvPKewb~a4sVBm`no?(gNHk-G90&pSab3>&7)zi%WrI$tGf5 zTVGudN=&lK;ipY|{3bqz7!!%9JF(K#iQ;TBnI~IwHFxIAvl&OP3dIkgJ0o2P&BzH| z?NCDli_&~8an+3zX_ZLO+h8aOKDa0cwFEw<0PbeWOmM8-vW3E%_qQpTsyH`q@F_b- zdgHZOOD0-6WJ(aa4UIC{y3oLVVD*|)(Q;3glm^HeuNjYL=Vco$8P?_Pnpv%N!J{wD zh#fRzPB=bHSw$Il!nlqySKM;Vu)Lj~Es@@ef5?O#FqS6O^OFjj5@Z3N==c7jbu!hI ziX?$kY*kXOIQPI?$aM!_;L=PHfRpTpaCgN;(0#=be_2fQ)gxqjdlfIj^^j!!QN>dD zOx5BmNZ{57wa(eSB&*qSeh6!Xqw(xMPlJRpt1rTL?ttdfizSVUYiYrgFpWLD`Pg$#qtYgQ3$$Gt^b$tH>7y{{?a>bd6Vyt zoh7@-_4YJ_Q7B536;2xoup|~;TOD~nMx?LW3W#-V+ha1ZE{|2IHfV+;hspx;9&5h@ z>N*PMz|$=zA5Uj__zO72Jru}LD2MPbOOd4HZ8ak}^ zM$-k1cfBOpI$|C77+78dY?`+Jnz(4wJY$aB13$XMg>0!P)koS%2`%7=itSWyB{6Bc zAkPs>4fHBFOKZL~>Qf=W>p?`(oauUmQ3i-TB;;h&(iR||J z7)vTzkr}gvrg)Z&MnhXx;7q__iB*C6!s|4;x}!hwP$2W-u9?YK+`i$Ix(jS9z!@oi z)QqdL<4sdjF5Ixe>|>BZ@0wv$;ypllE$br%ycnRRI_b%(2@dwl6h5+MKtrW z6&Nsj`9#4|-*Qe}^c$!vQ7X*oaY_SbLQBMu+!D?ABV^LS@(6pHFUL`B`ieEiXgECd_a8C$pDhm$6j;5Ak^Vgt(7$y-NHY%M*5#Nd1x__yE-0T~hy&?3UE8bW657 zb)cJp^dBRh2u50FBVWgL^ITq%P3dh>z$}uy@YopZwrd>D8#(=QXWhgs_+?VT5Uyo6yu!3u{T4LHwyo&bx2-WH?rGwS z=Rh6B-@^2~jwfbmBw*>+@D?j6(IvUB zUJapPS&Tfsl6}4=1Rp$rRdIF^Cw?8xO^|1u(iV@MYp`kqj==BA?sO~q`dAv32h9pdz@zWBk@oXqQt50U5T8Z zqAI8tYrguX6#Edvj#^&m3!z#mQMd)(@ZIlBIlj4!iSAoOt3kLSv1kncBuhPs&4*>| zIl`Z;$^w05&u2RVHe@Ap9Rp!F2fD7wdBm_c z57Zi$@kd7oa@_Sca{@B;XgufOb`~NV)<-^Yeh$?!NwV>>DcDo|v8Thei)8f?Ee!C> zBG?X?@)D_<{ws$To`6~F#|5fI=KXuN@KaLUun6ZzSnA~Qlb78x?*ocBh!g7*$ z4Mmp~&Uln5gE%*N0ck+R;K|15Bwk;Q7@gsO>4@NrjXO%=7E{J3j~BV1^z3;<2-S)WL5_LlZTMMk7PA1i#OZZLF!Xe!Dx z5nCAx8E_9fweBXu1yAW`9fg0^)AghV*B2J}_OUMT^;dgx3)Hs|?+qP7fU9a_+z?h{ z&QrHabB9|9VAis<nQ;^jl0F=a{D!nAtkrUhB&DZXM0@W-2vGDy2vN4g5K z&$UkGCS?3;1B5yE(Kdhe)jY(DpvI>>mn?jZ>IURVA)*1 zH8!`?R;?Rl<(?TJY{p>6YINz!UmCQppjdRboOh=v?}SMRiP2Rg&0ish#F%xu6%!{WYe5%Ytkc=+W2ep5E=E}O8F-*(} z!Q7oFSMR?(HpW6?45;T`o$MGJWY#(V?#TgJL&jxebU)4c6GyEm$Ug$T_h*1s|qEFvpSD2&Q^DSYt zlv0r2%?fPwUV=AUSM{fXt&7t!{JIO%qJnc*bFblTV8Q^C9R$k;r6u;Z!@$RHY`@%U zrLo^@e>1-&R9y^p2-A`je{dbsi2WqczDE`9a$JkUq{g3RDs(_RgvvXxeh32dy8ccN z58JoonkLQ^xQhd;T=Ikf)bNt^%ACupTV+F@nVZFYGXF$Lg2t;YXhxB~(u6V2KpKYi z=uDzwkz!}lLG|^R(vI5jrZg;*N$~3z;@OP&3CQH&3P&H zm7G+;E*~W+mJ!WUx%+s!%ueCLkUWM$_B0e5HMdj7f-`iGq-~+Z_!U&m3P=>H!5OS0 zbV7@gjdi(&TWw9^c!W|$T00m}>gHwjfqsBb8g>-dcP4yj;`Kt~ESU)VP~Y!8r13! zG90aTk&f+%D$U%x85OLJx7wXEV*?FhGiAt6CN&(kP1=X#sTnc_UMX>kP_#;CA=7=f zuW*A-YE#ykOSBq06TR|UELMH-v7V?FBL1r^TrWx8qdQL65x0}`)hY+~QuAh%54;2l zxVR2o=f4R%?))2?kReS3pm4}Y-d`wLd)B0>nYh9$>vp_Q9%^}w>zf-8&#*xML{9pn1L^i9Xh7>_ARp<-0miclh$<2&sD zBgSA4!%ipHIh$~+oS_FO9RH7dpE{FSnf^<3FffUmx#d;fc80@RfQs!#H1VX;o@OKB z`)X&U7h){mmhN|=0}M|ME9l;hJjmjE+q{)PhPq3EMGO0$=%$|tjP=g2bd4_Uyzb}O zm3j!LMNJV=V(G2DQZ#3EM#9NQhf{~EB5&W${H_mEFZd zVQJqnvlESU^A{ZUj~CYVwx>lA06W?aEEZt2BLt!^SkHZ3=Qk~0-4FC|#1JISi1MRG z#UD@Q*&u`+5)Fpafn%fhJrw#oT^uvayoGi*K+5j~)#65@f{f$~A9340V|@dZ52TGy zp6Dm-qM2&EhF~9DPS^ISqpf3k(0jKPxff6YA_3OoPwLt@{u9=D+?4|`&qj1Q9_82klAmt2;GxQV$M zZ3K3zO!kqZoo5>(=!mIcw;H^vFE1=0DVSyL7*8ZP2r3hK5&ZK{Ysbo#g3_!Ung`vW z*g&%ocT$L}3HNDWaL=gVC+zE}4RsiCKN@7cv|=k;1J4yhcB{@lB6g;`anai*l70R1 zw^u78-K02C>Zs3Z+~~Ud&B7ZMZY=d%)2(Pli^jY~{kUzLAL(qF9|Wcr*Gl3Pmes!yvJ+1>1fD^hIQ&)0y** z4847}g4rh)0&!Y$=N|Fd!xXRwPcP|bcqa4CNa``nAe93YdsogKMh%7lj{W979z4_}O)M?lFK$*1 z_24=E!bFGuD;3XLQ_q%g0{E}Sgf{=Y__ckDuQGBC{){-OV_r*vBwg8fT(JE zHH^uDrohi)dpoLbVQixz2FcDjh}lKDZ3o`N9kLosZ z30+9HLFI@C?bYGjm+G07Upfw7=w5G<`pIjllF}R{veTt2s;u2;S9J6!*LYEB;PV<59OJi`zd6ue{5ZMtyk1rwMQ3!4YMpy&(j(s`n8;+jWI*m(3x^re5#Fh zpcScI_IF@c^TMXAhmcB^uj9$6nZE1M{(MQFEB8PGYJmFTaApa?Y*k)ksXTw-!L!sx zOBhVu;@wTJQU)As&J;9@>%2oGsmEoF+(D=zAdbOQOC0$*>j#KClTn${Vfh~GGSU#P zjQg(kDtSED$GBm_-O9&bMG`np+c;LOxfCO9X=55q&$2P|wF}kutz&uSG}*frVM6+% zrTY7~R=J4d6;yRPkf8eP*SY`H8pKs0%ooNy8Mh&{Qu{2g1kD zJROY}#Ecq;+6O%nS%=C&yFb`TVr(dW3m1It=PnIU`TQxNw<4SiWPOBp*Y)Jm$`Y5* z=chnHLNkvn^CBqNtIE2*RfTw{cFc}Qg>X)^hW`*rO`Uc9Mc7G@r}5bHayEz_BvDwF ztLHw61IEf8F}Qvt>-7M4@g)-i4xr8#T`-(}lUrxf@qjwXLZK$w30bZ)F!I(=p6p0) zCtzoC%RTN2J9W4Sa;{wT_#Vvrz5Kz^Or&?YMN7&n^Jdac0Wm*K09ZT$xv9lU6KsdH zG{S@Uf_X}M&L-PTGSXd#tTMAA=WbIs1j+$^&|oP`Xmt$U4dR^hOwEP1i>Auc`gpCN za&81TA1%qeItdVNC7$v>esDI!*+*?*YP4^v#i=4rOtb}B_dHj zzDtF$#s@-}G*rt=%_pjmu~>6c%5U{U^C~&@inMI%BQ|!cZ-VqCf!nFxoee)yvDjaR z1r`0dZ>ZfpR(bWC_CBe9UM;#qIaCNjwMg*mvrsiN3`dyeZfjY|)fy~cN=)D9v?F4r zbV<)5+v%y0%}Rw7lo&iQW+lc0H*OGM8P2nhp^`&|ng7oLY>TH+lbd?WJ4 zaK2wol*+7BvsfKxqLHFnv*vx_#thD3S1Ln`a8jR-LZfB`X2CEQ(8DA3^fu9Zz@?zi z(8vp6l;Iz5mJ0t^Yzuk9A~^bHG$I7mZ5xmuNxEXfpZ&B-9B((;@iZb;pRVgK5=e{5 z7r?-y+^`I8qn|v>Ow~bOTU}?Q1GZprRDxN6)#2~*M$#@Mtnv8xW7c7wTb6wxs%{e* zn!=Ls2)$L%!SI@Ar0O-?^W=N+8`f=@R2p3fT)Y7QokTdRg^F(ikv{o`m91e z+lyZcziIe}FLj?ZX3?(F_-cM@Cx1FH!S}~JsTJ$bG=#8KTu$r-Ra zw-e8#{-c~;E(&~ym6_Kdkp5?gk4f_}s$ZptGUSjeP!i@PTsnV`&EDn_=pf$67e=_~ zhWUDp%|lo(id4t-@VhL$qgjT;ZM*pb`bVCT?5RJ=m$Y|AlY~N-UoxAnK3q^|xoh7D!lIah>W2SDf3(B9%?$BSlLx<&ULq0Q%4{oipLfP-P_OxP--(cyt&!l0_ zuvGm>FPhr4Z$VpG?~0#JE;Oyrr&&_rCH4WWx#1`avnnJj95>q^rKb^K6qBCYxyRVe zVG?IS!s4HX{N`Yw^YYnJl-rwSOc>h_!QNh*`tddI3?}!n)K^0+s&P<)#OmW(o^AJ)Wl|US(vF=6HJ9-@43X&Q4Bq;5K2~r z(j{m`hlxF#)!01jNRt%7^h^r=EDS|WInWrwspPYGZO=!U1_rUk01sDLlSsl|?NoKP7Z8qGDYL6p4=hpaC{ZE?cE*PSR~U3sgu zJHj=l%LVL8##-4SGx6&*Q38c1+oMh}yY`L)?#^zC;bwC7S{x+yGpqQV&tsASXkj%X z&Pxl+adt?npe>BRqs4tsC!tmTjI#`u3bmyqiKGj4xUK^b>krtb$R*mOkfT7X&Z>Z# zP3E|SR1Z`QXRRn=LQ<*tVTT+!(Mc!l-Jek%=<;B7m4Q04s*p@~5=xK}nUCikxTuUE zW3>LEA=5`}(*+dE0|fMFX|lDEtNpKzyQ%T6DLhu zTmAmIST!ClIpN+9Js(PH_jC$2W|%2;5Niyzbb9=|M{Ab6Um)<_+|XBz0&V5-U&7Rm zu4x<30J+&b>eDcAwJuf#w zEcLK#R|^CglT3pbZ+Cr&i=Qt0*~H`M{K}5EyX-t^dSHz$6|Tf4yNXk)4n-MNvd-GO z(wOfEy+k`vl0~OXjc`zOMT1?{aN(g(fJ1J@NZ(G2EargWXo zGZ}8w3mVjKK@(X%va=^AD5%HRY;(hL`0)DF;WgOcv57!L)6Pm8@_y; z=d#ilORf=mxJJ8AXfHE33d9Lk>t8~0_iGVsrk!+sH(Uvhz6|K!evCGuf1L_k>N%Gz zbMC)S@mZ&IS~qbkhFX7u<8-Gr6f}p6!D16>GXk=j?WYFQN=EZ!G+#}=)ElQpa9}%g z|M+?Ld$sbdcM42!Cfhm8ekrD(f%03kLCiB2df6rZR4=rm5JT+hXWg&6RA|RkLy={+ zmS8?JH7hzv&IQpr%k&k%PW|JFJ9O)$ez$Qqn^qa4xAbLzU(2GnTj&l2%mz7xJJAg3 z&>pzG?Tl>5?9ZRihGfEi%J+I~m>Xq#!hFa5QlcbseZGc`L{F3rqm^SVvvaJ|AHKa(p4wjt9D z3Dat>7?KRbe=2=uCo>e&|3$n9Me!`%2O5SEBIQnasdWL|Wx)%pOM9<4qm;@Cn*xpx zO3Db#2BIpeJQvGT)`QuX?*rxyWQG8(u9og@E0D0Rj7do|99s4qmBgFGyeGu=q59GH z2PdG;K=@5(HHf@XEhrdWSDu@$o#{%=e_=clrSYy!GPlWfVe|{dmkzEqh(xuHE#1b3 zUp_{*KmG_-GDSS8-4%F*2#$V56&~8?6X3TT&lG1pGw%BAs>}(vStj^w zix0b+fpS0x+2)kD?!4(o3-uH%$?X$6K|qw5+)&0KY*+8Ou>QhWBjxS#A*I`ZaIFJs zH0Kx%aSYu~6;X}fW7~}uHM6*0S0|c@Z};w@Q}hrAqp29^_wZp~w;}-CGqD?1}slYWfnux6?Sq#-l87##5F2y9hV;7kfI!(Dyft+84N^ zP6h^A8rB1sJ;^a_Q7UTUwg?NWB3pa`RFr0q8s0=C!SrzQ;)TnqY%GO&*$^;J zXtWfS*tda7y&e*VtE7Hrm1$El4nG{%kgf*Mt3z|D7YF3~Puxg#4Ll0g+C1(F=!@KK z7v%~u@(n6z?zm&phE1zfj~cu)x$Ju!uCb&Mvu%%5D+7=UyX?%oK;RY}adeB<0a(G< z6+Ih>_3k`TIK#iw%v`ldK82wi2S^uhb9H~9TL2{3^5HOb=I>{93vAFw<3H+6Ce*#& zzFvuiIn+j%qz&JZ$FMKGDRl|js(#F`4m_oUNlu0zvULl)2+WJlNWE~JfNG*<^F8oL zu$JKWH{^rZFbOMXbQMQXEXUok-m6Aj)sb3L zn0UwPOX#P<7r^QeyWmM`mf1b zizBdaxZ=M7+NR|pS5U)gkOynFR|0n-Ts^$yR(X{8!HAlCia(I#?W1>RgFgVN1|hEu zaztzEm2crbh_f^WydBL7pFXhUhf!IgeYFXw?N1)32 z?l1jO$UA>qs_k-6>8A^0e?m{*TrZ}G#^xBI(y?j}S6Q_hdVnLQYO;AGJ;KZv=B@>|Y_FNq=Ve%v{G ziJAZ_Q0AVUV$cyCT*qhJ%)@66<;?dS+HJt(r1%A`MfsWgm0yJUt_DXxSCX2`Euq6j zhp^p4sYoQ%=oCmZKw3vHxpv>Zaj_j!4U{y5M0@NKHFyk8PmT6(v2ScJwA;CI z3e8Vu30G$|k&kViRUBbwP1y8E5iAeFzA_Kp#y4N;Ui`gM7$8%jzsdbOAM4TB+T2GX z%5Oz-9TG`mdjD}63$?rTMP!Qln=on0FZn~9EbVZVOeYbi5~v?gJDr9?SP!@jLDp5Y zDcRpAju3+_1sLFrb#^X};(xQoUOrlv_zN)mxJ4{}Y~2PcZMLX=u|@k8@+mMvDRzF? zta6K8L4|LX8eyw=egy#{75fTcU|e0#)9$k+zgqyh0)1)3E)^M!-B8Rr41EosFOB>5 z1tN_airWVakSe-arj$ZE6QV98HXoE_4)FtK^V<_kO&mcKLkZn!HkDKC?)4-X99c-l zVSfWdicCP+H$c<@kG*{a%=rNi z&C2td2g*DM?%OW=5f#0~RHb$XgK4(bIMmPFQl|FP7Hk`T@FHK z|KmO(hCY<@_w9jPqhWerd&7EZ!*)bw{~kx|wKMstrcRHV1JvTNR?|hjminTpZe}(O zEi%n?8(O_A&bI7qn*d=nbl)`f7Z;c5Ggnj{3Vk}Hif(IDpJ9Ojop%4_pDSzSM{}Pr-|y{sL`hhfUfMd zu_VcR*^mwkyhSRALJ_T=-yR{m=)V&qe3=3ee6`M0%4j!5_Cqm{!tn1)u2sGwbL3+i zv^kx~aP4O6{g9m6o)BHyU_7#M9N2(D9#_3(GGa%Buf7l(w7R$npIwhiZPWqNSk>tf zXD<}#-rRFd{WuVn9!f-Lq>(koc-GiZMadVbw|8nfvHU7sTYHL-1HCpe)M3P{x$e^`omJH?BQI#WEhaJ0hsWKD-*qKX7K93B4W%hx?CN;XL?3zN zZj`^*( zky5}WA8u7B^KRW&L*uE;(Zy|gFshO*U((O6KDp>@`IZCb*wGSAGv3-7hE2hnA0 zV(((MEH6#zWp;&9jGaTQFiaR;uWj45ZQHhO+qP}nw(alQw(Z-$O}c2>MRzmnN#0~; zp68sxBKVye)qU>%qgAJug)InHGKcpc)J|hWv4@6|R8U>lA`KdocyooyU>KC+l2rW_M~h|0 zwj#*VbZkV~p8#kx$L2t3_&*L4LlUY+osMxTev^@DJw+X^93F7ArB`_>#?Nt?6yhAt z&><%pj-Y1_{0d_O@b9{N~dPiNlsrfuX=e6J~Hy<2Y)e>)E zgT|a+$B4_f0{de~#%4q`ON+VlsxHOL>WllwJuF;WmjZxV?xi3%xm-P?)%Vl61eOfy?G(AEtT(>BKJ)4iS4 z8#b6*V(6pJiF(eJzwH)easrl14Rgo?_zxQi$XuA_QT?Cnd}wM@(Q#J)`{C2Zlaf|G z#!q8QD?`E0$HvMoq32~8eNW+vCVlVCm9 zYMWzW{7jIxf)p~f;Ju5C!+JI1c~n6)h4-J#{RpeP9VEV<1eL-qhPR^cxQ&#dLkdeF zG|G2((T1`*Oi@r`D#0O8zkJH4KT=QNPJ)c1EWf|%MWj$z3;azWXFN9bSURl6j-R(c z=*GN!*mAPlN^>fRp^WaWJcE7|j)R9k(%P3`&@>clZLqT$-x6bu_DV%M;j3=!@Nd5p zEoAJm$so4gWD}xq-SDjHv_+cUtF^Al#k?{#e86YoGBQ%X7vl~`)GpI01tiNpuzE-4 zsU_L)cMfMx&ajDH7xh%?#bmWCln=9nkhK`?&F3Fh*j8jSU}v2omZu8k9*{+e8%m{z zBTtJtv4MY*Y`1dZhaaV#Gki?(sQA5RzFJD}J>}sos^FkEo;qa)_cHK^!j-JQI9#qhLIOa zT)7|)gf)ve=n#w~QdA)_7b;vUx9@(bXm!1pB>khc$%8(XO}(sb>dxsQLRf*jlx}l= zS)xT6gf8}uBDSeAU%$8>8Z>qR8?0M3w|Y^@C5K>r4~wRf+s1V0q~};?a}tv97^8i% zBW-2fB{nqaBU=d*K!OoPQ+u_T2yf0V>-zL$%s>PR3r&isVu1}=Im=MTY z)Th(sB##%x0MxX<2vDO9VAl`KqH60AFgx$ElvHJj#^H*AgLU7Sg1Y_$tYwSqS5*LW z4g`ugu^G{qraUGJWH$xUqzSPN8y=^FQO3PI1hmJmkYvFCs|2aiYIhhvy=2+3>tWSp zQ>GdgKuSvy9PSx4Ca1Q;$b%Hs7(&E=vvJ$*tbZl;YbD3 z%yy{2JoaOJh8CSv^p||%9N+3#eVUDKLv@!osN{^OpRZ{}(2C})vqSOuKMN`83)BIJagwU0L$;I{JXaFLY&(H*rUg%+Q@L(rDf}1(=v1V8t-9fhvx3w!U4Ko z9CzTHTjL_#(0vE5{z;JG- zW>O~pt2MrK52cI1LBsWtbw6B^9D?`z*%fF#yVEQezKBq!kYVC+8&zDOP-GYlswg*yZFKj3I|AmO0d%(iTP(Hri_F|q|>1oZX6`Knsa z59bNkjlGFa$y_GCK0YGyLa#B8v_7a6AC5COFWlvY6bKNoMHK~@-_tnvyyJREQNODU zTyQYsM&jF3F;5Q;ocyWJJjg1;UH`3-7xhbW&n_3gErz8;<&@;saxS@yQ-+H6?nt4m zkHjAxz@PJnW6wBzp-ITj7|(a=+*$^LA^^(aVwjE)SX zY~_sx#FbVu3m>jkX6LgfxY#Og-`Jo9y|7ag(2%k>mSWYyaKyAR1=-#)OZTM9FV9LW zqRIoAtx}jSNj##LM})_q_dk}fKo(9{Vug@gPMd<|#24J}pY(%M7Hz&Yb)GkNG=cKS zNo2ZBS>q*9H*|M~!vg2v!xGH~3L*9qC6cO@rj$Fj0{t#%72GcQ;jy;X?=*nJYSD!8 z=Tu3-bhaUzDya%EnZC2Wz#JFZWE9vG)}wPbv~;o{iRyR?@bJA~Um+fyb51@EX4k2Q zDzs1I34A^=eRi4nM5CJqQ(7BhJ&H;m^=XsVP0?xbQxa8wc|~3bI=TGfMW2%BNhsbY zo&5DI7vMKT|KZzvv)g7P*CvV> zO)U2>q{xZ{1gn2ED4oE#D!Q_2Kmo8>pfL`~@j(f`xe-l;aBJf6sze0ZfJ)%a# zq}cXu7f`@IDuG?WpCasfTMk(y(pmzQWqd3ZO~1y3=LN5Yc|*9$tz{&Ch$}4QXQn79 zUF{F<=NZ<%^qr|}>G%GxR2b4cg@IO-Ii_?TuC4}w-I*c*&A5r%nt3v&X<6Op3z<)2 z#dCnFQHg|?QuNi;iFc_kG;0I6EtP%jdk5oepF~K26buw|#6fw$g^%D>2HdEim$W45 z8tE*J-l}rwSQ8bBdj)kpWBP0{O~!e(3S}u=hF|wAQblC-Sh3$q*tjUI(*A77D&Y`g z`QNM!Zeyw40Mv4uQFli({o*oMky@}oA!z0yKc&#iAHw6U?!UrjIr-*b20}*o-eDu;Rh8ULP-2|l9CryyEot*5!U0kqbY z+p1YHKwIiFz?UfzwWJ_|tuDNHs!W~X9aaB`X&D;Dv|0+BmsIcz^@tk?>MBe@wik0o z6z)iLXWW?>-f0FR_3&3RUQ}2O4oA=8NTQZsLD0lDRPFSPP=#O+em0Gn&2Pz@%^%gC z=De9`L=qRGQL9#1I_fqe69Y$x7Mm7!Rq^eqGm>sMygmF$hYTr4J4LR3=RSN}&NBg& zFuzl8>)?1Od4K+&Ue1_M&cA{98_Tyti6m>?_hwq(JMaf(7^_dHQ}O4PfMn9LdB$8~ zjiG=>x7aXL7VlDoe#+~Ycp%lOY4DXrWkr><3axPr@eFjwhgt_)=oL6)|9x>PgfNa& zUH-6dvNQWXCUf&m4@%a~{TA{LYaTTybze8#06_k!reXFvsZs;jC@qC$d%wVa-{|oFt+GNk_Ivd!^$;?aVY;ejV=8juKsV`3d6mGn8r8SBGE?0CGy?&6tApf z+%}G1GXtKmK1hN83&9@=KyKQw0cp{Tfni)nbM(&r)t0h+fgG%563f<1LtIZP|9LrB z^YbN5O0!+r8Halw`Wk`{9x>OAFu*RH)e{zuYEH&N(Y$pn{|wHunOJk^n2txAUf2!S zdrFqDh{ZxVHy@l6IC$D0rP{O?QJ(V=IHg5;Y|~1#Kkg z11Kkd#RRDL0kAC|2|Z*DR|?FltJ8-|Lxhd{=p^AN1Mo;~)@rn!C=n1Rb33@rooLZa z2$uHFs^RK?yp+S=%_`r@-&r9FW@o?5uSkGLw2@`-i|yNK97_JMy(EGLDD`KV?83is zN**wp(igTV+we;kdP1_9;dsH$7&LsrPbiqVvAgSFZvJOhUB_od<5&rb$%>g^pi0E_j%5Jxs2W$02lEnz=41xXmDS^ZZG8`8II#98lQ3i#z zI5x9h8f7zZ>G9YsZdd|-(}du3cXs!ctpLnjR!23_3rIq%ymbY)%-Sp}|DhVR5&PhW zOddXstRjN`fMq{)&sqZrbj*cOBa^7PcD|A%LNi?h=H;__q-7?EpH|9JVvk<`@gxtR zvC_)}x+ulW0K|cDF=x6p|GR*tUl`NV%vJy6M4jLnzLvirUybl7mxurv=Iop{NSI;p z)*4Mj^@q^0NCfFhX4X~wtR}5Ui!0%KL1`m~oUV_>ukJ&XzQ$#}qx*C!kC&Mh$I|=w z7)}E`2`5ggz?|=X?J8s&2vA9yRw5ny0h|JG)J`n)gNq0NYBdUmi#J`4P zN#*U@Bl@P-V7fIPRRAlmQ%Dh*YKnhs!RO*{l*$buXEHCKwu5#OZ+hl*>&pH=L$mux$P9@=^7d%k_?t=-WEC1|=s56%>tq%q+u;&~@QL^o- zZJDjf7al+3jAz$1`7HjL{zC}h!e^FQ5(0718m0z8nu|rv1cC2>qE1&PIp4j93`48v z(w~D;`aNhM+qRpm`ouv9Musa`+F!rM_9Xm=-U)(O?MZL3;vqxsLR_A`ss7`}Pk1q8 zXMCs5)ln*W#xd(J>70lto9YO5QV?or3Lu*FjH~MdB1nunlRB7TqI$)SNb!1aequ5@ z^WSmVP!#))7+1aARAqBmnwQ8-%BxVHB&hz%ip4HhiHOrWKInDOv1zz3oICl}mV!uF z-*ZW%I- z$I1pk^+M^sYD@idH}OS}--1>&3fA|ZU{&o+jY7AgP{B=VwWx}SxLAbHQv7FNZ0dXR zuFpvI<~j0n2aWm%Apak|?lYsmqe;#+XN;O};gB$YpjBkoiM+eE-vFjA7eO=@OksH( z1UZ=D#3HzT0`Wc4RAUp%ALWtLXd0-8sy(@mw>)^=qS%!b;Z8>+i(V9uE^9OaQ)Z~u z62WAz<}uHyoUn}7Q3u)J!XYj`eI6r(^aDYjtyLKUC-dxp=$tN&aozY~pL;A3I8)s* zPqB~0;224sLfzeoO8lK_fe#V+Ap$P~(xL=4IHFWcjEsi^F>1W`^dZ-~)PRea8sOf?H(y02Ze+^q36OZ9#nf-TwSv_2-)_foX%+R0li&sGARPBU z`p6s_T3NStTxB-XKOla-%DfQmhg-}mU#qh&th^^QC={LWlUnayQXf>Zqpi32+j-T4 zNEh)Jqf`*_)`yOPVvRapP*-|GNu1jtkF*g6h>lWGez9l7vcF!omsz4y8awtvRiUoJ_&q{YcN>teg9*_6g-FnzHRny*JrtpnCxA#Oodb?XESi>iPpo zB{E_%bDEwPFwFAc2kPkCn=0=^>W0ky*@r!F-pE+ z6ys~^ifU1WD+KByFHFR*J_1wW$E*ID!#RE{P};!3Ef3}(aJq@Anx%4gB~Qur0Oc!@Od`uC4G zNgZcUVIUuC^hZFK9_8-BJGN=+D(&$)1HBGH8`R4Q4EhSej|~xj&qj`s!PCo&nT6&4 zUj&oM8-n0_w}+G)=*M_B-0(oJl;YHNcmI6Ho>}3`xEqBI`#*P(G8P4Qm&%V6+%Z$Y zizfHj2ENZ&G(@=YSZ~Nb$(8MbGOTyotYS!?Buzw-ks5{fJ2&l~d&BukwuUq1l5g~lY55i) z6jTYDq)WGs`W^Dqy?==^w-%6DKP=n}S|ny?aN@<+wPeydXU4AX&EM*X@;^8?qd{EY zkn!2W5}Ok4io!e~4#Y}201LzMf4})a-v^y$tp#78&j=x$T!k_gI;BJ^PQ&9KUapA4 zO||_D0twSaXc|N@z~Bx95k=P&_)pSxeNW3oTvaN(bR&6#hFnmd)imvc7p8fOlp7Sc zg2h7F9mPf(JCjuU06`>qTq|nC_=Mvl|CwoC*yr4hdA?^NIG34|$U5mwJO1WPGo!U1 zx();(@iVeypb@exn1WKqFLmg%^*^Ak3;&m`@yCYv#WpWg`CeNX3!KpSQ}cC`uMPwb z!$BSZ;gO~jCs^_EK&e>B!jo+x4ug2g`mmB-jv}B3I->j6V9;+K$rE|gc9PH;@Bc`^ zngr1j0YLUM>+L)KeQ!hO&9KYOv+k})`*N(16S`Qo#a(my0xEC9;7Nwsz_ z`=~|Ac!0T%b%I>G9zeY0dc}*_c-?o|OBv^Bci>T4M9%pS!uAF3oycaKqI9f@?$BBG zKOQUP8=xz|5#IM}O8xID#kY_~?&u^TFci=DDhBr6*FQw1%g(>}WxbEfDLao>O5^PT)Bi(%wzHW1e-Fpr)}dV z9D#-6uHYT}Zf#opRlohhXQdTfU?8*|S`3by^|dIs$b)lIeN40kn9^#X3x;8BFtxOmD7c&y6t z8jfjSa7)-Q#jG^KX{Fywg+u}r$=ljuM9>^B4+)kw#{)0Q z#h=p)sV$!z`_PJ?@pJJx0zZ`}dyF}LB=gXY&5+Sp64*hDh*t(mMg;Z+ zM~!gwfo;kpCHeZ+UMl-xFQsM1MV8!7xIq&L$gvi)`_~Qh)g9<^$gUm?HyUuWR%Ld3 zpCktMSZl+}&l#xv2X+JbllCIZ=uJ(iqUi~y_=z6Te0 zd44u^WOAHiPHJud_CiWnztqn)BrbAiI9>Z492%$&b0uQdjBr_MufGLXG%X}7Zbr`u zq^3w!vSOe`C=kqF*;yt01GMr1nHzYQW0D@ay-Z{-zH{>-SCAAPyw%%~cI)^e`D0!A6!}4T8COx2D8-l)0W+gAZrd z8^y-$*Y$jWMeJM6k%9YlDNZhVbMFoX#7Q>b7i8WZ3%ch=U4y0&l06G|aEcjZ9`yqM z!F&Y+G}DIGa^i$H`XvXgO*|Qouz^FckZsjpt%GRoi zZ_NKLKq==`suiBeoPtd+fOY=oOK8JoEq%C7p7bf3k?7*p3^eIkjMq>&AG^~wyslZO zuh5k%uiJnUH>rV7Cr-5FC;x1rro9)PM7`;U3Q%?vS$3MMIZz-5(y5L*u(lXH_u@ZhK_`tMTRX`V+u_*#^rQ}Owne&1seyCx5V9!%ZhH*;v{I=YRty6vmhG_ZUqr$tPVc>FaFsE^+D=n z2-DNtNqaLDr=@c3{Q!=asF^?%eJ9iW!1+*&luX&naif9A?}bX&I`|JcX!77U*o09x zU+8Hr%r$}hyWhKm{@!KBEi7wj%>=WA(l|u{473bTWwhbiQT#k`1Xv!zstm@sN|OXM zP8?>hTkn>4UFP+jIikt(%_32y?+qay8c>k4xjIins}M&i#(C=*att{ieVHFJIQMb+++g z*G9U>D?kUQqzH1j0gF4!fc6jxZwqg>)A=k7r!Z|3fgXIFtJ+;PMmJ12SFnNAvJ~3b zw&f6#+DK_+2bFFpBn=c)SeC3}&CoNLBM14DdW^(rI6~pcx-hkK4y`2z6f285Lwghc z^V)_%ef`?eDgC9$^=zYuTQ>+Z31<6MG1y-}kr3#(`9v&hD}VMGWG&db?L-2SeO62f zLvxSE)g)nB7>1%(+q?P7ejcR)BmU_43=WVE*B)M;wJrH?a7;%}43G)S_4UB2*(AF0 zL94cTU009Vqi-t^pP#kgy#r)N?t_>igna-au$yUN_xr3=ltOYh%v{mXW7KpXtEa+U z?P$Z$n|Dc1c?O|1*}o`=b{nB6nzOJ5#HVz+Cfx3?6ruOpTO)XDZk_O^nt#BtCcy<;a!`3<_IFHd*bStt3X z#I^s1jdOj7n8FQ})Pk1NG|($)o7zD|vjACXeZ+e^?&Rz_+5!dn@w8C90J!3Yhx=}# zf@F@^cMQqVyMhW2JI(9A_*ilS;I`}|;7_exp|C$0L7H9(r>YYwEpnh9fe&NitWd8lfNa}Fb-a&<~MYom(&ly>v$Uskv3KbV$%~3`BikG=AOAiPn^7NoSsYjBlz_Eh3ZX^AysF7kZ zYlknG8m?-L8=K=d7koQ=mL3=-c`8tuv7ED2nYsR+R-h^R&H6prRS)C6H`s*3P-F3F zV$fM|J&C3utJ=baDN`XCCLVreKcnp=1q9~toF}w}oQwcJ{<)O>EFkTMVONPi@Md>` zMm58t+uY;Rc{3;&z|mxHgLor_PZ_|Mp6Y zha0N}R6}Z!RYwfFmoL!W+p+PwedL^;3+NGaL%nUs7dEbhgGi*ltbdAv?Ky?=`Qbed z0s4I`FGMvx6C-btfB;IJSOqbU_KKha25u4O3RIm%{(;p4KD)a)<)XHVY0md@QaC* z;^2m8#sT=s4pl&nu~`|8*kqi&OR-PtlNXP%$=GSZioZ5WG?ZDk8(lxEcICfuWPJ_` z@GXTY2$n+Sik`qB|N~OKr#{U;*C^|W!3+xTpxfv2Ruxg0XzR{tp6pDgW z{7IjWe4wam+0mM$)vCp^R_H0|vKTn)CZsT*Ru5xPAwn{(pB%m=^cCTgYCRdm6c$}G zjjzI?#k#bpa9XDPyk7zL4i&6Pz~#57qVNFZt0L)?t}H#d@WaiIq4RbV*8dw)4MlmCcsi>77l?aWeARPw8NIL2!s*}>-N~~NLB@0cuQH)a$|+`tP^#=k<^;XD++_W_pSQ44&OJ*ymn<4Wkp=`^1uLL5PKNHJNk$DNGeww*{Y2)ij?^8?4JZIhaCli|c zST*67&-aO3mLzg;djpO>-Uh#>DWGrGc8M!1)pPQB>kM*o?l1{xZ5VsH6s{Q6czt?P zaxzedJXV0it1*fGW_7F$kpkO`?2;v}RAr2=zHsLVmXrt2Au@txnk2m`l-}Kd+?&$5 zt!%Y5h_Hw>g>BAM?qs}ZiHNdi!tujV$A5%MD;W|$?l7cHnFxg%)0YE(n4pb@|A#h+ z`G0D{{x5A1D+}BImIM8#4dP&CWBK3P|3e$Z$-&J2zZ_HlAKIW!SB>SpE3wcfmWtziM_ z%Bn#svjYpTBsUia(-Q+@bPx)vO76{UE(eFEs^FUKfigM(IW{*pI~FZ1Nc4ot>e%Ao zl1gd`gn=_FSOrG+&{HAe^$pMk3qU3U@C4{(OF)JvAc{a8S=Qbh0UQ9ZfBpeg#3QLI zGbli=!8kQGI07*XD3Idh^yt{s)@ysL9U7Yc>Yur^b6^SVtnJRv0qYw8GPpDVk2X>^ z0H)&b6^md4`{w`*z?#`Xw19DG0I~^m0@A`#y1)d*bw#CBgA-u1H3z51$LEjyIwUMC zttJ`(Nk&syN&pFL&;nx8!cTAVvI)Q`{ix6an#h-b|CN~DxpgI_lx39VRil94yHtt|X9VF87Vbza$Nf2P3YCPC3*6TH zk%OTQKD)`@^$!3bAfEAUYh(%kj;X4usDQ3zZEbyw7sF( z$qUkgW1F!hXCB5pqajGkye@Am_1PU(LevFsA zd?f-2o1=UEu7C6O0o365@cf+w$CY;G0z&`+IynCw0SSh_(~l{<_&tj{pKpeGBFQ6kOwv zfC5bY2rf`j{fT`qP*wROuqYkDAA$j}{t-~f*YZPXiQer=08DK@!v{67eFYaJp8kpP zDCBn%V{}peSqEOix2|vfO`aKqCpEo83$1~DvL6RIg-k)Rwf<29b?Hs>Cm?SwEuG5C z*X=F*$V2As9mLtu`J)DeY5af|=G6Q#gw$ZWxn?0c)g96z81u5`e{{}6H z2LHG6@=rVqsC$(+#j~gab`kh{6i&Z;4~Jpdc;Me&80GkJ6prT16q1L|Do_$6fnSAjg^zju#l&Mu}t=V#{RD1iDY#Rpe`o5*MV79)7;e?ANh z6Sm>`lL}bBtRgaz`429Q~Ys7u(e#4(DbGhs(cdB0%Q}O3S#eaa)g-1 zRK_I{N%F*2DL{k|to6-&!N)~41%=fo59dI!S_(S^&R^S3rYftaQ4wjE*{AL$|EVNp zL!+K8OUW;!V~}+ZT&dz}iMnxUlGpJwcf$_^to=+ZmFfO=ybn5nNRY} z2g5k(j08u{Nr9`7S_^PS%&LXGzYVF||1-dwppN;0qb0#Dl%TO<*am1s!fbW>9YD1< z-yArUfD1k{Zm3x5?Kwm9BwIvfA7>`9u|cCN6O1=XOIi^?V#thd{Vtb`*AhkCS;O-L zqyMm!{H9J(!>(*x7D7oMU~6{E0~Dz-EhIv#>}oVNaINda1NCWk7d>*a-SarICyXLR~`D3YK&{~WJ;{+5lo zM?#V*DUN$zZI_$Zv@RY;D3ba-vQ5v;BR82EPg>+xI2g!Fgo6KBw1P%a zN`fEp<5J^U`>E{CFQ;11SPZIff-9ss8wdL*qq?QvJddjc&i$vG13|b?L-4Jhc(4fN ztilyMR0ExdZJEufsC28;t`AIMtoxl+Af-zpe#=6&r1)1nae#jKG4lR!B}UpE%&}=u z9j_m6?m|YJRhf6vD>9X6X;>L8eG{EL=9e4AX2_1%{sraQcqw1`HoP}6s(wc3+5$%0P^^qs)j zp{U^Y2|82}pTG+fDS7ji*+r$fQrzgGaqB##AD>344)xJ+uO~u$22NAPR)~DEq|SQ@ zPNZ)Bh8b7s^iDgIMsYN_HYS0#nIx)hSlCg~nZP>}ml9wEsfImy2+(eHW7!pz@-nQl z_XSf-AKsmKmt*trhD?9QV+b+1omkW7yit$qNNyzCs@)zi*B&~u!-fXfW9QOw22WSB zS-J6GtIBQB&@iF&1kQUT}Fg^|Tx6^uQ!Ktt=?? zul9gpS*PV#6{yMgT6yc1p`-#y0?kUU}s>MRz# zJJI!Cj{`Hj;Yf1MweI`qw!$=Bu2OhVnEM4oZVu<)(7gQLt=Jr>W1BMj&Sknjw%Q(~ zW4-F?)>M4^c&k`P<(-tI>P1*zenky$_Kyh}##UA+ZNIV5LdwltO#{IIIwkg-VPZ%0BU-TYM=zZCvAVJj;> z`5w#5aSKX48_m+7k;g-_g2nX-^?jTDgdVX9O*o&9K))nPLr(V6`2={*NA1v6k4oR# z$qUQ0%}jiko)xUXoL-as$3xD39Y(0Tbbluq=K15d1iq7Ss;x!;W&WJ^3cTg2HOZa~Ui^*2;2cOvC*!O&Qhuw!G{ zr3>MOug>~hqz|y!FJu|}d>v<{jbh?;LXsK~U3Cq6m^mHfe+&p3+MOe${;W`a+9L@m z@+nJ!#1rqAtBwA7r!ekZO%t#gjR}&fOloa{FX3wmwwt4);t6Ibh$g3qNKDL#nZlOneDK&;^KqrM;p0L$tS^vn` zj;cQZh2I;T;gwK?D$%(Qsn`6?=x$pzLbpEhEYuN&L;Fy|Uh4beY}TwigqX{vq7DPrBia+BLcgv+mpwf)M8L!QR#EG!k%=`C-tGq+qHk{jU#0UQ9>$_e|UF z8T!HA!ocLMk=~WZR12$)i-ga!{1e{!4aL_Y9Z`o1Gh^Y8{?KEPd-L{utP}TxiK6*E zA?yF5(mIW&>!pLdSXhch9Q@#9tFD#X^-B?6XHiK9kDjw({lyp{xF4cWWqx5Esr1i@ zwZkM9>0a(}6roKg@mD9M1wl4>8soT&YM$8eJ?6QD_+J|@pBg{QGR zMk+DZH}GV~18FcPCUUTD)<*fDM>><)>5t`zPqx&uN`~!hqP#n6oJ>L`biYt~r=)_K zw77pD=qoguc3#Jf&uDjXpMo(dH`-&7O|#6*7CS79E)yUKx4c$;HDEpy4sqL}KN(l3 zvr_0tlgl%j*V`~pOMlb}{|BUZZ1{{^+1wD8mg6B4qY0+N)Ai2pOvsbQ&RmjETeP@i z$FO4ACh+;;8QgcBL$eBR!6J_axoR`Gc?xZ1-ZikvN0z58yGzP6ew56}@UUrbg!F-# z*Q45d_i>F7a=58yiu3^L1E*?Xr=3xsb>Ip8g|{`vo+>u8dB6Sm+qeK+J|HouduG~N zozGhma%7lWRC~4Axs6K1D>62wMxIDabhds4?Yd-7!k&c*cn(WWKf)*zD)%kj^d^Bu zYp9@-(<6s=zXYFt-c_^kCA1Wn68IGgp@atPjFqHAboM6I<)@x#`N{zzcI+9r(qL)r zGM)m>4N=Y*pd2fy$QQPkDU|pP5;JOqe^N{EBjPwG)dgbO7zVGXgV$kQdr=hLg`*Yk zRsxD8e@Wah&Z6pcV=?a)a&!h(hgMkByn@begOJ+(sDF*~BU<|F!4dPt0wrKte^%4$ z{mE;b%QM0R&!nYcb2bqK>1bLd`xRR4yh78FGKGqU9Y!mIqsWkPr3zW&cjuFeT@8e# zB^+Xdne)A{Kq(^AKeKTk^TW_&jA<|Xp1ED@;hqQFydAS_3zMQV@bVHOqm{i|lkEgtZ^%xwc+yae| zTZmmLD0oEw-`7a!;g?>fM(yj$tfR1FwKfG#Ir*atNyD+huwnpC!91P3%A9q%LC}(8 zJXURu8R7mGC zun-nLV{nC<^tF)UK`a4WTGRB&xyuJJxjIC~ag2!k5qCby8VOpD=&t$r2zS!P@~^Qd z@HyuUC4Ti}R)A=*Cs*dR358QNY@;&&^2OMXZsb><#h$uf$ z)SS7aFXgF<7)|=QESk!lAQkZvUKVFQ_$enJzn9DdUonaqq@j+HTWjFB*I5e4Ov3Q{ zSqim}GhtOsk{?YHmld0QGoz|FlC{b;Vj^)eVu$thK@4j!g94K`a5mCehG#4;Psun2 zOLk&g8lH=`b7wX;lGDTolRDJ**0b{{i06cwhf}K)e2k^D))L`Ez>$n#8iZ~4#_s$< zfabhMwYfz)OD#S0w&QWSPVt<_T20~_xrp3O1rc_BLO~2+Y|h=0Hq0d<79(9KzGQi< zhwB0)#dSo9hG~_}=5b5&ck0E76eF#4YDBaT@-z0?-5`B#GSXc%?p`9d!8-J-RHXY= zXzty%n1)*buQyUAGEg%}78NCg#jwp(={!(>5{W%Pj$Q_;6I%Nm3UvZl=`4n5WT%Q7 zQ$AcZ9f%wnpMfS1Xa9Ef0E$v=XkzKTT-k)q&>lu|pgUf3MJ-|wE&8urk(llkWdTNu z(6_M64ibuc=;$2~JR2-JTsSM;bU)drSoLU=e(Bi~Vc-qx;!+B44!g%j_TR`)NbS+P z%L$hwFwL~Y;daI4PMJ8Nyn%z%-s3>6p&@k99dic3dU-wQHTd22q`Rz5JSyBZh7#kC z+1zDIh{?`0IsUX_FG$f2x_?js-1k9hEv<=14@{m)mFcBivRGa7VQxu$cdm(YqdZm3 zUh>_3{xf{c2SwnAaQ}RlkeTm&6vEZEq63C>+HcH z_ZvPZ&-!Kpn^iclcf#;MhzpO;tj$>5OGvH0jxc#!3|ys^xhEXl?l z&Hv1uWH+`mJYi7A8wx$$m~oXEA1p7&E!kP40GxhBVyQn~*VFgtR$&19D@VE|o+2YW za!iQk+es?u=dJ=5xtyIo-*po0$0-t4tIrT5sNWtMq|lFDKtybt+k$>5)UxOH&uzRh z#`8zPE_ud)ZhoUhs*+DYW#y{zj=HDxTD1Tek`#J@m@lH(Io#lm9F1XSv*eO7nPtxXs? zxAu+Gc;MPv8>(lz01BJF&U>=a^DlBnWD{BG593k`m}*IlSf$$;1Y=&5287UKG@W;? zJ^^EO%YTq|7HZD77YuE9&cG zgf;>|t5(|i_U zEUHJD91RGyTc_|SZpEnGbNmD1B}x8GnjY4nuh;yg3zmus5gx_tUKaNlrb_4M&Bnuz zhcamQ?7W2vM72aZoNbEj)S#|J<7}!kZc#4R5{9tHiVEq=c=1WQshYu zu0z&ay0njvO5V}Ip*{FC#*@kN3`VKR@?Kn!^6{kNNGNmq5wIn?R+V|bos1)?4*yeC zz87k3FdW}I@l7-C;tk3;r1yhs2WZ-rPYws z@tJR2*a2q585v{BNQR+)S)E)+~{<8IU0QJAYZ);h6#^=2U-TLv6%6eA+QE^usa^qNE#lM5Ipu0aPpMI@2d`L2T$TKZZDP?9-{T;hJ-qfRm0Iv%gPpfycl=ZJX%Czp}aDpZm@GGF~Fb=I@Y%|)^zHeH zN6zV7TGCK=JMVY#C9$NP2U?5Dg+v30Unm#+xCHVFuVgl+p7p5g$;avN8W~wV;X9od z>fw~px<&#zH$}h7o|{QN>ahDVWwe*1?OgjrR&n+b0r?e3X7hH>lKgK_aI!MNkUA`o#P^t|z#PSXB7qBZvaBNF4iK!r$mOAjoao+C{ zEu&}B&{;`UlqFATKR~+Qi=LP^9A1-|UY7vLatmO}$Z96*FSppR$4X zTGR5(*XB?diYQUtBdvtxG9eZjZQ6b*s~0G&#o2%cJbdRl_;WtYbm!*X$|6PO(3(Fg zMM^;YkLFubU(^uh#0svRCOe!sS*nphzIZ&1A7No;6&yEs=;ugHD~f5AoDF5|{C$b? zJPSGBh86A*B)PcHSobx03}(s#Qv~Dc2l!8F8|+V$>QL)n?OX8RE~d4{kRz?kf6^hM zdZR(&etpq11QB#R5!25`s2QV=ts@f%M{ueKywo;NH$0$n==rc*YkknTjS)f+^L#DM z)a`U;?QZKgs>2U*{}f@ zAAn7CF~w-|i*uIHzK*0In77!av$xiJ#_QlHyS!BTM*)}t)>#!{0g*x0J7i?#WRud^ zAmSn8>Bg5sih%9Z4L`ml#V%|#!J2muI|>p~n!cz9 z)&)Aw3sU!eYIDTHT}bJ~|B5ACQbFFJ!s5-&vhG@cp$Nnb-qBLd(K@1N4x0gR_UZAc z9$;LuFQTmzvFs6YMwpp=5oefw0wVSk?!H*`IDThHT+MHxT@__$?-_?*_l3t%R4f5i zrCg#E`yG1r{6=8oz#vu_a7?7hM-txq#02=T8+K<;Oa96IHN~SFnyKVVbA!lj%r?DU zx#oQlLNvLY)4RM_!9i;nGT3QZKT!_8?8YHWM=e#ckz2fz2c)HftVV8KlFkiPI`Zj< zPg|2FT#+PdfWxdz*-?A@EQ1(W%`Sg9m+zgPaaq3Il`1qlPQ0PVPjRI0k#F;Vk!3uw zqiD=<es?}5|TbC)bDVWnT^3*kNX3^H+fs|n6j+a)B?M2mAP>2N6`yF4FG zU0uXiv&2gTa)bp1dfmCn+aGC zrc(>Rtv>LBaW>izKWLF3tFXA4IeztXOO><~v5v>YQ(}3S-9XMKEEH3`3wS0JSvW<5 z8*CKxtNPm?)-fD>g3M)C*&HOysQT0n|HFQl{myEubw!!9|NlcuigknqP#vsqfSWpjP?aZuO9=-u=Dlk2 zEozthyidydja=jxLfs6fmtmPk8>P=I3whU=POosSq>k58SMV1F4YZ2t(BP7o`qK1& z_Hwc|e9_bsAV{m%0AD?zo4{X8vQ3M5x0v^t8neRK@HL^cQVQdGOSN<&K(u3MW+TSu1KYl&? z=9x&xSc3u4(})=YWcO-``<%5d&ckJFHF5UI6e1L@$fKvVFx)ra19ue@Uv-MMnx}iB z%d#JBA5F$5ODg~?-c|Tj8BintlEe~JiG)LQ0gm}ea&p+nA;j3`{5rD;HVs*22=<2V zk@VxIHbhTqh&_4358SPaE%8z^!U#_fZ%*IqhoBCQgS!1bna=FDG&c9v2jZ%1L4KJT zl85HZxWqNifI|(<4F5ayNW3cKvUEjHSeRP=5Elh1Bz(gC@+-;9Y3})Z0B?1 z0r(70@}<(`S<*LR{L)jTg%~w41JZdL6@c*2A$W_G$~&1GVMjX1?91NNL{rTJS*zyk zt6h%;)hb@4TjNNEE&_VOF*E!PDki`aY&~)cjOp&9Y%EK_T08mFw8(7R85m!Cl!jIB z3FgKMLcsu2$idapT74?$bWv$DQ-LFpFW<8;$Y~Gru-Pf+HbQRrp}0Xj4d+@|tNVRU z0~da=Haa?9y4 zUJ89t25*0QpaSncvz_ymaWz4X zt-L?x8o%xw3_|0`mLP*2OT(?ScUn6WDSSIGhp5NhvtEX&nMalgQ57o6wb9RyZJPGw zq{GPhJPXxEe9P-M^M&Pdgy+DoUt0qwQu@_B8UYcPuw9a~nqiJ0eDuK0i0EV-S?_=~jwMx+NtkQMA_$b7 zAr&k{v%EdPuVf2GS0)j9Zp~o#X~;k52@&jZM6XR4ZVzG?>3?-P2}G>zrIA1|0T&Cu zA-Xp`@VCcWR7+z-oeTwzXv-w)3A)($HiJdn@yt^;Eaz`#oN&^< z*k8U&fYj>D);f0bK%Odi3_EwVfF*=%vx1k$s-oJ74f-RtH;AdX%GRp3X8h$CW~M@V zhU6JVOjUU8fmG=pgso^~R=7sk>+DD_UBosL%^M$ue4_|`FTth|(B3bxFG91y{lT$p zPoF&3)*7n}J&ZM>e;F(Ae54p{O-fujyfVYQFHm?J0;|<(r#S6P+j|usLNFl%###*Q zHD{=Pf@ccE(SPtnxB3C@m6CC;JY*9MRgvFOBia`+3n!Uf|1l&?IW%9W#h7b|@UCVJ zB{1uUTkqve0ioP>8@!;d_lPTU= zs>=Dd%t|RMVr<51S3HItlb11L^4QGw%GecmXYueA7sN9+2w_t1%uo-e(KAkCsF#&p zHzw3DRXt8zG1&W(w8U58CxpDd(0i!95Jnkk%iDH%w%+Xx_gkJo!Q$$(h;{GN!ZWnm zFb~rLDELb8p7-LJjMLGr|BUSZK6-Ctegn*6lFx~vvB~LrRYIZ`jV6FySv}4<3846y~IT`C1C5*rMjuR~6I^ZTn z-iZ^9zHZG&r=aHX9{B7SIkmP-bDMwhg*#`-*s|7qj&K4X>c)I4pBBev5@@l$*iS=& zL5XW^Bj_)6b~*4=gm$dOVRx`*E#Mb^*Lmk;%o$OoaNjh55v$~KX#Pq3RPhhz1MLj_H5j5vNY%;e^ zH;w!mdwcOvm$Z9HH#@h1-nu5LW?BwI9z7sY{#T^AYP~wFlzVUl-9}0hTm}2L+t1*t z8m44S9?i0BuFKCAc$Rvfo-Nu9Yf71m9^-cyfEgE z8J{Yf*~2!lefE)!MqP|vd?><1=BnVdXf%SaG!2LzU$bRCeM;x7kD;{;9E=q%iQD^B zbuo7mL_r?Wlkm9Z- zf|g3;59DG`BVSTZ47RamDzGx6@4K`vQ9YxJ`&!bn*Lg|bSiE;FknoS^4XJOvGmE<^ zX1h(GeviE4klSm0^rYxOEfX;Z4l%e06-c#hti%WAGdb{?lykcj zwpU+-%%{S*1_;`ftGqk=qEo7PU*fEN_;B`0{x)h@6s-G41vdZ21pCi#dPgwk-Ua4*iSf`cZHAijrn%<6`{Lgu6cwh@29WtHI)Vk>i= z{w-U1&K6Q#R8TuNFj&xb;>5VUBPw?5?P5=lao;1R!%evb=_$*5npZ#M)9 zMH$BG3Y_1iK4Uteh>a0nr>lCRat@b9)QNV{4jVFC?J;E zf*cx*83)EKI8s zKyZTCO!HB?A5YPM^!>g}?fiUYl>jcfUT0>jbJYLiv&Ta8H;SD5{9~6ys!YT2e*g1d zI}YWFwzp}_9KMldm?Dx_qhk~kh{a<;7zu2go`hf9UNW~vcVLNmYuZK#qR%3_`EFLN zh`+X~DfD1gNQAF#knEnyLqkvpCw|uTD&2>piKjqjxQEpCZD>5?os!?QUdk`?ew2I{!3!n@RXW{$(1%Nx_E~%;w14m+1o3Dlkjcqs)@ z`-9c)V4}!WeKG3*NM*Z`@zm)KwI)K^b+!{p@_~UyLutoth?mT}bl9Ygn|bn>ZcHU1 zt1M+p@iX?< zyD9Z&$#n(|!=evy*r$$o1Zi9jI{jV(qQBmI`A~*eI2Ig*KL+PAOK+rBBgPwfQM~#o zhp(tHAU%iJ6FC5L@r8W@aP7qIN!XKZa_N+)r9&~kC`6J3S-YZDG=mkHhUZdalF=!- zs99;>a2v#6Ksl&FEf!mPvlUGlhiz@={PZT}QN!m()_V0Q8c1ZHFMT8>?!)=qK2elfAC)3Gp8k%WA2RWeT9k>CHa;dW+>?e%*6ot^>@p{fFEyj zAjE*8aW~jj>gLhL>jy&1^Lsl!ne24J?-Qsd-17kaO$jj~WS_VowSl7#Vl&~qiT8s@ zn@9|N*)>&z=kgym>E2lc70<|NpsH401<8L@U^($(9#ox2gT+Q$z=|H;G7JCmVEoR-nx(56;$fIf%z;O7AQEXc=EXeH_?5r=V}koQ zkBQfemJBY}4=7YKv<9*JG!U9X1A$K>H7Rikikk7NS-KN>uqCC-{#7TPQ!8DEPM*%5 z(K$d_%e!Pv-V@i2r>Jz#Uif(w+1FpZSBH~9rL@PgQNmucBjBJns^9vv@lYW;UF1H#C*tN$-yLOeifvx3}%d9*loJ3!!s+|9>R_7U(NTG z-4}wST5s+kU9cGMR8lWDVPI0vhO|m9+%!J3s=Ndb{E>6-$8>YJQZGvO%~PGKjDB&F~JHhV2B zGq$wdx*dkw@aP(k?izb>o_%g-2ObP$5On&FH@iWM}?>}r( zA+J_{pN{f=E6YN@9c~eDRZT9nI`kv>0D~7jYig-QlI~irwly0y#8^3mPM%>%;2F&f zthe4L!@Cj#xu$IYLO0gn&Ee|5e2+)%KUiH~`z$o|rQq-$=JqtL8dOg>IQ3}&RF8cx zXVxe1$xAIJ+_5(Gr~;3>3scFFIn$&|n2-$!e`%2cvgFn*y{qi~5LJJf-s4D2vY?oG zP%DX)FyC+(-@;8}zD}^Pd%>!k&kq;-^SLj#3o}swm4Zh40$dUm?g7)2MXCCnE1r^s z;&RWWR~SKFNPoEHjU!}bm_Oj#9-62)f%F4rkK)r#&miAqnJfr@kKON88`dT z^U}_XdgX5nBqm6LCFHUz5j@`vnD~NvXV!t6_l@eio}%C48y#>ZHjsQ zAfC5UYH!48OWj5>poYAFSwn3fe$-;7w(=2;5K-=7HJH{KRc)N@)p*eOpu0wX*AcX9 zxg?R291hlSvfOT~XMa`JoNVSOs~bI)O;Y1C?@pe@x?vlVr11J!&xT{o*Jvjxfj1Ei zOVPL5Az26P=gmYL$orvFZQfn>^zAE?HjZ2SPT!jKh|wUWukviYm!F4RPOs+)hf5SK z)`k@lQIfOQczK)}gbai+Y+93$!fUcHsw~3cGDr68PsriL3lfkR|PSK7+U$O5!huR$1qJ9(~%EdI(7OrKDoa38SUJ;i4-uO;`DL~ zF7*pIrh6ZSUlw%|1SB_M^P?JQz$?bZSaQK$ z(nPt5#f_G;ZV^~X+(m=@)Utr9=9blxUZ*z9*bwc_UV+e+5c>PH2u9H}QF*JC3HgoP zaI5WG2NCBWV($iKor4;je>TtJ(~U#0d(26q`cqO@;yLfAjh-Xa_G`Ck1VKl?5a!rcaGB}+EB5dxlFc}BV zWhKir+@Mu9bN5lK>X@CUm=3G%#e^-RJ+=Qj=d zo1b7Qz+_D?VDm#}%iB!*=oL!>0$OHwUrk;il{y4cYxiR2;9hpWW2Qu)yaQTO%d>iM zV^9etd_kDo=4?U{fhgOM_JUP;q$Q^?t4P*B0*ibd^JJF=Y_sU;Tvz7CwM1Zfms^2! zWWc%dyBK5PQv$7ZQv#XNX?mWMvP?bwyp_^)RnQ?JX)Jz!BhJCqYat?QtX9-u>tXLc z|6!D_eU80~&R;)Fvee2%q=36v!LA_DBIX+9XSiX&1 z3*3UXRnSj!vnQAng zorgIgId%%^{SU7f6~BfmP|?j@@^>9R2+9g@HH?eZu$zr9dQ-6mXH4_~Vps~>SLH}$ zY0RDj6A6B_hGs5R%Fp#{vmYG?TpLCj9OQ9bRR)!&d|98*#q~=v?`z8i*x)H-(pg+&Egrr>4r*NZ$m66}^=8iMla9@Ka+s0B z(b8KIrM9Y0Z{1_^@ON(gGtGFp6Q)T!y1mwDI(p}ou^IbBiRFEles5TwU>0undWT}y z?!4d~Y~GJeiV}$WP!%GamgJI)ytDd8n9 z70K-FYXr}xP`h@qK$lO(+T9ucE{Qg!?bXdV7RdYExI%0>+c5{FVFVnkE*4|A4 zoXkSHgfULLd7uKDw15xj$LP(EI}J|q)Qr0Ou$RU#bC5;}H+=aBrQdj`yHkf087Q`KPPE21FdI`T25aCs0AmY}}j=A~7O z{#RXx>}{m=mDKpIYNZ@+;+pXZQ4V30&1D#gk-F%ma^BK4-xN=-pQyI!C@&G0ikvj= zBH?e5-?Z_QalGd_j$+~LpBl$hLaD&Gsg@6B5^lh}rE0&)ZaM*ZoVySZnSYk%^ik+{ zNVZdlzFV=p4wCn1I}ANh)mRLh?}cp|)v9_pclI#djrM9}24@g(4Y80Lc7!L9iP2U8N8_It?h`*m%70~wle3yUM{T0w5$U$=Qw|@fn&BZ%8+g8{{gyg z88!Pj^wWzhVhBomh3NlZU~58jB*4|WUT@; z-^7ZgqE|3#@}ebf*{~y@Z~?ErDZw&-EFLW*CwAc=A&^;t^B5*8{RLk=nt^fcUgO$u z`DmjiG@f8j5&ZLeqKio0pu}^+5gwgr&0vqsPG-q)9$pC9nX`7z0}O1a;+PA$=Y>UUu*;$B;k zw|U;sp2+xG5n@vuPgx7*8c)g|+#bYP9{E{skJL!9v1m)xr6-1)hiP_QRLwz_B@m(kfLA2 zH&VpF3RtQ#f21N=OV!-mG9fLGv^8dM(4waorBgYgOn3Qi4wdSM5<#^i8z0v;u~m%_Je zftIrw=+}7Y$2zZ9zUyJ2w`*3%;(w>=iygJDbT5vT7$O`up)d20)Rh`dzAT82N0i(C zNJ!i&FY)z`fyw_{t)7S>P*zW$8>qo|6&CM}Kkqb_>uf@7dtN1EVeoORqkEY|r6aqi zWqc?}ynGXrz0WR?i^UHn5zo$*WTh7z41n!qBiJGNK^+}|8?#l%U31+I-i}dX*r3fL zDh?*w8K$=0GM$B2mIi{dpPLj#Woi3?w?l}q&MtvgLh0(u`-v)a$`PDNan%t9@ranC z@$DRIi6#^Fy@gb8MNPKwH@S|*GT(5?@XW-+O?haoPBo$h@(ZOSju8#dUO65JE80$z z-~b;NiC?@uV0in>n#o0Wykh$9N62pAbIyWNwtfFb!w%<6tci04>nRceSYwJ9WpQU%l>YwIA}tE>Z86cuvwFZGagpCx>NkY0KH}Zvt?Jg@Y*$ zs?$VT+ug0($_tj+#i zo`M`^KAQ@)BDb)#R50i;h*XO_ZR`Y&CQ_v{?wcEg5d;@B&C%q&N&qR{gC}_iTyLS& z_{T?KPFORcbu7FW(NeU&yN)-B$gd3RGUlK@S?3$K%)vVg83fU;GI4`(Aob1@czE&{ z=r7;5N138>hcS@l1p|>T1YO1|jMNtFICN7+5@tcL`ub#48NB(nq2gQGzP9P7umVg`FeKf~2y3IiA zga#CK`D$#h;*Z7yh2crMK=E+%>iiXQ(&cY24{0bdkUb!ml2u?+63DaHz2-r8(TRt^ z0)dNnMk9pG(t6d>)Ijsh6{F&mlctO38du@u65W9*Wx~LvOPAocHTCb|z~ctBUP|g4 z`kcE|i>+4>?=2@XRgO>a*YiMt}@@9R5gk|3;7%8Stc@B06i2ftsT#^u$tPSoKxAIxk)7H`O zuxB^Z^Ju^GGN)5pJ`jE#I+UV@nYifZJUGX+WaX9=3tkx{FpmcrnY85F50;hZM}j4C z*EEjrv@hLoszKBB>$1n-hoQ1VM)-Wt}4Jkqp0qTp(HlSZbK zp9N2O2VwUr3CtV^5L4=ske8kEbJLmo*<7uIe6) zTqI{2xA|)2){UgY(fGjyR%KZY8k>ZfA3ClflxgGhBSV|@7bd4~XTDv08arT*K#4RD z1B}Y%tYxM7Ga%g!^&M<(t6>97eV1Oi>GmDv0#)Jcr3cP{Z;nWSydTBN^Nh{HOWoL1 zR$17isT~7CJHsZLbW5PvUgOBBDhgTD7Hhi9(pwGjUeS%4px8ptXDGR(f7C997ivRcux0-&Q1vp-(Bw~m=_rf5lbazn7%@GSdc zD86d-;)N!XIf@Bm&9?4i@AXYB(s_Kv%Y^f8!$|UXW;7^y4voq__Izv+`LA+?=}pvc z5Td5Qrl||A;oKg);0kpN&CPR6xw0R4dW;>6V*EpMzW?nco$*yWwmLZ%Ji)Kc^U>_^ zV$Tf(!pVAb0lcXuhZ&1oQj*4ND?BbX4W#OuqwC}~*jw0*!5MJjTKU~Gwa6cPjSjv~~^~=q43=g;=`GvoJsWJzvbcrh~oJRe%e9`I>Cv`Hy-Co^lBq@4~q$voc9#-X_w8e zobDW1M}F}P9BU7kvU5eMgBIRT6ABAaB?!hDY&Chw z|AAY61ZFJ1dZ*9(A5=$7Eg}}j@y@S`_RjD$x9+gnYF_DKND4>ge5JVqh&N3xd%e1H zl5x=^0)gW0pIfG0%f#(*AD2H3>1#zZ_35{gF|VXnc*NtjPxoGT;UDGI4uKGs?T~;- zbdJ7piVjdTUv^72`(VKWV$Q0QwFryKC@_Ox(|6zueZ9OoD^obJOq2Hq(wB!yGcV>; zA4xm|TAP>_01c!)!Jd+pRPp3Z_0a8euBl`or&LqAmu1Y=s>L9xwv?9lJdK=0d>32q zg9pO3w?MiH$=|ML2&9VCld%T0gYEZ8*$%`tKKo0Ufu;LD^Pc5BY#7PW1F7}k&K=iJ z9AJUg6Bl+p3?ghCG^%k_9`&>shjLcU#o97gT1e-~yS6&YcwH}AXaytvs+RsZ#}b}c zE>bREa0V9u`N0OZ<`WVt>ZsO@OD`G=g}%{o3j`J?_>6~0z>FV_tPh19{0e>Hh$E%P zrkx^Pm-NOW-YavBofJtK>4P8>^1*0YXHelJWcPCOqRiV!CIt0X=)VeKJXj0}2HD_a z7PJb_H&Hk`lZ|P$!93Gs-!%xs$Lq#Xg5D-NIHb;+U>lLKHnK&ej|;_kC1O~*?8e&2 zS3HiBqZ!rbdRMxfou-Ss+cq1lAgEp*n}K7pG(bgrh+`L{dsvX;zH5zA1xb5;Y1UHK zSf+&PB_|~3MhxaP@rCb+*>@TByTivkcbW0(l}VxJAD= zB=;m}s#@03Km4EluR6LbT&oLXLh-bt05*sSj~{KL!rrr{B88Ck^C(Z67>NkCE*5@I z6?3G-oN#FL5^P0ekSXY9OKLOm_tp~Cav{k(vN7yF@)xpQ8y&>4yQ}RFIYr~sv+PfI z2MtfQDG$ugQAta~hSc+5(*km4*oy%g{v~x6u>T>KtGtY4b%}gYP8->K+Vssg^k4R6 z`Wrh6&XF?%5EZgsl6E#;Zoy2*o6CQHd@;3cNcqE~_A}PqQ)T!SI!M6&|C{3*CBvMfUpvHd;bThy%U*Erc@W}pC@ho#P z68l&^YgoV*;OpZdi5t6--^hRkntbM9($;f*q_7zF;D*?}WUNc^rpay3>w_Vmk((VL zAOl8_Xr;X%7t;w#XV#)0EDdZyhu#-7$#GP9be?!ALjsC0P7dkF{Y43f4FFBg@wY9C zpj0f7<4J}-j_xOh)ZB8nMi|bR%{q_eCed;BMo|dp!4PnDDu`JQHnRi+im3(<_-x>V17&C+{)EUSp05kPH9OW@XB}ZYOfvu^vZ5W*eRp6} ze9Z&X5VfbJ2Xix#&T3s|sAj({5tMTbtqN`qbyM8zAbU?lGMO32=d94e^~Nd>O{e>n z`mWD4W`N4Fiz4-M9SlowDN2cFr!1s-q|t7GeE4LFyu%n+e;_Xg*1#oR1^VNLffB;V zwa5)%YLq%@?t(-My2mpzX(B`Tn%ncg;uH6ayl5-~F(e&_N!@yDPxpS1ECo)5h9&6q zS7lQQk>yzA$q8*aD-ZAb&VxX8cbq}EIjt^_YKC*Zo>bIiD=ED-aNkH!c?(RCfQ zc#tJN!*Hch0fJizDOm>nLNW+5K?V7kA8~)oOx#rsDgKyQ2%D`5U|TReLekVA2xxwf!jtX3@ z(k{NmQg`D3Ua?>2U|^x=a_{f+abT}_#RMod90^0KWQDa@%KnW|`Y7Je!1ZG3K-wUP zjp>#poV6!1<~V_Q#w~-JHQASr(G$4)8#AI`OU#hAt@};K6xPs#CwVs(qtEM}Gmh}r zu=;WxeG!=lP$Mq*K+q}~Z=ysG!g;TyGPQJitCzlXBz3t70 z$H-Rc{np?Z=x6<+Q@<7At-A&AMikwr0)o}zxv_sY6wb>&SfHrHNS-5{7vo4`ug{I) zlg(a2cAX!F`6sz`Dwr;gMh)Qg6fYPp9Rg5G?LtQ@bm;cswL#`T|Mu%dezSTollZ)c z>{P_y#489}Vb^5Hg-|HA^XJ0e?H53^0VHI{dd1%w*xj&WpuuHR9j!Cz*i+?z^`tWbU z2R9)#xOLwVhFl=NSw!jvLJ}IHWcm4E?qc9c=GnZMSflMcsvURCDCffDwmf+CQq&Rm z%6)#DZF5RrSutwMY8io%hN^M!!L9QEj~;b0Ht)sDU^8XtR%JxqE2`m^FwPa2Wo z{ZnzXv##nDjhZSmGwt?@N-%zJ2|MD*#3x3dioZo_(>|9V9MzUaEabICc*m}!JrU7L zU-d~;c0>!9WamP^-W>ReHe~0*%-2_Re8%c9lDLDCYvB&)#wn#3mEGfETb~|bG*e13 zT=q4vD)Qbe&gQz>3blu=1bOS$u#~Y+y@~)+_8z%m9kMAOD$>#;m3lIphHO`-%qa`D zh=_tjc9I#uvheOr2HdGT&?s}`6B*Q)mz&B}i{?kN!6;x&!X-dYJo3f|f^?JrqN!`< zgo9OB+4?cCoa17sN*=H;IKAKj6`~ggygKOeoOv!qSU*?_;AeZ<&vpRA)Qs{k`Uvh+ z;tz{bvR*doFSB&9swN*IG5D~_r>)9g-l>rFEPvh2=gt$E*i;6Oq}wC8_+LSJ8uP)b z48Y4R)nN}?8j7205nH=VPqJ+$gsL2jcR;c3+(ZWK%*?p>q$2X*>EaX}ajD1)vU0is zp?Zp%<4>-D0}&^7uU4`A1xYhcVnK110+}heZ?@4R=}=oeLNmXRM~(5bD4Ul;XVr&$ zZtjzX@o{FkNp4a2A^VQa;~Ekg+HUovE+Lo&ZzKI6tzrhbF-u-(`j+$$^bL>BOb6py zB*5&;u&k!-j6MnFzA{jsP9L{=34(f9H&>ElmpeK?o#!%bX=V(SvX>cB$NDBPzRaL8 zjB!%7loIO!X*{|v4oXgoPgSpzWH`20ZqqaJu;=l$vg#g;GAtGvYD4?j+uoJjYM4w8 zlt&TAbwZ|QfXOqQe=S{Dz9+}X_$pMx?t)jRPzBP2+kd~~CYx^S)gZS{*uapYlv9f5 zvTy$Qo`l$WzCbBZvmxhNjS!tIierld5$g=`GO4TT6wyZgD{N^uUY-jZCo56A7%BeV zr>^pO!zUwy*HUcm92bimX^8n_yA5)p`*iy*1SOYj637ls6(TYC<1SJ3YPm27#CtkI z1$Ke~1KL|hXV@G=CrRp%tO;G&I}(FqdMK>;`TT;>eFR%O&td|=|GTb=k)8dzA!iniyd z!@i+0hCog&)8B05eD_7<4%9VNT1=A3WBPc3;_k>Ti3x+9D%m}+{61|f<*`pHbb^tcActGq}u%wrqJO)ZyLhmHF`UoDiOjKtz>CXeTCgTY<+?I` za|SrtYmtgL9i3zq#q?bcc)u>g;x@Tn`Pdv{lrwye0S7ACX|Odq&Fr;;!3kJjf{o|Amg8MyDle|H`4YF>UKK$yFU9XzHE(i*fYM%;^;cj5?G|Wr_k2$Er5E0Q zv4YQ$N(G16kOE7-gMyQmFd@U@*dIvnOtamkKM)l>pzhyaO=PQia`%TPRL^;YLaCh- zTDNt&*LojLCMEc-V+Eq}8TfVCF>omNLX`V=aCo}dPvE)YeqOUJmm%&P5sN_n4i&8; z*D@9Ifd4G-W5or+4Gkobs}uaS2djDg1R=%1Yn@pzB~%Oyz#BtJ-^FdC>G2ItX#zLP zjV0dEE-$EQ^GDb2Dq%=qJd0b}`Ku@~xw(L-n(Y-C#(4IkG?P2oUH*(1-%2|itjl?( z`>h@q8spg1Cw>H$@c(&ygw-jGol}o4T-0UDw(V24ZJVcT+s0G2ZQHi3Q?_l})o)*X zNq5p0{TFt!lfBlSbBsSOogdi+;t^E&v&juuwDY)2y^Sq1wk_@u8)Pyu-{WTJX#e)8 zF3LC`Xoon|11*%^BduzqC*M4*ZupU$I^m7W`XN}D9f&_2jUt%V*-6Q{;?8nHG}Gku z>rktmboa$H{B=`)p~q(7eB_M1p&VvefWlS--ZE>An6OVj)qYgr{1{AbMMFrx6sc0I zmF9hTvu-^s_k_3npM9U6mL3^F1&h!p-TEspL)Z!bj5li52X@e*0s;c?dnezbwrhK$ zw7|a+L<%9Fe~TsHEK0KXT{zi=I1LyntkLGXjV9H|WUSU5^GQF%EBZ#V_Nrbln!jQu z8L597{TJ)~<~%$&ifWUT$WQ6RtigCV2wmTfx&=EunuZ3?--s3(CK@!OYF}qS$P;|c z<>xLU3R1k2k+jl}Yx*Qo3ZPC#_Z8EMgv*Cot5A}sS&PpOC&&_|d`vYRLUdgp!rJU3 zPAFG(+F2iDrTbF){6DJ=_KFckz!y*~eA2(EN17J)ZVnVucg1;AF@y-B5UkWfTc2{Y zK}5vV*7N8o1+XpmcB-g9xO>q8^UsdyH4gLhIe(lpmf0h;6Bzz6?iJbot+G^u`^8u+ z!Hk^BA|yA}hUBN02`?u}j~(j+@eI8OKcEq)<>AM<{f}hsSnV4pcuyEjp{VeC*BeXf zwR|%PGNjT#7wvRctraFrtqThTb!fQux#<#2;a(vP)%V8 z6UM05T*OLCfIWSE>3FL@B`sm^@JdgN)kjxH*LOb)t(0)3Qc^}Fbh68wE|h8av=RCe zQQm~Td8KPv0At}y4e<@R?%mmJ^t4ENf6Qcss>RsfVy?|myu-tcY@HK)|%2k`Z8DG<6M-GU7lEDHFW zk=McgB(2rb(&F#!cn18o@g?sw87G?% zDT6B0qo9aiV_qB}FQ(CM&Jpd!or2+zE30}6hVwVa1h$;9(9&{^+X^F!wce45ZkSSn zMMvfySvZN9P!TNE8(%CrDdFOaWK7YO+B)h>4B~Z!>jf6QirAm!E+6%0`Ze=Oy?Qb~ zB|=GpOPND?&`pf#QB@blM%mQdmTjh8ji?Ov4?~i^&u(ibVWjy!_;4eey;%)X3M>fW&b@p!ype1m zm?hCs5Di<^`1<2@*LbJ5&w$4mr}0&Bhh=F0{eND42gSN-)v_N>Ru|77?Slq$hbw@- z2dHK&FGdN5jR>6KH4{lC?HaVX3W9s$MtlG5ELajCO6JFG8X^;9{b^cQuvnuO*ca){ zP&l3>z4DBKg>F{$%9&3m$$UKAiUYiY zt#lNH)h9eEB?D3GnKN*u99k&^l$%s%1_v{H!~+Ed?l@aoJn>HZ9TNOVjQ)OOH6lmH}}n?Tq<^W3Pr7Lg##lpfAHmB_T)C9Qftut#x}Leyy5T5$!gnLvpP7s!@NB zwlpv3-rY}4NU1SI6$p_T*?F1D!2g{$o|dN_?n>)mc>dey*!e{Ir)&~S%W#p~j}c?r z*yxqLvOA5A`VaT~pLTK=6~I4qsdIBt-HEuyd)b+{BBll|wVMf{1n4Cnn3*~TuPZL0 zUg_j0*7%E1-1TJA78{~ql|9-CZ(2>5AT3*7Q^H^fz|Z?BLy&>|Lq^W;wU4u1vVO2i zRd;^I#o0_g7#p@0Y7dfeOt9mvzerp?T?tj%689#LjOt*uo6FYwBUl|L{0g?0MS({5 zo~>Azb}M15o6vLQ0FwW(;}03QJO7W%v{G}Wi?ys5t{5AKqlpgi;C_Kt=sNp8eq2V2 z^s;k5r`*>vS`N?31-e%Dda#yZ80kbVdrLX0lL zP3-P$U@MihtOYTHOpKbH=C|l_0g#~u1p7+MZwn*+!W3ZgQHivydW%64%)j-Rp9g9m zX?FH)h`6ODnHZB9DTLucgY!bI@N&G4x5jrMA;p`gly!(V0tAt@atoJs^Si;^|h=JtRp@dt()o4Zzn_JQ+_h&iy@|3F}k^Dd{g6Bb^On1 zzB9$uCVkN2e}Nr*<;Z7K5W_2s^5;V)NL9Vixl7LJQqR_!%|dxoj5uDTU7-)iUGa+B zyh}BwFi@_^Up$#%I%7&`hCCe5@WK3KajU4t&+=fK-2G`YNaWKQL~v+k1yI_mT^| zD|v*KgT$-AqfYF5(EyDg6+ia#naSj0k3=);R7>3i!j7!Y33%`L95}amc%{^xhl&B( z!8N)8wg`hYun^HZ4Yb%v1tq-n@d&%o@)WH-tpme(Wd|hl<>=4~E>v0u2-5LVjFNT}cwW^`iO_@>n@WN_%e;|d zbRH=`OI-;UO9u7|8|f7l;}YLdiyZdR!Zf_h+~1_Gegpb;+NGhFfhmQ74%+uZ(&c_A zasb~R7;D)bY|t>Ku#M1#ftCdd3~OsstWL(ZI{mzj6jhEc=)0#x)B5BlTZI=Y1ah6o za28bX6YragOwbhYBr_*3#DucF`U@KB=fWIrTyD13uXdkdn^k8mn+i7n1Ao7fRvxr@^QxPf zZaHsAr{h7p4;&Z{<&C@&8eue=Wm(5~^ph*0=&@pib4r&~H$Q%0+z1@U?%^PxYnm;WOF;FW_R`J0kU z&b3_m?>l5WGnjqg)BS96%)HLUwGS44X*FddiYb4-H3XA(Mb{ay=3;UD@SKJD0;p|^;?JcNc)smTa1rKBKT|D0 zOBJ)5>1TZ}MNXESc(tO_Z}QOHj({}I#1_9O-9X1(f($6z*tX_}D^beu6r+xKf}UiD zBEUC#E-%;5eVMRnE#of##bu4YUoa$bgeu~Fq5a8f-N$Mx&eYo$9Nvvdvq}l)3DeXY zDL^`nxtaV&tIQ#sI>yWq@%txlu~-6D&R;_`l9iSN%F_+O&g;28O4J|81x5F^4$tO? z%mxu%GS+)TGw*(qblMlyL$w;HTslhz;;=xD`9~@vRiE~=ZuhYQggT#Xit13X&4g92 z^`rnhX9IZK4M2?|qlGi?GE0_gDI1P)>O*0IPn$cq*Ml$Af6U8C;4Gp9f4&{ICa3+> zaBf|Q4wQh!jvm#(llsnl_VZx|w-!qQ`wLL2DW-9*^15DU{H^giIM!RVx_GQMc%iJC z!zq7%gzS_5IKhA$Y(RaUkeL{jPzc$BetwDIAu#oaffJ3epgJ8fcNePUPzJv(0!zfw&=;e)b`g$XpU!&Q zthI(-bQas!#?%ez#mBc=y{m@GHxdd=J4&6kR#xqx_D2lbclSlfkY=Whd@~9UTz@d4Vy9gBE zwt!NBH+%3hT8X|VGf=%uVt91ROAIx`o_QK~43LIcmHHfNeF}dS@pvBMPet)P<+z!1 zk-E9{gBva3v@KPSemG#)fSfcI`WWzYI<%&-VBwJzd3oRw_Dpzf3cc`O_vmh@Lw6*M zN1s*rL0r3SeBF%(P7pg=NMa2U(1i3Hh&imHKyQj7UL+kT zMJ0i1|Knv%Cx9e3N^d5R{*MEh3JP;&P*nfQ6l>moE4G#)2|qW$oQ%%E8JuV-F5fHl zVWz@)e9MBLh6N&s9A6ulVpz^$oQRsz1%0;xx%EML;RN2}=cDh@d^{iJ+xB`z$;j?}acA@va z%hli`UqB;(^w^iW(g*d(wDl}Cp`>wbs{Q)~0E~MHN+JY4uN^a|O<32YP$wxApbb!I;#uHY806`YG!BqaBC-C0n^mQsl00 zC_%P9O&fZG*!`!$t9U;YbJH_b@T|j^Yqqh1f@Y9Lg%m>$?$Cya zsfy#CUrGw4S0BvpBrv=$9`?>G(Q6GWrc(O37CiSai^a20!$xFU@W#9&{ z-Z3<*jCsll2pmo0{6ZFzMR9co*|U!C)fHS3*aDx&0?I|88y)hRliWI)QrZe%^i!A6 zEE~Mjeo(uW{Kv=<(RDRqocz$$^h>{3haMG?RJqRRZ?BO8aaf~hwSt|V$#i_aHx`T8 z+mKcOg3O2-mr9ip9})2TGkk3pNmA?e*$D048^r)i!H{__K`Cq0`fExDUd zoA=$Z41z8eTp#V$F+yF(dl(DsHob?T`u`?K7{aZPgY5DI zKySfP0+u-bWBAC_mhy(c>iJGhbbv(!+ogt#H2m{+>LH(9A~JKK15J&cwnRQ|ul11B z_Aedz4|ATCVYc?0HI=1b>u)YZ zekq^YSq!q~!DMoIXfrpoqx+;vZ>v41y6o0wXtyPx*-7ijaG9t5rLVh`YbnHL2z{H1 zJn6c(r;En~6>etI2gWZTtnGY+}b-YVB*X4a|=XZC4bs){%kC-z&==GLv=wU5X%lW6KqRZu*#l z*?b@EP@y#pegXMmjodk*b(h%R3@Y|ArKy))R^Esh&3#@|=iMD!wva2|3M$IJ9`RiP ztrTT8^o#PkyzCqgeWJ<5Ny91zSAFUB(IPi!dB$N36NP3u^kEPZbjqEvAs(wyD-&79 z^kWoAhUrB9jT}5DsH2%6dCzbHi|fjY3iZCdJDIv)ua_5KwLP;96VfGptV`>MGbq(wIvunWGX0x2tF(GQ&rgeUQ$Nx9A$XTgU{-zb*S5n=4ooMp(xp-QWCJTRVp?b7?=8J~QD&6$F za@B8eWfQH$d~c(+Ar<~NgKlLLMwV)h?u}Oq2(4O9$;yd!Lt7~9w|A3VmN4(f(Y+S?BIvs^v;I%uAiICu5RXix9#TW%N~F1Le%dGBSG2->clX~UYt zVHhfhI{^7ia`R#q!~F1SztgB3DXu-zTN}b_nVVD=lmqe7B?x!Yr<6mnyXNyie$57qvl!Ezs3B2&}k3_+O!b38%Nq(@9_EP#0YxT#>! zUcCH}JDZj)wLIV-p7}W(RBKwjvaae&S-kPWlB**-F9(<7vo_W&J*z;@@aO=teEiM>WZdDg5@-TLt$W!}^j#28JY&l*uc7fT_Yeva7f z^L@asJFo744aRLEAGU7H4J3Yz^V%5`Ypwk!)eg&7rK;+`7+|UUAj3BA{|MqzB2lhA z6~x1{KM^OFQkj4Abz)D%Qplt7WDE1SNte5Js}GpsSZ<{-Is4?JawNJ3g*m$t;E)%< zF?;lldNofq$y9L1DCiz+I}g<0m#QJ7--ROCneZ%5M{a>-3dnVuxHJCH zP0#5ng}I9?W61^ucjD*p}la=wc3_7b;g9Uh-80k`}PvGo@VH7XY_I3)ZAPA6!9vDa`ONh?@Ulvs6|Az&YiHno#f3&CnSx{O24=L*ZWkF@- zU}5?HwV-yHs^U$yvPA~(;jn5P-rUp`U6=MpK1Dk0;` z1H{5dN=k!=oe_?&xH|x6LRWbUbOhnRnGSLUkH6!*ONxcvu{REcB50kz-L(j1um=+l z&V5GHwE>g?l>7kz29NIn%?arJ?!vXOH8O)Q_EJCwUT@#X$Vlh@(hLfTy_uB;G=`i5 zFMNbz5Se?!viSG5APZ*dr4kT9I{9&A0#gdD0DMNm-#lc62= zQBf+*_c2r-Sr~&heiG7?NKfvPSpXLbJ53q^<-^bk9%Lmx5aJf_FwA82lzn&0c`a<8#3GzUL7vpueh^V*i85UAr)X|Mc|dsQ{0s zV}sOO2LKX>g#bJ?JKFELPj>Ea`bM`g4sT7R$GiJL-b8l-lj#?mzbQ0D`9z@g3mi>u zKw6jDxV@0vXFQx6pie)IJphmx${%tluyD?e_3sMePlmMZ-_&7A5iZ}@oO_lq~ivwVT!s=y*0x~{_ zX6Tp32G%;hspa!`pOL+Zo%v_cn^Xcf)PBXRHCB*n{udg+G4Q=<2I2z52;$!glpj?< zHIx?!I6scdIFEbpLC(ElC&Kk_=q=%!Tb#yv`vE$&tGfjQ<6Pqc;oJT_e^US(8wO@% zW^wUI`}lMX__TJVvNryYJYfIGlLYAakpN2u=&Dt|dRu`twz`000mtlP9SI`bCgy+r zo|b;A(>Y4W$Z+}65FP(6F8(4cwJ|rje9zAP!YG0N7|KvVHa0D^eKF)^^t5Nd&PfhT z56nH?uKd`hIn4o9`{G+7{@i_Q{4o1|I+xJywtVsfrhlRtfbdyx9|7+>rj{0l@Xc+I z^}jg~KK8=^CcoPs!d@T}bdPf+K-EZ)P_@*~;M0n@RwFnSo2MSsj*yBNt0tm_j z1s(ShFM8`<0{UM&^8q4%-GG8>NXLQS+P;49U-ag02=96dzXkTZR|JA~p*erLP;VOm z|D?S|;h>oevYMq5e8Grh@NRh&eNJctQbB%s$t(z}?5@-0{xr3(8?`Zp^<{+^v zvjU4LC2K*Z67sY8s=6+gm*{3xDRMrI_bj|}zI1YC2GZY_K#E+u5*y}la?i0e1!h!} zc(QCmdHSVUD(=D~!mwWYL4%iu|Cb4~s)ziVZndKYb)$ISt02d!I+jvsGT|L`#e4(#K# z4K0LT)ZFM%+cndFRLl=+9j4O2i1v33l}5WkWh$h5*f`N=Vo#NnzmE)tAF22B73N@B zo8HbQ`oX5{X~-cwe-@crV3d&?ji+=j@$1d{#Lo6rSn&yDQ{ZN2*9A0$9w7ePmQDuC z{MTy@o+X#2zaU#p6BV3mZQQ`qL5b$)5CY)&S{b>Lp+qRh2Q7=IG?Q3+N|DES$?IZ) zRQn*;A8ed`VXj1K+eBdmUHJ2P(yQS+3&Fm+ZJ~5f45;nxZ-lkcAGs=B?>wkSpZ|Ts zT%n|awsYkR;C9KwW@|bJ54?bMuMyg6xLM#fja{+&QSU+eLTE%7htP|JPEx!5BMk1cd5D{etH#I+Vl=So6O6(&|Kz56WEQ61>+ zs9X?cnMr2L$9{407b$Z;Y?=_?_z@DlP+nW*z&OWRkQGd7MNE6si1Df*rjdYxgR`lOwNOn|tKydbMzmwaJZtfH<%jrw0$u@)9Cx=^y zD6eaQ4!FAFiEe67 z+(4Rdn|9PiAv@ZEQ9EBaPp~p3#(Mh>)=N|;?n5M7C^{>_i3kH9&;8JJ5OrCUo{j>` zb2#Snk>T0#^x1pwuwIFn$uwTUP+>Nb+Ta+TLP)t%ERSlN%zTNiUHqWxKUAN*3h{x| z21i+!cMIwq26?ztsKNSUA$N_4gp*b6|+SVnOI0Z(02jE}lB4gf7ht2eB@O*6fCHbRAXdVUz$@xFDaP!EiR! z7q3k>=vZQ35&bM9*T~>pDzn8qq+KBlv(Pt3JttZ;&4gpTkvyb=f}}JCf31_ydie5J zww61i(1fRqcC1(hnUYmU4;56SttNz~w74QV>(TsVb&pf+I8LZeXtjt%EAOqJU(!d* zB~-qBvy$bnR*^$T|EPN^e1c|>3OwEd;E&P_iA9EA%Jn=QMpfu`F?J?itcl{yyM{QQ zmXXERrLtCBmw6X|$LeGKt=?T(t~Lz-w;sostXd)>d3!gSQmC_3cj(qK%(uZiQWG+9 zx3M0k&1Nvn(PIPY82NVQio47JK5-UrKG3Mh@m3bP2r@|<63dN<`_sF|akA_3M%yL% z!D?yD-|@4M>yt4v_iNv2C_ARdwNO9W0w-&WE+n%%(#@I9nVhwxb>Yfoh$1Cf3uNE? z4t7_)5y5Zz{nk!Pc58sOTG`gluJOWsgD~XbpVM_gF?5xUlwae$b_Vhq_R zN!2mAhh30S9G{|tpII1eL&_E{LwTDcvLTe4vZs5CDZAWim}uR-F%<4nr$UB)d45jm zQ|Jy!H#i=^u`ZvVMEKiwdM;5rY?ia|sRI8%2lSdqECwQ|^kkOt%54a7}&{6()O zd+)%1jb8lUHcomrXX5Gaet3?;&p9C}D4|F%ncY$q?slTh1~Cw)G#J$-Z)l|wvkI0@ zqW()d7~!rt!T$sq_QQQ<_-fOg`Wnk-dT({gI7`ysnDQ9#8x;1LH#fNgKDC5_7BMDSIQ_@`Dxg3^UlKB#~Gk--#&R zYNo6ARm9e5?%7S_rxuB|7lh=sjz=sR0h*^MQL|;_*jtwz)r7@}SZh!m`E~TVBLi3b z!%CcYR$nI!-Uq^uM^4nPbj1E?xWcoDjqu$N3i=+m8L&brpvG~C4~e~1BzYrO4)4EY zId&(-`Dwr@SoW}OYVavAag5IH$tBw8$XKd^xE6ymv1#pbFW-dDgVm(Jry*t zT|Sp-`pj0KXVS=RSppAcnc$rxDsLCn+!2m-)O|j&7qc#(yx9%~;n)Auh}%$tvud9p zLnmA29I*3c){52tDq6BEI!KomSGa%)d?K@iqlN!sfe;5!X9#%nX8KntKqjos(bC$D z5q&SnerF}L?ZA++)C!l=#h@bC*Vkr=Ef6T|u^y8nC?R6cp{b=ZlaFEBYW(81#8 zA2M7Qi!Mf@aepsI%)ys!n4)#SRc~(&qRmU{EUck8=INuz$*kk=LgyjMuA&8E%5dJ>)k!u;9s(W!+i@Uut>{EEUBE0lnxvvE#YlC zb#=w8Qw%D5!%D;cC-$Pb8y`J^*lZT8TIJcd@>4i(Uk6ZnmeJ6k;=@)r zM-@h@E0znQ-cRf|Wc((q3<|Qns8vv>6>)@VySh#6KL&q;sycpb4boDC847M7Va4qf z_bRBfsasb?PtWDlk+WcFw%o9nG#r799hJN4nB+5`SKQhRd7L+B134CTQ4uC?>%i7$>xKW}l2>u=So=`J9KKA(+7qEDqq|;( zsTiRQ8W{IdH(^nGb$}LtYUbUX71ViUyPk{Ph#*o%I+-6}K0IyE5OC&J(4rcQ5`L=D zp`eU(3nFG=j+u#XD`3*A)EHh|I%w_HNp^mLny&~Bbl~w>Z7kNMK2EpQLN2|Iw#oWj zBM&w$?|F#dXxeyXh0fcCX_}nTRGb|MzpJHzDiJ>}`7PQxMn2%JVBAd{xUBo(qlwU@ zAV!A$`$lTd5|+jC(|r)&MyebV01MLJxz(47U^9VPmBXmmK4r(@CZ;nu2@iY^$)9h| zZ@*tXDAkw+B1#O@DGE`c~z*a+%k@Gno<= zte(#aJZ$g?50;Oe5zTJCZ0$~>m<02f&Hk=a-b|%YkpzzA@p*<7U~Nw<{dG^yn&e)( z{1%q?!=qMd>MZTkb)%0mBmC#{kZ@{OPg^*0Qw=BuyTG9bzM@uL-)m*Xsj{SSyr9PK zt0LtjyJmBnp2@06VJxfDP8DD7b-FR*&h4+K?z&NXwY1(bd!q(BzdnlM#>;#=;>uHy zMYrU^#a}JN0c^9NWs0orlN3OSp-M(4S@QBeQe$MFv|$d(+~FZo-65Z1gAY})6)mXv zckuV>Eab{);CZtnJoH|$4F6@~-28EQ7)pf#4``IIr;cBc9;Ag`^wB7k(BF|Ew;9rl z`Yl^*J=A=`lhmCfkG*#9^8b5Ei!ct}x~+{OdJ%{)#(0y^VMszqz~LUm1-oh~_)% zu9kz;)mktrcA1x*)4ZTfUG=&Rqr>+rhad*sfG8kry_Q)%^Dzn2t>5S*4-P}+(|;QN zTW=7B96Ng@KpbxNmL*wVs9|v6yfvb{lk6oZ{0q@?FsJ@GL%C>=XHqgU2%MU`fVs8NYg%f;nB>Q*#trfDj+N{<;1n-mBYUV`3-> zXZlK1qF+H>O3`MBh5h^)ht~N7aS=cI$+{7nvO3q|vQBM~TJ`=5^-dhpTOVFlNR2-z zRN-h5KL8|vJLmS!*m90$`C_w|uK)VoEMNt`F;wEtBwG5d<_w{L+5_`IP2w$-4dAcg zRsXNk!jb!i@t74zKj!oD+6b>e@YEdqr$N|iSeB1mp3p6maNnDQ`Z>lNTV2E!nZHNS zFHa@`_}+yH9A%qJu`5?eI&Lxs=YE}rj08^fsoH4Wa`y8br3@bS_yyO5V`&KIh5l4oBwWW@Mw}}4-Km2g>@UsKQ#L=fDQcPQ)aMjMajtN3!t;W^y8xLi7Yu#pNqP&ci*I&?>RNJIcKsqX6j4_a1h4n|vU z?(=?Silavl=y048rbhfCl zH`y>-XEis@U@E;HS3a(SOC=1d^3h+ycHE@8I&=65LXe0l&xMHpZUl`~BE|CRBh@rW z1IXAx(%?9UU|lwjYVwx;WpWfUOhsWsLK4S+>Mlj<0|{v>qJMdVgf*BYu|Ero1KGjgjwooqe8nFQ0phAB{C-3=Vv>UUdbE9X7I;W4W|$Y3BEZZp ze#J`xJ+E=W>npB~`b4F)6Mg>5{Y;&ynqYM*ayT(fw*CkI~u`XGXlfp&_SCKkz!-rzJ?BO(D>Q7Ec<1TS9eo{12jhn6zthTicWknr^ zZxuD205`26YQ#5Cfgp9M>h3bp!?NTl<4^kF`^q^)B^p^Mz1K~15KCDIlby(~#uYD9 zr%n&bn<*L~_pTjs^U(|gq;S|NV7@j%jI7%6!z!tJQ$r5reeQ1ED-)t%mQ2%_n6dXO zbcBbwHH1QPp8Z!+dVtpZ8l;cG;{yp1v}cn|PH77T=*4Hh8ss0m_Q#p@)Y2jQk^%>j zQ9r;Wpd#YNB>2RNg2)hhz>Q6O6_rbV9bznk0O?%YeytR=hQ-lA}IG}bIvek+GKHAZ3Q20 zO$P!Rx|oJ;;P`uTX!qSrOl0H5c=EhJonjX}sSY|@%eJJ3>LmT0_9V!lf!10D zb=;wk$MkLYRdBS&*srH5H9Mc5&8S=ZTZ89Re7RP0hx)j(fj-XKzqxbt4oJZ63E4cARr>2n-$yznXkGUp@ zie16LuKoLFzRx5-2CM0K)yNN}fZBd+f}Lz}#BN4sJdP{nTs`gN_dUdvV5^-7knr#A zGGA+?GHcqxXGn-v9L&h!pP1;#Q*9gFi8=_C4)IdTqFq#ho7A=7*r$3nJcu~OKb~A| z#$8+Le#frn3K|A)isZgptcR4-hyV?;R)c5iiwh6q&j&_0O#kq*3~|>h#)*Cdu?NF` zcG$_gLb#1hIk(2U|Kn(sftj7OTOLvfJ&IhjI_J&1Lt0?QjUkOHd@*Cx}e* zYX6$w5kGhlsO-2Ma+ovoDpaMeWHT6HftpA2f_|GXb?v zW-xvbNNPlDs(g%^aM+uMlilY(isLZ++9GES#F(N6N1<=$bkl#8k(at)?B3H`qZb2P7r= zGdsz*k|M%<#YZ?jnk!eHzs06EqHxF;GY7>MU58_16a<~0F=Y%5C?{WxxoSt|v-l`> zrVT-v5rr@3+*@kPAbnJi(8B>g4}GJVg?D9}p+T>DFi|V5E8^;Cy0q!E&|V@A^C~YB zSBtX;Qt|_qX+iu3nM9pgMAXojT+*(=3|X6S!-@>w)}hH`OJJ_E)BBeQJz#`ajmP}< z2-~;mk7pzL(HN5QhelXSo_95|L3K%j%OmbtceyNU$5$1^w6Y$JdAaG-nzD0z3X<#lZRaRcVWPv6qfiO1d7Zk#YWGz8Kb-L6#?S1by|hce0kdDbBz3z4cM^ z<-;k8$)9*t^I;+pgy%J6CG%$`aG6lsP(FjvyS5(ai1)!kJJ%}1Yj2rq=QiDrmO9PU zGL)|0%uI?0(Yr8ZR>hGl&n8pgNxt3G&Rl*EOxux|WZ|pONv0G90wg$Wu|xn93A( zx(C?xn!icL6-R44DF2w_~C8uT{SYD_jv?zw6xN+2=67vK5KJzT6cfuA(m+&AM21 zapx9oZqZAAE!V)KNP2&)z)wkW^mRsufrCC*)x?tMeRARI=t)E5(o3@seq3;g ziwL5kT^hWG*#4uvuKmL&;kRUpob(G{C#|Q-m$XU?PU&TSLE=tfC%gzu0dUJo&jY=d%wH8oJPKGPi7^C?q~Sflyc#_$l>fOK$Oe^w?W*u8=r#7%_RM8wqWJKw z_CKmE|3`)J5e!eJq_QLyQ^Kbm~#a=hb-Ed#dk_KMNy}7gO)!E*aC5kWK7Jl#_|7}KO z&nUe}aG}`pX5t1;#2hd=>-b0BHrcH^L^0v%?j#n_Of8cUo}icP*s#DBaa%>o*mmSt zaGk{76~e?_-EvJM+MuXxC>+|mR~e;-7HVy8G#jC&d|5|L#bB9XJ`ziXu#9MJiw04# zn0NaR*Zl+_ySFp5DZwgF(apP_CHW?}sm`5k)j2i5ymM-#5^JDb=m3YF2RadIQ}PbU2U7YRPvtBvKU2zV4ibfLh)>x|R8|*-CLdg|70BlbG0oLvB63)zcZ8B-2q8iGWDH zuIC(}b-^{uXtJULK`qUgOnfP%z4z}qjefU7SvV^fgwe`~?QQvGpW{hLlkyq`dnhwj z^&cdL)JEyT2=qJ?mWBIe1MQA1dwHe3tO0cske}=2-H!HV;J9MA^M^H68OI_#mVq1{ zX_b7FS2y&n!UoadZJ%4L8p((R!i{V=3Kc=|4teBowO!75n|^5dL~h zG!<%C_fd6!%bPR-pCMEv!G&loIt6(Bn^cBn7JAzu2!_GNl*l^v zqBBl3Ln4h^Fg0QDUI+7x0q7B1j?G$|cAxfb;G}KlOrGXPEm6$6OU(qoMMW&WFw#1Y zcPOO9rN<%`D+@>(TH`TlcLG_z?}pbuF5rBX)93#HV@MpVPi~bBii#_7|3-IVn3M_j zyZRk>r^!iM1mRvIXh5y??=x6S@&KV@^<~1RsduN<|7DM*HP6sy#e= zs8aM7x^&9*TuLa91t%t^b_aK&>)vf5z$m^Yn90udB~oTvGaZXNSZ!*Y9T-?Rnk1b# z^jdwgkb3C_eX~-=mytR2q>u)d!?5(hUy#NWxv5H^t`4Uu_Ik=Kpq8PF6PUPyXlnmRKgpuBZXZrue9E_Lo>D1 z9;6d}kWeeL3djJDXPr3fKl(_lbM(0eL>lBTMH%Ohq~c4h{mo?ixvKQ&0bxyP$*v)4 zp@#v_bm2yMH7_Ok`pMsOzD=#9_><)a?~RTLNi$|lYjkFXfhOZqF z#>|oU;1`d|oDuFh_0_uoQ`ng+Q|<$&-ei1X@ylhe&DZ}SR#gFoT=%uPfZ~dDZ}^8P zPCa#g^sK-Lx4l_DP)d5L-Tbz~k8k+D%zpg!G=XeTndKw6Pd6sz{M$Qn^;Gcx9D;<=qVC$ZZQHhO+qP}nwr$(CZQI>nn|T?elEFX7 z@Q!cQsZ*!+UaP^TX=Tsdb5Q#Ygm16D+K=a7u>(E~y?HA>lIhy5lH8c0RV1$hg+8Ss zC?sFDHRs4NpLY=^EC~GjRERRkXZ3|7uTwlclF+&*QGQs5Mn#(e_c`X%?)cYdN{BY@h;id^~1#KpAV8NRRH@1z(5t7))W1h&56US#nLUiJIh z?;Oh8KvO-!!ds2IvwDLXniwO!WxNhfELAx$L{f>q`vSVwoYGY zUc3zINqSt(d>ZBMnSVZ%opX&NT&54E{{VtG)D@5LLA0Ll1J612 zweQHpJ~_S-Zz@mDDM6kkdzCg1SgGgJ`hXbZDPu0zC44r*p+>rW=ek4X&pc!-Mu1oK zu1$PRjr=CKV7>3?+FRd6w+EY5Z3Co15`uiEmTZZ@6YRhd@0-1#8r}kRmoxCsqD;2# zyOPd&`kS~ncRU^_q48Gs#Hm@faR&#m$ul3V>L@tE4YMm^HIE%wX!w;681ICM_GeD>^wfCv5x$+CnZt73yDgl z@mY|dZtU?7(G@s|v^BW1!G#OF`!$2Ot=gbVdX=YR&y40}$2m#9k+VPK`xQtd(zUIr zhZUJ32ZK69K$~+jo%yE*095%2uR9vci-F-7YOR&iFE->ND)}1kPtone3$5XwL1)T0 zLwIszqUPqebeguaAn4G#6=sI)cZFV#9Nb1G3;A$&WL!I)l@}qQo`XH}5YbY#e2Cw} zGf=0vVo_BE;gU5G-%WHzdiPZTi3q`F5eB(^G4X7<1BWzQ=F5G&XJ`+IIq9 zLls(2MJGg?k@uGvEi{_L*kj#}^bK&Llesm7Tc}P{sl5YJtj<}eC?Y0+kW&(aP9mq3 z$~!cr052rhj@(2YhO^Q@AE2I9+kAy9Kifl*BJ#?aI0n_tQmhZy=h;-bP@{S3wqBUM zlJjQ-eY+8yBorESRe(ek5DitoZB^T`Y*c$k^DuRf z41qwcA=)G z+|KbZ9(c2}nN0t(D-Nh6YGl#3!q@YkL@+DLH?bE}sVbg2o*$+#46 z03+%Xtriw;4^<0ccn}M(Fz1eQt>B(AO>75iV#5Osps5`?31Z(*` zXUCSU$8s|{d{{1cf$*f{S>;_s6C+QRlj)V1iHmLWZ*H=UBFWnDn8uP7ltNK?PgLej zx{wkiGaDLGk{lZu?OgMnl3xy4r3$Bt$kH6*%U81Xri2)$|35A1^)=<9#8{{=p*Bem zt=yrdoe2WawJM40qgKC6niORYMw!yp|pS>oMs~+^$Yz^Od3dY1l{$G(c zQ54-5<_N-PmQgF-f828Nz#vr}@ViW-7!!rX)*Tm>V9T*nrYY;(v6(e{v}*4&J4*38eb(X<9#Y`XCR*>?~JwiK4?#0aH(-E0Ei7m^BE~H&0i!9 zGe95JtJSPB1Xm{Zp4sDEovGmU{$s6Dux+FEQ;lAnRoX-=F%u?8HAD>8O)Q%%$hBg_ z(fnf=BmKOGaRtCnXQ+vN{ll!m0mBd*-B7{f z!Q7_c=Su;7_4EMN4%55Uy=A%>EGRUZg+R zAYB1Qy~@qTn=&>7kEc@o3M?rVY^+|65n~`>)fc_q+Wj6*ihF3uyI9w2B3>2|`^G!X z8zVmJgM|ew=XZLhV$#`B9=^cZ+V6Svl(Q3$?M1vp`+Q1X=hLl{ub%$aM7a}M_s>w! zCh$<-bfZwRG1oJkHG+1xp?hyr_nQ{oWDL#1gSi(;F*GwB?O<**c2zf^exZlHn$rql zW4^}=--jtz)z7eQ)JZ-q@f#7A*Kov@%XI#sMx$cJz>1ygn5;n@2)+KiBXv37xDHl?=rdubjKiPn=f&+CDC zt=Gl~Vbt4Gx7FsEqjvrz*k%a#hA!HVY$9Tm*k}@ zh@hH@;ZojZ0M9I8p=YauSmux6a&;m!N5H4@O%l~&4ZRrqDeGTS&Hbd9YS}eELCP1E z0=263=cU7KMp=GOsVl;6JHNMuzp_F?YdeMA)^rMS2z0~hZ2p@eLnu!xPbNw)k~~I6 zNgYo=tc@emt@BsP8N}}LHzSTn=ewRV2spn;jOmG@9Sts!T19KXU16f*+dl7ixJ}evVrZj z9Q$UR2r+Y+p`LyQXUZ!&o{SqbUi_>@W^e7Z^yCLaPoqC-J zb6k$Qyk;dlWr{wi4ufg!rWuehSI+)4N{Bqs_s{*-#9vNnkQ|D}k~JYwNQ`GW>-eXq zEk_(z9Q?auS(F~DT!H%ealWJ5~HHSXObRM36* zVsh}SR^Yiz5m8zJ;TvB$i*KlZ6(>p9TnITPvul!zH6yFeVj*PE)Y8B5?hg~(v?YR{r+Q(3*C`T&oHwmBBZZF zGJ2kxnVdW8K2d!haRIQ@W@mC~>E+vMM{ocSOs>ei$h%Y4p`7zgvk{oFQH`v2x#@el z@p)*Qb?-XGT29<*Faqlp=vHe5Z}&Jt@q2w(suX9#V~INWhG6-@c`yw?*B2s!VJ*Z3 z@CRwFx>c!nc0WzXYtSd^JC^@o_Gc-2;Bl6snHgNs`8)13yrwSVQVM6 zC2hB^eS zD$nNfbmYhwqYvBHkcADoB*#IW=_wHtXW1SuAqG-C|Nh=NdevCa@e#^BgC$R)Pu1`Y zTZ2Mo_(a&?w9#av?7$zcZWt{Jx~(>%OHNnYU^G0_%Y42R=LvHsVY?+Ff|cABL`d#f zQq$R~U6rmaI6>}oAzRqQv%OfdBQZ zxKzBjqM&_{Gtm-Yo@?Ebd1KZq`h&+xorWuzj+1de^|z zy6$`I0N_g)6ErwTbcruN!+O5YMeDJR-Xdn5FxmKVt}2F%bM?zR@@~hRn`Rm&Aw=qub}_R5a8x@lFoSZ)~TqIBe<{IM2&329Aj&^i9KZZjAf z>i9B33g_yRY~hWwrC`e1lN>)=lKG+3Q|8iza@b$QJpE~%eH?&(bwbp;fzxaDkvUri zMh}*5DTUI;k08aV#^r@cUvYOpne}>E9TsClua(zF5sQ89v97H1g($H^hv#PNx;E)~ z31u6wH_qVw?;-n?)d3b>Mf6;4xS#iWhlWiHry7(a=&ZS5NLw17oOgG!YF! zrguiU7p*eP>d49C=CC7)@g1evNTd8dNus_veCAa3V`i8>W13pMQk;^sW!7&YZxb@A zqoguUK_^_CkKt8y#s&FSCg!Zmi?A3aY`NZ|Gq=sqC?ktr2XEpQm9-OLs^&N`Aw?%? zXYo{^i;ZvefcUjG4k5Rmx?p#q3_gTh^SP(_KFI{(SYD8tUZ8N02wua>Wxfm8&|Ss2 zp4`1$rdr~Gv7FCC#AYpIzC&%x!*?>kzXVlzHkV|AnDC@x);1MAWj?~R6v^l=;?@{{ zHcp)Qyc$GR@_HuSq&0BdK?KBK*j(#wH-qjDe^$MDWccChWgRtzOoJCpaHznJiSHX@ zTQ5Cxo*ZE;mYy`>?dl%2GEqskl8&Y+=8YTNDy0Aj4D|&rw-kmiiFp1Er0wVx%=N*2 zvB^M5s1k)})VtTki%9kKLyU z{9xcdB`G5v>m6!}%;y8C^knzVN+LSV;G(RJOP0Uyn6Mv<@NsqPwQ|UKb(vr?R>wa(L)G3T2+M}b zrV#&?r%IUBp(1cS@gFa^!nwutNQ#;+aIH@cp;4sy!mAI6=3G|nwRx>Z4Jd%5i0Jf- z9uTJ4BQL39+p5%db4!`0Rf}L3Y#Q~oQTzFK=TQC&a^(?4avTP|;e;Jl{}pzemU|~O zGMeBV$#$-1#CxhD9v0Wp1&8t|&d9PEvWPf%>ZSG(~SD%AQYEU-!|78A!u{OCY7l2Jkb~?St*;DQsIb;Sn6g>?zvC-l{eI z_s|GyIzADOEuKM8)KV=xqH6N)F{f^9LGElhF^_k6drN@Dy=N)EsYK^i@Cq%1YYUXW zCXpk5-W?+91gu#ADT|aVhBX zd*!5mM~j+J_|e(gt(b~bqJr-rEuuua-p^v;G4`Nn1;;uACMB%NL+Av0!c|9RuiL*w z;!3{f^C-J8*nt3H5qUe>5!Xtl1W|K~KsY5!q1cT)^j*k1+b$x>ddfyg?>MSs z%Wis8#bry~m#}H&VO1sz=WiH`gSn>;vAZDbkVCpJBShq?m444aUy;Xcw+gZA zTOzN)at;1+EZs93RQ(el3_R_P%om;;_5_j}Zb(=frkQWcdH_w~&!7@dhfXSkqtRbX zZ2C)JUPtk?9CJCp;f%6vYLSS9u_jv|@T$_gO%twhpp#)@t&YJV@+)687f~VphjE*F zW$!o4F^yK<$`7)2ldFMfmD0IHw0dP^6^&K;w1yazEMhv$?8~_{ES#ml zh@8%M=I48V(^OF3!k(&_FfMs03o*#NM{Q-;wDDXYh>PiV(~~gLRzBz9>^NMQMxnK% z`~_c$oyU?Yi(&RqrP6?5IEN&yT;zsBq!W5HIu?=9_OpDr*eNv!JOh!i?h3?Kz7V6s ziP1kWJLzzk&VTDYf`h=JvU3swLA0J$S$VvOSaMUt5!;r+ESCfS=vO*s0 zKQ09|mddJd{Og=D%{zO!|Lq36{iCo%@X7~L`&(M5{p1M==57h15c*ChkE$zRmF>ik zM4G5-@xrmRb6W^K1XVNz#Srp_`(0d1(*VDU>TA_s@pj7(jvGhsWSdY3y@s z_=VLGS0e?9?~6#}{v`RGfijM^LVG^9DUtJ3hjsg~4JtR7x$%Xr#VbV)CgDQSI`f0( zpL%i7n`cYOo(cHhBikVmALEGvk(Ibv<)>)5AJuCX?d#9{|44EtUa}AF=_JySI*# zL4J6J&@vz?=zj3u>s*b*=r;B`Kn zUs(ex$Rxq_8=0~x6Ozm1$IaA;*+6-4aD{T1y~6y-+QDreQG380Icwn5gzBNzK~Rr= zOof5XKbCJ0M4sZRB$Tc-YB65V-%;>N%VsYbR_|M30bb440!_`)|9OSC%$F+nS6&UM zSD&zcTV?L*k00v0Q}W8 z5wAu@h8@Y7MiSyWc945@#JIyY|@m3#Sc~zR+D0MeTcIz~s8xm4&uu)hA_@*6s7HAh$ zhlKIKEs0677G%f=dz(;CDl3DcFn6!y^sU;mZ7S9LuDsH>2b3IjKc+!kjJJn?)PvwO z+u@jVm3|<;*)xU~T+5I+j;BG^K*ldC64Vt2Jygike6&sf2rBPcJ4h{zGmr}fiR2retI!2r)e1dtrXjBijUv8G92fJSm^*Z7M%dADK zx}){o(Eag_QVIU;mAFhOE;96xAOcfb?ofR}*ju~&%k7f-8dj{B?=9rZS`6ALcGQLU zShO&>>o}yetfdUy9Fn*zR`d=K&Q5ZuACsdO`V%;^LZcQE{BR9svaNEC8SJWHw_wJH z*!s)c+%70eFiL0n#@p*hpn+EX4au!F|I~^ot7aA2`QYV~S=%o$(Eiy>GQHQ8eSUs6 zYazBW@Bm9OSs3nbJe%sK%q{fxvVygskgz}Q-)L-{6P)nruMC8=gAL8v$#zM}3H77g z+nG{CYrkRoXc$=+xQDkhS?Hva4wi{Vna^x-UcAM=#Z#%iwPLDs4 z`m4Itsxm2(X@_1NjzoGj@@YtY{&K-?&%P(}o%mK~Rr873w%>ZRyCVMyW!R%*edl$< zqV~k~4~*Z8_%3Y`YXq4SKlj(qZphlnwO7T@+f6HM90~Iw*|EaR^rxAn14l}DdU)f< zAu57S=Oyn9kg;NN!g_z2ys@vRoM7e8_eR^-!y*1dZs=4(LQDutl?W`5m~feD?TQ-C zz<4pIY04HCtF)Blv=28Q9gNumf2rTxCq5%duWv4RwI?=-+#bbIFxEM#67io+q)*eS zapVt(*oL+Y%~oyD?cowCu$w+;aq3)(Gq zNs=tg2s;~u+T?LOo3M7k`d`7Cy$F$M#Zg*lUev0KD0{!T^56)v90BHIL zqBekiFsfO0?J6-TxSTO=Sa26dMIcf&PNB8>%WB4(6a9})cUm-VV`Q481V~QV7%!`k z@8>&=<0WzgfSRUKL-e-RZ3nEZxGcF&HmW0n)}DLQbWD`*{VA{o@rYUs673Mk+Y*=8 z{2YA@_hVT^6Lu*ZBIUz*?_XL?%}aVihHEskh|@0JG(}PJc^9q+e5ty2rYDI_VG2Sq z8Fe)#hGf`HKYM%GTXfTu0~O}rq!+EB*4^8oswV$FU3uw0FEfwsk2>PqtBl`JG>?}g z?>~RHw5=@1AgAIXvwhY$zy)K2)C8(&xv)(Z4e7&sJmb2jty5zR__WLds58LzX9uLV ze)wnl$OignX26Ga*aL9L$2`?~VFVvlux)P-9L@>-0g?Cvj3$5SBAmCwuelX?b9|E$ z?N54*`y7~eBdnFYUy6C7tv*&suxtZ>g~^k@rWizm+i^pE&}&&*DG_nJe7`>an9ci~ z&*fYdgmv8%Vud->GKE3Y9zx+F!8-5Qgxv6#YbC5M zcL4o}WUdy`w=X+dZNnyHCKTbRpMI=+&|G}GLoi0@g6Ni&J-vJKPs@#3F|qMY4{6qa=iu!W&1|Zvi2xi?1qZX0)jifQ_2DwcnVkwjS z=LqO`J*FXcW~M^A^d7L(!^~FgOGHUqHQ@ho29(Daw%Ug#_n|+X8k0b;5A}6Hu%p5c zd1>jLBmm>4@fff08Z1^VE2$6t>I(=HMeP)X==H{NS(-ZPM5{%UbH!cgdY(<#w77q~ z!@Mq1v#GwvwEKJVR*e$Pt$v7%OXM$e%Y*R>2)27CZ;leb8NrH znHRUl<#^9PTwE1%?P&0!UnV};qnhJK=cXGg*Jc+*Y##$(KWAis)+IIs7LZyIRFl4g zC1!%)y)7N`MGWSn8B`e-y%lfd{WWWy|vAZT45Szc?8+jfg`smVUgL~hOUr}!MwMOvXdfTiTpu!)Wbxma(lJwO)X`;RR zijm?Vd+lb-)fejEyf=yUTlBtgEL`A^UG*mT!!;`$y_>ar1)v-;@Y8ovrzo8nsmRpH z-n}Dy<)haSwrjUFkjY$v({Y5#gpGy00y)M%lS^A%C}wb<+FSpICxTj()A~;QkkvB~ z{N0cN#yH*Bf;2~zm>;lT#{Nj%1`Z_zLUk+T`N4&G?}wsJ_eqKN})0Myj(;q z&)*|i>290i>ewEe{3*uwyG&dfT>CYwzjw*FIZqx~qiHJ{qw*uTGP3E_D}x47gq-dW z#=}1aW7Y0ws|KmIRoK7-Qp5x1X+e>B|7l~g>QvFbeaa;=#JAUe)w&hPln3~2x)sVu zl!XqgxU9)XzQ0#o{zGAFCrgKr6D0j`04<3_H*IwNcNgB8h>L#&WGOGVNw{k&4fbmAy5$naA;(P=BA+*6xn$g-&*HJzi z4?ZwxYU4PE&3khkW_s!RzT-EQ3oopQetF-Mr=)uMn;N)0#p!F-mT*B4#%}U_PBG>z zJTH0D6zUy3KnxLPQDh$Gg$xY30CkF2pdg$DKGuID6*x3BY>#v5jn;AT+%Ie{tuPd& zz_R;WdU(9Z_35&R=&a6H+`uz?mnYwcc;GXpVyDEyWwwcQR(_Qnrh+Mhq!GaO7MA>^^&gciZ7pb|+=D2&KRXF82 zw!C4&Xw_w$qZ=?^#Vx^kiO%!9tf~mb{4r5adm?D4U#IMJF;$aI6464s95^F4w8PG^ zyWcCA0STUU8gIr`Ngrd5TKoy8eO9Wp6*jYHWK-@~jZ3)!&i5x~QG1j-d>F4^-{qEK zh>_4+MYJ&>9ZI5z(_S7w>}*j#qdwyqd6N~bMuX?)kj|1Gv|c1DZ2SUdC8m0LIpR|d zB1M27u?Col;qmaEpWo;6`ZwF|vw`CSjjNr_+}OTg7T~Quj13XOc&F}sU#9nQ!&cfM zg*V;TWK%-Y&o^SAQfxsw-7B(+9X8L>W96b`h{`!DREQX9RItk|l@@J;_N~yH5F}nD zy=O741Z8Jhj^5(zF}wgrbi3a4)2CrG4z(&- z!4JRQdZqaOqr7pc$iLI{tVt49^P(yKre^HdjCc5xCajDp#a%SP7ATrB{u?2`_SIVb zgF9C+xtCZkOS2g8(wCd;mkCZ8Kq6R~^ZJLAR3&6%!*FXQ@35yRmb(&k53o#RGrFw~ zVRwGu0xUKlB%VVKO^`1jPYUmh4A)Ao>-t5n(W$5;NgcTOtM>QB-@OxjR;Ty=Ye%dr z#D+tzCS101xR6S0PGTcBZ|M)BNTKM0Eo{q4JAc<{sdIZxHedEql{j$X2LJ30$(or0 zmJ=C?FVH)O^$l;_+kyg4IV{%|0*&pxPQC6$9;uu*9}A5w3)zb1SM=FhJ8k3$`=R?~ zv(VFO2y$$Wy@`Rmv`sBN5_U4ba=#!%?xI}`nP0lGAK1JzCIQ^yPOa8M65XPS5Dn&; zN%BCRx98|H)~m3~h78=!BOz9-cFv7BS*{701gh|9=JEICc$?y-@! zMG`QkhVh?hn8PU#o4#}|N1YmgKqj|I#?B{~+(q!00)ZXU58O+$mj#yq)_9R;b{cqQ zH@AK%hO;h!!)(fo*UjPbjOrS=q|6W=lWU(WkBE?7uRHoI&Ii$$z>9FCuFaNQLKNQf z?Mzaz0jzx_awqZ{LW%XsP+(s`dEH$(%$Fr|B${T!{^NaFZ>h^8vz#&zSJn1yM{=t` zn~G^-h9ht&W_a%&BgtWg7x}Mr5X>u{F^8rn*`+eK?ZLJh1QAU8$h)%J?U9SP2M&>> zp2*<-Dwn7%s5^9G@y-jvVreOW}gEcKrxdNxaz!R7QsZ+xzNQkd^4KqGrjqTaU8no4Vxm7Y?fS zrN!ZE^cDI*JDDb;yBy$;O7}3OYt}S;vER?)@qsbE2p--8xz9zWf>+}EgmN>}qSy|! zS4q0oPy`M2-o{ae4X0s;TJ=Zrzdd<2mLn8N{}-TIilo2vz^CJEeDu6#3%ihCItV3^ z90;36gg_w6SKa|%ZC+BIhc|@C;wUFwJMQwL7D^(=-{khMj&uQ)d1ZusQI4{?r~{IC zX>~g%^cPQ$&Jm}5@NJaPfo>&M?qMjJL}F;Q>;L9QrYiu(c%AKig!XOBvZnX+sOiMB zF~GnA^Wmrjr{8hQ&8YODfS-ZO0vp(_@goA--7xy>Rb|`k3$R^j!wgaQ7Yfm*7Xbf0 zq!hE`0BkXi(Efawk#mrod?Ep--6P`bR`Ce~MJF|cE-zE$y6`g+)S6Dhf8cYeS-0i; z{Cy}Nx62(tB4msUs?7W5HO}>yGdDTQ(g_>Afhd{K9cf5NYgGpGhluz{;;Zd&^!&)U zB>S|c)TvYbE(LziM!|SQrNXqH?U=e^>M_C(xoIkpnRfAemx+j$hwiT!yt0zALNK#A z$lqYx=H>?Mu{wG^oaqEw&F&V#tKrd{gI8Ls14oY>K;7yxy))L?N6BTl5vG&y zRVLnN39GHJpW{gCu-=G-oQo)uqvQAaJ|?qttwOM#vjIA4p*+7ZD0~DsYoYw_W1(L; zfT8%o{rvCr%$aZ;+ZOIxYVb)@$*hsU>v$>4*6J5kXqi%DX$?41?q1j~W$4WBs<_3= z=*3Kg4UjDx(Gh||4s zF(Gd~Sj6)$J`Gf#6aJexSYmvytSjJTHfgy)4SrP_NXjo~1VS{@rB5a!A^wNMx$eV7$xHi*AF7!9UPSnDE6TY#2ZEEt^;qg_kh?aP)pB^*6Tn`uC3ABvbg zJ|}w%Dl7f971;#73aJ6H%FNy?0~(@1hZw?-eY?nh=Q)E*rj)0a9l)I-H1HU4h>f!g zclZ9v`-Q7Kz+#fv!~qH7?~vbZL~sR5m;v>;#{26>r<33-0+eGP>XYj#&w$2CMLFI+Q*E}JN zk{UOTEnLyHqC4ttF%Bm*I_lo;&OC#Z2N5SqYOm(w2X36XUz}~{Q^z_*;jnRzT;sD?$}(maqDbxm1;a@cj7Nn=NRHu``}mjoMzr&IE-_@5#hhzx zcXP{;XLGN(h_mLrE+!K9_yVl3wlR75Om+ z6uY$dL@eFOthQ)zW0L}PbEgT#fDQk&{uFEeI17(!V9lT zW-s(lR4L!cmu6G3;32o+0cJncOISkkt?cWd7^;GCZDp=NOkQ`f=K|KtB4j#Lux=nVu?IciO&s zvYXXImx`&b-?dp_zX?Lt>_oC|cTJ*N+XWvR#UxAl-DFIW*L&+PITxzG#-pu0JOt1h z$i8sFA6T4>-Vvlm;CMW#1++M!xM;%jIF=dgpXkrvYc|xRE1Z zM?xuKy%0WPPM=Pkdvm+rbS7}(onoyhUfNMQZ^Sy0H#k~)1_$+X!^J`hEd@Sw>N#VK zXe?w^+xn(RXB2g>LD1{T4EBXCTsW0DCdiW=54>`g)bK>GUx_Q09J>GFIak&(D?vGD zx_1%i)t_r~$&Zq^s$QdT8uMMJp(g{^Pz6+Qd1jEI=yjWknl{7W1zPNncy*mxUw&x` z_n1y=U!d;y4?H%Rm%=@OxoR-6EgvBMPFN+8ze1uW?9_ESP|#K+0JCf1FOI}$P}?ZnP6{V4)kgt?Z9`Z3f% z+l!F-88no&MP7Dj8JCzK)BU>Z8=^ zgj%bwcO2`;eR-x!OR`Bp8uDcfUzl%`V{==6of zJ%SY9Ledb0Oe0xR2ScVcgiQy@!Y?SMzA}kCf<33bMFQX&seD!=m6f`D&+Qiy4#(~A zm->ZyTHhXQXfL=`yU`Gb^ zdWp>!gYMU&y~{T4RZ`?4~^%!Opu};*5Vv3>$r@V^RzgvmtZQ zZ%3IZtao&L)ih~!BkSst&@p2)rWQG&xqag`-~T4XwamYsKY3Uc)dJO2PaVzScie~N zy4Rsdt_{K-=SGNWRm2yDxSlYmM5Z!juODiz_?%{v7YE?;ul~C0w6ZGyQqJdIsz6*^ zH04-)19@T#sCt??uPu=lP;MxIy<|@#7&F%y^Is=en`(2};EraYp9iOCl&7R$ir;=B zp&e;4@o>G^RFqEl^wbJLT%Ti!3< z`j?+aSuLyfs?)4rqG-dv)x|pS7uEHV@J)R~5cQ<*Of9c2(4oou5pR0Qy-J~OU~w- zd*rOGAO3evD48oGE{luJX>=7f)Vc}Y(5^yB?40;;>k=GHl(r_pgfW`GOH59eH!P}A zsV~=Zca{q=M`-PiqkLo)wyVsR-d35_N&0e_T_js+>w1(#zT@#b8$s-wKvcJV@Vy!Jm%Sr_VW$856ftd=W^*;P3z8-;>2#9n zUSa_I3jz7})-hS*4_}kL%PkIGt9|y>R`e?|TtN47Hds51<8ix`=WC=)q9rZSTx*l7 zU5jOlys&VJMD^ z`3xV>EH;~jS9!7h?lTe))VhyEG}9)$TS6ugNU9T8%+58TMbz?=>T22>(Du4GlgNXh znv|>k??1&N{|GTx`P>k=HmSX@kf*3I`n{X8ULW1MBI9C|#xi(U9>;zv#WMQ=UYJur z6QbU)Zl#nz_;eT$!f*UWCQeeG4MsVAjF_n%)Uxz(hv?D5R@l*b|&e;SaVa zD6!=Uoeo{4(#kxPOPOl}0*!Sg@cNY7%-0|SSPG#@dCJn-%~UPtcpV3!g^x=?BTfLl z)3=>If59m8t`Vb-5I!IP-$81~4am&uuo`G&K2O#Hb$bZ4OwCvLw*X24nveQHQ*sH4 zB4)s4eMN_}*&`lyg-NI?73u+h4Qh8|FfE0s)z%;+{5fSk`@YNp)}r(&A!8pNIcM)e z`lWn0WN+7tW`{gwHTAJu(Pm)5MXTY8Dpq{raGK9q1fO1tM?fQAn?K{qCP~S3tI-n` zC-X>qbRp52tB!aNKZxI@!zyPj2pwyWOQ91DCi06F|8e#qn$*MX<(xYa+PvD=t;(i; z%deaF=}Ow6ri_nS@cwvRLjf!I_5&{;?u zAfyrBVq|i{mVqVPnsnT~fpWkikoL+!v?|2$OlfJJ**MPoHAnEXD?^Ij6P4JB6>c0o z#p~EsF0D-mP+mO#aB(sTB7f251PoUSQIb-U0XaQm{rWHBLj z40UZO#$TKfW6EW&Ow&W6^?9&cA^vb_U%bF$gm2@R;H=!rIjt^>w0<`B6iyq+fe3^# z-dr%U1_23{`77zHRs@q-;?W3TZfn^1a`LtnaofRwj^RS zvZN-8r|jyjDo(9HD-~lUvU38}6TE%ui{P+q5gk{nXt$0);0qTH(p+}V*w-}W$2|Fl zkX*C#Dz+U&l-*Q(!$BH4pJdR%10d1ny(sIMm+thvB8Tn!TrS?Gw{-2Rxj34{y4e8j z74T2@WrmC}0hP%LI`DTHr55D7rtTcmth)G*!ZKR>mkv0@ywGh@!u%~4U=KjD20hCk zJt-}iCWKV!C?5^HBsO1V?NBH_%8el+Z^lP~Ci*uTTO7F1Qu2VE=tzvfCq6en|JlPh z7D=7JB&ApkG%Bf7PY-s?tRw%AHk>mivx(2L5XNfh&~f*;f4}Fw(*NZ?zq+9`sf*|P zphhHxHe@+{dbo25Irykb|MM2OIO2_`-sE4vXv=qlsdLy0f^;L1+P-EU3jd%ta?Ei9 z_%m6)`;4wsBQ7iuHi(L&0z|TlDHV{9_VaGkv;d%KsM#*$^ns;$(>YMamayR(8w&2K zFNaXyXuS?|h7522nqe>w(|)BcNqBYB)cye{p625HPgVq$|G|pD#Kg$( zf2|0N>?{my|L6JtS`ipI*x4EWf2{~@rYbqsOKefX2>^q^taO9_nGi?^b-NSCc6W7y z!NUa{+};1vB!nN(h2MCZzvg}T<*!zsQuS8dbzNIRA(5(j86qbnR)Ro4l$o0u905*D zRtMO?2F}ntFBu49OB(|~10y426M=?S1XmJnAc3GTgJeGea15dWh#Eg+R|5xxMn+;M z0ufk3vAB9DX92|Q06di$2(z+tE1Lnd9_kA~oI;MCFrh6x}Czy$LE3jm%xk+py*1P1^RD?0RlS}o z&!W7K?dQN16ug%GC7;he#CP{}WHn^9C2=qx=VJlP0GKO-i%;`g{)J#Q_BOo7mecBUkw&vVcZ#adLc568_nz4*M^C zXLmtd)H2~>!_y0=|M4;k7bF*d@q7K-H^mMPh)atz821-t0nO0d%J?o2WaPvHKt~1-$jpWv_>ZQ0B!H}#Pz7cv7Qm^2 zwdDgpx3oB`(BaY;}5v+vE?1y$2#Ve{{Y**+JAukXzee+{>J7PaKGY@nEoI3qW^=LA2HM? zyoq-+D4^_Lp`WqkTl*(%eQsqi>BYU&=AOs)W{>USU&l9NlRHqL?BD+aML@d0b?g2P z^;VL@Kj2$Q|L|gd^ZKXpTS-p;fNv!^{{z0!bom>yyw%|L7yR#`Rr<5M|JqATe^2rM zJ=Olgs$d6@wW+41$=ehCA13mKU@*222N=53UPnAKUO3CfgvvulJZSk%ryEzi4L+@`ABP zWZ>+&IxzOi^(;OJW<5+{A>cW3^W?!qkK%K6{rFrJn@tEAlCz9`4cjVG*I)htJJNCO zJS3)V?OtbJd*rq_nvGFI2d2|D>(sR0MoHIN?2P)GX@&>x(NNWgshFC9_iFQf^YFu;6*Np2e{@k;F1mW#o2r8oVT{^wrEO8#XE;fGs z#VQN)V>4yWL5R_F1<|((6Z)yM1NlotUqq2v3J#?X6Y6`tLHnFAn=5}yqVV1*g8NRZ z8@`!=>I&@boZrss=@f*6L~v@EY0y`D>fO7|FZY*EyZ9!QL!DLV$!$t<1oV-PI!HuD z=6&7?rOLa)atDa2iX?rdEv|`lHnlJE$8~(^Y2yfLF zF_W&jQXusg+OcziOk>qtlP;J5CMudWU4G`%_v;=>@=lX`nshg$hjzHM@egRwddeh~T=*hi0}3Q!o+=!y?-3 zKxZGeuTYPp_30AB3=pC2E*Bh7N28wgeLjr;nqITb=A$)OhD4IO^RrP2Y254O57b$1>2>!4N7Xhl*odG&jc1rqd~$|a z9L{deqLD$Yo&)rqt!Z6UT@LXIZnx>HQk;JB;o2`j$$Yja6i$&aCxUvIZatW`>(k!l z0!Ql{9r6Nxpd&mz{TkfSCQPvmvB&uSU4Ehr#d<~o1`q64)s|KWAb$obji`KGfsAog z^NnL8PuO6)HJ!RCl)IjdBz!{yPc@OV}dbjwe{ix8PiyiUfU}J10`nusD&DoOE#bpFc zDR1*C4g@uivrtoA+Jzk3iKHAMgD-Lcj68W*UiuXA_LYam4t!nZslfllw9QG1X9UQrq zuiV$a>=8B;2F(%~EsD7}e1t<%PU~<@nfjXv-eRS#{D9tt1A^JGJZtrpuW z^~2WBZE{CrSKTBCp8jIr>s~KXTYB%Te;fPC(A_OMZC~#KkrDh}K0%FUG_5`tmeBZS zko82cRsLYVvaA;v#;7CkIp};i)B9D8XQE#BdoG;Br1K{sBx&kMDQKl0iO95K7d)*_ zghiT-!1xY4XjV(YlpOr6ct(PTRdweo^7neNtHLkMB3{U5uDWI)@%rDPXj@%l8Kp_9 z#Tjl0@1rBs)9j-ejK@}7z8q*8uo>;_hGrFR{A?0yd@bF`z>UEKPp{R?ori^D1WjePt!!pc__ROp>+X~?~)I0cUxAd~$K zb0OK-Z&sQ`LUO7rqmB9wZH31?qa!+D1<{4_p%FaY50^E??MJEc7z^u9u{C(4twO7| zqrF^+_mr!YHzlGZgX2Y*g?Vr^$|~cCFl#2Q$gT9upTu~@yspqG9;`=QXsyfyR4IT3 zxMaOZ>a9i8+tYaJ>7O62J?^vW&W>Q`95CW`5j-{b_rJJdf9q6P63^Rj@mFMkM(fKC zmH~&j*OAv@C7a7yZ+y}y**(?oU=8zuO!FdjiSn>(Zq6);}&i^ zqdrb{>v4~=5bSXBajV-X54O1ZzIAJXh_2Vg;iHF7gFlMilk~exi2><%dJj&Q0KJ;# zk8bJ;k(WEsTCuTtOwAhN(66;dcT!r(c=!iS8>DT^y9IGL)eUMj(%;JVR8ywhM8$-) zj8foa3cC-N^?(;zW%#`Mt38dX<{8~2A4RF^Nx9$}Zxd&W3H6^T7pDBGsnAd9(DYld zo2ycA$}Q+`ZchkDk@i1+#_)$YH8SAqO7}*U!RTun8nT5VEp+@uzV-@Qhem5GA?x7m zU%Tro&oeyx-QKSIg6yP5{G&f$YtVmO7=?oE=f^mfW z(rH!i=}}{l;L%Gt$UcWQp9lR5dfuKx@O|=RtS_l@0N3n!1(CIw)i2Iz119C^as>7Y z=+mB(r<>J_zV=RY-00rXL$g1LkIj3NjA!`tS-DVy-zgLAtnRBo&NBywRA)La@r+5Ld&*@*`S zLND|*cqKB%st;UicBMQb*wDvaM*J-7eDfAEgeM4$y@}abo`iT4DYmeFhowitj{D5< zk>}4Zbc6Y=>{;Vzyg%D^Q zB_M>G>ub8OJo?(n;llOv9|}YB{9dmK#8$BlLi)q*kCLSNwn=!>F)8WQ5e{V{$5D_KG-&-9KVW6jR%|uaEiyiUmo|?Q5eb z)aEB|`RvDq$(sE>>!C)a7&*o#55SKE|uH4MNI6L1`_Vs*S=21w@4+3st%jzToHRW%^-;M zLB=SoZoZNzYkOv+dj3k@m)GZYIo+Tly|-sf4_zu|edlKaOx4f%1aQcx09y_iC4n!v z(!;ZG7>{V^x1{VlwfVnVhb2dR3{on5b|SJ<#pbxEan1Wx5)O^yPRr08KF@M&ZK~#p zTyRz3`aHNVU2L4?uY%ae%5V?XHI@dzoIoAx3}`?=+H!}aJ+2z){3Vqax*Ddi z_nhGnP=%J@zy8`Bi`#|5g@*+5GXmUGkQ471`i)Gb+ z_KE+8D?;LzXml)idPjPALB)wwL0~+i6Mic3NHM7*EOR6U;d0oN^1RKC7R1av(^)AF zw5U+2Id42)EF^)Q?sMN`xU2O?nD)-5se*##+Al!kj17Zo5^?5@^#jV8MSK%Cixask zgbIc-C=Zt;TA@6#_`8H#_}FFUpXXoNJI2n0GArdTLJw{iU#!PSx3-J-ApFldgQ}nx zvYizqTo4rrw@ADPq^|*kmESVy4WT2x<^718)cG)hun@$?Z~I$SQ*i)^Z)zGQW}Pog z97rY^{?jH{=PHCd#j36xi!qnhMzeDVmExv~b$?6kE}k4}m|2i%{F4r1!ZZ`ld%`*C zQ`rfk$a5B5zEy8*M_e6%=g<5CmNw> z`|^64N%;zE;N`s`(dkw^hWv?%mE9@VB9T3g#^BsW}#dyk?FSuTeo?fg^( z{L`M)w`wXx_Fs-8y+tISP=xY&#x(bmr6?gv^&E?M)fnH+aF!BD=0tuL`i@X;mbn^3 zW|=8O#;UOYC|copR7w;+1pP>K&6toK=X3-Z&;j`Yjeezfvy^A(r@Y{Q$aL^X{LcEp zsvB4mSYU=qIuom{ja~xrGW&k(YeJ8wezy{Xcn0nX-h_MElb3k%e$bu8$xMgsDy|JH zSXdw0*-(So+P|(8-mcNHl-K*}eL33~m2?@1T6@22zHR~n*J5A9-8dBm0#J>hZ)%{K{P$P5%}%?fRb%7=`KyZ(&6W2lUgoR8w4FXG)s z1_k$?Fy`Z-22;!K{1mMiz!1VMA82tT?)ANq%rjB+*BOxSOT~>s#R^57FU~Vsc&n_b zKg(6aI*0AiZ_NL6L4BvJ{S||feV=`LUaqA^`~1vn;8q5OWNg-CDiEJ>OOXGXk~aPz z#$C(t7AfJQb1piYAFX=v)({+nO3|`QGp<8DM2B}8?!hkR-3yeAr}lC7r0k?yfIQ_U zIxN`!3Naryxqp>b?P4)YVXPI#?-P3x=!QAHk8N5r6_~tF=EwAUyr=-J75yT*vm6v& zW;e=6Uq^0M#XL6Iu-fChVkQf=0}vru7z@8f%v1UH1p{c(N5W)e4{4S^HszL_4O zFk%z=o=w}b0{Il$E}A@;-`RGT^EBaRNl6anL$^!6tjm{hg7A&!a4kB09F?};kueJ; zzX4!(Qt5U`m);f|nTcE*Cp|Xi$fns<3~ zL0+CPbc5y=pL!5%YPgo0GS6p40S#o_41#IG$Z6H1dL^NGiE=*ux~g@#a5n;3rSI2% zte8Is+C)TzdqNf3>3j(`WtT_a=B@ARA8oa9f`BTc4nq#P8L6o3xoL{}{^dYCu{3s` z<_g7PD^t*B=UI-!36kvaP^*x!e=XKiU~y-8f}?PtLMPpdnH+55UwL;Sb5Ee=t(8S; z0qfWB`qQy@gJ7?En<=sdz$(hrY?;PBp$bRLTey}_YW7PF!bw7sttn4H+6s@eTfl2@L4W-shXblSn;m5)S_7uR*FXxbMs zY%xksjZTY8XA2&E^|mwYqN!roX==QP0~djrblY}8C)vUWL9-0nVhaL5YdUOv=lA1M z_Es4~CV{9mDS%uzh7B@VC(&3OdM5c1j;S(HnydQN@SR6wYQ-9^d5jbtbq2({fK$+r zA9;vV#Ie#ivL|tF@5Vi#!U(R3SypeeKv%t7?!m$8STmP|Yh1kX-hU&<;-H_X*!k+^ z8+{hKRSs$6(Lo1vRaW2%Eo)ZAna(bI{MDeU58q+G%ZpgyNG;L=;>S8YWj+rAb7vrJ zY1?_&LH$<=n|J{WMY`$;ED_y;;2DU=WICE)VA?c2&{h zfyl>{n&D_|vdOPtlAybOm3&Jwa4RDLy`+d2Eena(3*N;cG>nu0-8RlS@?Mu!1?E6Q zXworz^H{?DOP@L5Gfd~kaUu^p+KXeYCT={vnIAe=5wN_SanDt0KK;faF_7=J5diHT z8{T%UFDH8DVc>u#kOv;2GDggRVInf!iJGs`Hy(@ZLsaa`WE2GbN@fPX26IhpUyF70 z++#sKN8awEDYP6PAsM59c21g{KCNFeopWY*n6(Gr$+`w>N0ev8&DE4-ouq) zSN;K_d^f`ur&QhWw0ZAY{dnU$*v?_r0u;&(ha?=b;w?T~&;^7oEp~7vL@sK+D>R)) zdN*sC@$CNCIxSwt^%BYVX=JZp6+QXL^7(S$Fed=H4vUj*bMsqHAiqV!N1>fKc~?7P zSiloglJ@V$roc5c13Sa1+}3Xo@ngm5FZ&G=L10`=dA~j#f04E<`YlFh=2`_f+g$Hq zq}>OM$VbPzDT*zL6{9NJh}BCWDC}fR7}K`KmS0?3Q4kvGHrc47x~p0qYS^AXQuIz} zaDsieq(m%W*#+v(AngchAoEo!`FG~+`!8p(?e;}O4#vt*c%-nYeQUWbT>=AtT9z(o1rSy z2zN)N>Xn~{=V5W>_8dp9v_71bM$mtSI9c0stRW(h$Y_Z-)3m`}83~0;mmd=pfr9Gs zz~b8t{}P*m-FDv$FOBjTDc@?BHMitUOZmI)={Ri6B-=@^ zCWt65ob?oY&l|buL;l4~9sFoM>;XfeV5%r3uC+8gb`6R^qQYR2#MG#gzS;QlQOlrtjsLWIC$7WPii)=6?4ue z(jyB9FwOeLdJqYnbEM5}Lu1$jj1T#=`B7!E>vPCl*|#0-+V7P+=9xmHP`ym!F?K)a z=wFs?;4kfc13qNpoVZWu!Rkop{?yA+80x;e7@2LMx~V>FS~ipWoJ$ffE6rTQ3HAO?Q9Pld| zi?H3R$qYt_5OyC?+xsYao(c8^XBSs0X~R3rz&(VDR4TAYN1-WF+dRy!yoj8u-_)vw z`sQA7(}8mvx|(a!!E_mf^~FzwtdhZP5siMBH+`a@Psj$J`Pr3&wAnXIv)s-Z8Ei8Q z(R3nj&_kh~d>lcKQa2Q#y1YRmxLtVTFCzMd(+vGK)`yV9{S4Y|>X1-H|NO;Y8_Y+; z@af`)sdV;a6BYWx<=H6eqwtR?RE)!V#eNOGXm#8wzk-d5Dva?~O0RHjY<#^sXE_uFGz7lwe|P##}K~Dr(XKVV>UO^*y5o&``d>uZmp;ac2j52va|I0 zJrm-7O&7w!*d`r+sh~ULkk%MV`Tl)CC6K_9I`;}bsdQG*yQdd?W_?+Tb zppKpqS>`w#{n`$T56F1$IweyrnzXvH_S!Ez@P4ZL1Jx}#F{6zk3{_N7kp8Dsl%l8W z&n=(uSUVaiEe!;D*|3G8vXWr~X9J1rk2pB$4PYS9mt|5M9vMZn2Vak6mXk-NSq~Z4 zlV(etiRCAVd}dC#;32_ZPDWHyUyWmD?`O)A=>6yieye>6|0G2cLy*ct2c4JfJ+SX2 z_j#L;MRAdpQkPZX)pCU`r-b)_I7PgO=cPy48tSyKZO4nZl7lNyQJ0uwQ%Qq-UyUA@ zL?CwhjC*KYS}*7G!zYIJT)&Fn5!kWjB1xT-msiA+Ioy;tt!?}MyL81;;5xzKJV%Mo zH&v^vXCPf*fIpqNeyS@PqAVf2@XW<%CZlQFY_hP*W1Dp*{y3u z(vZ|r>jNgWPvF>phRARo*6_lgdS$oB3X_bx2@1Fgj~-2})JqguP*Rf36``u}W8mtx z4RO`w`{XbTX_!QgDb((?+*tU#D>Ei0Xn~{;JMW5ALu(Hn0~0>HBOZ_r#Ah=56?haz z+1vAV_>xCe0y14W*02%q`II+YI7cJOrQW2f@6w3c>Mkpc@cq62lamq-< zw>t#iByUX3@BUOYGr9f+0_RKH)OTiNr}7|F0XX9mzDUN*o+F{Pj3t%)${}m0b^v9P zmi+Qu-~68FI%*aDCxiLgfJhVaNha#wew4&m*yo3Kn82#9_^5thB0HB$ugvQw4T=;6 zh{c?gGji>$U@ts0bpqz(c?JhsgnOc*BCmLElGi3mXD!WBMMZ7MeSovww5!kbBB`_V<$hDV$^WR< z&EIw#o=f+Dh!p{NQhPUbb*8C7-D}por!-7GuumGVN^yO%Z+C^OM1sp{!9iNx5tZ_k zp2u1KoE19DCTB0cIBB`>!!riI<~9Nwi=Assry%EUOhPubRHlwwR7Ak1VI?-C4|lNm z6SLj5x6BSZ1cV3M7U}hx!aNn1*1i2MR1fBN+@5 zo* zy~E-Dl@>(RF>B-)e8=#5ls|PyK=H6AL@K4;O4LND55+OcnsxY17jW1Zr|v6pIHqkP zWRJM??OwxfX2RWS4rXDmjmJB-S>AN=YwZl%63WtF{#ZT?w(tmUv&Q_}rkYAgrFMlI zqC{Tb#B-SAxf`$1yp~7(t6+SYXEvSSIQ;mk@*s zryvs}z}P>>qC=$4g22558Mp1*<6E_}_l;JGsoF{hX48I1V#a4+VlDb)T2Y8pYA%gH zTkkH#fa$`fwU5%!#LBPXYd2Lb-X%kW<#E_aemw=I)Ol5oNX3}q2khz;h~hq^jXX{e zR$|ILW#RB38FTIg#V)3wtcb<+oZoG@GR&iW6(5#6sMle>c7(UZl-#|`z}lvFb!Ix; zl3{OgYMb&1pK@vTj0DU603%?3YSBB}XP2f`O ziLr;|aleq(`4Nq5@&Vz?Pj|ANHt0%2N^*OJ1j!@k?^PYhN0xe+-<9YoF1T^k<1^_N zTJw)$2Sn9G8LZARdWw_@mAE(4+gzFKS~wq?AJu}e?i5MJ9#<0P)hQZ%4vzii2fd_9 zo|>Xn;w|5AwH?{{qs6F(z;H8%la~qRz}Wu$tyz)3RK@HUZI=Yvha_xa0oX zVqnH=v2UH88APtWr6+AO15o1R-KC9?69kw12@WJ6o(oK&n#3^OMQDu; zzsi|ft{aRReqx@_<4`k_ZLSVUnfciYJ7XLf#T!N9p{!qV#3>`gw7Dq#*I8+dOXipf zlqv}%1nr(uz|9@~qC03jd)Rz~XT&nOb}%lcJTdNe0HL{lWjg%q5XzAHpC8{lr4(O{ z9hF;QOv}N|vZ*g>9Igqkwtjz#QT)DNki|`rx{WhoHgw!*EWfuSAo}IAMA}2d_ybLj zw2q05UBkJ(!6JTIs5fhA6h+PMAylGbQf9pCM?>ov_pU?N_QBDw6A%us!WBaf)9$4$ zDELTnn7IWt4$TxPBgGsEVkhntKi)qRWRuL>1WbiY+=W~G zm7q%)Cc%p#PRI{(scud?5jcro&g0Bg3q$tkabUVM%yhm-_VL4U%ItaJE@h;ks@^Ee zwYnuM1E_w(JNPX8n4U?=rE!Y(6iGiH0XAJd!@CXC6~gOCd>KXAJLVHUM6LI%`ot`_ zAs^tjQH4fCQWNVsT-^!9MGC3lLjtip{Tw7eN1N~rO0L}A=wS>K8Gff(4MBD{*Wk?- zLq_+&+cy==Lzg5lXTR7^5K}7R%-oZi#jAEXuZ+UZ=!#jZIr<`HD`x1KsumvIIg083 z)zdsJo^1x|vEBXc5C66WR!`Vb0=Xy$s~kmy7h=>i1Z0lMUB94q=A>cUkL`~tP<|0^ zgq-yZ^U&E$QoxNp0S}Q83@q&^ofaUNi;BVevOn??5xtxvvG==RKxu^Q2|XEqgQJ*& zTdtOC-2L?9J8S_CPvPReEcIO*wz#RI_wXv^2E*n2`35omTigD&t9&vuzreOASsez@ zA4KOK6@K{^eYhpuDejc%epl0g@j~tH7eDfCx;UfV-GjdV`$jzZEiEPrA5|(UZ9gSU zaOg980GYIHsJ}K9_x`-J3fQ8g_|kF8V1*i5-lpD>71P<5y`p1+!!-GNYgzV~3Bx*~ znObJW(|_8F=;MxkO^?HKvicD{8kyLI>A88!R^-O{JXIWTc>!cFHg^+A^1`%>fwB{i zvgUhbrIYIY#C<%#=xamFRR)~ik~?i=V}q7qHeL-?`6yI)KZ=^KPuN-oZ3zUbPfc#; zkFL=beD2=(kVxLXnq$0+8L1*bolHW7Sqf!@Bw4W2qnlQ;py-wvVaa0m;Ej)q4(%m5 z#(>88MZu*g1KV$bNAbo{?!#q>E7}T=<&A}RNz^h2q=`bbE9`V#=vRFBik9im#?6>t zbD;3Iii!tK<|(Rg*LR-TPq_SlrqY!t_ScfAMqejxe=MgPb-cAb%qxrq}0sbi4~&N!&E$#6;$*JSUPqB|M=U~epITGJS(%7dCpQRFuvTmc^>BBuJ zbf(S{+xf6MOUjAk&@c^xmypV*p3P4e8efWw`hsScJPFe z+J!m~v_5lwUeBXpFlO~hlL>4;ISo<4UiYatqkxkS9h=V`2B0sQ&pmQ3DGAQN3b8WZ z?V(LUv3_uw?YHqcdDnSFFrZuz(ws)7L70>=si{(a&WK&uo(_wIvIjF3y$y-V^AyB= zd@4lSjT7BePTZeE^rMggE3?ICRc_?YiNa?dZ<>=@&}ujL6T$Vq;CdfM8Qe(B5sf`= z(cZ?zqy#03xia-0a|ZJ(I$YIN%=GTJ@4H+?ieJ(sVS8Lzwf)tjGCyk1#UAtwq?xmW zCM3zap{YZ#GEg3w+S1gID51Br=qFWf(i@ZEPdGN0Pb2NnPZgGFKu|cvnn{jw=xon^ zXiG9b4mD^@yCj0muOnU5-g8}q2k)0#Wa1I$TA}Fqux} z6%%V6>n_AP+!Wd2nDkwA&N!VZyNzqq8%#zl(k@ulw%xJ?s%t{GTOp|SQu)?w%8W2? zg^eU$4WVnyYonq{@YAK40-(J(9Qv}@h~=KK zH>*Q71ev-Ap_7xxvz*XooJ`q6tK+J)W$%_9SLirfT(#Ewm5Gj3kdh^n=Lidt4f&$K zeqR!f)NYpbYOD9!Rr08>Dr69JhgX5XHq@{Jr-IkiD(PW?tfj^&7xJdkYsHbKbfP%)+@u3=<$<>KaKFhlmb~wfhW_MJOGYWOuQ1 zX6t|n4J!!H+7Hz_=0&mZ^fl+BT{<)jk(OGds#aBHNfXF7+`rRr za`3>vu~=9RCH^QY2~*Q*t<*pkKO-k96`EaE5(eOGF^lj#Qo>&*y@@24& zn^J?g3!wEgtS@mrs$&U?Ts27C5^{K<1epbQn& z#lXIUOPKDS9_60v5DGH1a%Rs}v<_uAYQ zN-I4_X-s`A$=>v-AjZ88C39JIG_jV?kk2tp2Uae;M0oKi_gbt@;8;dSx@>%Ii|fQv zHMg=PMTbHOt16hT5{)g2jUit&C_~I z*u{cLbrvO8+(L;E<vHieSZjdS#cCZEP4+-~}C^V7@ZU4Y4nGDAY4x zLl5kbiWe*SJ?5n(g!82Wr@ml1B75w(2}4kIBUd|bx4E~0`IZ}S`oo5`P4kjCE$0<&MAfz{4k>^8{B#s7&Hg zf1B8ezA6+cioMNzS_*f0h-DL*o=E0G_@u^dd-na>3+0fL4jss~>rla(;AtI#fvT}gj3wl;DY4;hH^&P%kYYXm)O>7|_4 zni1^_CTHEROAVHg3JorkJoJEP?|J@4*E`-wzkb{wJ_Zjm?Mf^SWg8eaGW%Tx{UX|q zj{P6@J*fEW!({@_xnaa_t7S=;G##`p7Z7TE+i8=tNa5R-OY5HVFYAy+rofeygzXFi z>*9HqVcUSNo6mX4-r@p9<>^Iyln%e$Jgqgd>}T`_frySiPqD5X&Yw+CJogw>qPw%P z+pI_h-l4S`#BYb@OGT-5k`GNy2AsE%5$|o*KgY-1?hv$??;+734n{d%03pt<+w8(1 zAy9S|S(|kAi#=Z$LkZ16<|8l(r&{yq;(o8b$Sp}tj+l=>N1?0`1cKsQA*J}Ec97Do z20RmBT{HMl%;l4koio-uZB#U30}OqWmOU50druhUYHOGny=aN=wB}ph!d&Wjm;|@z z9Gr+5NIS?WXmUbTg?SF&hrP4*=2Gs1P4uG?B(kDXx??fZVzSw~r4euO>m`uN9xEoR z$_^ua*8^6!zr0>OwnQ$l1%BQs?@jfG40AUkfm~9x)Y*q=kYIs106`M%4oB5cB+=)8 zCK)Hruwe#htscxqob{z<UhUBWohse!F=M$kQGTQt7_Y&>-VGY z_}6D~`8I3S5AtBv(;spU3UiskDU((z5^IPjZ3@9~KI^YU#;2Ao7_ZD3RvwwpokJOY zzG4}}&#|p#1-~;6ooZNRZ6UFpqbPHt3obchE}2*&wY5^cG{|(W)t`O~VwMNNAWyGu zRf!v$IKZz9z?0&)Lj!+TK1h6l<}n(NwZfH)|B)Od^F%;&A=i4ixR&Pcd_bl(DFky; z-ndnm0lkp*oUwdqT;y790#SFL8n@bS$@8C80ntf*K;(3qsfSe zXlZ1D2va!Tgw?o7YyvNyQ)Z&{7%Miqairff;)|KJBg=Roo_?|NDSHWOJ~!KOhw7k6 zDxBhM+kb&gljg}Uf^@PcN12LJ^DR}t`5xbxyV#=L+ z^k-XQwmCt`nE7RgqF{Fhgy`-pQ8HgbrGD1V*#nHKce;OeVXYJ&3cC-`7X$PE8nIWmOZ1CghN<=)zw%b@P2Z>-UV)vTsG=?FeVe` z6fO~qbpMQI_JwQ(`<@@*6ql9WvF89EpWD(Z^r7q}5Ej`U)ib9(VI?;pUP@MiFvL)8 ztIhF4^!4*AMUCmK^7luAv;5jt? ze0)6ma7qC-)SN?xkIJ>Y^6bEqL5Mjiru33TDv4_VoVRf(jcn?^24a&A3H zLD;R#b7^htK{Fi{=kWjiOT@gX?iEw5+)M2`Q#Vm7q6Tb0Br!`3y9vWU9v-6LC(G}8 zWp#B1nIA)@OkUh}pe}7Eweu5jSy19o?V)FzmwuZKgJ2u{n{CAc*d|$s)8d!0?d%e4 z`I~t_XH?tT|Kz&)gwv~cNH~%E{oIg*Dxl`6e^?m>JEffXEH{&rHig~K*~HI9GGeJ^ zSvf)#FY9)sZLO zyU1)>rB!T!d)3=mu;sCgoPx4eD3u@D4F)w*hKw~824&t}EyfYoX4;I@nKAGlY&P7} z<%G8l@=psOZ<)lvXOW^8;wO9OIL`>7y`}qdU3?|hOUU$I4Mo*~yDBc6+D5^-sOIqG zg>ebzmC_59q(>V*pnso=2a!Gc{1d(YHGA?4j}$G&PYSQ4BEk|Yz6cIR>GO8&ul zp1>-X+>(a7ry#Colkk6Uno{2PQufJ#e2&d&q*({BPW)Qm6b!WSG8F`#m?7uKesjI= z*hUWG)$xWs@NYS-n9olpfA{gFeiG^O30H*W-(%hkG zC=A>0 z*pjK`lE0TV;S3CvStjzrB9HeC5?b`md{;T+x<2~AUCuI>Ywcau&8IE;?#uZ;ZR|FA}h|AsumFI*gV_;vr05H_J+lPJMgxLoOU9q(T#v}e9HV|d9s zKQpoa`u#@ynKx z&fo5Xpc6UIyo?*mA94^vjHz*(6qA)d4dL5B;-&?ZA|JnB30mGWe&Z-kJU^-|#~qRN z!V4JGJ$(OAf5|^c++?y({%t5tR-+5=L5BtWQo0qBqM+-_&N*G@`FoS6d3-?Qdg@R& zPen~U7oiSUX zqh8s~Y#oyOen}A2X3zo_Bumfe67Z3miYSkVit(VjT01MwxraoNd8c32o!e(cIDwHC zd!$+gL4ju@mBzF~Q)6Ejq1L>2KaPvL?bpGF?$Fskp!6;k`}|SZbi-DV|UnOyPxF zNs769Q=nThNT)9P{Q4I$P%rYQK;)atWf&PKdct`eO*BP`dYp|nE+nD6HNG7By17H& z)@ULk$w%#cNBYrEFdrEqeWpgdiO9OdvpM}ZHj(tE!nl8K+|lZ~FnP)7lkXBv_Z?EI z5s3A?V{Ek;z_p`euVu1oUg7ZK4k-YukN=%6V>|_o6;X{!TF140zxWj1aZA? zcQ!u-B8OJ3>6b90{l4EcZ8i*{X>Qi3;*+{_xe1fA-S|7do&Gz86kQgk^Q1~|kUU_x z>24W_J5hxXjqT}3Rhwa#EXx!ALy+Vm@20;BIm@9i7y z=e7AhJ%7b#C!6S`|B0gBsi{|`(4N!QQ>DFW9`>DK1*kc)z$!%@=@Nq~Jwu2zLR|k{ z!aUs`f_vA@g1vh_d+6)0ydP@u;}Y!JVz=5{SbZ`5gLBl^0|}}r6!Q4c4+0rPcF_wq zVQzG^GS8Ji7nrfT@azsrrJWCSeay5~2BEW!lE!gKJlV7yVukrape^ju)dtRVfAy+9 z4#%-{n`1Yy2X;z-3pUSu)Q*6-W#nr@qSo&&chLLpZVyf>DqlOpyNYQ70j?YK&waMVe2^dz9@Np!dYZx|~vD8+d z;M9{4mTiGW;Y-rWPBZ+$pVA!lx}?{SW+Q`fY!Od#`#LNh3_O+G9)9Mu@{O+LYubh7;+Pds za{LMy=DCn2n9!sIr_VR6b1b;Zy>{u%*Dw^!H9PZsnml%vj_Oco!nQ|fzq#F#kN38* z*~F;!cO8uA#4d*{rO#8;(zAE#j-x)G=El|A$agc<9Vp}v9dyb+J~Hm${r>{a2Qm11 zyFU|n9B*a71(BfKCIS3Ulcf06$q8L@h$kNYaG+q`bIb5q(x?v-gq0caqDseaop7E} zBO~Ewwg?ks(zQ}Yjt)sfng0h!y4-t zC9Uy6QwuP4xvTJKq58XBO4X{aoEjt8zZ?IR*7%klwYMPeg!*_HGaPuq7oeV!@) zM&xAX0?i;|!?8giD8l-_E}g@*e?cl-z+b0XnN95;@E~MHez60)coM+A7bJ^@PRX_) z#e|&!2)Kkr*H6}?#Ql~#_|>+4V@!6%L&_)Ox>P#kdm6|%8NKLqNULK5eAt9G#7^{j zIOWkKf;3y+e$fD|&ej9k`5B&wuLbGmY3)5sL>vVWcyJN{a`Fd5VF>WnxO@MO2)j2u zPXRxTWRcz;D*b2-*Y1vyb-6v(Ads`4_L?CV_AeT2gWz%Cb>L7MN69?b|7JJQ^fbAi zl-HwbztCA+`;pVuI!RRQt2pK2G<;^(?CPu3Sg=ch>oQ^-$gjHPIHVp)1~cQ4dfL-! zk}9b|bnHz%eIex5iBvT`5=HHJ(Vc5Jw6t5e%v^hk)x7nF>j zv*1A2bjxs3N(N1Sv}VHo>;3A?H(uDGETjjrJGy>NaI+FWC?w=f9_@`IsJXexEgwC> zzFJDE8=N?3n0RhpG9FxvMeaXRIX9H0jo-gfb5K1!oiEY|xhRb$7gU-|!~ap;DaU>k z3mU^nLg}W`Jn>W-zdOu^)My&{dl^@me)NW@7;T8Tal|&fw!^n=$|~b%Z+%Yn5kmr+ zV9R?iI+Ke_((KufUEDjmLC&<`?vU`Z7vM8VgZ7YUP_^VR4Fjx=%3RY&mXF~l3kqe& zj~sH=(O}f@u5#7SWt_OY!;GC%jAr4suFH0H**5-im#r?_wr$%sx@_CFZQHg_pOdWQ z>||Z+n~{uUCUaiRj4$7KpT}q(+3JGmIUCEEUm#!Uv2Vo?h%Orr)fWoA1A&$!i)Gc{ z{VzRFZ$J9XZvkArtWb-jZkrEEM{c&Q^C3eKHUllI402H6vuRGh-kS6(VqxPj5y8CM zI~=)Wt24=8L~X=Z*}zh!{X={kKIi5R=J@qA4s6#W!;ZuVO7zP}MU`25%u}9~H90pcpehPNktC1VUohA*cC}@`{(Z~ki=`6ykv88nV5A9h(@Ks5#jG#tQq;Er8?bATWQ9M_Hj2EM)IZXOk5rvgGy9w{&n? zU-ivEN>E(qvD+TkZI_WrFZBnt9Y=?xckv_*K$<2zN739w6$k35%vKM;`!EHwAmQO4&WYoq8=dwYIyqcVOfW zF%fT3P=Hw!>>oMobS|Iwg)E!e}ju z7hZ5dwVF&xcmDOW(iCj1PVn_xxo)Bu`ejRW4*ER^g!T)g{R>vlVH+`m`^~c1>Nra$ z3~E-xW<1CTM);fM5LmdiT z-zmoDUtn`raehU15!?5ey!iDr7;MMGiHjMiWUkVmm>cB!{#qlArapq|V;IR*Fyl7- z%9v823J(_`vSKX_Y!x;%*-1r;ks3%&^d3tg_7oH~2_NUHNs-ER#8J&`buBQBRkm9i z``pZfgzBX=E4;pA8ABUm5)wbL5;HbA{M4d$PAh-)*ub5ta^F%*h+S5SnN`(mFM4`M z?PXRKLs_dqAo=*(*-CTX0@WYHKtrry;>!_y_GF&~n#f_&3l47Gp-UtMF()SDaiT{9 zPm3?>c8i{S!fG}#zeVpO=GHdcY1!>&L%01BW90YLOU5 z`d|;s)*}x&Q-DDB{>jfiL9Ka)H--2*wRr!(p`6(M3(5(=4q*KcyNQVqz|I8tPxt?m zoS4|z+5R8Mi4cZC)ZEI+*nyBi)JosUSlHOm*2ox!mlwv-$-!9P8pdtCNy(F2$(*3( z9|nceT3$GocyJOkwak8Ple}MVs+DdC%h3eaWE$%v3lJ#I-lQ*KEF#|?W^IjO{i2Xx zS^BGP4syw5ZCjyCJoRO=w90Gy+l%kvx8wA~$2a}X$%~h7Y@0b!&NY31&@C|>*%@s} z73%HD9U)Up4lSyILV)of#1JwVsvuDGf$8NG6PxSs0ik>1okLq8xX2`ps2@H~E~5dj52?;t-=Xdn_Vdm3VA zAgEBls|p-7K$j@h@D-B&ua`hr3;eAEB9a|2t_5hP&@0GO50EI;Hwq3CVXmDs-ncy8 z^a0E!II@5ix?&e(FNg%A4B>e_N$XTmn!oH~sT?3?j0N1!7*}FEJ58!cVJwakD#3pb zB}A)yk0MM6DtGV}jK9lX4aO3?fL}z3YmCE9+DSYSM!0wNEF_^4sqtL;h+jtnV)G=#aIKT2Gm)l<;h1ggC5 zZW9!pVgDZ7$yd^oGCNd$O8~1dV$rSQq0RG+3z%&LxVBWRN|B!We$a?1f>l7VWd=6y zUD&{l>A@04mLEWt@vf{El}lXrjw=lFn;A?51?|?L22mg>{CSMrUqTOdR~V?m;2`aM zAN#6winb};LQBy8GiO5TGr(pBBB63u`}Qri5w7~Tp~3=`(3hfn zb}8;E9wMIjquL8K!l*X2$pkcD9OncUf)t5_Mhhc2y4t$OhPZ)|h{TFNlOtt}h&9-w$|iHupaz6$n>9BNmu!e6hPo#dYaIG-Fb4f&erT7YO- zcOh{&GjiB~7%UlxON`CW4p*{xO@X-1(Fv@KR`QEjtw9Cyw@MhAoW?;zk8K2`>MmH721Lg1WgS$zH(^#pMx(`1Umo)#EENOwn#wG?o|=MX4F*^aiV06x-L2k&QsARX;&Gh3BnA>na~W|n8~xS~X2XN$A>tYzXWpJ3BQ=&aL;M7!G4(43OQ$QV$= zQ*i%iRRP&uWQ=@-KsPkPj>`^A6phI9n_>p;c$Kwh#Z!fmtNh;WBnB|PwW2OoygyG> z{yY{^6185Fg)QApkd=`MpY3>)=1NygtJpKAs_FAQc{sYl{6!6ma(&d?ndL)2QP;A+ zvcr&r$7jFy-MPE_5Td-o1g4r?@Gzx22r1o)(@Tixwy8Ebad%bn?#cK;n9o>A5A%%BPA7}B~}d|H~u(5So%ZWAI?4!JyC*0zh= zllx(-LX}qzomo0P+*xI*vzbVcHl=P{VcX>jPNtBSp3l4~S(!*tU6!_nS!k$y*)Tt( zWGMmAbQAQkf+ zekqpu7HOK%_;}k%{At5(Hs8g!>{^`_iU!vaXjd|PN{V(X(a&1hYVcLv%UR; zcB3Z4pE*(v-e=4K>!-`S{x*io!O*b%lE@=d=q6h4FeLS-H|c^LbA>lJKd*s*cG4?7 znQMKxx_@ilDfE!sO?!6wXkyT_l~W7ie*bb{sAMss*bSiH${m9lwR4ZKi4HA#`mNq(cP|3G4RtZR5C zV*WH^2@7-P>N;t^^U2l8{nlC0+q8V@?_ASaIi1u*eWnH>5j8@JLmwgqt6OnpWn_QR zJ>TkCS`*;v$3dWb@-C#?Jnp`|1rU3&a=MJBhjaANzWIpuyY4(6NwkjzHCJ5I=0!BX zbEumo1f<;J_cWWl#0^>=xqe(VW74Ipke!I}l;!SN@L2!6b`Q;uRH)cAo&%scW;aMg z5vHAt`MeeT5Sw>=^W(}^U$R(za;cA&4f>Knd9d_0^Ab8+?p98PR&I1@skf>cyY0K% zKKK2Cn|cN|+6CuChKYtJMwniVawMkxa6^U zT3kL0UU^();KP{T#ojbG!EPW(C^qA9dFN-Ub?Q|o%=3uf2Q$p^p_g2u`^QGmhgl9W zbE4W3z1s>*a~xM5h>UJ%IW=cS#Q@4ZdpUCCTAs{9FR|8+h&f|pT$Q8UdsyHu5an6i zP|VxUTs`MYrOze2ibJVCTBupSn5P{aFl;3`Hhg3ko}pu0{;_;XR7<~k>#Ij~e$y;~ z43TTsmUE1IPjM|jo)lGJ`DAuZS9K4NCV&j*$EvD{=Gd8!cdDD(Na^k#P`=R}++X&X zdTlT=)Kb~x+6deQpH~M0p1tYEpF(JyGMHMzoh>kW#jdkqA)~iGv}D1*(>xv+W`r&< zUKeJB)h_1yqgL}YHAj3(GBpdb64 z32-Dgsi9@~FqazV=I4u&{^2ecv_v1HJ-~IXrRuS^QVE>xVUdh85(~moO4|Os$;*CJ zYpJ{6m7J%hQ+D^fBHzqqhhA)7C&5+!BR^P9SGN?wO@OQzVF!L$%6FTqSC)hM^3uDk^; z^_gb8f0k8)3^sorMY^SVBviH8*x7}n@vQo#%E7*}hu5sCqa?mDze~qB?#OkC0D-SK zr}p#J7r2l!@bgsBGaD9D^j~n1==L(NP*xJ$2!R>IalCAjk?fq5Vy9{M*BeAcA3br5`( zUltG>1+!mP{DRoI7#I%^BrO&{oEfOos~t8d+!insKLx0mI~SNJKmatdBR;-le>Q?o=^hZHWWG<|cQ3GSiBx2Hbh+g?4E@{>W>7!i zT@WWbmY;=Z-`03vM$k{`E0U$bzUB8C2p~yj3JNY6PEJ)-RSiW`F$xV$NJR~k|D_AZaFp=>`q&GA*y1#Jb1 z2R+mvz~sj&y?mE=KitfYnLSoaAoVEu#FFDI^8}HmLL`PCc`@)+iJ1$!bH3-$P=97so5Ib99}() zy&s--aiV5BexBxs-usFCX6*a^7boBZJ_Y9Y1e%>1jk=cY=xIKRP2Y=s6N0dn<;g42^@T2{h6( zNg(xo_1=S)`+1S;^Tts$+{~tO4P=-LO`Ba=wJ;(m_xCYN>?@RWz z!vSjPNb~X&@tFg~x=T=ALQ2PRn6QmcSAQ4B)6cc z&iP#&c=b1zJE)Wup570)luAnMyRX!b;3W{}-VY(02T=CuP8c*l#T~l=_^iZF^eT`O z(?9Gff&0BLi3w2l{myAY&iKC)asGeH`c4=qf5{!e;N2ecD~|Uq%O{SvF!mQ@o!4uW zRTZz(PfKw6TkO#K`;8aGJ7UD}j~^Tm=Pn;1iQn`g!L6agf^ToEgNZN359a9P)-;^i zLu?pg<{RJcND}&wA3=fIH>l5T(>vrR=J31i=&isbK{6I^*!uU@2g&mCF~Q)!X5;JX z8>*T4we`=BGsKVKcdj9%6JyI)C=eV0$@&j`Iv?da*M^T)M2LzCKWd4u+v?Brr>lAh zpYxByS8Vp45JRYMFQPr}5BbB~*xY#U+$8}pf%CVF=^Ik-*wQn>bu8S;zXt^A|9wtE z>o+_WU;WlMFyAlxAK32~^~9ft^0y20qMwi3uN|&ehRVZ3JxgdMX7=ybj{^cCCI}gX zV;hY}0#(9+(657wou0E#RnYn#+Z$gaSeW(pe-@+$Mj*2^-VhT*gV%=e%I%+Ii^rOl zJ>8a@5wbhm&l6=ZAdoFT(b`DIW>GBx^c`#=NpInMiV4C|4l`M5M)xJMgFcJ}ijBM4 zV8@m)e=qRwDIcsu@aFmbEKc6BZ#I#0BLPemTT42LWK{NHn9mIeUM60*Fk+B`-{t=< zma&*%eT=gQb^q->-m^rcmoRA@XhH*17l;YsUTMe9MIGEws!|QE8&}cn5NW}hVrIai zhHauOUGf4Kio@N82!7DF0jt29_Ix_Z`e21?_pti zMVBgMXDs710f9M)cq52vm`&IF^uhPF;!TGWb#Ip4GKn$iH;>#sMh2}Zq*_bu6|wwHIYtT+|Z_ZQ!H7k@A|q&4aK zLg%t5%gtTp1|!$6b@5aA@0Xy$=M8ss<%tjgKC<;vG&R{_!JfBI{{y1@6JQA^rhsqh>nl8&`Wk% z2mNfC-wc(|7Lv7`1Maf_q?VcOxpE*6MZGI!E0Ct7%46B<(2}g)TpZ<{a<5u480CW| zVmEr6tq{9_58bC3MOFtv-}`K`>|9hieZ}~%$Prl_1kd^;1^nGLVgF0VEL~)-3H5#k zQ!Qslfy##!>EPAf_c?zjTQhf!Im*UE!<*6LTO_}yve6C>hX%h>M+!&J2ZBB;Hx14Z z5S4`;w;ede=Zex>&zF4w)K=i!cxNg#`(%XMD2N&s=oQHNSVRcloQE=FBQKwHn*Gm+ zjG_H0?~D&e|5ZQ#)&!WE3~0H;F>G!uqF7~rESHFIA(efuPx#W~wYPGtJv+rH@i`{< z{oP2atvRZU|6`oOfX(Md8k57&=}=8y?)J{DD-PC^8=tU7eeXo=#_B>RvHZ_u2BYKf z_N!K;ABZmD51THk&Z!xXK)y-d=ztNLlmZ(%dhR74Y$2%cH@&0bGF2E~uU(_!OXQ;c z>K8k&q-oioo`)Iq7{C1m?pt6*w?$$9G#7m)XeM7Zm8nY1{2|qR()7`t%-RT5`b!Ze z5tuc|BxTz>8fyXmkTv1#M<$=;59Y7_x@Hw&wsvH-EzM=*5BSf2bo;Lw+}-ZPD%m^5 z%iph!T8E2W?U*H>O5*u?+m;YwiJfyFrkzqr7dUW7lY^YlWKuG6fE+6ddIg-4#-LGq zFxhhZ7quLr;5QLfx5zD80-o!zQYrafiRY)JJdxG;xGv4qNe=jF$T6;zA|5?o2=_ZHP;-LL!2Nose!D25q*6JxKno9bmwkmXC zj3>@jEtaCObaXuaYQN^ca;5RXtJ@$ppAx9eV}mLzj#)VaFqhADn(_BbFE#uC@Rk;( znyDB(tdh0B5mX6L*WQkzH>ir$=#kA9%&jebW@&w^9j=hTDzE1CaQ2>r-r5h>Z3o_0 zduF4+g|iIV-PsiYfVPtir2;JrY<&TF^O}MPEStf+jJ8wNmVgc zMkUCT6G{`_Nm1nzcGt`}3x`)4-o2}Icf1#0IEURq>aQm|&~4Q&EYZ8RDFonSDNKTU z;Dt`Wi+@iK=omJ){I$M9^e{%wSC5N`=SJ>|dMS8Usgf%CvUtmHsmhSuvYT42@}@ZW z878kCt;DRQD466U9np)REQZ-wQ3IK&zAMwon9OGz9r_qyMa`0RxH@Xc9t?zaj#TJX2(a9ymnJ`-msyU?~IA? z0^s(Suy=Ha%>6;Az44HM6rw-)SJwqC@E=iDVPl)-Cx+Z;%1B+(hmo!OL+<Q61X@oCkFy7qkdoUH42L$_7gWRC_VE!D(v@|xW4dyN} z5Wl>+QVfePv?7}+z*O<;>FPP5Q2wq&J-DMCTl{6_ZtH2Xny>8vxjIJmF;zV#AE=WL zVT8eu-R>02(P5pkBWkD@#gYJ)&>vJ8NaSl+(zGRvttFEP$wUBc3WOmDt)7girVGZh zgw63S=$76GFDgKqP@(8O@A_Q=USp z-6C;;CKD|6M6eqA8L>8qW91V=>6IfRygYfaUze`mnTjCpMVgNBG1tvsi)iI7L?$O% zsd)^hkE~$fH4%??#O)8ch0*2*qEjAlEOr3_&!uGj__rH-qe#2SMB#lUq+_YsbuT`7x3v|zhWd9%g%*Pa&C7zn z#H=9~5|#%fUHRi=f+w`~FE)w1!t4qm$Rp>4v`CFmP4_?O;L>sE2Mz+TirPVu7ajOu z*SjrrE+`E?0tI9DGVqA^(Q9K9j;08|@GMLl6D%W;F5!&@&B#&jBr>hs{tPvTN|rK{ zE(lQlEcp#rlz~#jKD7Q8!XGq)>rFjfpAPrzsId*@-Fu6I&bA>l^Z+B)?OsMh{Rp&5 zpIB!(GR^`a18C?rfbBYy}^ zl{*#?Us)xsG&4eiR0$YD18bl)qkqst>NV%1ro6fxXdB^M4)8Nx@18>=B>|Hsmw%g3 z(>QR20x9T-7j{nkCX-s*=1M=Kb3s31=b1br;BX$I<5aw4f+jV!Wp0dxdJU^BHJ~KX z)b4VQtAO!3u4%hxd4WF1>|^GmjSUi^`SZ>JF^+AQ87OYn095-a0x&TDXfLOsANw^! z^i1>HjZN#A;&35U99|W+;?rBI!~m3R{D5`fupIZAgjtHt4CET0&lDlBRJ<@Et;?t% zTCCxZmD(8SnS9>*lAKQ~E*#>zF+X?y$1TVK?Xxj!#3xs z=I;&bf;xGFP8V{Q%pi?HwX~H{Pu$<%ZOri<-lFX+;V`U#EvCgfgQcyU>GkBvK|Tp~O<%Ll@KO2gZnF^_yMH^B{s%iHx^^lXyLA+Kf+OI1p6D%;**C|KA#cr$P= z8r-(K;4RgLUm%j8UhZZ--O*8wo+K)&qmHzIt<9X=g zig}J%I*hFqJ*U~EHux`~G0hTn#Oj!p%1Kh7Jz>4S7Aw*n7!%qZrlZRE@;yT@j ztG8z;^3l&ZO%q0d>0RwIm$z3*0*P}oW1#7$3E>3G#z};*=*#I{WaSo{y%(+5KGA~( zPDK?y>YYT;7a|A!t7iq)0v(jZ_8{u_<;>N30;UAL6G^W&+v6xIF8N`;#l5&XIQRcu zX&#~;)7-4<%fnOD%-=+|;o%kYM1cN`6lPrew3UbKK)~W_&5{RTtjg}G&bfHf?bhLb zhB4Dy&-JM~kb4_+Z#Smp!VZJ)*lfeBuUAAoHqkh$+~?pp{n{edIW!({m#On9EXIO_ zhSafw3*h{yD=(~?M}1nWewUzwn4#XjsgA3ir3-LgvoMbZ?-BWg*l-)ZV}uc9L?tSc z@HD_qv?eG9IUl^ALt{MKZh}L@sy7mewU%j$+N79=8M_xPr-AidvNS)3-|`UDsWro_ zv^A4VvuBt(y;}2Va$C}Tq_Py2Ws5}ABC3m@mJun&L8RjfI>K-=>qd}Fsy#Y?yB~}j z*L}Kl!u!fORn1@wPw_;^t z0HX16VUn%o3Bibw=&X-5pr9MO6S+amfr?72>G=mLlyE1|t)f?s!D_@3D#;v&4@_W? z<(wLc2yDT(q#lv|&|@T7dSptF5sre~;z2A>>0R_?d_) zt$M!t0nhL`U`xpmZ%H>LGdjqg_wpoO+irN1c~9Sef71>nE5XCNs#vCAz)4QGgkGN| zd_7HVAUls@KqU2m0x6-{2g#K2jfwdAFYpsp9NiGQ^L%$2B!<$?4pC)LiS49WbWdm> z=~KcADo=$++JRb7RAf$TmW1JXt3)aD&qGb|Qfhj|Yc$&??Mom-W;9di>tjmathK8k zg8y0nG3D7DAzImsBU-CREWZOdBvDmnW^27;yUJXER*kw4^};t-I=n{0QQ@Wtj#-s1 z+Lxj6fTb7tT41Q~l$I;UH$EY1D1%0=_(j>`>Goi_tdncc-{$d!@kj$2#5~0lTVk2I zl-LJAx)K^MG-fHqKFJ%FFuzqP@SebJU9R0&d8jne1~&pQ&-v~?%ki5N4k1~Q7}<@~ zE{r^F2esZfTZl>4TX|*iq?jgn#9F$L7!UOBph=aF9XjF@dOH|v!52pz6LW$hG5b!u z#eN#mbPT=B7qz||=xMz+2K6ilM~~`6R<&l`(zlNL&yj_HHh2!Lt2e~KaaN}vyVLUS zEiDV4gxkurRk!QGk z_INm3ori*6$Y$9(5$}Z`vc*{WV^<8iFbsBo)v&P`;{qD@_j&fmdctp_E*kbC zG9BnoGHFGsSjV zDIpZ7A$dI|(Jxz1j7CIOTKfY2+>6cU(E?M!TfQ5BdQMTzeiCzeFZc&mly)+C3N)`W zC#o1ZsI^XD)6*nlLY3@}f$Q>gSV2y@?0wL9+8<>XcP_`H3}aj`G)zQ>^7WXf!Q>se)YF((=z`@2VJpGH-|{R@WCj7mZ`xG}gPoCR_2k?yiMPN7X@~MZpfpD^ zpQ|O1F{29p)$0#DH-7x*gvoJNRf)DH9}wC94}_^`FO$vssDbKJ4O zH7d0Z_6Q$?Wt0G7{iMAT@O_B6v39Q3n}+El^|P4`GfiVm+nq-$3nvL#;=n1<#ad#Y zEB~wpslMx2ME#dQkIHB1mJb8%Q5@uu+9Og^7o!)Pf>fjv6j)io@+1d23?zJgqs{HV}smBz<<8b^Em3eJhd?-3*PN zjZm6&813MP$H`wKIOUC2W!LG}t3}+ua-^t-Ew^tl*yxd#hh+4mQi?D0W0+}dcFltS z+Bq$JxW@R>m9s4_o;yIPWNvnOl86exxE$v{x1|M}of&{_ETbU!@I_B=Gegvb_)%y0 zJmuew;YfV9Bc?3jy#!y;j9IfeqFw?;1}iYq(5exX)pKj~V^kHlEL;VQ^ir722Xp)k zR)5TS|H1}76hTDdf5ynsHJ3A-!pLyv4##sRA+kvsrrCT`k0ps8G95D*Al{Ca`wRSX zV18QGTG{Pl;1l~AgbALL#6ua1i9XE9x^_fp{DW15O=5vD#HT3@YTIRr{+)nIr0!YH z%`(%ZqRGOQuDoTj{s5#9!!KEi z&Sid@O{0OBPb4x{Lr%c=s81rYM**A>czQ4K#nQFWXVTB0MrB(5AyvP0#CH?qdh==Q zMs-zn3`OVoK5!kVLPjO~ewaa>O8DjHDGxKdyo`#?-6hAJ6@WLGn7`-KDO2G&<0E_J z)Q5GjB%+H!_UFWkT&V+&sMW~{S-%@~+@qW=pOp};&I$=WlwdL>^L696<)l>4@Khj( zA|T7Sy7hs2ufP@BlmOgs6uWe=B7S#%)-!04vC}z4Ml-Z&H;xUSveR`Clw$YJ1?xeNVd_E`q>>M>1B<`kZ!e2%P>P>#4k;_TZ1>`pS3CL6Jx1P;SMMtN1Bq_ z@@k~Q%@|H%N7+AuS_$xz;+9Sh&>geandLR|+zH;XLsCmwJVa>770g>2zQ673j*EpF z6I#;{@sR#Ni5l-2y>nvUtynG0^ev(E0#sO!a$th?oUN5R#F#5QXUAoyyf%W6oZN?S zn9{9Ukp?>klfQ83a>ltk3Wn-qr9NH#*6>oGSKf~dbPp*ve_8x>7@cXOj_X8ArTElW z`$f5!3;&nhL7WL0pgT8(l4PxbcRhUu91i;IioI3YkYdP$m6$*H;j>TuTvWB!s(Lg% zD=v_*G+IJ90ZQp6FCu-T+$BbDf-wVfr9u^8+iv|D3R8nJXW*3zK{djYrgn|!h<$Rj zhIrDm;r&n1BV#A(2xC(8;$9Kh@*5mvrcxhUC{i=hmUoQDgUag*=GRPANoPp7mGH7$ zn43vr2-vFp_c`20dTqM-p;ug>noQODGA;x6HR4S(BS>ImhM*oFd0^zcJ09DT(v`*a z$AhT<8`&5TYd&TAE(~ZTi9HA;?(|Og<(^0XY{6+fZX~Cu4>5dA>(%tfZ=r{O2DNI) zzuZIs@_D;@%PG}LGaolqE7I|PeN7E~)_3WBori~bTUJlVuewN}{Zp<<=qO$q*ml8W zRQ110FhZO{BQm6r0Y-V%`LXsBie?99e~ib$`on$jqKXC6z^Kja?`+bbl!!Nt5SzxK zuMlei6Ej@h1qrYegdI?9BetLH~&dk`xFf zzURUq-&c9sJbkV_9S1(1&IR(IW{Z&B$xdyLZKWw!IN>;Zf*`dyb}U>@I)pYi{R6fC zNBmLop3kxrwxaVF&Z`1c0}<4gO;c8x=1?@(wZs^dX%8jITe9nmIo`=Lq|=0+@?b-* zY<5EEHacy!ye>rF;Gy7lET=I>zg5dqi4&o+(A4|im*#(elhSeNAw8=*wrmpe-U*?BVhlZy2v-;02a|YR$C=pC zp2B8w?K&;G0$5~BuSB{xYTr%o#GDZ&5pA?y!EN}H7ITu2QvfccYg-ki52%+{4rYoI z6wU+0)ZMx2gg%|P%YmiEo6)D<1TF$!#3QC9Sf9*A6eDCX%0qp=h(mLJQVH8LO?U&|O|2UTlSWjmNe1(T#}HIw+vKwRCHJ!!-( z%!{KoM!ISLJ=#%VLl9nb*=FTnyC<5yHOA-O=yQLyK;670_b z>J^~JJ!=7B@;$>oCX1MNxB4y=ao9ALSLTOwXPok4Bd1-%_UtaUvqX{N-NN{cMXzxk z-74mu6dgteq$0rk;;=N@(OJ|i$yr69td7wS1R%XwYh9v z#xSF36P9ITD9+|zJKML!aC*IgLrbjY9qHk63k-SQiHeLapDV0w?uMIx{St0BNZFb*3yO9IelP)G{SqV4q#d{du;wAW>}G&ZrJ zhCtO4;3gOsa9LxRx{szy3wY_^o{P;wzX6pjVRu$t_iLdWEeu=xHD{x5Y^4idlHoj9 z!dR0&XZ6sSegeKQZPG H&OYhl)ypG_iS;3I4`@rrczL;IxthL9Z0kKnt1HyJr7- z;Y14*7W>R6vuO2snAUhybUR`x+! z7curau22Si58oO=4>lmM^32$Lo7AaMUzt(AMJ6VZ(=IE^{|XtR$M0N6@;+k^Jc}nP z9|4|P=Sct%^bG}-JctpyxKTb8Xe0-j6?(ZH>~l179gTf*2qVIJ^gZVm%e#6GW*69` z>vCU7>r2?=y4&3a9R5KOhE$Wgcw`_(bj1@XRuTZob<eO}eI39KWD z6w%T*T{`HCQ!AH;zh7F#LK^iduf=A78xHao%iE2c*JsrNn@3bV*m3C2^e;uMl2W+= z!yU4t3^SoVb>tY~@B&K+ecwdvB)jMwee)rQhA`~g- zzJMjH?(X~3aWA0G~^eimZX!=kxB4&*uMNUuYZz!{YKC^1!4id;$C<@Je zBBc4s2_vJ5(J8pbEbl=DAI98IhC--N7 z{P^_XcCm17KZcmtfo#$qei3`tgKj2)@)pts!Z7@XnAzKK+R}DBEyU_ZemyVI^&_+( z$J^0j79&d%Lrn|92vayIBZ{@6!f3$V0Nz_kCw30Rr?OvS46K z1!X))#;VH}t?*5yBZmC>OEpOtx+BT#nF%$=BFZ+IG=T$&DQh5oiWAlnraJd>oRyLC z-6OBCe5z%4+@^N9$C5>igrROSwY^mD?rdp-Azqp}6u$d>toz9|_Ig*<-{*HH{uHrZ zXV7Y0NV&`f?)#7perVl$;Y8TPK!`@G%+gsLkNvEJDoF7s|(+e%2Z*tX`MsvG8 zVZI&#Twa+&03Gp5cJJ`a%JoV!lN+n`*ws1W$2UTle)+zQ%#NAkNU1xKHGg*&PDw6F znbft+Z^;(TDz&b$Z@3)r7jJ(2#Vx z5c2!OvHW$)ENslb?yE;{jnT&QTBelXo4IoKQmtFQ3uSZGO_X%8$f-84{icdKi{b=y zg|KJwk|JY>J`l1pNX(26?3qNrLR$5U;j=^d3dBF7NVNBl!2c8#X`u|(2o{8x_6^Ir zWs`ts$Sja7@2Q%r{$23o^TE#Pu#+xVmm?NpugpOtO$neW)yIMjE<@Gh+D4{{7@CUl z7M}I8D8Vp8wb9quhcoi#Q;HUBZ2L9FxNnkMZE+ZO@gcR^c$jMM7V43YMy=EV~sihJSC6n;@k^!!?s!HaLZ$_aLtRw_in4^Xhu zb{mxg(&>Y5V0y720RBKR_{8Rx>U;c2fCNz9idcba^qv)3BHj-|BAB zWl3kU283A;-o@K3s6*RV-46}wu^`R!ql)CY~4>#}GZa4DW4r>X{zM-1pjTV%BUUL zqXp{<|+6e9vih>vY?7D}a#C)hG!l^(F8WK(Vif2P6$Q5cc90zVM?hZMQd&Zg=u| z(%`IQZLg!Xvr(n5X*w90Cj(!r(1S?DkhVLG1UZz03n_{DlbgH6)JlF^!@~WE3?oZP z71X}w5wm{veuBIpo|MS3Nva;Z-NnyN@(DXeQ2qum(%AAZ-PM<@sf+maq*Bn~+MQF9 zlc;O)i>2^HFynw7{?o_#p;B}V6J8cQ*(F(m+ilDlBhf%8RZRT$uxUe#aGd#~O}vix z;>8auCY6khU(ByubLv77?UQBhP{k~*3MMyf8&m(o1Qf53R#6dTiUmvDFQ~+oD)x_= z`IsPnlueB!6N7;}=XH zotIyTV!b@IP~zCF@k9%6@P4@SL)RrEm2g>igYGKRTKUL**NtJ7nck@L+hIAe{?G$Q z`-W7IZoND5v|@=~6`hePwF4GUb^j5MnJfPV8Rdgy{MsQ=dage@5v3%>(4|e3 zkP>1o(OR4-0z=Ti^VE$wA@slOglmHIhP`if&|>cA=N~Z%!5M;f(z+_~U(fd`i@dPpR8lw^dq)dWNt7GvbkuCuE;nIk*Qj@zs$P=&QZ`xx-Jn3`3MTg_f!=E$3|)Bw|Vwal#2b4_(v(GRN6?<^wa zNI&GNrNOK{XXN@r!3(`^`&(%XurAi2B% z?7t%SW1<*_0XJk!=p294F$C~E=d=(qSFUKWUR{=hz#33LZNSG!J1`ZZ>k;dbcau{& z$9v}Dpav>gUOlw^u-j@rvES!mC<`*MH6+WD9eSG;%c`@j_@cym|hX#SYwsA~K(N6}8~ zxL~QmUClE{|5V&f7r^Lm2wW8}rCrmY_pJXP#_l0Tlz__uaND+R+qP}n?tX3Cwr$(C z@!Ga+&-)iM$t1IwO|2@ms8pqrI`^J0{`Vt!I|D)ITZ$@ZBRf@xkn_5r#tz0-Mfx(( zmRb+Inghg6WB|)veRq2$LYo*}4d3r2;;Bu$bg)E%Qi=6xF&QZ1Y=|$SM7~AMT4S!C zb-u*B^fSD>H?v89QA%SLqnFLz@Yd8nCWUE5mt`zE?`)~(1hkIrFk_T$&RG9MujbRYoIITFEnidWoUA!jAU}aY}3P3+SWDgrC2b- z<)MBX4%zj2SSqV7dvF+?N{3lx!$&V%nXN&7+x zZ?;r(dr*3_iM9caRQX*}*>onLrD3)<9{%^K_sxOGXIM@Ep*a2}Fg2Ob4_SEw^&pwIOb!SBgxpb(9=v z>3TEd0?yTHmcg0vzjv^hjlt*&TuM1Zj--Dy{4Qb3;U<0!lgU1XcYvBR5)ZV^<+~dO z)%$jXzybd@OagNYvdplxb=i?WsceX~8C@50bnU%4c0Ys=Hly_#U7-sI{oXOSkuuHz!;EJ2&$guL$V!oU-Uh-d)&g&89vRxL@_31l#sY9^d%?Xmj zP8BQIaQ4mDne`m@>?81Uxou}Tl1f2>y)b>dBxdnK3Z;D*Imx$)loo8bwWasYq45zl zbA^3ES%+-WxktcbcZI~&KjvQ|OwvvR3I?NctSI*tlCTbP9ho$Da9jufSo>50H+5Xm1@D~;5}grS66dJ~ws z%~v2|kpb_V#a^HIj)pl}I(3X(5PMdki;}_dMO#?|9x%SbriYNE>~}0g&~l7cSsTqb zt9@FY3``Tsntrl;sY}8sSjQKihrXD2s#Q)zo9T{rhAap{U$BiCR0Y?_0~~}pBwm3_5?%&94DXT(DmZllbc;&dR;;^T$sx$|dj?xZvFoq=T;98MW5hfWXEDc<$SjB68s1W^Ubq7xfk?_cMG6YO`S3+gy5%i3K8;sg>-b-Xf>w~Am5%4 zws&!)4|g*i(yo=@miZ!smAuO4z_lu(C6qg_rU>A*%l+B@) z*Mj)mehL=1el7TTCu9e~y(K`YOGpFv%(pT?aNUD5x(-H4b> z7>Evj`L6%E{)fHzWsDv;4)ri3unb{fkBG+zNd2#yJyz2IGuNCVvs)Y#hhKBEt36O* zp_J}o#6>k&Q&;%n{uRQo(_QKo@qNUI(tSM#cA!a9(A^#_N)x`>LJZpNA5W4R-S+3v zXf8+`WM+`MA(V<ni&2l!| z_{9YAJcyO|d2MIo23{>Ae>0d~``GMRpUhjdGdfuuXh}R-53)z34<`}3JITEemXm&rc%d%bNbzyq&*P&rsG z`PJ@+PA|y+5||hdO_5bwzr5u(y$^b2tc*Sa{WIGqZC)@{o(F@?rM%G=spT!dqzh@Z z6B2LUGras1xLESVHm5Ud%|5Apf%bwU5k;1XzMKhMcQkN=_5%FleZ=sDeptchVG!(( zOOn=bFHl~UFqwKY^Kopd=^m8o#f%&gHg+1uoM}p4Wnq6B1)_RS zgS@P`B-x+_-9S`{j{9(B)fcjZh_kBUuSiWnsJv1=XLQA1$brd0Gi!dSl`7wckXD{O zl(2q@kC9b?UUw5zeOFN1@H6Jp;s}$Tba&=DQIxM?#01BgiNzqADxNAf!>1Y7Tz&l7 z(ypkzA|n2-#Ubo={svycn6crOzZ)*CG7%mzq_=nnf;i}3nbwpRJZfzZY@2!z8KX!t zr#%%>P5mM-lWq$l;&&qlV^4ULHZBhHhvsLg;_rFLZ0azLQ)P3j5Rxy@k1xa1Eq0l4 zO5G0AeaM(PZgFS|dDL|9iQA%5T(rTxme!ev?jDY^S=TVxW|!kc*NjnJvc2@!)O}TK zeuDLxhX_Ji&qn<12d;svaim+%%lmVc3{3bE*C#nzSMHtHaGy--eMPV%A)&O3uooADcNJd$dEorvR8>&W~fWz44j?|s{TM^V}lhm`=Dq&blNgz_6E0iN)WV{ z3Yb8{t7X9#&itx444wDS1|d=txn>O)RqDB4cx#I3$A!Gi zFemno**+x2)7q!juNHej*ho&pJmwS;HR1POR_y0*o9~4!|(_jz7xb_?2gndW&e7UQHHR#p zVz38Tcp7sqa^or!aE-TK!kD*+8rMjF$7!FFf%rCa8UMMIY(%jHwbukcG9n*QG7nCk z;{#Q>mQHwF)j2=D<5;l11*~_=8xvDTvhlHKz$gh<>e08i5WnnO${UeCUH0Z;6sIDkgeHSX*^1oVW-IZ>KzRm^M3VWUHJ9=MMu7pP zPgkmY_r+={>}w+0ou?9IiNqp56TkHXo?vbxgHxj<%l=mpB<>)O1w10hrpn!+YiJEs zeKGB*T#KS1ADI2asoIvHlmRsJv30BgS-V|iL0Gf}PTBZx{f@ES zPjx=1kTyt%rz;X6j=Qr}(-P_{hMTSA5i3>~XAzusDfef3c$<-mxL~0cR(}SUzlJ)|A=LbK5$XcBhfu?nzENn?``Xl6AG5^%foUZ$PEyhN za3i%Ol)|Uxv%WWyve^2f?uT%&A5tS3R(H%f941@Z&d0MshgU0#!*Bm;uY~L~J-M{b zD0K<+C(9?v+*_FYQ#1Rm2`Cpk+!*XP78eep*+E$r&3(BnhorwrZaZ?@o3D|Dku&0u z8+Kn{sXC*YWLONnsv08cXa?M(1GQuzi22CBmTVO>-f3OsgC4mTJHOa?o344`Fi&79 z>3#iZ>l-l42vbd{QmNjD=6WJv$(JybOOgs;wq?G?=V51V`YY&oadzt%jR)U|K5rmuO#|DcJY)A zGNftXCIjsOWe5b#_=hXgP|pVUN0GF$T$&P^$iLmdI(yhN-F3TjH8XHm}Qov_hKD2U#JY=fcTiefW&J z?X%Gk6gcoN?g`P1Du7!?Tvcb+F?m~&AzDJky!p0$;Y%MMf^|I$jxn%2AJG|vgNT`< z`bE)h-lt-NVQo|~p0>9X0~(0Xe-)b3J>w^6g_XlEDmjBv4HJxsGef2{MF=b!)fIiS z5bN@bcmBk~g$MSBh+pw;pt>#=yow)Wck_uJOvh(``t8n0OfTdMUcPyf&R6y$EfAK* z?&}d_VJ1fg(Q}*(q8X0Hi3=47#O9N-@zDTULG0$57$*?joGOfew zduiOq0@$M#)h(TKqhoH`?cHQ=pTM{PBR*_Oa4FYTo$C0(cM6PNbdC>Nr7uc%wa+~g zFcCqMcvsc%e{DUIClZzv@6rg9gg)_;HX$NxI|JX-FGiioHUt$#zFO;eDpYb)W zaUEH2tU`!9AuuJ+rR|;?#NA`dP6BYU<)t7f&Mi&FNBNmo3+y(aB$V8;Ih%dA?vC!@ zdKURa-Rgh&h(BQJax5r-cI|d4HoNvU*#Xn_re7r=5Q;#t;t--9(T4OdOV#O3+xzu> zDam`5Qtv_22j7{AS485sBDLNgfG|*p_ZXug6r3QVtE%vE9B2rEI{fJ2i84#l)DO7x zXeKPgt5tqt?lu7Y3o2*>Gc5F+l^vjL8%}Qm`)`5#HLJgWK~c#r){X0-gsSLMg*j`f zjk?5o6-9VOD2OFVeECMelP$8P1@Y*c-lef;>Vxwd;5qm2 z$^4GG)tKB-)0Ge3haFYFFTX|Y-Gb!@T{vFAaP|gN^L-FZ&BQq3{hfxrxur-z3V?pP z&{+V$c}TCWnxvz9ylg2W>|!v$QDKMz?=iu#=qMT(VLAZ}BBe<{^y>qw*Hyg54g?33=2+hWcsP_=Um@gOvTM5F)F zx(;r7bM?hSaXiX5CoX&Eo3_FnBL&K_T4N;NNv9+h)Wny-ED zDO&`4<~P>-K0i?17bGjZeJ&C-&mQQDdVP{w>j7^#6T^6y*kXX#{c@OeM}gyHsVBM* zib%27Kc*>;wVW>u(C$mWJrgJz3`V6H|I9=ZZnNA<8|*x;lZRK)kW*@AdP9-Z;g9lP z5$torbN#=iaWTb(J8^X&O>DDXhF*BYgVsVGL!K9C>U)gbN-j@f6?C(yUIobHz=c1| z_n06!tqhx)R-Bur$H~Cj>`{n03a6A{Q5E0Y`c+~=mBW?H8`-w1c?(dCudC^|86J{( ziX6@-D6V=O37Ls`hq5(Rcw-xEpZ)@~(cywvp5*)G1k4Ql;i^3OoOq<0`*y( zLaB)HQ+vq;#$!)yttb&k8SLQv6WGWO2&ws=MYIJ{MSy!gHb zaxOXnZ0p(DYa^Z?cs-dX=aQRXxw>d&-2*dEmb3;~JGw#0e0L@DKcCs~c1}^>aS(bR zg~0|)e1=2f#9twlPnc%nopA-gB%!A>)J;;A?u0@1f@FPtH2=N_z#*yr@zhyb;nUy9 zJP8BU7NcN*L8HO11%9z>o`P=s2%M5LNRE2a#y(JAe>xka1H2Dv5{^Hkopmg*4e4PQ z)J!u`stFlwF!-~vxW=An(ai@-a!UedZ!$rBCX4T39yD>tkbNaJpMk-K%1oLQ*hRXc ziDC!Pl8(Ob^Xn_#m(QfngIRneYMy`dwdkryJ5Y$q*`uoI)^+M@n6x9D! zqm2q@bG_n~=BQ0q|NIV>W!vg0k7C`80_6D+YFG zyrQu0sO+ks_=mS#wZ>F+Ga(K%_59150Gh;8@ ztZ%>fIJsNs$c)JE4-7NYgFe@xoI?I~WZK%n_cOES)g8m};wZ0ZJfiYa{mB5OjU#f@ z(DhmedU9OPT||3SMb2gAC71Kd*^1@;eO1I_GE^oKFIR^R)=!4%v+*6aQN-4Zx zr)@y9LT%XEzN+08zN(*Tji+A05~`M=e}T0N5cnH?^Hrxxc!s;0Dw0^$k>iJLY0#wA z?$^8BnB>N)mxX}kR_W*F`xo5~|IuHI4ieRmJ(yloJ1>MzpSfN|t*Uc;eDfAG0oxca zcb^&k?6Wxp6-y9gPVb{bcj7ytfaLwTmf}ogbm-#W@YK$=+2}b>EvZIbS>8#W^)e{% zJKTU;Vp1mD^F51j1u8si<%kjYRGrPp@}k;0qg5=-(IY8gtA5bEQW&v3$~^{hn?TVnzPZT73QAs`0}sddoKo^IhSKA0^p*+;w1zQ`(y5WZ~yk?ML3 zRaYP^jFLZtc%`-`#@dtHYf&5g4|n`&m*H5*I0*^j(8XfU6k@!2v6ZKTzL#+dvuYXt zrQL~zciR{&SXj|Xa{rT|(Y0iCsZcxR)-N|Aj^0mDm9pYOY!OR^)?K5tKRQBF`ucf= zB1cGOKsEnjOj);#-A@1}gTogw}B8wwjI5A_TdhS|6mJB&dGh zSFUx)KZV<*@I9y~0#73|qVl8OwgR}KYAk)t*|R2wd`d3svGUZ!TjJezH#mBDmrcOl ziGE6Qr%*14u&O4Scq~gpFH;RVi?a*J!w@|d^li-3(wT3bwhk~Ia}mLu>&Gya+)-XV zm#%ImnPltoz%N;SRj40A4-Y1@em84YfXN}Zj7LCv4fFC9aE7{I<)F88WgsN{O@T%@ zAT==?^&!Y@yrQCTrV14VIM&LK7`fq3P8vheIV{ZBAK94@a>VUA$#UCF5l;pnE6kj| zf8>HiVu<&$z!@^p0xDJ?d%}(6$KT_}k{1ci}<@w03CS!8XJP zc)Ilc@HvpHI&=Q~s-wN3n|S9Xi0v5k&288BpG&fnj+8B+n*wQPSd)w(R#K8&R^qcj z=D!m@=V12i+$J}0fGfd7$-@sMVN9>P+b3pyylCe^@|)EHrf;GaTtSfAHuSa2SNQMQ zA8m@eU*i#|3(&_q!SBvz=mLa{pqR#ZA_VW041KNZw5&tLA%w_EdIf_-52Z+pENLit z5v+SoZv$k*i;201WCDYOYYc@_ez6F`*C1(!bQ4Vv#c#Iz*pIYs?}(>8&(-pFGUiJd zo2W|cO=?!6p_9fM3Zx0Qc0+&_W~oVUYV5E?G?QvlgRMa37P)ji%&OIN%HE`{Zm|dD zORPCo+q0M``Yr-u>kLD-eEzGv>$3gJR)@ElkX4r4rLHA4H4`3sK1bcYK5 zd}$ApzJY3OKTj5%<7}7i|1r`%PE7DVS?&~vY_WGX$Hf1n2{CP}f>3advw%;qETW1DY1B579*LfzS+hGI?rB^9hkmv~) zQWw8mlfIw80c<{y57M6s4ZWayJs&_YbvBo0@tTklqc}B&yvl(Ns1Fktkh=!OtpdnR zrt;oL$Q|oCJ8r9_dEzguiajFa=yZ56@#Eu;Wp(u=zGtcqjnDgD!fhsfNJD+E+}t2A zQUtEPdJjSC(Bc;~cr8}Q|2s5dlznax)pqKq1UQ~AhJi~&V9;n90X|dx^<-7YU`Z0m z3C@z7_xpBy>}uR`$ChQ*Y2(LpA7&nrK5(|5r8bR7!9Ww7r3G&4TY8-Wt{3kH>=J!% z2=`I5(bo;9$?&#d;vuTTO1N+IlzPh_HJ*?<*bv6!qe0jsR56h{>lO<9M(GNKF1G#CN9$z_Vh%_wdC)TePu$ADFPt2d6>+ z61F9Rpo1_mcpbN>NA}51&rPo#(K0QO62OQ_dpUd_Hqr_#>%6(}m%W4LWJ0+DL%Asy zsdDG-@o(qNBgQ0OJXk{3*CNb8igZ@j|ek4tJOK%oyfNpQ4_h z*N#&+QG9D8*L;_I&2!{s>EeF5Y4VTV4iXtb!Rs#CJXYTR2^|gzp|R;5PMDVcp*EH8 z_)AzOy{KBHuvZPR9VVj&2lx$C(wQU$5XYjKgxU%n1*ctbjmALy3w#ILGAKt^z?CP? zr7l|^i?GT^MPovB_j_x0Ib-%?Bz7;1UvIt|lbxWk9r`+l5+Htjo1f)~m$#%d#!MR`TJEWfJDb9DCa|Zv z62Yn(uIj`dUzdg#3lwXlY0c*OwWhg-sf^R-EP@jbH6!;!dLlz2`cXA7N;g8s-z40C ztu&gFGCRBMBucFQqa{*yCCQLVqA!xJ!~%Z|C(&~wnO5jD9F2|s=W=O6ulY8$#O{Y? z-Bm=12%T+Nows6Z8WCs9`Gz(eRIZWw+TfIi8$fSn75dHMPNg2322!EuzaSh+Pc*by?`K zl&rJy#f!SS&&_q@{Bx|r^3HMcQG_s3XWIo3bOF!N{Oy8MANJ~?y9_M32ErEksuJWB zi3>=_5VMY*(0Lg)iVbvVN#FfH37UB;gfDFfeQs-v{$1jNrO9IWLA9qvlmdqI$XT^FI#vhPr^BYeS0;k0hhO*?K|oI`XTfBk-95MMlwYX zSg$^l?mr`oj}-iHs?g+$AkR`^K^?P#y)`Xg@DF??{(1q-!oL$QRUAQrs7f4|rftGX zwoC7`(Nf;uBoS|pcG{dpX%CiiW9*~0sqK@7`WOW0OFep-`;2`0h}JX7<8zuUUGqG( zu9l^^X~3&zjFa|Ar-h31(Ga}6&9EK~M8r^CgyKRajS6OJ>LL<@It$spkNKVxlH8NH z(4eR-$FDhWjn^Y#Knlb14_jb@^{DfBinE6$Kn)sC_Fs$uHo`gSW|U}~3J=y*cYf36 zRNmFSYy?g21RvX5mBULt%ZQWweh+J6jTY=^xb*&d|zmKbC%B#Jlh_ERUgG7lrEu;Uz>{i1MlSxr?pu!tO>!Ui*PcGR;BMC8i( znqSKbK|11-QMwrqeRnc6KIJBZzUMJ&JUI%>#2m!vihRl@SI`_v_xc+%N)3NnK#-8J z$VQ>8v=J1p&CD17!rlW&K3Z??j#So46+|J}2%qRACF^~f6cC)q*@1uOcD)FD3AdC zVM05N!v@GkKC7ym+~m0}Nl+eM9VWY5>f<;%a@~;j=I~&QDFZNFM@Z&kd0l>hgm11C zx^|chEolwlZCU*-p8q>*9D#jT*pO32QEA%ih?=peJPWz{~I-3{EFYhd*K(z(I#U- z)-y`&)#96L?+;XgBOU+(VhmGdjr<`u`}Z66FR?T$K-U_|A6jr>2>!Z%burgX)hyzR zJ_HLV)V)M6?6Hb6@54EEwUjD@At>uu7bj+|ry`0W7AG(0SS-3IJ-6kQS<%;^)If{# zk5v@sJ-+tJ{rL{**-|lVrdD}vt3k!cQMP@QpHgUMDspM*$8mO* z&qrRGm==5@X=ENhZhDD%g9yyYg9Fj25DTTs@*ysI8#1ZZy*tdz9@>4>2>(f`{W*IG zms_@0s~)utjj97t!sASPRE4GQjLCi?yEF+4ic==mT=^UbK{A9NSE~0#{o5uBb%8&y z=sj9oaN@J#yBu$Tn%DPaCmg?}-bMWmW3QvCuUB>B7etJH3ZLVpzgexdWr zfQV}XP|dT=QzQ^Kzo5bbFE;-O(YBCIRT_gmtkjCS-ogzA=v^xCi&KU`I`GVnOk@kC zW0p(*agEWA_NG7N}U!w`N1;&ilA?2t))jIcg_Ppv($b!P_I^KvOrM$)RnVJFVMt#83@O44>83CrZ z9(~gdMUA$6IU!Wcdt&GPJkv+|E;fV&xziNKvN-dF3S(1p7BY6}v=+wO{DbYk=v)T8 z>4oer%yl`n=#|?D1QQ?2;IFLiI&W)V^mKN$HYFrGCXXh_wJ_VNDP!{68I}QU8neYI z3*`{>uT`sqZ%)*qhHVp~kKVmf4WbVkntOXjNIs4Boxh+iMY9}Me9U#Of`g0u>KpYd zJy23*bXO@T0wve<5eO`pFlF(XZFIqqB6>n>`1y|kc6jdkV<>50Ps639<3rOWm8b3^ z#^z33|757w@?gHcmgw%#U&Gq^WFea)8;7wVNmeK00FV*2gH55>ZJ%HdKeq397oie5Bw^eH3MT_P%iAHXK?q<7yy@DHBD-XwLPx1t1{ znnW-lH_lOD_-?RBfHw7&_pQQO6^J0jYj;`;+Hr%bvjOhMpIbEDv!Qc@49W6;TY~r* zmmGp+Uh>A)gVRF<2=JR*7@iWaq@O{*nrCj3)2{(^P%;>lQV7LsWy)PgLoP+To?iy* zW%|_5jxKwBWF}Wh^U(4u$vuQ0m5kF6$F_!EO*}fO|fMK z&;d$T^X5gVYbX;-n8B~*kQ?B;B~`33!I>WYC&r{~^iR_7=LWx5ubS=cTLn_5D}9A4 zX&QdZimHnZF`_NsL!xz&2oV@7u*;AHMHFO@s1osGW<^$q+&#Vd`( z_xvcdI~U`=xWq^}r5*+0KyeFlw=>zT-7?m;KI>{cc2TObtJg64@w>RUO#yK4G#8}E zNiL@Wl{OtpHx&H{&1cV|NV&)$;qYVqoqwh*yhif7-VzSmmOHXJaWw1CZc(Z`9lSPC zpoi&b6Wq>ZNWtyh6vF=Znk*y3?7bWAhA^AaACHs~I)G!2LE=)}~R z@QivK53cc*}zzl`%gRDi6ji(hrdVtlF3fB8!Ku7Nb44gk^}aOpX?t4 z-$JZpFnbdzic*{rR{S;7Fa0bLU|PfpNdG4_>LA@=#1wrf>gt1d8Td}0yxgcl=ct{s zEG-6qz+3#43P4CtaU5N>74~pf$b;eEt z3Y?rIj?L>hS_*VA+iNKR3@|>7Of2wZbAq86I*$RCN5CM?Wn@D=#Dx3NzhCIu2ch?O z`^BCHkC&0SpNX_LCBkwP>_B-nl+w3CT+7y zEz;>6^XpE|l>>T7EQU(Pk$K1Q=McZdJztja8W3ioKdZZ8;NG&$b`3dKJ&=o>Q!fdP z%i=72EJbop^gDrP*qI9>GZF?ad4a1(r}@(5jhHyCR14yy1-CJnlF6m4sJu z97TLo+X>%o4Mb@YKWS^YlAfQ%1UI|pv^oF{YW3Zqus5@D?8}stM2Mw>%?!0;@d4%> zZ`h4g3wQ?!R(Fv&*Ihn2j;%u?{g!__yAsNa{ z+ynCx`zy;$wVR6~%X^U^63bZxl&~Wi(Gra{%U78aD{csXQYp|pKQcjwAvATFAs_yQ z1OYwz`~BOsvMJ4Eja&?LP!iolz9I`9ZO8gupS=$Kl0~+GpG(=hur4w(YyTQ4`J>rS z1Ic@S8t}F z5q39a(gVW%_m-&tV5QD4IvH_!5ARu%f(3#!2o^Omn?{WTEdFgWzQAIg z3mDP!8I`WtDMzF=ED!LchzsO0wW%`U9fBXL1XChA!%qr~2|54F*Z$)aoV&3&{TJAu zx%N(CPnv`Wt)*6;<`++pu^+_JDEU>*d$ZlXm3p1;8<3#A4Cgx)nrnURw*X*}4{ zMYG5d-hc+~IJ9ax9!64&91-SA+AyFeu{ba{F*?463cE!QO>n9f4xg(O;mf*tgnzzR zh2##KwI##5-2c@MyK9?NEwf^Tz;oa&FL=B%f`tB2oIu1hn7pQW$y!eSAFPyCU+>>dISFja zn+<|ziGA(=Le$&D!Uxf5*ZF$SpH#`X>Jc1HJ&D zn3$8r(r0QtvGKm@0?rwdc>nk`t2xo4{03y4i!tP&^Qzh+e;X3n?*iqx7y^`9f_>kE zLn*K2M*F~Ch92VcX6^x+rXg9%_v#W$((SPXH|`UP!wc1Qdgp(t2(GV*)j$ie${vfD zz1gp`e_m(IGtG3gCB1hJ$oeSO9EQ2dQpAV+=qv<+5`_dq(a#1QCR@Nt#fDng@`7-= zSG`Yd^G<&Ud`BBdFGJBf^?xz1>=dC~+3De`6bm2M=2Pi>1CKX=;>8s7xl^a^75Wx< z6a;tCM8LOkaD9eCu~VRVpE{Ch(7Y@bk^Q3$D@O4+%yqheS=m>Na+pA74!|Ktndf+w zxmRKMmVj#27)6TF5~*={0X<`tz^QPRCcofR$XYder}opv@JkHoxF3U)n?cKi)dj1e z)2k%_--O@~Ju$el(>lf_mm;1K$ruL<7hi-r;EFMFLf@7Ei%BVcms*`!AGeYrq2&vF zip%i;8*gBcqULG_*a#3Mf7j1HHsco_UQH7ata~EE;a6EC!~k285ASz)#+C4SW+n92 znyiKhof*~b=KKktU3B9czb(?IP&X&v@E8I&s?%k5TBHl8WpPf^*zvu8ZrR^gO|{zb z?$Y8{(oIZ0kNTWF1W*~Wi7b$7{roVGrX3o<=w}~&pXpN#OR#eg6l`)%K6uYjAYNue z`ku=XaHYzsYu8l*z=M6{uM&v5#?0Aw$LPtD5lS(wj9L2AN>a;6cv zY24F0Efdvi^3|VrK?_%YS$fZ|m+(6H(>y-o?f>|K94p3sPuXf=RlW!silCvOtXp`U zg;<|$ThH7wN-5>So~&Vs+k#C4cw7vn?@5NDVQ4|~vx@p^DhKs9MG1H!f47iN@sRrR zA(wjX%uQdh_vMlvBT_oTMmYq`YgDVn9~O(MNc+7H!@LcHORKmBb+Yn_1~P{C$6q`2 zU269!2-PCW+;dKn=tCSf8gz=zRTe`H0Mb!Oc7q*ssA;TZzOYoHc{~m^%P{1|Kn3G( z^ZUi=2q&-w6zRXBsiw+f#|+fnI+Jvx{{sqQVfeqGAVx-x|CWK62$&c-82`r&`d?5G zGb01j{}&4CG*!u->SUF2fVh$S4-oW^2+GHHgOGD@b0gRA-$U9WZSNAk%TKHJnbott zef;hT0-W)7S*b3&xW+4@lt^C25SbP%MN1^ehX#fwW~LX=69fbSX{cu^*V5?N$lw6f zz|6>4->0M)&Zd#ku@Mk(L`H|!14xTv6_}Vl=6&W3%*X)G1tKs7Yo*aQ<512B@{)vXBD9}5H|T}vZtO%q5U72prFt$%1{a3z+2l&Yk# zW=!aPPkm-p5b*f9Uwe2(g|);2@USS#GARIB<`V!VEbBAB-!iTL?N`kiVC2Q^5C1=@ z;kTGtqCBenl0v$k;ad~fA9T-b|H$UC?Ap(<$lDz3Eo;N8vIKej=bsg1WsQywu17}p zPhS$FRyRi%i%&u=3fk8H`dee04R}L9uHFAxl@yXQqCeOUG_!l`($M<$&kD){if?0V z0^rjAl1v2op0fO-oWm|mVZmxmAe{lod)HS?>44%$;Evpc)FI{e+| zHVtxiarF#u`{TTBMv&hW(-igCN2LWoV|zvOQ}6cEWX{ GnP$&`p>bpi8m8w75m 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 literal 0 HcmV?d00001 diff --git a/pong.html b/pong.html new file mode 100644 index 00000000..fbe142de --- /dev/null +++ b/pong.html @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + From 03835c3c2b4afef4129ffcd2a63a9a65abad0697 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sat, 15 Oct 2022 17:41:54 +0200 Subject: [PATCH 02/48] miscs and basic responsive. --- pong.html | 132 ++++++++++++++++++++++++++++++++++++++++------- pong_example.jpg | Bin 0 -> 66633 bytes 2 files changed, 113 insertions(+), 19 deletions(-) create mode 100644 pong_example.jpg diff --git a/pong.html b/pong.html index fbe142de..e0025889 100644 --- a/pong.html +++ b/pong.html @@ -4,38 +4,78 @@ +

    + - From 0f98e3328eb74222786cd77fba7391a2f2a673ba Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sun, 16 Oct 2022 01:51:13 +0200 Subject: [PATCH 04/48] basic ball bounce + minors changes --- pong.html | 100 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 60 insertions(+), 40 deletions(-) diff --git a/pong.html b/pong.html index 644659f7..01620b8e 100644 --- a/pong.html +++ b/pong.html @@ -26,7 +26,8 @@ canvas { var gridDisplay = true; -function startGame() { +function startGame() +{ myGameArea.createGameArea(); // Const @@ -49,11 +50,13 @@ function startGame() { player1.speed = playerSpeed; player2.speed = playerSpeed; ball.speed = ballSpeed; + ball.dirX = -0.5; + ball.dirY = +0.5; score1 = new score(score_size+"px", "Consolas", "white", w_mid-w/8, w/12); score2 = new score(score_size+"px", "Consolas", "white", w_mid+w/8-score_size/2, w/12); - wall_top = new component(w, wall_size, "white", 0, 0); - wall_bottom = new component(w, wall_size, "white", 0, h-wall_size); + wall_top = new component(w, wall_size, "grey", 0, 0); + wall_bottom = new component(w, wall_size, "grey", 0, h-wall_size); // Grid w_grid_mid = new component(w, 1, "darkgreen", 0, h_mid); @@ -87,11 +90,13 @@ var myGameArea = { { myGameArea.deleteKey(e.key); }) }, addKey : function(key) { + key = key.toLowerCase(); var i = myGameArea.keys.indexOf(key); if (i == -1) - myGameArea.keys.push(key); + myGameArea.keys.push(key); }, deleteKey : function(key) { + key = key.toLowerCase(); var i = myGameArea.keys.indexOf(key); if (i != -1) myGameArea.keys.splice(i, 1); @@ -104,7 +109,8 @@ var myGameArea = { } } -function score(size, font, color, x, y) { +function score(size, font, color, x, y) +{ this.size = size; this.font = font; this.color = color; @@ -119,7 +125,8 @@ function score(size, font, color, x, y) { } } -function component(width, height, color, x, y) { +function component(width, height, color, x, y) +{ this.width = width; this.height = height; this.color = color; @@ -137,54 +144,65 @@ function component(width, height, color, x, y) { this.x += this.dirX * this.speed; this.y += this.dirY * this.speed; } - this.crashWith = function(otherobj) { // From W3schools. To redo. + this.collision = function(collider) { // From W3schools. To redo. var myleft = this.x; var myright = this.x + (this.width); var mytop = this.y; var mybottom = this.y + (this.height); - var otherleft = otherobj.x; - var otherright = otherobj.x + (otherobj.width); - var othertop = otherobj.y; - var otherbottom = otherobj.y + (otherobj.height); - var crash = true; + var otherleft = collider.x; + var otherright = collider.x + (collider.width); + var othertop = collider.y; + var otherbottom = collider.y + (collider.height); if ((mybottom < othertop) || (mytop > otherbottom) || (myright < otherleft) || (myleft > otherright)) { - crash = false; + return false; } - return crash; + else + return true; + } + this.bounce = function() { // WIP + ball.dirX = ball.dirX * -1; + ball.dirY = ball.dirY * -1; } } -function gameLoop() { - if (ball.crashWith(player1)) - myGameArea.stop(); +function gameLoop() +{ handleInput(); - ball.dirX = -0.5; - ball.dirY = +0.5; ball.move(); + if (ball.collision(wall_top)) + ball.bounce(); + if (ball.collision(wall_bottom)) + ball.bounce(); + if (ball.collision(player1)) + ball.bounce(); + if (ball.collision(player2)) + ball.bounce(); draw(); } -function draw() { +function draw() +{ myGameArea.clear(); if (gridDisplay) drawGrid(); + wall_top.update(); + wall_bottom.update(); player1.update(); player2.update(); ball.update(); score1.update(); score2.update(); - wall_top.update(); - wall_bottom.update(); } -function drawGrid() { +function drawGrid() +{ w_grid_mid.update(); w_grid_u1.update(); w_grid_d1.update(); @@ -194,7 +212,8 @@ function drawGrid() { h_grid_d1.update(); } -function handleInput() { +function handleInput() +{ var keys = myGameArea.keys; if (keys.length == 0) return; @@ -207,30 +226,31 @@ function handleInput() { playerMove(keys); } -function playerMove(keys) { - player1.dirX = 0; +function playerMove(keys) +{ player1.dirY = 0; - if (keys.indexOf("a") != -1) - { player1.dirX += -1; } - if (keys.indexOf("d") != -1) - { player1.dirX += 1; } if (keys.indexOf("w") != -1) - { player1.dirY += -1; } + { player1.dirY += -1; } if (keys.indexOf("s") != -1) - { player1.dirY += 1; } + { player1.dirY += 1; } player1.move(); - - player2.dirX = 0; + if (player1.collision(wall_top) || player1.collision(wall_bottom)) + { + player1.dirY = player1.dirY * -1; + player1.move(); + } + player2.dirY = 0; - if (keys.indexOf("ArrowLeft") != -1) - { player2.dirX += -1; } - if (keys.indexOf("ArrowRight") != -1) - { player2.dirX += 1; } - if (keys.indexOf("ArrowUp") != -1) + if (keys.indexOf("ArrowUp".toLowerCase()) != -1) { player2.dirY += -1; } - if (keys.indexOf("ArrowDown") != -1) + if (keys.indexOf("ArrowDown".toLowerCase()) != -1) { player2.dirY += 1; } player2.move(); + if (player2.collision(wall_top) || player2.collision(wall_bottom)) + { + player2.dirY = player2.dirY * -1; + player2.move(); + } } From 0cca04e3500eccc7a9ed44c4896089df504e2eea Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sun, 16 Oct 2022 17:14:59 +0200 Subject: [PATCH 05/48] a little more responsive (a little) --- pong.html | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/pong.html b/pong.html index 01620b8e..20518359 100644 --- a/pong.html +++ b/pong.html @@ -6,11 +6,15 @@ @@ -59,13 +63,13 @@ function startGame() wall_bottom = new component(w, wall_size, "grey", 0, h-wall_size); // Grid - w_grid_mid = new component(w, 1, "darkgreen", 0, h_mid); - w_grid_u1 = new component(w, 1, "yellow", 0, h/4); - w_grid_d1 = new component(w, 1, "yellow", 0, h-h/4); - - h_grid_mid = new component(1, h, "darkgreen", w_mid, 0); - h_grid_u1 = new component(1, h, "yellow", w/4, 0); - h_grid_d1 = new component(1, h, "yellow", w-w/4, 0); + const grid_size = w/500; + w_grid_mid = new component(w, grid_size, "darkgreen", 0, h_mid); + w_grid_u1 = new component(w, grid_size, "darkgreen", 0, h/4); + w_grid_d1 = new component(w, grid_size, "darkgreen", 0, h-h/4); + h_grid_mid = new component(grid_size, h, "darkgreen", w_mid, 0); + h_grid_u1 = new component(grid_size, h, "darkgreen", w/4, 0); + h_grid_d1 = new component(grid_size, h, "darkgreen", w-w/4, 0); myGameArea.start(); } @@ -74,10 +78,10 @@ var myGameArea = { keys: [], canvas : document.createElement("canvas"), createGameArea : function() { - this.canvas.width = 500; - this.canvas.height = 300; - // var heightRatio = 1; - // this.canvas.height = this.canvas.width * heightRatio; + /* ratio 5/3 (1.66) */ + var ratio = 1.66666; + this.canvas.width = 1500; + this.canvas.height = this.canvas.width / ratio; this.context = this.canvas.getContext("2d"); var container = document.getElementById("canvas-container"); container.insertBefore(this.canvas, container.childNodes[0]); From 6b495399c0ea2d0f9ebf115238858175261dd6aa Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sun, 16 Oct 2022 20:08:24 +0200 Subject: [PATCH 06/48] miscs littles adjustements --- pong.html | 80 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 23 deletions(-) diff --git a/pong.html b/pong.html index 20518359..b7fc54c0 100644 --- a/pong.html +++ b/pong.html @@ -12,7 +12,7 @@ } canvas { background-color: #333333; - max-width: 90vw; + max-width: 75vw; /* max-height: 100vh; */ /* width: 80%; */ } @@ -28,23 +28,23 @@ canvas { - - - - diff --git a/src/pong.html b/src/pong.html new file mode 100644 index 00000000..14a78226 --- /dev/null +++ b/src/pong.html @@ -0,0 +1,33 @@ + + + + + + + + +
    + +
    + + + + + diff --git a/src/pong.ts b/src/pong.ts new file mode 100644 index 00000000..5f0bfd70 --- /dev/null +++ b/src/pong.ts @@ -0,0 +1,359 @@ + +// import {component, score, line} from "./class.js"; +// @ts-check + +let gridDisplay = false; + +let pong: gameArea; + +let wall_top: Rectangle; +let wall_bottom: Rectangle; +let player1: Player; +let player2: Player; +let ball: Ball; +let score1: TextElem; +let score2: TextElem; + +let w_grid_mid: Rectangle; +let w_grid_u1: Rectangle; +let w_grid_d1: Rectangle; +let h_grid_mid: Rectangle; +let h_grid_u1: Rectangle; +let h_grid_d1: Rectangle; + +function startGame() +{ + pong = new gameArea(); + + // Const + let w = pong.canvas.width; + let h = pong.canvas.height; + let w_mid = w/2; + let h_mid = h/2; + const pw = w/50; + const ph = pw*5; + const ball_size = pw; // const ball_size = w/50; + const score_size = w/16; + const wall_size = w/100; + const playerSpeed = w/75; + const ballSpeed = w/75; + +// Component + wall_top = new Rectangle({x: 0, y: 0}, "grey", w, wall_size); + wall_bottom = new Rectangle({x: 0, y: h-wall_size}, "grey", w, wall_size); + + player1 = new Player({x: 0+w/50, y: h_mid-ph/2}, "white", pw, ph); + player2 = new Player({x: w-w/50-pw, y: h_mid-ph/2}, "white", pw, ph); + player1.speed = playerSpeed; + player2.speed = playerSpeed; + + ball = new Ball({x: w_mid-ball_size/2, y: h_mid-ball_size/2}, "white", ball_size); + ball.speed = ballSpeed; + ball.dir.x = -0.8; + ball.dir.y = +0.2; + + score1 = new TextElem({x: w_mid-w/8, y: w/12}, "white", score_size+"px"); + score1.text = "0"; + score2 = new TextElem({x: w_mid+w/8-score_size/2, y: w/12}, "white", score_size+"px"); + score2.text = "0"; + +// Grid + const grid_size = w/500; + w_grid_mid = new Rectangle({x: 0, y: h_mid}, "darkgreen", w, grid_size); + w_grid_u1 = new Rectangle({x: 0, y: h/4}, "darkgreen", w, grid_size); + w_grid_d1 = new Rectangle({x: 0, y: h-h/4}, "darkgreen", w, grid_size); + h_grid_mid = new Rectangle({x: w_mid, y: 0}, "darkgreen", grid_size, h); + h_grid_u1 = new Rectangle({x: w/4, y: 0}, "darkgreen", grid_size, h); + h_grid_d1 = new Rectangle({x: w-w/4, y: 0}, "darkgreen", grid_size, h); + +// dashed line TODO + // midLine = new component(grid_size, h, "white", w_mid, 0); + + pong.start(); +} + +class gameArea { + keys: string[]; + interval: number = 0; + canvas: HTMLCanvasElement; + ctx: CanvasRenderingContext2D; + constructor() { + this.keys = []; + // this.canvas = {}; + this.canvas = document.createElement("canvas"); + // this.ctx = {}; + this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; + /* ratio 5/3 (1.66) */ + const ratio = 1.66666; + this.canvas.width = 1500; + this.canvas.height = this.canvas.width / ratio; + let container = document.getElementById("canvas-container"); + if (container) + container.insertBefore(this.canvas, container.childNodes[0]); + } + start() { + this.interval = setInterval(gameLoop, 20); + window.addEventListener('keydown', function (e) { pong.addKey(e.key); }); + window.addEventListener('keyup', function (e) { pong.deleteKey(e.key); }); + } + addKey(key: string) { + key = key.toLowerCase(); + var i = pong.keys.indexOf(key); + if (i == -1) + pong.keys.push(key); + } + deleteKey(key: string) { + key = key.toLowerCase(); + var i = pong.keys.indexOf(key); + if (i != -1) + pong.keys.splice(i, 1); + } + clear() { + // @ts-ignore + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + stop() { + clearInterval(this.interval); + } +} + +// Bad drawLine, TODO make a drawLine with fillRect() +// function drawLine(start, end, color, pattern) +// { +// let ctx = pong.ctx; +// ctx.beginPath(); +// ctx.setLineDash(pattern); +// ctx.moveTo(start[0], start[1]); +// ctx.lineTo(end[0], end[1]); +// ctx.strokeStyle = color; +// ctx.stroke(); +// } + +function gameLoop() +{ + handleInput(); + + ball.move(); + if (ball.collision(wall_top) || ball.collision(wall_bottom)) + ball.bounce(); + else if (ball.collision(player1)) + ball.bounce(player1); + else if (ball.collision(player2)) + ball.bounce(player2); + + draw(); +} + +function draw() +{ + pong.clear(); + + if (gridDisplay) + drawGrid(); + + // drawLine([w_mid, 0], [w_mid, h], "white", [10, 10]); // bad + + wall_top.update(); + wall_bottom.update(); + player1.update(); + player2.update(); + ball.update(); + score1.update(); + score2.update(); +} + +function drawGrid() +{ + w_grid_mid.update(); + w_grid_u1.update(); + w_grid_d1.update(); + + h_grid_mid.update(); + h_grid_u1.update(); + h_grid_d1.update(); +} + +function handleInput() +{ + var keys = pong.keys; + if (keys.length == 0) + return; + + if (keys.indexOf("g") != -1) + { + gridDisplay = !gridDisplay; + pong.deleteKey("g"); + } + playerMove(keys); +} + +function playerMove(keys: string[]) +{ + player1.dir.y = 0; + if (keys.indexOf("w") != -1) + { player1.dir.y += -1; } + if (keys.indexOf("s") != -1) + { player1.dir.y += 1; } + player1.move(); + if (player1.collision(wall_top) || player1.collision(wall_bottom)) + { + player1.dir.y = player1.dir.y * -1; + player1.move(); + } + + player2.dir.y = 0; + if (keys.indexOf("ArrowUp".toLowerCase()) != -1) + { player2.dir.y += -1; } + if (keys.indexOf("ArrowDown".toLowerCase()) != -1) + { player2.dir.y += 1; } + player2.move(); + if (player2.collision(wall_top) || player2.collision(wall_bottom)) + { + player2.dir.y = player2.dir.y * -1; + player2.move(); + } +} + + +///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// +// class.js + +type Vector = { + x: number; + y: number; +} + + +interface Component { + pos: Vector; + color: string; + // ctx: CanvasRenderingContext2D; + update(): void; +} + + +class Rectangle implements Component { + pos: Vector; + color: string; + width: number; + height: number; + constructor(pos: Vector, color: string, width: number, height: number) { + this.pos = pos; + this.color = color; + this.width = width; + this.height = height; + } + update() { + let ctx = pong.ctx; + ctx.fillStyle = this.color; + ctx.fillRect(this.pos.x, this.pos.y, this.width, this.height); + } + collision(collider: Rectangle): boolean { // Collision WIP. To redo + var myleft = this.pos.x; + var myright = this.pos.x + (this.width); + var mytop = this.pos.y; + var mybottom = this.pos.y + (this.height); + var otherleft = collider.pos.x; + var otherright = collider.pos.x + (collider.width); + var othertop = collider.pos.y; + var otherbottom = collider.pos.y + (collider.height); + if ((mybottom < othertop) + || (mytop > otherbottom) + || (myright < otherleft) + || (myleft > otherright)) { + return false; + } + else + return true; + } +} + + +interface Moving { + dir: Vector; + speed: number; + move(): void; +} + + +class Player extends Rectangle implements Moving { + dir: Vector = {x: 0.0, y: 0.0}; + speed: number = 1; + constructor(pos: Vector, color: string, width: number, height: number) { + super(pos, color, width, height); + } + move() { + this.pos.x += this.dir.x * this.speed; + this.pos.y += this.dir.y * this.speed; + } +} + + +class Ball extends Rectangle implements Moving { + dir: Vector = {x: 0.0, y: 0.0}; + speed: number = 1; + constructor(pos: Vector, color: string, size: number) { + super(pos, color, size, size); + } + move() { + this.pos.x += this.dir.x * this.speed; + this.pos.y += this.dir.y * this.speed; + } + bounce(collider?: Rectangle) { + if (collider instanceof Player) + this._bouncePlayer(collider); + else // Could be more generic, but it's OK, because in Pong collider can only be Player or Wall. + this._bounceWall(); + + } + private _bounceWall() { // Should be enough for Wall + ball.dir.y = ball.dir.y * -1; + } + private _bouncePlayer(collider: Player) { // WIP + // Bounce for Player need to be more complexe than this + ball.dir.x = ball.dir.x * -1; + } +} + +// conflict with Text +class TextElem implements Component { + pos: Vector; + color: string; + size: string; + font: string = "Consolas"; + text: string = ""; + constructor(pos: Vector, color: string, size: string, font?: string) { + this.pos = pos; + this.color = color; + this.size = size; + if (font) + this.font = font; + } + update() { + let ctx = pong.ctx; + ctx.font = this.size + " " + this.font; + ctx.fillStyle = this.color; + ctx.fillText(this.text, this.pos.x, this.pos.y); + } +} + +// class line { +// width: number; +// height: number; +// color: string; +// x: number; +// y: number; +// constructor(width: number, height: number, color: string, x: number, y: number) { +// this.width = width; +// this.height = height; +// this.color = color; +// this.x = x; +// this.y = y; +// } +// update() { +// let ctx = pong.ctx; +// ctx.fillStyle = this.color; +// ctx.fillRect(this.x, this.y, this.width, this.height); +// } +// } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..fddada1e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,105 @@ +{ + "include": ["./src"], + "compilerOptions": { + "outDir": "./build", + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From 3f6d7c3afcf9f603303ba392040c54d07d9708dc Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 20 Oct 2022 05:00:14 +0200 Subject: [PATCH 08/48] added midLine (net) --- src/pong.ts | 83 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/src/pong.ts b/src/pong.ts index 5f0bfd70..b843f5fa 100644 --- a/src/pong.ts +++ b/src/pong.ts @@ -13,6 +13,7 @@ let player2: Player; let ball: Ball; let score1: TextElem; let score2: TextElem; +let midLine: Line; let w_grid_mid: Rectangle; let w_grid_u1: Rectangle; @@ -25,16 +26,18 @@ function startGame() { pong = new gameArea(); - // Const - let w = pong.canvas.width; - let h = pong.canvas.height; - let w_mid = w/2; - let h_mid = h/2; +// Const + const w = pong.canvas.width; + const h = pong.canvas.height; + const w_mid = w/2; + const h_mid = h/2; const pw = w/50; const ph = pw*5; const ball_size = pw; // const ball_size = w/50; const score_size = w/16; + const midLineSize = w/150; const wall_size = w/100; + const grid_size = w/500; const playerSpeed = w/75; const ballSpeed = w/75; @@ -42,8 +45,8 @@ function startGame() wall_top = new Rectangle({x: 0, y: 0}, "grey", w, wall_size); wall_bottom = new Rectangle({x: 0, y: h-wall_size}, "grey", w, wall_size); - player1 = new Player({x: 0+w/50, y: h_mid-ph/2}, "white", pw, ph); - player2 = new Player({x: w-w/50-pw, y: h_mid-ph/2}, "white", pw, ph); + player1 = new Player({x: 0+pw, y: h_mid-ph/2}, "white", pw, ph); + player2 = new Player({x: w-pw-pw, y: h_mid-ph/2}, "white", pw, ph); player1.speed = playerSpeed; player2.speed = playerSpeed; @@ -57,17 +60,15 @@ function startGame() score2 = new TextElem({x: w_mid+w/8-score_size/2, y: w/12}, "white", score_size+"px"); score2.text = "0"; + midLine = new Line({x: w_mid-midLineSize/2, y: 0+wall_size}, "white", midLineSize, h-wall_size*2, 15); + // Grid - const grid_size = w/500; w_grid_mid = new Rectangle({x: 0, y: h_mid}, "darkgreen", w, grid_size); w_grid_u1 = new Rectangle({x: 0, y: h/4}, "darkgreen", w, grid_size); w_grid_d1 = new Rectangle({x: 0, y: h-h/4}, "darkgreen", w, grid_size); h_grid_mid = new Rectangle({x: w_mid, y: 0}, "darkgreen", grid_size, h); h_grid_u1 = new Rectangle({x: w/4, y: 0}, "darkgreen", grid_size, h); h_grid_d1 = new Rectangle({x: w-w/4, y: 0}, "darkgreen", grid_size, h); - -// dashed line TODO - // midLine = new component(grid_size, h, "white", w_mid, 0); pong.start(); } @@ -150,11 +151,10 @@ function draw() if (gridDisplay) drawGrid(); - - // drawLine([w_mid, 0], [w_mid, h], "white", [10, 10]); // bad - + wall_top.update(); wall_bottom.update(); + midLine.update(); player1.update(); player2.update(); ball.update(); @@ -338,22 +338,39 @@ class TextElem implements Component { } } -// class line { -// width: number; -// height: number; -// color: string; -// x: number; -// y: number; -// constructor(width: number, height: number, color: string, x: number, y: number) { -// this.width = width; -// this.height = height; -// this.color = color; -// this.x = x; -// this.y = y; -// } -// update() { -// let ctx = pong.ctx; -// ctx.fillStyle = this.color; -// ctx.fillRect(this.x, this.y, this.width, this.height); -// } -// } + +class Line extends Rectangle { + gapeCount: number = 0; + segmentCount: number; + segmentWidth: number; + segmentHeight: number; + constructor(pos: Vector, color: string, width: number, height: number, gapeCount?: number) { + super(pos, color, width, height); + if (gapeCount) + this.gapeCount = gapeCount; + this.segmentCount = this.gapeCount * 2 + 1; + + this.segmentWidth = this.width; + this.segmentHeight = this.height / this.segmentCount; + + // for Horizontal Line + // this.segmentWidth = this.width / this.segmentCount; + // this.segmentHeight = this.height; + } + update() { + let ctx = pong.ctx; + ctx.fillStyle = this.color; + let pos: Vector = {x: 0, y: 0}; + let i = 0; + while (i < this.segmentCount) + { + // for Horizontal Line + // pos.y = this.pos.y; + // pos.x = this.pos.x + this.segmentWidth * i; + pos.x = this.pos.x; + pos.y = this.pos.y + this.segmentHeight * i; + ctx.fillRect(pos.x, pos.y, this.segmentWidth, this.segmentHeight); + i += 2; + } + } +} From af3d885f123b8e2778664ae1b4fcfa61d9df14d6 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sat, 22 Oct 2022 09:47:25 +0200 Subject: [PATCH 09/48] newRound() and Game Over + Bit Font for score + improved API for move and collision + miscs --- memo.txt | 12 ++ src/Bit5x3.woff | Bin 0 -> 3124 bytes src/Bit5x3.woff2 | Bin 0 -> 2012 bytes src/pong.html | 8 ++ src/pong.ts | 367 +++++++++++++++++++++++++++++++++-------------- 5 files changed, 281 insertions(+), 106 deletions(-) create mode 100644 memo.txt create mode 100644 src/Bit5x3.woff create mode 100644 src/Bit5x3.woff2 diff --git a/memo.txt b/memo.txt new file mode 100644 index 00000000..a190449c --- /dev/null +++ b/memo.txt @@ -0,0 +1,12 @@ +- ball speed up +- on newRound() + - speed reset +- ball direction based on player hit location + +--- + +- node.js server for http access (and javascipt modules files split) + +--- + +- gamesocket with node.js diff --git a/src/Bit5x3.woff b/src/Bit5x3.woff new file mode 100644 index 0000000000000000000000000000000000000000..72c8b2934a6ab203b58e8fe6f4d7134924143c89 GIT binary patch literal 3124 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 Lz@`}kCGr0P>KTfy literal 0 HcmV?d00001 diff --git a/src/Bit5x3.woff2 b/src/Bit5x3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..27d538bf85567b90aa23deb22a234ee8c6c5b80d GIT binary patch literal 2012 zcmV<22P61*Pew8T0RR9100-Ov4FCWD03Rd(00)Br0RR9100000000000000000000 z0000#Mn+Uk92y=5U;u(r5eN#SOqOE{fldGcHUcCAgBAoJ1&tyHfqWYT7c&E5v;T$G z*53iK_v4}eHD2$`Ziv{TA_kTJ0;r-A7uFGmTbX{@IsleEtMbcV()Jxk((;jF8MB8I zUdMEH+u)^nq$EOqJ9}sTc~`y(;<~e6#1ieNhFgYE$&lz?X_ZFo974++ z!)cLrrYKr23^zDS#ifbO6TAf<$m zmW5Jcup|Y#5YRO_w8cd#$xxVrL`t}F=Onvficvw(Di?V!!@2n@M7i9t6CbB4r9lKiVpo?oOmfcupU%2lvDpPb4Pgw?6I9I*0ZF5l@>cR6wLzY$N z!!ZW581_lwc6|Ha@!7NvMH)BhNXIuOU3|3+hf93ALwN^S8!};ZUX+PE|GJpzmBx+e zyo=#>bMWCWJ75gB>4&4<60*OT=Odr>iuAnIZ7QzT6zLSF3|7PDL<1D%F}$ZH8%LBc zN*$jA!lZcFq)(QJMj79K%-+i(yfWQ~e$b2N&!EAWkC@PmmBVOMv4glm51xAjzd@<28S~IM-9u$E*6@Ra|a9z)pYP>5sI!Fng2E- zr5%VzU|FfX+5QJ=<1cK3wuiDB&#Y>uHh7FrdqWjC$lsSc}~SdJqf^4~jJrVW@Y1t&n=98_Rb8uqYt0fw)b&Zy*XlnVWV3OQ1 zG}@AZtxSfC=A&a9n9Gawsk{PpWIeD@S8_~V+CH7x7=H5g|9|~;JNs{U;a{s?R8z8K zL3;rR$kG%N{9mF7Y_k1u>G`p$Y;K4_)RsFUekbYtNl|oFhYmWPeW1Sn+AvLBtTa4s z3R{Po%OSLN6jD1^q0++(sCD%@w9zTrKwE8N7_>7x9z%P5vIBI`E$2Z;qw)cC(l393 z&ZbxUp^Nd=kI>cB`sDq4nNa^NMco0jaUgWI9a2|kpfb{3s15cG+UV;yXsdJdfOam$ zSZHrzd>0dp{s3mkGJh*O}*MfM5Q+J9K(v>1rrDU z^Ut{BF(pZ9d9b#$vO+hN(D%66f@k)c|3$5T(D6G$mz-#4utAqU?uHG~C&g&x7>`~O z`e}%6RZ7v9$ZHAhvN%3t&3wIdMrj0)OluUdDnmZbfB7%P3!Iv(VP$TK?s*z|)oX6G z%(~nOfWgc#a!jH1^D|J<;MSK1kT#a=P4EzoOJho^Rf#^H$-$ihcaJvt^{C_9yYQ(j zyKlc9kT{sF>KnbD@2=qYL{=2l&K4H5`ud>)SI-HR0^Rq3w+Wh{3va$_3AKa9sLlrv zVsu$0=rJ2z&b6Fe6fu2h3s&7TWs~3*2HD3FBiUW?}5ecz7w2{u6U|LoZeC3O1Uf49EJ;V zZk$zlZqT(1lf?9FKKHXcdcYLjp`U!bS$uz!zPJfAm59bfDH@8w<#QF!SSaxY#u!Dz z%W$Jaz$|RcEiDFo^Q{#niEpo_+le!ioAWUVY_aJbbc_AzILClSixDzTDLl_asaYd0 zfK=7Swid?L7Y>IMi5`ZwjXU$P{o{KEPnc9~M?Wo0EANXfM)Yg|SJHzZ0nB18t~~%E znaI0~&aykE8CbPwAvpbwF ux5w*)U - +
    - - - + + diff --git a/src/client/pong.ts b/src/client/pong.ts new file mode 100644 index 00000000..b35208b5 --- /dev/null +++ b/src/client/pong.ts @@ -0,0 +1,277 @@ + +/* Keys + Player 1: W/S + Player 2: Up/Down + Grid On-Off: G +*/ + +import {Vector, VectorInteger, Rectangle, MovingRectangle, Player, Ball, TextElem, TextNumericValue, Line} from "./class.js"; +// @ts-check + +let gridDisplay = false; +let ballInPlay = true; + +let pong: gameArea; + +let wall_top: Rectangle; +let wall_bottom: Rectangle; +let player1: Player; +let player2: Player; +let ball: Ball; +let score1: TextNumericValue; +let score2: TextNumericValue; +let midLine: Line; + +let w_grid_mid: Rectangle; +let w_grid_u1: Rectangle; +let w_grid_d1: Rectangle; +let h_grid_mid: Rectangle; +let h_grid_u1: Rectangle; +let h_grid_d1: Rectangle; + +function startGame() +{ + pong = new gameArea(); + + // Const + const w = pong.canvas.width; + const h = pong.canvas.height; + const w_mid = Math.floor(w/2); + const h_mid = Math.floor(h/2); + const pw = Math.floor(w/50); + const ph = pw*5; + const ballSize = pw; + const scoreSize = Math.floor(w/16); + const midLineSize = Math.floor(w/150); + const wallSize = Math.floor(w/100); + const gridSize = Math.floor(w/500); + const playerSpeed = Math.floor(w/75); + const ballSpeed = Math.floor(w/75); + + let pos = new VectorInteger; + // Component + pos.assign(0, 0); + wall_top = new Rectangle(pong.ctx, pos, "grey", w, wallSize); + pos.assign(0, h-wallSize); + wall_bottom = new Rectangle(pong.ctx, pos, "grey", w, wallSize); + + pos.assign(0+pw, h_mid-ph/2); + player1 = new Player(pong.ctx, pos, "white", pw, ph, playerSpeed); + pos.assign(w-pw-pw, h_mid-ph/2); + player2 = new Player(pong.ctx, pos, "white", pw, ph, playerSpeed); + + pos.assign(w_mid-ballSize/2, h_mid-ballSize/2); + ball = new Ball(pong.ctx, pos, "white", ballSize, ballSpeed); + ball.dir.assign(-0.8, +0.2); + + pos.assign(w_mid-scoreSize*1.6, scoreSize*1.5); + score1 = new TextNumericValue(pong.ctx, pos, "white", scoreSize); + pos.assign(w_mid+scoreSize*1.1, scoreSize*1.5); + score2 = new TextNumericValue(pong.ctx, pos, "white", scoreSize); + score1.value = 0; + score2.value = 0; + + pos.assign(w_mid-midLineSize/2, 0+wallSize); + midLine = new Line(pong.ctx, pos, "white", midLineSize, h-wallSize*2, 15); + + // Grid + pos.assign(0, h_mid); + w_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); + pos.assign(0, h/4); + w_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); + pos.assign(0, h-h/4); + w_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); + pos.assign(w_mid, 0); + h_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); + pos.assign(w/4, 0); + h_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); + pos.assign(w-w/4, 0); + h_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); + + // Start + score1.update(); // first Text draw init the custom font (graphic leftover ortherwise) (a better solution ?) + drawInit(); + pong.start(); +} + +class gameArea { + keys: string[]; + interval: number = 0; + canvas: HTMLCanvasElement; + ctx: CanvasRenderingContext2D; + constructor() { + this.keys = []; + // this.canvas = {}; + this.canvas = document.createElement("canvas"); + // this.ctx = {}; + this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; + /* ratio 5/3 (1.66) */ + const ratio = 1.66666; + this.canvas.width = 1500; + this.canvas.height = this.canvas.width / ratio; + let container = document.getElementById("canvas-container"); + if (container) + container.insertBefore(this.canvas, container.childNodes[0]); + } + start() { + this.interval = window.setInterval(gameLoop, 20); + window.addEventListener('keydown', function (e) { pong.addKey(e.key); }); + window.addEventListener('keyup', function (e) { pong.deleteKey(e.key); }); + } + addKey(key: string) { + key = key.toLowerCase(); + var i = pong.keys.indexOf(key); + if (i == -1) + pong.keys.push(key); + } + deleteKey(key: string) { + key = key.toLowerCase(); + var i = pong.keys.indexOf(key); + if (i != -1) + pong.keys.splice(i, 1); + } + clear() { + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + stop() { + clearInterval(this.interval); + } +} + +function gameLoop() +{ + /* + // I try to clear only what need to be update. + // Will revert to clear() all if not satisfactory. + pong.clear(); + */ + handleInput(); + + if (ballInPlay) + { + ball.moveAndBounce([wall_top, wall_bottom, player1, player2]); + if (ball.pos.x > pong.canvas.width) { + ballInPlay = false; + score1.clear(); + ++score1.value; + setTimeout(newRound, 1500); + } + else if (ball.pos.x < 0 - ball.width) { + ballInPlay = false; + score2.clear(); + ++score2.value; + setTimeout(newRound, 1500); + } + } + + draw(); +} + +function newRound() +{ + // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches + if (score1.value >= 11 + || score2.value >= 11) + { + if (Math.abs(score1.value - score2.value) >= 2) + { + if (score1.value > score2.value) { + alert("Player 1 WIN"); + } + else { + alert("Player 2 WIN"); + } + return; + } + } + ball.pos.x = pong.canvas.width/2; + ball.pos.y = (pong.canvas.height * 0.1) + Math.floor(random() * (pong.canvas.height * 0.8)); + ball.speed = ball.baseSpeed; + ballInPlay = true; +} + +function random(min: number = 0, max: number = 1) { + return Math.random() * (max - min) + min; +} + +function draw() +{ + if (gridDisplay) { + drawGrid(); + } + midLine.update(); + score1.update(); + score2.update(); +} + +function drawStatic() +{ + wall_top.update(); + wall_bottom.update(); + midLine.update(); +} + +function drawInit() +{ + pong.clear(); + drawStatic(); + player1.update(); + player2.update(); +} + +function drawGrid() +{ + w_grid_mid.update(); + w_grid_u1.update(); + w_grid_d1.update(); + + h_grid_mid.update(); + h_grid_u1.update(); + h_grid_d1.update(); +} + +function handleInput() +{ + var keys = pong.keys; + if (keys.length == 0) + return; + + if (keys.indexOf("g") != -1) + { + if (gridDisplay) + { + pong.clear(); + drawStatic(); + } + gridDisplay = !gridDisplay; + pong.deleteKey("g"); + } + playerMove(keys); +} + +function playerMove(keys: string[]) +{ + player1.dir.y = 0; + if (keys.indexOf("w") != -1) { + player1.dir.y += -1; + } + if (keys.indexOf("s") != -1) { + player1.dir.y += 1; + } + player1.moveAndCollide([wall_top, wall_bottom]); + + player2.dir.y = 0; + if (keys.indexOf("ArrowUp".toLowerCase()) != -1) { + player2.dir.y += -1; + } + if (keys.indexOf("ArrowDown".toLowerCase()) != -1) { + player2.dir.y += 1; + } + player2.moveAndCollide([wall_top, wall_bottom]); +} + + +///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// + +startGame(); diff --git a/src/pong.ts b/src/pong.ts deleted file mode 100644 index c7d74175..00000000 --- a/src/pong.ts +++ /dev/null @@ -1,542 +0,0 @@ - -/* Keys - Player 1: W/S - Player 2: Up/Down - Grid On-Off: G -*/ - -// import {component, score, line} from "./class.js"; -// @ts-check - -let gridDisplay = false; -let ballInPlay = true; - -let pong: gameArea; - -let wall_top: Rectangle; -let wall_bottom: Rectangle; -let player1: Player; -let player2: Player; -let ball: Ball; -let score1: TextNumericValue; -let score2: TextNumericValue; -let midLine: Line; - -let w_grid_mid: Rectangle; -let w_grid_u1: Rectangle; -let w_grid_d1: Rectangle; -let h_grid_mid: Rectangle; -let h_grid_u1: Rectangle; -let h_grid_d1: Rectangle; - -function startGame() -{ - pong = new gameArea(); - - // Const - const w = pong.canvas.width; - const h = pong.canvas.height; - const w_mid = Math.floor(w/2); - const h_mid = Math.floor(h/2); - const pw = Math.floor(w/50); - const ph = pw*5; - const ballSize = pw; - const scoreSize = Math.floor(w/16); - const midLineSize = Math.floor(w/150); - const wallSize = Math.floor(w/100); - const gridSize = Math.floor(w/500); - const playerSpeed = Math.floor(w/75); - const ballSpeed = Math.floor(w/75); - - let pos = new VectorInteger; - // Component - pos.assign(0, 0); - wall_top = new Rectangle(pos, "grey", w, wallSize); - pos.assign(0, h-wallSize); - wall_bottom = new Rectangle(pos, "grey", w, wallSize); - - pos.assign(0+pw, h_mid-ph/2); - player1 = new Player(pos, "white", pw, ph, playerSpeed); - pos.assign(w-pw-pw, h_mid-ph/2); - player2 = new Player(pos, "white", pw, ph, playerSpeed); - - pos.assign(w_mid-ballSize/2, h_mid-ballSize/2); - ball = new Ball(pos, "white", ballSize, ballSpeed); - ball.dir.assign(-0.8, +0.2); - - pos.assign(w_mid-scoreSize*1.6, scoreSize*1.5); - score1 = new TextNumericValue(pos, "white", scoreSize); - pos.assign(w_mid+scoreSize*1.1, scoreSize*1.5); - score2 = new TextNumericValue(pos, "white", scoreSize); - score1.value = 0; - score2.value = 0; - - pos.assign(w_mid-midLineSize/2, 0+wallSize); - midLine = new Line(pos, "white", midLineSize, h-wallSize*2, 15); - - // Grid - pos.assign(0, h_mid); - w_grid_mid = new Rectangle(pos, "darkgreen", w, gridSize); - pos.assign(0, h/4); - w_grid_u1 = new Rectangle(pos, "darkgreen", w, gridSize); - pos.assign(0, h-h/4); - w_grid_d1 = new Rectangle(pos, "darkgreen", w, gridSize); - pos.assign(w_mid, 0); - h_grid_mid = new Rectangle(pos, "darkgreen", gridSize, h); - pos.assign(w/4, 0); - h_grid_u1 = new Rectangle(pos, "darkgreen", gridSize, h); - pos.assign(w-w/4, 0); - h_grid_d1 = new Rectangle(pos, "darkgreen", gridSize, h); - - // Start - score1.update(); // first Text draw init the custom font (graphic leftover ortherwise) (a better solution ?) - drawInit(); - pong.start(); -} - -class gameArea { - keys: string[]; - interval: number = 0; - canvas: HTMLCanvasElement; - ctx: CanvasRenderingContext2D; - constructor() { - this.keys = []; - // this.canvas = {}; - this.canvas = document.createElement("canvas"); - // this.ctx = {}; - this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; - /* ratio 5/3 (1.66) */ - const ratio = 1.66666; - this.canvas.width = 1500; - this.canvas.height = this.canvas.width / ratio; - let container = document.getElementById("canvas-container"); - if (container) - container.insertBefore(this.canvas, container.childNodes[0]); - } - start() { - this.interval = setInterval(gameLoop, 20); - window.addEventListener('keydown', function (e) { pong.addKey(e.key); }); - window.addEventListener('keyup', function (e) { pong.deleteKey(e.key); }); - } - addKey(key: string) { - key = key.toLowerCase(); - var i = pong.keys.indexOf(key); - if (i == -1) - pong.keys.push(key); - } - deleteKey(key: string) { - key = key.toLowerCase(); - var i = pong.keys.indexOf(key); - if (i != -1) - pong.keys.splice(i, 1); - } - clear() { - this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); - } - stop() { - clearInterval(this.interval); - } -} - -function gameLoop() -{ - /* - // I try to clear only what need to be update. - // Will revert to clear() all if not satisfactory. - pong.clear(); - */ - handleInput(); - - if (ballInPlay) - { - ball.moveAndBounce([wall_top, wall_bottom, player1, player2]); - if (ball.pos.x > pong.canvas.width) { - ballInPlay = false; - score1.clear(); - ++score1.value; - setTimeout(newRound, 1500); - } - else if (ball.pos.x < 0 - ball.width) { - ballInPlay = false; - score2.clear(); - ++score2.value; - setTimeout(newRound, 1500); - } - } - - draw(); -} - -function newRound() -{ - // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches - if (score1.value >= 11 - || score2.value >= 11) - { - if (Math.abs(score1.value - score2.value) >= 2) - { - if (score1.value > score2.value) { - alert("Player 1 WIN"); - } - else { - alert("Player 2 WIN"); - } - return; - } - } - ball.pos.x = pong.canvas.width/2; - ball.pos.y = pong.canvas.height/4 + Math.floor(random() * pong.canvas.height/2); - ball.speed = ball.baseSpeed; - ballInPlay = true; -} - -function random(min: number = 0, max: number = 1) { - return Math.random() * (max - min) + min; -} - -function draw() -{ - if (gridDisplay) { - drawGrid(); - } - midLine.update(); - score1.update(); - score2.update(); -} - -function drawStatic() -{ - wall_top.update(); - wall_bottom.update(); - midLine.update(); -} - -function drawInit() -{ - pong.clear(); - drawStatic(); - player1.update(); - player2.update(); -} - -function drawGrid() -{ - w_grid_mid.update(); - w_grid_u1.update(); - w_grid_d1.update(); - - h_grid_mid.update(); - h_grid_u1.update(); - h_grid_d1.update(); -} - -function handleInput() -{ - var keys = pong.keys; - if (keys.length == 0) - return; - - if (keys.indexOf("g") != -1) - { - if (gridDisplay) - { - pong.clear(); - drawStatic(); - } - gridDisplay = !gridDisplay; - pong.deleteKey("g"); - } - playerMove(keys); -} - -function playerMove(keys: string[]) -{ - player1.dir.y = 0; - if (keys.indexOf("w") != -1) { - player1.dir.y += -1; - } - if (keys.indexOf("s") != -1) { - player1.dir.y += 1; - } - player1.moveAndCollide([wall_top, wall_bottom]); - - player2.dir.y = 0; - if (keys.indexOf("ArrowUp".toLowerCase()) != -1) { - player2.dir.y += -1; - } - if (keys.indexOf("ArrowDown".toLowerCase()) != -1) { - player2.dir.y += 1; - } - player2.moveAndCollide([wall_top, wall_bottom]); -} - - -///////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// -// class.js - -// type Vector = { -// x: number; -// y: number; -// } - -class Vector { - x: number; - y: number; - constructor(x: number = 0, y: number = 0) { - this.x = x; - this.y = y; - } - assign(x: number, y: number) { - this.x = x; - this.y = y; - } -} - -class VectorInteger extends Vector { - // PLACEHOLDER - // VectorInteger with set/get dont work (No draw on the screen). Why ? -} - -/* -class VectorInteger { - // private _x: number = 0; - // private _y: number = 0; - // constructor(x: number = 0, y: number = 0) { - // this._x = x; - // this._y = y; - // } - // get x(): number { - // return this._x; - // } - // set x(v: number) { - // // this._x = Math.floor(v); - // this._x = v; - // } - // get y(): number { - // return this._y; - // } - // set y(v: number) { - // // this._y = Math.floor(v); - // this._y = v; - // } -} -*/ - -interface Component { - pos: VectorInteger; - color: string; - // ctx: CanvasRenderingContext2D; // TODO: reference in place of global 'pong.ctx' call - update(): void; - clear(): void; -} - - -class Rectangle implements Component { - pos: VectorInteger; - color: string; - width: number; - height: number; - constructor(pos: VectorInteger, color: string, width: number, height: number) { - this.pos = Object.assign({}, pos); - this.color = color; - this.width = width; - this.height = height; - } - update() { - let ctx = pong.ctx; - ctx.fillStyle = this.color; - ctx.fillRect(this.pos.x, this.pos.y, this.width, this.height); - } - clear(pos?: VectorInteger) { - let ctx = pong.ctx; - if (pos) - ctx.clearRect(pos.x, pos.y, this.width, this.height); - else - ctx.clearRect(this.pos.x, this.pos.y, this.width, this.height); - } - collision(collider: Rectangle): boolean { // Collision WIP. To redo - var myleft = this.pos.x; - var myright = this.pos.x + (this.width); - var mytop = this.pos.y; - var mybottom = this.pos.y + (this.height); - var otherleft = collider.pos.x; - var otherright = collider.pos.x + (collider.width); - var othertop = collider.pos.y; - var otherbottom = collider.pos.y + (collider.height); - if ((mybottom < othertop) - || (mytop > otherbottom) - || (myright < otherleft) - || (myleft > otherright)) { - return false; - } - else - return true; - } -} - - -interface Moving { - dir: Vector; - speed: number; - move(): void; -} - - -class MovingRectangle extends Rectangle implements Moving { - dir: Vector = new Vector(0,0); - speed: number; - readonly baseSpeed: number; - constructor(pos: VectorInteger, color: string, width: number, height: number, baseSpeed: number) { - super(pos, color, width, height); - this.baseSpeed = baseSpeed; - this.speed = baseSpeed; - } - move() { // Math.floor WIP until VectorInteger debug - this.pos.x += Math.floor(this.dir.x * this.speed); - this.pos.y += Math.floor(this.dir.y * this.speed); - } - moveAndCollide(colliderArr: Rectangle[]) { - let oldPos = Object.assign({}, this.pos); - this.move(); - if (colliderArr.some(this.collision, this)) - { - this.pos.x = oldPos.x; - this.pos.y = oldPos.y; - } - else - { - this.clear(oldPos); - this.update(); - } - } -} - - -class Player extends MovingRectangle { - constructor(pos: VectorInteger, color: string, width: number, height: number, baseSpeed: number) { - super(pos, color, width, height, baseSpeed); - } -} - - -class Ball extends MovingRectangle { - constructor(pos: VectorInteger, color: string, size: number, baseSpeed: number) { - super(pos, color, size, size, baseSpeed); - } - bounce(collider?: Rectangle) { - /* Could be more generic, but testing only player is enough, - because in Pong collider can only be Player or Wall. */ - if (collider instanceof Player) { - this._bouncePlayer(collider); - } - else { - this._bounceWall(); - } - } - moveAndBounce(colliderArr: Rectangle[]) { - let oldPos = Object.assign({}, this.pos); - this.move(); - let i = colliderArr.findIndex(this.collision, this); - if (i != -1) - { - this.bounce(colliderArr[i]); - this.move(); - } - this.clear(oldPos); - this.update(); - } - private _bounceWall() { // Should be enough for Wall - ball.dir.y = ball.dir.y * -1; - } - private _bouncePlayer(collider: Player) { // WIP - // Bounce for Player need to be more complexe than this - this.speed += this.baseSpeed/20; - ball.dir.x = ball.dir.x * -1; - } -} - -// conflict with Text -class TextElem implements Component { - pos: VectorInteger; - color: string; - size: number; - font: string; - text: string = ""; - constructor(pos: VectorInteger, color: string, size: number, font: string = "Bit5x3") { - this.pos = Object.assign({}, pos); - this.color = color; - this.size = size; - this.font = font; - } - update() { - let ctx = pong.ctx; - ctx.font = this.size + "px" + " " + this.font; - ctx.fillStyle = this.color; - ctx.fillText(this.text, this.pos.x, this.pos.y); - } - clear() { - // clear no very accurate for Text - // https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics - let ctx = pong.ctx; - let textMetric = ctx.measureText(this.text); - // console.log("textMetric.width = "+textMetric.width); - // console.log("size = "+this.size); - // console.log("x = "+this.pos.x); - // console.log("y = "+this.pos.y); - ctx.clearRect(this.pos.x - 1, this.pos.y-this.size + 1, textMetric.width, this.size); - // +1 and -1 because float imprecision (and Math.floor() with VectorInteger dont work for the moment) - // (or maybe its textMetric imprecision ?) - } -} - -class TextNumericValue extends TextElem { - private _value: number = 0; - constructor(pos: VectorInteger, color: string, size: number, font?: string) { - super(pos, color, size, font); - } - get value() { - return this._value; - } - set value(v: number) { - this._value = v; - this.text = v.toString(); - } -} - - -class Line extends Rectangle { - gapeCount: number = 0; - segmentCount: number; - segmentWidth: number; - segmentHeight: number; - constructor(pos: VectorInteger, color: string, width: number, height: number, gapeCount?: number) { - super(pos, color, width, height); - if (gapeCount) - this.gapeCount = gapeCount; - this.segmentCount = this.gapeCount * 2 + 1; - - this.segmentWidth = this.width; - this.segmentHeight = this.height / this.segmentCount; - - // for Horizontal Line - // this.segmentWidth = this.width / this.segmentCount; - // this.segmentHeight = this.height; - } - update() { - let ctx = pong.ctx; - ctx.fillStyle = this.color; - let pos: VectorInteger = new VectorInteger; - let i = 0; - while (i < this.segmentCount) - { - // for Horizontal Line - // pos.y = this.pos.y; - // pos.x = this.pos.x + this.segmentWidth * i; - pos.x = this.pos.x; - pos.y = this.pos.y + this.segmentHeight * i; - ctx.fillRect(pos.x, pos.y, this.segmentWidth, this.segmentHeight); - i += 2; - } - } -} diff --git a/src/server/server.ts b/src/server/server.ts new file mode 100644 index 00000000..6a8523fd --- /dev/null +++ b/src/server/server.ts @@ -0,0 +1,40 @@ +// @ts-check + +// var http = require("http"); +// var url = require("url"); +// var fs = require("fs"); +// var path = require("path"); +import http from "http"; +import url from "url"; +import fs from "fs"; +import path from "path"; + + +const hostname = "localhost"; +const port = 8080; +const root = "/mnt/c/Users/Lucky/Desktop/code/ft_transcendence/www/"; + +const server = http.createServer((req, res) => { + // var q = new URL(req.url, `http://${req.getHeaders().host}`) + // @ts-ignore + var q = url.parse(req.url, true); + var filename = root + q.pathname; + fs.readFile(filename, (err, data) => { + if (err) { + res.writeHead(404, {"Content-Type": "text/html"}); + return res.end("404 Not Found"); + } + if (path.extname(filename) === ".html") { + res.writeHead(200, {"Content-Type": "text/html"}); + } + if (path.extname(filename) === ".js") { + res.writeHead(200, {"Content-Type": "application/javascript"}); + } + res.write(data); + return res.end(); + }); +}); + +server.listen(port, hostname, () => { + console.log(`Server running at http://${hostname}:${port}/`); +}); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index fddada1e..338cf3cc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,9 @@ { - "include": ["./src"], + "include": ["src"], +// "exclude": ["node_modules"], "compilerOptions": { - "outDir": "./build", + // "outDir": "./build", + // "types": ["node"], /* Specify type package names to be included without being referenced in a source file. */ /* Visit https://aka.ms/tsconfig to read more about this file */ /* Projects */ @@ -27,14 +29,14 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ + // "module": "commonjs", /* Specify what module code is generated. */ + "module": "ES6", /* Specify what module code is generated. */ // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ // "resolveJsonModule": true, /* Enable importing .json files. */ diff --git a/src/Bit5x3.woff b/www/Bit5x3.woff similarity index 100% rename from src/Bit5x3.woff rename to www/Bit5x3.woff diff --git a/src/Bit5x3.woff2 b/www/Bit5x3.woff2 similarity index 100% rename from src/Bit5x3.woff2 rename to www/Bit5x3.woff2 From d7aa2b633b7919e39d0f6f31f4e0d32c20752045 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Wed, 26 Oct 2022 22:21:55 +0200 Subject: [PATCH 13/48] local pong done, start multiplayer implementation --- make.sh | 9 +- src/client/class/GameArea.ts | 36 +++ src/client/{class.ts => class/Rectangle.ts} | 119 +--------- src/client/class/Text.ts | 53 +++++ src/client/class/Vector.ts | 45 ++++ src/client/class/interface.ts | 18 ++ src/client/draw.ts | 40 ++++ src/client/gameLoop.ts | 60 +++++ src/client/handleInput.ts | 46 ++++ src/client/pong.html | 8 +- src/client/pong.ts | 232 +++----------------- src/client/utils.ts | 6 + src/server/server.ts | 1 - www/favicon.ico | Bin 0 -> 15406 bytes 14 files changed, 350 insertions(+), 323 deletions(-) create mode 100644 src/client/class/GameArea.ts rename src/client/{class.ts => class/Rectangle.ts} (61%) create mode 100644 src/client/class/Text.ts create mode 100644 src/client/class/Vector.ts create mode 100644 src/client/class/interface.ts create mode 100644 src/client/draw.ts create mode 100644 src/client/gameLoop.ts create mode 100644 src/client/handleInput.ts create mode 100644 src/client/utils.ts create mode 100644 www/favicon.ico diff --git a/make.sh b/make.sh index f4ad7416..5a4999f6 100644 --- a/make.sh +++ b/make.sh @@ -1,4 +1,11 @@ #!/bin/bash npx tsc + mkdir -p www -cp ./src/client/*.js ./src/client/*.html ./www/ \ No newline at end of file +cp ./src/client/*.html ./www/ + +mkdir -p www/js +cp ./src/client/*.js ./www/js/ + +mkdir -p www/js/class +cp ./src/client/class/*.js ./www/js/class/ diff --git a/src/client/class/GameArea.ts b/src/client/class/GameArea.ts new file mode 100644 index 00000000..fc775c58 --- /dev/null +++ b/src/client/class/GameArea.ts @@ -0,0 +1,36 @@ + +class GameArea { + keys: string[]; + interval: number = 0; + canvas: HTMLCanvasElement; + ctx: CanvasRenderingContext2D; + constructor() { + this.keys = []; + this.canvas = document.createElement("canvas"); + this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; + /* ratio 5/3 (1.66) */ + const ratio = 1.66666; + this.canvas.width = 1500; + this.canvas.height = this.canvas.width / ratio; + let container = document.getElementById("canvas-container"); + if (container) + container.insertBefore(this.canvas, container.childNodes[0]); + } + addKey(key: string) { + key = key.toLowerCase(); + var i = this.keys.indexOf(key); + if (i == -1) + this.keys.push(key); + } + deleteKey(key: string) { + key = key.toLowerCase(); + var i = this.keys.indexOf(key); + if (i != -1) + this.keys.splice(i, 1); + } + clear() { + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } +} + +export {GameArea} diff --git a/src/client/class.ts b/src/client/class/Rectangle.ts similarity index 61% rename from src/client/class.ts rename to src/client/class/Rectangle.ts index 929f293c..743eedca 100644 --- a/src/client/class.ts +++ b/src/client/class/Rectangle.ts @@ -1,60 +1,6 @@ -// type Vector = { -// x: number; -// y: number; -// } - -class Vector { - x: number; - y: number; - constructor(x: number = 0, y: number = 0) { - this.x = x; - this.y = y; - } - assign(x: number, y: number) { - this.x = x; - this.y = y; - } -} - -class VectorInteger extends Vector { - // PLACEHOLDER - // VectorInteger with set/get dont work (No draw on the screen). Why ? -} - -/* -class VectorInteger { - // private _x: number = 0; - // private _y: number = 0; - // constructor(x: number = 0, y: number = 0) { - // this._x = x; - // this._y = y; - // } - // get x(): number { - // return this._x; - // } - // set x(v: number) { - // // this._x = Math.floor(v); - // this._x = v; - // } - // get y(): number { - // return this._y; - // } - // set y(v: number) { - // // this._y = Math.floor(v); - // this._y = v; - // } -} -*/ - -interface Component { - pos: VectorInteger; - color: string; - ctx: CanvasRenderingContext2D; // TODO: reference in place of global 'pong.ctx' call - update(): void; - clear(): void; -} - +import {Vector, VectorInteger} from "./Vector.js"; +import {Component, Moving} from "./interface.js"; class Rectangle implements Component { ctx: CanvasRenderingContext2D; @@ -99,14 +45,6 @@ class Rectangle implements Component { } } - -interface Moving { - dir: Vector; - speed: number; - move(): void; -} - - class MovingRectangle extends Rectangle implements Moving { dir: Vector = new Vector(0,0); speed: number; @@ -136,14 +74,12 @@ class MovingRectangle extends Rectangle implements Moving { } } - class Player extends MovingRectangle { constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number, baseSpeed: number) { super(ctx, pos, color, width, height, baseSpeed); } } - class Ball extends MovingRectangle { constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, baseSpeed: number) { super(ctx, pos, color, size, size, baseSpeed); @@ -180,55 +116,6 @@ class Ball extends MovingRectangle { } } -// conflict with Text -class TextElem implements Component { - ctx: CanvasRenderingContext2D; - pos: VectorInteger; - color: string; - size: number; - font: string; - text: string = ""; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, font: string = "Bit5x3") { - this.ctx = ctx; - this.pos = Object.assign({}, pos); - this.color = color; - this.size = size; - this.font = font; - } - update() { - this.ctx.font = this.size + "px" + " " + this.font; - this.ctx.fillStyle = this.color; - this.ctx.fillText(this.text, this.pos.x, this.pos.y); - } - clear() { - // clear no very accurate for Text - // https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics - let textMetric = this.ctx.measureText(this.text); - // console.log("textMetric.width = "+textMetric.width); - // console.log("size = "+this.size); - // console.log("x = "+this.pos.x); - // console.log("y = "+this.pos.y); - this.ctx.clearRect(this.pos.x - 1, this.pos.y-this.size + 1, textMetric.width, this.size); - // +1 and -1 because float imprecision (and Math.floor() with VectorInteger dont work for the moment) - // (or maybe its textMetric imprecision ?) - } -} - -class TextNumericValue extends TextElem { - private _value: number = 0; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, font?: string) { - super(ctx, pos, color, size, font); - } - get value() { - return this._value; - } - set value(v: number) { - this._value = v; - this.text = v.toString(); - } -} - - class Line extends Rectangle { gapeCount: number = 0; segmentCount: number; @@ -264,4 +151,4 @@ class Line extends Rectangle { } } -export {Vector, VectorInteger, Rectangle, MovingRectangle, Player, Ball, TextElem, TextNumericValue, Line} +export {Rectangle, MovingRectangle, Player, Ball, Line} diff --git a/src/client/class/Text.ts b/src/client/class/Text.ts new file mode 100644 index 00000000..4c7e675a --- /dev/null +++ b/src/client/class/Text.ts @@ -0,0 +1,53 @@ + +import {Vector, VectorInteger} from "./Vector.js"; +import {Component, Moving} from "./interface.js"; + +// conflict with Text +class TextElem implements Component { + ctx: CanvasRenderingContext2D; + pos: VectorInteger; + color: string; + size: number; + font: string; + text: string = ""; + constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, font: string = "Bit5x3") { + this.ctx = ctx; + this.pos = Object.assign({}, pos); + this.color = color; + this.size = size; + this.font = font; + } + update() { + this.ctx.font = this.size + "px" + " " + this.font; + this.ctx.fillStyle = this.color; + this.ctx.fillText(this.text, this.pos.x, this.pos.y); + } + clear() { + // clear no very accurate for Text + // https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics + let textMetric = this.ctx.measureText(this.text); + // console.log("textMetric.width = "+textMetric.width); + // console.log("size = "+this.size); + // console.log("x = "+this.pos.x); + // console.log("y = "+this.pos.y); + this.ctx.clearRect(this.pos.x - 1, this.pos.y-this.size + 1, textMetric.width, this.size); + // +1 and -1 because float imprecision (and Math.floor() with VectorInteger dont work for the moment) + // (or maybe its textMetric imprecision ?) + } +} + +class TextNumericValue extends TextElem { + private _value: number = 0; + constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, font?: string) { + super(ctx, pos, color, size, font); + } + get value() { + return this._value; + } + set value(v: number) { + this._value = v; + this.text = v.toString(); + } +} + +export {TextElem, TextNumericValue} diff --git a/src/client/class/Vector.ts b/src/client/class/Vector.ts new file mode 100644 index 00000000..278394a1 --- /dev/null +++ b/src/client/class/Vector.ts @@ -0,0 +1,45 @@ + +class Vector { + x: number; + y: number; + constructor(x: number = 0, y: number = 0) { + this.x = x; + this.y = y; + } + assign(x: number, y: number) { + this.x = x; + this.y = y; + } +} + +class VectorInteger extends Vector { + // PLACEHOLDER + // VectorInteger with set/get dont work (No draw on the screen). Why ? +} + +/* +class VectorInteger { + // private _x: number = 0; + // private _y: number = 0; + // constructor(x: number = 0, y: number = 0) { + // this._x = x; + // this._y = y; + // } + // get x(): number { + // return this._x; + // } + // set x(v: number) { + // // this._x = Math.floor(v); + // this._x = v; + // } + // get y(): number { + // return this._y; + // } + // set y(v: number) { + // // this._y = Math.floor(v); + // this._y = v; + // } +} +*/ + +export {Vector, VectorInteger} diff --git a/src/client/class/interface.ts b/src/client/class/interface.ts new file mode 100644 index 00000000..a06ef28e --- /dev/null +++ b/src/client/class/interface.ts @@ -0,0 +1,18 @@ + +import {Vector, VectorInteger} from "./Vector.js"; + +interface Component { + pos: VectorInteger; + color: string; + ctx: CanvasRenderingContext2D; + update(): void; + clear(): void; +} + +interface Moving { + dir: Vector; + speed: number; + move(): void; +} + +export {Component, Moving} diff --git a/src/client/draw.ts b/src/client/draw.ts new file mode 100644 index 00000000..5cacdfa5 --- /dev/null +++ b/src/client/draw.ts @@ -0,0 +1,40 @@ +import * as g from "./pong.js" +import {gridDisplay} from "./handleInput.js"; + +function draw() +{ + if (gridDisplay) { + drawGrid(); + } + g.midLine.update(); + g.score1.update(); + g.score2.update(); +} + +function drawStatic() +{ + g.wall_top.update(); + g.wall_bottom.update(); + g.midLine.update(); +} + +function drawInit() +{ + g.pong.clear(); + drawStatic(); + g.player1.update(); + g.player2.update(); +} + +function drawGrid() +{ + g.w_grid_mid.update(); + g.w_grid_u1.update(); + g.w_grid_d1.update(); + + g.h_grid_mid.update(); + g.h_grid_u1.update(); + g.h_grid_d1.update(); +} + +export {draw, drawStatic, drawInit, drawGrid} diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts new file mode 100644 index 00000000..fdecf9ab --- /dev/null +++ b/src/client/gameLoop.ts @@ -0,0 +1,60 @@ +import * as g from "./pong.js" +import * as d from "./draw.js"; +import {random} from "./utils.js"; +import {handleInput} from "./handleInput.js"; + +let ballInPlay = true; + +function gameLoop() +{ + /* + // I try to clear only what need to be update. + // Will revert to clear() all if not satisfactory. + pong.clear(); + */ + handleInput(); + + if (ballInPlay) + { + g.ball.moveAndBounce([g.wall_top, g.wall_bottom, g.player1, g.player2]); + if (g.ball.pos.x > g.pong.canvas.width) { + ballInPlay = false; + g.score1.clear(); + ++g.score1.value; + setTimeout(newRound, 1500); + } + else if (g.ball.pos.x < 0 - g.ball.width) { + ballInPlay = false; + g.score2.clear(); + ++g.score2.value; + setTimeout(newRound, 1500); + } + } + + d.draw(); +} + +function newRound() +{ + // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches + if (g.score1.value >= 11 + || g.score2.value >= 11) + { + if (Math.abs(g.score1.value - g.score2.value) >= 2) + { + if (g.score1.value > g.score2.value) { + alert("Player 1 WIN"); + } + else { + alert("Player 2 WIN"); + } + return; + } + } + g.ball.pos.x = g.pong.canvas.width/2; + g.ball.pos.y = (g.pong.canvas.height * 0.1) + Math.floor(random() * (g.pong.canvas.height * 0.8)); + g.ball.speed = g.ball.baseSpeed; + ballInPlay = true; +} + +export {gameLoop} diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts new file mode 100644 index 00000000..c8beda70 --- /dev/null +++ b/src/client/handleInput.ts @@ -0,0 +1,46 @@ +import * as g from "./pong.js" +import * as d from "./draw.js"; + +let gridDisplay = false; + +function handleInput() +{ + var keys = g.pong.keys; + if (keys.length == 0) + return; + + if (keys.indexOf("g") != -1) + { + if (gridDisplay) + { + g.pong.clear(); + d.drawStatic(); + } + gridDisplay = !gridDisplay; + g.pong.deleteKey("g"); + } + playerMove(keys); +} + +function playerMove(keys: string[]) +{ + g.player1.dir.y = 0; + if (keys.indexOf("w") != -1) { + g.player1.dir.y += -1; + } + if (keys.indexOf("s") != -1) { + g.player1.dir.y += 1; + } + g.player1.moveAndCollide([g.wall_top, g.wall_bottom]); + + g.player2.dir.y = 0; + if (keys.indexOf("ArrowUp".toLowerCase()) != -1) { + g.player2.dir.y += -1; + } + if (keys.indexOf("ArrowDown".toLowerCase()) != -1) { + g.player2.dir.y += 1; + } + g.player2.moveAndCollide([g.wall_top, g.wall_bottom]); +} + +export {handleInput, gridDisplay} diff --git a/src/client/pong.html b/src/client/pong.html index 22e61091..976f2aa4 100644 --- a/src/client/pong.html +++ b/src/client/pong.html @@ -4,9 +4,9 @@ diff --git a/src/client/pong.ts b/src/client/pong.ts index 71da8e91..4bbb2e7d 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -6,6 +6,8 @@ import {TextElem, TextNumericValue} from "./class/Text.js"; import * as d from "./draw.js"; import {gameLoop, newRound} from "./gameLoop.js" import {random} from "./utils.js"; +import {socket} from "./ws.js"; + /* Keys Player 1: W/S @@ -31,10 +33,56 @@ export let h_grid_mid: Rectangle; export let h_grid_u1: Rectangle; export let h_grid_d1: Rectangle; +function init() +{ + initGame(); + initGameClientOnly(); + console.log("socket state %i", socket.readyState); +} + function startGame() { - pong = new GameArea(); + // Start + d.drawInit(); + window.addEventListener('keydown', function (e) { + pong.addKey(e.key); + }); + window.addEventListener('keyup', function (e) { + pong.deleteKey(e.key); + }); + pong.interval = window.setInterval(gameLoop, 15); // min interval on Firefox seems to be 15. Chrome can go lower. + setTimeout(newRound, 1000); +} +function initGameClientOnly() +{ + let pos = new VectorInteger; + + // Const + const w = pong.canvas.width; + const h = pong.canvas.height; + const w_mid = Math.floor(w/2); + const h_mid = Math.floor(h/2); + const gridSize = Math.floor(w/500); + + // Grid + pos.assign(0, h_mid); + w_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); + pos.assign(0, h/4); + w_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); + pos.assign(0, h-h/4); + w_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); + pos.assign(w_mid, 0); + h_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); + pos.assign(w/4, 0); + h_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); + pos.assign(w-w/4, 0); + h_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); +} + +function initGame() +{ + pong = new GameArea(); // Const const w = pong.canvas.width; const h = pong.canvas.height; @@ -46,7 +94,6 @@ function startGame() const scoreSize = Math.floor(w/16); const midLineSize = Math.floor(w/150); const wallSize = Math.floor(w/100); - const gridSize = Math.floor(w/500); const playerSpeed = Math.floor(w/1.5); // pixel per second const ballSpeed = Math.floor(w/1.5); // pixel per second @@ -75,34 +122,11 @@ function startGame() pos.assign(w_mid-midLineSize/2, 0+wallSize); midLine = new Line(pong.ctx, pos, "white", midLineSize, h-wallSize*2, 15); - - // Grid - pos.assign(0, h_mid); - w_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); - pos.assign(0, h/4); - w_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); - pos.assign(0, h-h/4); - w_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); - pos.assign(w_mid, 0); - h_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); - pos.assign(w/4, 0); - h_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); - pos.assign(w-w/4, 0); - h_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); - - // Start - d.drawInit(); - window.addEventListener('keydown', function (e) { - pong.addKey(e.key); - }); - window.addEventListener('keyup', function (e) { - pong.deleteKey(e.key); - }); - pong.interval = window.setInterval(gameLoop, 15); // min interval on Firefox seems to be 15. Chrome can go lower. - setTimeout(newRound, 1000); } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -startGame(); +init(); + +export {startGame} diff --git a/src/client/utils.ts b/src/client/utils.ts index da00fd74..b1746e9e 100644 --- a/src/client/utils.ts +++ b/src/client/utils.ts @@ -3,4 +3,8 @@ function random(min: number = 0, max: number = 1) { return Math.random() * (max - min) + min; } -export {random} +function sleep (ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +export {random, sleep} diff --git a/src/client/ws.ts b/src/client/ws.ts new file mode 100644 index 00000000..71f53ef4 --- /dev/null +++ b/src/client/ws.ts @@ -0,0 +1,81 @@ + +import * as g from "./pong.js" +import {startGame} from "./pong.js"; + +const wsPort = 8042; +const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; +const socket = new WebSocket(wsUrl, "json"); + +enum EventTypes { + gameUpdate = 1, + start, + pause, + resume +} + +interface EventData { + type: EventTypes; +} + +class EventGameUpdate implements EventData { + type: EventTypes = EventTypes.gameUpdate; + player1 = {y: 0}; + player2 = {y: 0}; + ball = {x: 0, y: 0, speed: 0}; +} + +socket.addEventListener("message", logListener); +socket.addEventListener("message", matchmakingListener); + + +function logListener(event: MessageEvent) { + console.log("data: " + event.data + " | [" + Date.now() + "]"); +} + +function matchmakingListener(event: MessageEvent) +{ + console.log("matchmakingListener"); + const data: EventData = JSON.parse(event.data); + if (data.type == EventTypes.start) + { + console.log("Event type = start"); + socket.removeEventListener("message", matchmakingListener); + socket.addEventListener("message", inGameListener); + startGame(); + } +} + +function inGameListener(event: MessageEvent) +{ + console.log("inGameListener"); + const data: EventData = JSON.parse(event.data); + switch (data.type) { + case EventTypes.gameUpdate: + console.log("Event type = gameUpdate"); + serverGameUpdate(data as EventGameUpdate); + break; + case EventTypes.pause: + console.log("Event type = pause"); + break; + case EventTypes.resume: + console.log("Event type = resume"); + break; + } +} + +function serverGameUpdate(data: EventGameUpdate) +{ + g.player1.clear(); + g.player1.pos.y = Math.floor(data.player1.y); + g.player1.update(); + + g.player2.clear(); + g.player2.pos.y = Math.floor(data.player2.y); + g.player2.update(); +} + +// socket.addEventListener("open", (event) => { +// console.log("socket state %i", socket.readyState); +// }); + +export {socket} diff --git a/src/server/server.ts b/src/server/server.ts index e73c5486..bb8585e5 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1,17 +1,16 @@ -// var http = require("http"); -// var url = require("url"); -// var fs = require("fs"); -// var path = require("path"); import http from "http"; import url from "url"; import fs from "fs"; import path from "path"; - +import { WebSocketServer, WebSocket } from "ws"; +import { v4 as uuidv4 } from 'uuid'; +import { random } from "../client/utils.js"; const hostname = "localhost"; const port = 8080; -const root = "/mnt/c/Users/Lucky/Desktop/code/ft_transcendence/www/"; +const wsPort = 8042; // pas indispensable d'avoir un autre port si le WebSocket est limité à certaines routes +const root = "../../www/"; const server = http.createServer((req, res) => { // var q = new URL(req.url, `http://${req.getHeaders().host}`) @@ -36,4 +35,79 @@ const server = http.createServer((req, res) => { server.listen(port, hostname, () => { console.log(`Pong running at http://${hostname}:${port}/pong.html`); -}); \ No newline at end of file +}); + + +const wsServer = new WebSocketServer({port: wsPort, path: "/pong"}); + +class Client { + socket: WebSocket; + id: string; + isAlive: boolean = true; + constructor(socket: WebSocket, id: string) { + this.socket = socket; + this.id = id; + } +} + +const clientsArr: Client[] = []; + + +wsServer.on("connection", (socket, request) => { + + const id = uuidv4(); + const client = new Client(socket, id); + clientsArr.push(client); + socket.on("pong", function heartbeat() { + client.isAlive = true; + console.log("client %s alive at %i", client.id, Date.now()); + }); + + socket.on("message", function message(data) { + console.log("received: %s", data); + }); + + socket.send(JSON.stringify({type: 2})); // start + // socket.send("connection success, bravo client " + id); + // socket.send("start"); + // socket.send("json/20"); +}); + +function deleteClient(client: Client) +{ + var i = clientsArr.indexOf(client); + if (i != -1) { + clientsArr.splice(i, 1); + } +} + +const pingInterval = setInterval( () => { + clientsArr.forEach( (client) => { + if (client.isAlive === false) { + client.socket.terminate(); + console.log("client %s is no more at %i :'(", client.id, Date.now()); + deleteClient(client); + return; + } + client.isAlive = false; + client.socket.ping(); + }); +}, 5000); + +const gameUpdateInterval = setInterval( () => { + clientsArr.forEach( (client) => { + const update = { + type: 1, + player1: {y: random(50, 650)}, + player2: {y: random(50, 650)}, + ball: {x: 0, y: 0, speed: 0} + }; + client.socket.send(JSON.stringify(update)); + }); +}, 500); + + +wsServer.on('close', () => { + clearInterval(pingInterval); + clearInterval(gameUpdateInterval); +}); From 6fb1470dbb5e1a3e6e37f46313c300cf2c3b3f8a Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 17 Nov 2022 11:12:32 +0100 Subject: [PATCH 17/48] refactoring + wip input to server --- make.sh | 6 ++ src/client/class/GameArea.ts | 8 +- src/client/class/Text.ts | 4 +- src/client/constants.ts | 1 + src/client/draw.ts | 2 +- src/client/gameLoop.ts | 4 +- src/client/global.ts | 3 + src/client/handleInput.ts | 8 +- src/client/initGameClientOnly.ts | 59 +++++++++++ src/client/pong.ts | 104 ++----------------- src/client/ws.ts | 21 +--- src/server/server.ts | 24 ++++- src/shared_js/class/Event.ts | 37 +++++++ src/{client => shared_js}/class/Rectangle.ts | 0 src/{client => shared_js}/class/Vector.ts | 0 src/{client => shared_js}/class/interface.ts | 0 src/shared_js/constants.ts | 4 + src/shared_js/initGame.ts | 43 ++++++++ src/{client => shared_js}/utils.ts | 0 19 files changed, 197 insertions(+), 131 deletions(-) create mode 100644 src/client/constants.ts create mode 100644 src/client/global.ts create mode 100644 src/client/initGameClientOnly.ts create mode 100644 src/shared_js/class/Event.ts rename src/{client => shared_js}/class/Rectangle.ts (100%) rename src/{client => shared_js}/class/Vector.ts (100%) rename src/{client => shared_js}/class/interface.ts (100%) create mode 100644 src/shared_js/constants.ts create mode 100644 src/shared_js/initGame.ts rename src/{client => shared_js}/utils.ts (100%) diff --git a/make.sh b/make.sh index 5a4999f6..71ec2fb2 100644 --- a/make.sh +++ b/make.sh @@ -9,3 +9,9 @@ cp ./src/client/*.js ./www/js/ mkdir -p www/js/class cp ./src/client/class/*.js ./www/js/class/ + +mkdir -p www/shared_js/ +cp ./src/shared_js/*.js ./www/shared_js/ + +mkdir -p www/shared_js/class +cp ./src/shared_js/class/*.js ./www/shared_js/class/ diff --git a/src/client/class/GameArea.ts b/src/client/class/GameArea.ts index 8a1e6ce4..6831e8d6 100644 --- a/src/client/class/GameArea.ts +++ b/src/client/class/GameArea.ts @@ -1,4 +1,6 @@ +import * as c from ".././constants.js" + class GameArea { keys: string[]; interval: number = 0; @@ -8,10 +10,8 @@ class GameArea { this.keys = []; this.canvas = document.createElement("canvas"); this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; - /* ratio 5/3 (1.66) */ - const ratio = 1.66666; - this.canvas.width = 1500; - this.canvas.height = this.canvas.width / ratio; + this.canvas.width = c.CanvasWidth; + this.canvas.height = c.CanvasWidth / c.CanvasRatio; let container = document.getElementById("canvas-container"); if (container) container.insertBefore(this.canvas, container.childNodes[0]); diff --git a/src/client/class/Text.ts b/src/client/class/Text.ts index 4c7e675a..a3588ac3 100644 --- a/src/client/class/Text.ts +++ b/src/client/class/Text.ts @@ -1,6 +1,6 @@ -import {Vector, VectorInteger} from "./Vector.js"; -import {Component, Moving} from "./interface.js"; +import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; +import {Component, Moving} from "../../shared_js/class/interface.js"; // conflict with Text class TextElem implements Component { diff --git a/src/client/constants.ts b/src/client/constants.ts new file mode 100644 index 00000000..914fa4c9 --- /dev/null +++ b/src/client/constants.ts @@ -0,0 +1 @@ +export * from "../shared_js/constants.js" diff --git a/src/client/draw.ts b/src/client/draw.ts index 5cacdfa5..65f2447d 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -1,4 +1,4 @@ -import * as g from "./pong.js" +import * as g from "./global.js" import {gridDisplay} from "./handleInput.js"; function draw() diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index e61c65dd..ae008272 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,6 +1,6 @@ -import * as g from "./pong.js" +import * as g from "./global.js" import * as d from "./draw.js"; -import {random} from "./utils.js"; +import {random} from "../shared_js/utils.js"; import {handleInput} from "./handleInput.js"; let ballInPlay = false; diff --git a/src/client/global.ts b/src/client/global.ts new file mode 100644 index 00000000..2141d189 --- /dev/null +++ b/src/client/global.ts @@ -0,0 +1,3 @@ +export * from "../shared_js/initGame.js" +export * from "./initGameClientOnly.js" +export {pong} from "./pong.js" diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index c6896f95..e67f0cfa 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -1,5 +1,7 @@ -import * as g from "./pong.js" +import * as g from "./global.js" import * as d from "./draw.js"; +import { socket } from "./ws.js"; +import {InputEnum, EventInput} from "../shared_js/class/Event.js" let gridDisplay = false; @@ -26,10 +28,10 @@ function playerMove(delta: number, keys: string[]) { g.player1.dir.y = 0; if (keys.indexOf("w") != -1) { - g.player1.dir.y += -1; + socket.send(JSON.stringify(new EventInput(InputEnum.up))); } if (keys.indexOf("s") != -1) { - g.player1.dir.y += 1; + socket.send(JSON.stringify(new EventInput(InputEnum.down))); } g.player1.moveAndCollide(delta, [g.wall_top, g.wall_bottom]); diff --git a/src/client/initGameClientOnly.ts b/src/client/initGameClientOnly.ts new file mode 100644 index 00000000..2751ed52 --- /dev/null +++ b/src/client/initGameClientOnly.ts @@ -0,0 +1,59 @@ + +import * as c from "./constants.js" +import {Vector, VectorInteger} from "../shared_js/class/Vector.js"; +import {Rectangle, MovingRectangle, Player, Ball, Line} from "../shared_js/class/Rectangle.js"; +import {TextElem, TextNumericValue} from "./class/Text.js"; + +export let midLine: Line; +export let score1: TextNumericValue; +export let score2: TextNumericValue; + +export let w_grid_mid: Rectangle; +export let w_grid_u1: Rectangle; +export let w_grid_d1: Rectangle; +export let h_grid_mid: Rectangle; +export let h_grid_u1: Rectangle; +export let h_grid_d1: Rectangle; + +function initGameClientOnly(ctx: CanvasRenderingContext2D) +{ + // Const (could maybe be in constants.ts ?) + const w = c.CanvasWidth; + const h = c.CanvasWidth / c.CanvasRatio; + const w_mid = Math.floor(w/2); + const h_mid = Math.floor(h/2); + const midLineSize = Math.floor(w/150); + const scoreSize = Math.floor(w/16); + const gridSize = Math.floor(w/500); + + const wallSize = Math.floor(w/100); + + let pos = new VectorInteger; + // Scores + pos.assign(w_mid-scoreSize*1.6, scoreSize*1.5); + score1 = new TextNumericValue(ctx, pos, "white", scoreSize); + pos.assign(w_mid+scoreSize*1.1, scoreSize*1.5); + score2 = new TextNumericValue(ctx, pos, "white", scoreSize); + score1.value = 0; + score2.value = 0; + + // Dotted Midline + pos.assign(w_mid-midLineSize/2, 0+wallSize); + midLine = new Line(ctx, pos, "white", midLineSize, h-wallSize*2, 15); + + // Grid + pos.assign(0, h_mid); + w_grid_mid = new Rectangle(ctx, pos, "darkgreen", w, gridSize); + pos.assign(0, h/4); + w_grid_u1 = new Rectangle(ctx, pos, "darkgreen", w, gridSize); + pos.assign(0, h-h/4); + w_grid_d1 = new Rectangle(ctx, pos, "darkgreen", w, gridSize); + pos.assign(w_mid, 0); + h_grid_mid = new Rectangle(ctx, pos, "darkgreen", gridSize, h); + pos.assign(w/4, 0); + h_grid_u1 = new Rectangle(ctx, pos, "darkgreen", gridSize, h); + pos.assign(w-w/4, 0); + h_grid_d1 = new Rectangle(ctx, pos, "darkgreen", gridSize, h); +} + +export {initGameClientOnly} diff --git a/src/client/pong.ts b/src/client/pong.ts index 4bbb2e7d..986d1522 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -1,13 +1,12 @@ import {GameArea} from "./class/GameArea.js"; -import {Vector, VectorInteger} from "./class/Vector.js"; -import {Rectangle, MovingRectangle, Player, Ball, Line} from "./class/Rectangle.js"; -import {TextElem, TextNumericValue} from "./class/Text.js"; import * as d from "./draw.js"; import {gameLoop, newRound} from "./gameLoop.js" -import {random} from "./utils.js"; -import {socket} from "./ws.js"; - +// import {random} from "../shared_js/utils.js"; +// import {socket} from "./ws.js"; +// import * as c from "./constants.js" +import {initGame} from "../shared_js/initGame.js"; +import {initGameClientOnly} from "./initGameClientOnly.js"; /* Keys Player 1: W/S @@ -15,29 +14,12 @@ import {socket} from "./ws.js"; Grid On-Off: G */ -export let pong: GameArea; - -export let wall_top: Rectangle; -export let wall_bottom: Rectangle; -export let player1: Player; -export let player2: Player; -export let ball: Ball; -export let score1: TextNumericValue; -export let score2: TextNumericValue; -export let midLine: Line; - -export let w_grid_mid: Rectangle; -export let w_grid_u1: Rectangle; -export let w_grid_d1: Rectangle; -export let h_grid_mid: Rectangle; -export let h_grid_u1: Rectangle; -export let h_grid_d1: Rectangle; +export const pong = new GameArea(); function init() { - initGame(); - initGameClientOnly(); - console.log("socket state %i", socket.readyState); + initGame(pong.ctx); + initGameClientOnly(pong.ctx); } function startGame() @@ -54,76 +36,6 @@ function startGame() setTimeout(newRound, 1000); } -function initGameClientOnly() -{ - let pos = new VectorInteger; - - // Const - const w = pong.canvas.width; - const h = pong.canvas.height; - const w_mid = Math.floor(w/2); - const h_mid = Math.floor(h/2); - const gridSize = Math.floor(w/500); - - // Grid - pos.assign(0, h_mid); - w_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); - pos.assign(0, h/4); - w_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); - pos.assign(0, h-h/4); - w_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", w, gridSize); - pos.assign(w_mid, 0); - h_grid_mid = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); - pos.assign(w/4, 0); - h_grid_u1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); - pos.assign(w-w/4, 0); - h_grid_d1 = new Rectangle(pong.ctx, pos, "darkgreen", gridSize, h); -} - -function initGame() -{ - pong = new GameArea(); - // Const - const w = pong.canvas.width; - const h = pong.canvas.height; - const w_mid = Math.floor(w/2); - const h_mid = Math.floor(h/2); - const pw = Math.floor(w/50); - const ph = pw*5; - const ballSize = pw; - const scoreSize = Math.floor(w/16); - const midLineSize = Math.floor(w/150); - const wallSize = Math.floor(w/100); - const playerSpeed = Math.floor(w/1.5); // pixel per second - const ballSpeed = Math.floor(w/1.5); // pixel per second - - let pos = new VectorInteger; - // Component - pos.assign(0, 0); - wall_top = new Rectangle(pong.ctx, pos, "grey", w, wallSize); - pos.assign(0, h-wallSize); - wall_bottom = new Rectangle(pong.ctx, pos, "grey", w, wallSize); - - pos.assign(0+pw, h_mid-ph/2); - player1 = new Player(pong.ctx, pos, "white", pw, ph, playerSpeed); - pos.assign(w-pw-pw, h_mid-ph/2); - player2 = new Player(pong.ctx, pos, "white", pw, ph, playerSpeed); - - pos.assign(w_mid-ballSize/2, h_mid-ballSize/2); - ball = new Ball(pong.ctx, pos, "white", ballSize, ballSpeed); - ball.dir.assign(-0.8, +0.2); - - pos.assign(w_mid-scoreSize*1.6, scoreSize*1.5); - score1 = new TextNumericValue(pong.ctx, pos, "white", scoreSize); - pos.assign(w_mid+scoreSize*1.1, scoreSize*1.5); - score2 = new TextNumericValue(pong.ctx, pos, "white", scoreSize); - score1.value = 0; - score2.value = 0; - - pos.assign(w_mid-midLineSize/2, 0+wallSize); - midLine = new Line(pong.ctx, pos, "white", midLineSize, h-wallSize*2, 15); -} - ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// diff --git a/src/client/ws.ts b/src/client/ws.ts index 71f53ef4..51fdb61a 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -1,29 +1,12 @@ -import * as g from "./pong.js" +import * as g from "./global.js" // temp import {startGame} from "./pong.js"; +import {EventTypes, EventData, EventGameUpdate} from "../shared_js/class/Event.js" const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; const socket = new WebSocket(wsUrl, "json"); -enum EventTypes { - gameUpdate = 1, - start, - pause, - resume -} - -interface EventData { - type: EventTypes; -} - -class EventGameUpdate implements EventData { - type: EventTypes = EventTypes.gameUpdate; - player1 = {y: 0}; - player2 = {y: 0}; - ball = {x: 0, y: 0, speed: 0}; -} - socket.addEventListener("message", logListener); socket.addEventListener("message", matchmakingListener); diff --git a/src/server/server.ts b/src/server/server.ts index bb8585e5..d3494696 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -5,13 +5,23 @@ import fs from "fs"; import path from "path"; import { WebSocketServer, WebSocket } from "ws"; import { v4 as uuidv4 } from 'uuid'; -import { random } from "../client/utils.js"; +import { random } from "../shared_js/utils.js"; + +import {EventTypes, EventData, EventGameUpdate} from "../shared_js/class/Event.js" +import {Rectangle, MovingRectangle, Player, Ball, Line} from "../shared_js/class/Rectangle.js"; +import { Vector } from "../shared_js/class/Vector.js"; + const hostname = "localhost"; const port = 8080; const wsPort = 8042; // pas indispensable d'avoir un autre port si le WebSocket est limité à certaines routes const root = "../../www/"; +class CanvasRenderingContext2D {} // Empty object replacement to the web-API (web-API useless on server-side) +const mockCtx = new CanvasRenderingContext2D; + // @ts-ignore +const player1 = new Player(mockCtx, new Vector(), "white", 1, 1, 1); + const server = http.createServer((req, res) => { // var q = new URL(req.url, `http://${req.getHeaders().host}`) // @ts-ignore @@ -63,16 +73,22 @@ wsServer.on("connection", (socket, request) => { console.log("client %s alive at %i", client.id, Date.now()); }); - socket.on("message", function message(data) { + socket.on("message", function log(data) { console.log("received: %s", data); }); - socket.send(JSON.stringify({type: 2})); // start + socket.on("message", clientInputListener); + socket.send(JSON.stringify({type: EventTypes.start})); // socket.send("connection success, bravo client " + id); // socket.send("start"); // socket.send("json/20"); }); +function clientInputListener(data: string) +{ + return; +} + function deleteClient(client: Client) { var i = clientsArr.indexOf(client); @@ -97,7 +113,7 @@ const pingInterval = setInterval( () => { const gameUpdateInterval = setInterval( () => { clientsArr.forEach( (client) => { const update = { - type: 1, + type: EventTypes.gameUpdate, player1: {y: random(50, 650)}, player2: {y: random(50, 650)}, ball: {x: 0, y: 0, speed: 0} diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts new file mode 100644 index 00000000..2096ae7a --- /dev/null +++ b/src/shared_js/class/Event.ts @@ -0,0 +1,37 @@ + +/* Server */ +enum EventTypes { + gameUpdate = 1, + start, + pause, + resume +} + +interface EventData { + type: EventTypes; +} + +class EventGameUpdate implements EventData { + type: EventTypes = EventTypes.gameUpdate; + player1 = {y: 0}; + player2 = {y: 0}; + ball = {x: 0, y: 0, speed: 0}; +} + +/* Client */ +enum InputEnum { + up = 1, + down +} + +class EventInput { + input: InputEnum; + constructor(input: InputEnum = 0) { + this.input = input; + } +} + +export { + EventTypes, EventData, EventGameUpdate, + InputEnum, EventInput +} diff --git a/src/client/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts similarity index 100% rename from src/client/class/Rectangle.ts rename to src/shared_js/class/Rectangle.ts diff --git a/src/client/class/Vector.ts b/src/shared_js/class/Vector.ts similarity index 100% rename from src/client/class/Vector.ts rename to src/shared_js/class/Vector.ts diff --git a/src/client/class/interface.ts b/src/shared_js/class/interface.ts similarity index 100% rename from src/client/class/interface.ts rename to src/shared_js/class/interface.ts diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts new file mode 100644 index 00000000..a62a3b02 --- /dev/null +++ b/src/shared_js/constants.ts @@ -0,0 +1,4 @@ + +export const CanvasWidth = 1500; +/* ratio 5/3 (1.66) */ +export const CanvasRatio = 1.66666; diff --git a/src/shared_js/initGame.ts b/src/shared_js/initGame.ts new file mode 100644 index 00000000..c2158c74 --- /dev/null +++ b/src/shared_js/initGame.ts @@ -0,0 +1,43 @@ + +import * as c from "./constants.js" +import {Vector, VectorInteger} from "./class/Vector.js"; +import {Rectangle, MovingRectangle, Player, Ball, Line} from "./class/Rectangle.js"; + +export let wall_top: Rectangle; +export let wall_bottom: Rectangle; +export let player1: Player; +export let player2: Player; +export let ball: Ball; + +function initGame(ctx: CanvasRenderingContext2D) +{ + // Const (could maybe be in constants.ts ?) + const w = c.CanvasWidth; + const h = c.CanvasWidth / c.CanvasRatio; + const w_mid = Math.floor(w/2); + const h_mid = Math.floor(h/2); + const pw = Math.floor(w/50); + const ph = pw*5; + const ballSize = pw; + const wallSize = Math.floor(w/100); + const playerSpeed = Math.floor(w/1.5); // pixel per second + const ballSpeed = Math.floor(w/1.5); // pixel per second + + let pos = new VectorInteger; + // Component + pos.assign(0, 0); + wall_top = new Rectangle(ctx, pos, "grey", w, wallSize); + pos.assign(0, h-wallSize); + wall_bottom = new Rectangle(ctx, pos, "grey", w, wallSize); + + pos.assign(0+pw, h_mid-ph/2); + player1 = new Player(ctx, pos, "white", pw, ph, playerSpeed); + pos.assign(w-pw-pw, h_mid-ph/2); + player2 = new Player(ctx, pos, "white", pw, ph, playerSpeed); + + pos.assign(w_mid-ballSize/2, h_mid-ballSize/2); + ball = new Ball(ctx, pos, "white", ballSize, ballSpeed); + ball.dir.assign(-0.8, +0.2); +} + +export {initGame} diff --git a/src/client/utils.ts b/src/shared_js/utils.ts similarity index 100% rename from src/client/utils.ts rename to src/shared_js/utils.ts From 023b5ed485a07636cfb1f243ba3dd65639c69325 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 17 Nov 2022 12:22:57 +0100 Subject: [PATCH 18/48] reafactoring --- src/client/constants.ts | 6 ++++ src/client/initGameClientOnly.ts | 47 ++++++++++++-------------------- src/shared_js/class/Rectangle.ts | 15 ++++++++++ src/shared_js/constants.ts | 15 ++++++++-- src/shared_js/initGame.ts | 30 ++++++-------------- 5 files changed, 61 insertions(+), 52 deletions(-) diff --git a/src/client/constants.ts b/src/client/constants.ts index 914fa4c9..b4aae131 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -1 +1,7 @@ + +import {w} from "../shared_js/constants.js" export * from "../shared_js/constants.js" + +export const midLineSize = Math.floor(w/150); +export const scoreSize = Math.floor(w/16); +export const gridSize = Math.floor(w/500); diff --git a/src/client/initGameClientOnly.ts b/src/client/initGameClientOnly.ts index 2751ed52..160210bd 100644 --- a/src/client/initGameClientOnly.ts +++ b/src/client/initGameClientOnly.ts @@ -17,43 +17,32 @@ export let h_grid_d1: Rectangle; function initGameClientOnly(ctx: CanvasRenderingContext2D) { - // Const (could maybe be in constants.ts ?) - const w = c.CanvasWidth; - const h = c.CanvasWidth / c.CanvasRatio; - const w_mid = Math.floor(w/2); - const h_mid = Math.floor(h/2); - const midLineSize = Math.floor(w/150); - const scoreSize = Math.floor(w/16); - const gridSize = Math.floor(w/500); - - const wallSize = Math.floor(w/100); - let pos = new VectorInteger; // Scores - pos.assign(w_mid-scoreSize*1.6, scoreSize*1.5); - score1 = new TextNumericValue(ctx, pos, "white", scoreSize); - pos.assign(w_mid+scoreSize*1.1, scoreSize*1.5); - score2 = new TextNumericValue(ctx, pos, "white", scoreSize); + pos.assign(c.w_mid-c.scoreSize*1.6, c.scoreSize*1.5); + score1 = new TextNumericValue(ctx, pos, "white", c.scoreSize); + pos.assign(c.w_mid+c.scoreSize*1.1, c.scoreSize*1.5); + score2 = new TextNumericValue(ctx, pos, "white", c.scoreSize); score1.value = 0; score2.value = 0; // Dotted Midline - pos.assign(w_mid-midLineSize/2, 0+wallSize); - midLine = new Line(ctx, pos, "white", midLineSize, h-wallSize*2, 15); + pos.assign(c.w_mid-c.midLineSize/2, 0+c.wallSize); + midLine = new Line(ctx, pos, "white", c.midLineSize, c.h-c.wallSize*2, 15); // Grid - pos.assign(0, h_mid); - w_grid_mid = new Rectangle(ctx, pos, "darkgreen", w, gridSize); - pos.assign(0, h/4); - w_grid_u1 = new Rectangle(ctx, pos, "darkgreen", w, gridSize); - pos.assign(0, h-h/4); - w_grid_d1 = new Rectangle(ctx, pos, "darkgreen", w, gridSize); - pos.assign(w_mid, 0); - h_grid_mid = new Rectangle(ctx, pos, "darkgreen", gridSize, h); - pos.assign(w/4, 0); - h_grid_u1 = new Rectangle(ctx, pos, "darkgreen", gridSize, h); - pos.assign(w-w/4, 0); - h_grid_d1 = new Rectangle(ctx, pos, "darkgreen", gridSize, h); + pos.assign(0, c.h_mid); + w_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + pos.assign(0, c.h/4); + w_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + pos.assign(0, c.h-c.h/4); + w_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + pos.assign(c.w_mid, 0); + h_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + pos.assign(c.w/4, 0); + h_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + pos.assign(c.w-c.w/4, 0); + h_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); } export {initGameClientOnly} diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 2fe93e90..9087c5a7 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -155,3 +155,18 @@ class Line extends Rectangle { } export {Rectangle, MovingRectangle, Player, Ball, Line} + +// How to handle const export in initGame ? +// example for class Rectangle +/* constructor(ctx?: CanvasRenderingContext2D, pos?: VectorInteger, color?: string, width?: number, height?: number) { + if (ctx && pos && color && width && height) + this.init(ctx, pos, color, width, height); +} +// constructor() {} +init(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number) { + this.ctx = ctx; + this.pos = Object.assign({}, pos); + this.color = color; + this.width = width; + this.height = height; +} */ diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index a62a3b02..b8602bcc 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -1,4 +1,15 @@ -export const CanvasWidth = 1500; +export const CanvasWidth = 1500; +export const CanvasRatio = 1.66666; /* ratio 5/3 (1.66) */ -export const CanvasRatio = 1.66666; + +export const w = CanvasWidth; +export const h = CanvasWidth / CanvasRatio; +export const w_mid = Math.floor(w/2); +export const h_mid = Math.floor(h/2); +export const pw = Math.floor(w/50); +export const ph = pw*5; +export const ballSize = pw; +export const wallSize = Math.floor(w/100); +export const playerSpeed = Math.floor(w/1.5); // pixel per second +export const ballSpeed = Math.floor(w/1.5); // pixel per second diff --git a/src/shared_js/initGame.ts b/src/shared_js/initGame.ts index c2158c74..9ef5dac1 100644 --- a/src/shared_js/initGame.ts +++ b/src/shared_js/initGame.ts @@ -11,32 +11,20 @@ export let ball: Ball; function initGame(ctx: CanvasRenderingContext2D) { - // Const (could maybe be in constants.ts ?) - const w = c.CanvasWidth; - const h = c.CanvasWidth / c.CanvasRatio; - const w_mid = Math.floor(w/2); - const h_mid = Math.floor(h/2); - const pw = Math.floor(w/50); - const ph = pw*5; - const ballSize = pw; - const wallSize = Math.floor(w/100); - const playerSpeed = Math.floor(w/1.5); // pixel per second - const ballSpeed = Math.floor(w/1.5); // pixel per second - let pos = new VectorInteger; // Component pos.assign(0, 0); - wall_top = new Rectangle(ctx, pos, "grey", w, wallSize); - pos.assign(0, h-wallSize); - wall_bottom = new Rectangle(ctx, pos, "grey", w, wallSize); + wall_top = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); + pos.assign(0, c.h-c.wallSize); + wall_bottom = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); - pos.assign(0+pw, h_mid-ph/2); - player1 = new Player(ctx, pos, "white", pw, ph, playerSpeed); - pos.assign(w-pw-pw, h_mid-ph/2); - player2 = new Player(ctx, pos, "white", pw, ph, playerSpeed); + pos.assign(0+c.pw, c.h_mid-c.ph/2); + player1 = new Player(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); + pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); + player2 = new Player(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); - pos.assign(w_mid-ballSize/2, h_mid-ballSize/2); - ball = new Ball(ctx, pos, "white", ballSize, ballSpeed); + pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); + ball = new Ball(ctx, pos, "white", c.ballSize, c.ballSpeed); ball.dir.assign(-0.8, +0.2); } From 48665cfe30b7aa4ae5eefb38bac6a19aeb7393c9 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sun, 20 Nov 2022 15:46:45 +0100 Subject: [PATCH 19/48] =?UTF-8?q?WIP,=20tout=20est=20en=20chantier,=20tr?= =?UTF-8?q?=C3=A8s=20content=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/class/GameComponentsClient.ts | 51 ++++++++ src/client/draw.ts | 32 ++--- src/client/gameLoop.ts | 32 ++--- src/client/global.ts | 6 +- src/client/handleInput.ts | 25 ++-- src/client/initGameClientOnly.ts | 48 ------- src/client/pong.ts | 26 ++-- src/client/utils.ts | 15 +++ src/client/ws.ts | 97 ++++++++------ src/server/class/Client.ts | 32 +++++ src/server/class/GameComponentsServer.ts | 17 +++ src/server/class/GameSession.ts | 30 +++++ src/server/constants.ts | 2 + src/server/gameUpdate.ts | 26 ++++ src/server/server.ts | 95 +------------- src/server/wsServer.ts | 156 +++++++++++++++++++++++ src/shared_js/class/Event.ts | 71 ++++++++--- src/shared_js/class/GameComponents.ts | 33 +++++ src/shared_js/class/Rectangle.ts | 14 +- src/shared_js/enums.ts | 37 ++++++ src/shared_js/initGame.ts | 31 ----- tsconfig.json | 6 +- 22 files changed, 580 insertions(+), 302 deletions(-) create mode 100644 src/client/class/GameComponentsClient.ts delete mode 100644 src/client/initGameClientOnly.ts create mode 100644 src/client/utils.ts create mode 100644 src/server/class/Client.ts create mode 100644 src/server/class/GameComponentsServer.ts create mode 100644 src/server/class/GameSession.ts create mode 100644 src/server/constants.ts create mode 100644 src/server/gameUpdate.ts create mode 100644 src/server/wsServer.ts create mode 100644 src/shared_js/class/GameComponents.ts create mode 100644 src/shared_js/enums.ts delete mode 100644 src/shared_js/initGame.ts diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts new file mode 100644 index 00000000..83143c06 --- /dev/null +++ b/src/client/class/GameComponentsClient.ts @@ -0,0 +1,51 @@ + +import * as c from "../constants.js" +import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; +import {Rectangle, Line} from "../../shared_js/class/Rectangle.js"; +import {TextElem, TextNumericValue} from "./Text.js"; +import { GameComponents } from "../../shared_js/class/GameComponents.js"; + +class GameComponentsClient extends GameComponents { + midLine: Line; + score1: TextNumericValue; + score2: TextNumericValue; + + w_grid_mid: Rectangle; + w_grid_u1: Rectangle; + w_grid_d1: Rectangle; + h_grid_mid: Rectangle; + h_grid_u1: Rectangle; + h_grid_d1: Rectangle; + constructor(ctx: CanvasRenderingContext2D) + { + super(ctx); + let pos = new VectorInteger; + // Scores + pos.assign(c.w_mid-c.scoreSize*1.6, c.scoreSize*1.5); + this.score1 = new TextNumericValue(ctx, pos, "white", c.scoreSize); + pos.assign(c.w_mid+c.scoreSize*1.1, c.scoreSize*1.5); + this.score2 = new TextNumericValue(ctx, pos, "white", c.scoreSize); + this.score1.value = 0; + this.score2.value = 0; + + // Dotted Midline + pos.assign(c.w_mid-c.midLineSize/2, 0+c.wallSize); + this.midLine = new Line(ctx, pos, "white", c.midLineSize, c.h-c.wallSize*2, 15); + + // Grid + pos.assign(0, c.h_mid); + this.w_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + pos.assign(0, c.h/4); + this.w_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + pos.assign(0, c.h-c.h/4); + this.w_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + pos.assign(c.w_mid, 0); + this.h_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + pos.assign(c.w/4, 0); + this.h_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + pos.assign(c.w-c.w/4, 0); + this.h_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + } +} + +export {GameComponentsClient} diff --git a/src/client/draw.ts b/src/client/draw.ts index 65f2447d..ac0c94ce 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -1,4 +1,4 @@ -import * as g from "./global.js" +import {pong, gc, clientInfo} from "./global.js" import {gridDisplay} from "./handleInput.js"; function draw() @@ -6,35 +6,35 @@ function draw() if (gridDisplay) { drawGrid(); } - g.midLine.update(); - g.score1.update(); - g.score2.update(); + gc.midLine.update(); + gc.score1.update(); + gc.score2.update(); } function drawStatic() { - g.wall_top.update(); - g.wall_bottom.update(); - g.midLine.update(); + gc.wallTop.update(); + gc.wallBottom.update(); + gc.midLine.update(); } function drawInit() { - g.pong.clear(); + pong.clear(); drawStatic(); - g.player1.update(); - g.player2.update(); + gc.playerLeft.update(); + gc.playerRight.update(); } function drawGrid() { - g.w_grid_mid.update(); - g.w_grid_u1.update(); - g.w_grid_d1.update(); + gc.w_grid_mid.update(); + gc.w_grid_u1.update(); + gc.w_grid_d1.update(); - g.h_grid_mid.update(); - g.h_grid_u1.update(); - g.h_grid_d1.update(); + gc.h_grid_mid.update(); + gc.h_grid_u1.update(); + gc.h_grid_d1.update(); } export {draw, drawStatic, drawInit, drawGrid} diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index ae008272..a6ba7f54 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,6 +1,6 @@ -import * as g from "./global.js" +import {pong, gc, clientInfo} from "./global.js" import * as d from "./draw.js"; -import {random} from "../shared_js/utils.js"; +import {random} from "./utils.js"; import {handleInput} from "./handleInput.js"; let ballInPlay = false; @@ -23,17 +23,17 @@ function gameLoop() if (ballInPlay) { - g.ball.moveAndBounce(delta_time, [g.wall_top, g.wall_bottom, g.player1, g.player2]); - if (g.ball.pos.x > g.pong.canvas.width) { + gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + if (gc.ball.pos.x > pong.canvas.width) { ballInPlay = false; - g.score1.clear(); - ++g.score1.value; + gc.score1.clear(); + ++gc.score1.value; setTimeout(newRound, 1500); } - else if (g.ball.pos.x < 0 - g.ball.width) { + else if (gc.ball.pos.x < 0 - gc.ball.width) { ballInPlay = false; - g.score2.clear(); - ++g.score2.value; + gc.score2.clear(); + ++gc.score2.value; setTimeout(newRound, 1500); } } @@ -44,12 +44,12 @@ function gameLoop() function newRound() { // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches - if (g.score1.value >= 11 - || g.score2.value >= 11) + if (gc.score1.value >= 11 + || gc.score2.value >= 11) { - if (Math.abs(g.score1.value - g.score2.value) >= 2) + if (Math.abs(gc.score1.value - gc.score2.value) >= 2) { - if (g.score1.value > g.score2.value) { + if (gc.score1.value > gc.score2.value) { alert("Player 1 WIN"); } else { @@ -58,9 +58,9 @@ function newRound() return; } } - g.ball.pos.x = Math.floor(g.pong.canvas.width/2); - g.ball.pos.y = Math.floor((g.pong.canvas.height * 0.1) + random() * (g.pong.canvas.height * 0.8)); - g.ball.speed = g.ball.baseSpeed; + gc.ball.pos.x = Math.floor(pong.canvas.width/2); + gc.ball.pos.y = Math.floor((pong.canvas.height * 0.1) + random() * (pong.canvas.height * 0.8)); + gc.ball.speed = gc.ball.baseSpeed; ballInPlay = true; } diff --git a/src/client/global.ts b/src/client/global.ts index 2141d189..eeea8765 100644 --- a/src/client/global.ts +++ b/src/client/global.ts @@ -1,3 +1,3 @@ -export * from "../shared_js/initGame.js" -export * from "./initGameClientOnly.js" -export {pong} from "./pong.js" + +export {pong, gc} from "./pong.js" +export {clientInfo} from "./ws.js" diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index e67f0cfa..1e8d55de 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -1,13 +1,14 @@ -import * as g from "./global.js" +import {pong, gc, clientInfo} from "./global.js" import * as d from "./draw.js"; import { socket } from "./ws.js"; -import {InputEnum, EventInput} from "../shared_js/class/Event.js" +import {InputEnum} from "../shared_js/enums.js" +import {EventInput} from "../shared_js/class/Event.js" let gridDisplay = false; function handleInput(delta: number) { - var keys = g.pong.keys; + var keys = pong.keys; if (keys.length == 0) return; @@ -15,34 +16,36 @@ function handleInput(delta: number) { if (gridDisplay) { - g.pong.clear(); + pong.clear(); d.drawStatic(); } gridDisplay = !gridDisplay; - g.pong.deleteKey("g"); + pong.deleteKey("g"); } playerMove(delta, keys); } function playerMove(delta: number, keys: string[]) { - g.player1.dir.y = 0; + // gc.playerLeft.dir.y = 0; if (keys.indexOf("w") != -1) { socket.send(JSON.stringify(new EventInput(InputEnum.up))); + // gc.playerLeft.dir.y += -1; } if (keys.indexOf("s") != -1) { socket.send(JSON.stringify(new EventInput(InputEnum.down))); + // gc.playerLeft.dir.y += 1; } - g.player1.moveAndCollide(delta, [g.wall_top, g.wall_bottom]); + // gc.playerLeft.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); - g.player2.dir.y = 0; + gc.playerRight.dir.y = 0; if (keys.indexOf("ArrowUp".toLowerCase()) != -1) { - g.player2.dir.y += -1; + gc.playerRight.dir.y += -1; } if (keys.indexOf("ArrowDown".toLowerCase()) != -1) { - g.player2.dir.y += 1; + gc.playerRight.dir.y += 1; } - g.player2.moveAndCollide(delta, [g.wall_top, g.wall_bottom]); + gc.playerRight.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); } export {handleInput, gridDisplay} diff --git a/src/client/initGameClientOnly.ts b/src/client/initGameClientOnly.ts deleted file mode 100644 index 160210bd..00000000 --- a/src/client/initGameClientOnly.ts +++ /dev/null @@ -1,48 +0,0 @@ - -import * as c from "./constants.js" -import {Vector, VectorInteger} from "../shared_js/class/Vector.js"; -import {Rectangle, MovingRectangle, Player, Ball, Line} from "../shared_js/class/Rectangle.js"; -import {TextElem, TextNumericValue} from "./class/Text.js"; - -export let midLine: Line; -export let score1: TextNumericValue; -export let score2: TextNumericValue; - -export let w_grid_mid: Rectangle; -export let w_grid_u1: Rectangle; -export let w_grid_d1: Rectangle; -export let h_grid_mid: Rectangle; -export let h_grid_u1: Rectangle; -export let h_grid_d1: Rectangle; - -function initGameClientOnly(ctx: CanvasRenderingContext2D) -{ - let pos = new VectorInteger; - // Scores - pos.assign(c.w_mid-c.scoreSize*1.6, c.scoreSize*1.5); - score1 = new TextNumericValue(ctx, pos, "white", c.scoreSize); - pos.assign(c.w_mid+c.scoreSize*1.1, c.scoreSize*1.5); - score2 = new TextNumericValue(ctx, pos, "white", c.scoreSize); - score1.value = 0; - score2.value = 0; - - // Dotted Midline - pos.assign(c.w_mid-c.midLineSize/2, 0+c.wallSize); - midLine = new Line(ctx, pos, "white", c.midLineSize, c.h-c.wallSize*2, 15); - - // Grid - pos.assign(0, c.h_mid); - w_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); - pos.assign(0, c.h/4); - w_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); - pos.assign(0, c.h-c.h/4); - w_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); - pos.assign(c.w_mid, 0); - h_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); - pos.assign(c.w/4, 0); - h_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); - pos.assign(c.w-c.w/4, 0); - h_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); -} - -export {initGameClientOnly} diff --git a/src/client/pong.ts b/src/client/pong.ts index 986d1522..14c834ea 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -2,24 +2,28 @@ import {GameArea} from "./class/GameArea.js"; import * as d from "./draw.js"; import {gameLoop, newRound} from "./gameLoop.js" -// import {random} from "../shared_js/utils.js"; -// import {socket} from "./ws.js"; // import * as c from "./constants.js" -import {initGame} from "../shared_js/initGame.js"; -import {initGameClientOnly} from "./initGameClientOnly.js"; +import { GameComponentsClient } from "./class/GameComponentsClient.js"; +import {countdown} from "./utils.js"; /* Keys - Player 1: W/S - Player 2: Up/Down + Racket 1: W/S + Racket 2: Up/Down Grid On-Off: G */ export const pong = new GameArea(); +export const gc = new GameComponentsClient(pong.ctx); -function init() +function matchmaking() { - initGame(pong.ctx); - initGameClientOnly(pong.ctx); + console.log("Searching an opponent..."); // PLACEHOLDER, todo draw +} + +function matchmakingComplete() +{ + console.log("Match Found !"); // PLACEHOLDER, TODO draw on canvas + countdown(3, startGame); } function startGame() @@ -39,6 +43,4 @@ function startGame() ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -init(); - -export {startGame} +export {matchmaking, matchmakingComplete} diff --git a/src/client/utils.ts b/src/client/utils.ts new file mode 100644 index 00000000..58cad90f --- /dev/null +++ b/src/client/utils.ts @@ -0,0 +1,15 @@ + +export * from "../shared_js/utils.js" + +function countdown(count: number, callback?: () => void) +{ + console.log("countdown ", count); // PLACEHOLDER, TODO draw on canvas + if (count > 0) { + setTimeout(countdown, 1000, --count, callback); + } + else if (callback) { + callback(); + } +} + +export {countdown} diff --git a/src/client/ws.ts b/src/client/ws.ts index 51fdb61a..fa7ce9b3 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -1,64 +1,81 @@ -import * as g from "./global.js" // temp -import {startGame} from "./pong.js"; -import {EventTypes, EventData, EventGameUpdate} from "../shared_js/class/Event.js" +import {pong, gc} from "./global.js" +import * as ev from "../shared_js/class/Event.js" +import {matchmaking, matchmakingComplete} from "./pong.js"; +import * as en from "../shared_js/enums.js" +import { Racket } from "../shared_js/class/Rectangle.js"; const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; const socket = new WebSocket(wsUrl, "json"); -socket.addEventListener("message", logListener); -socket.addEventListener("message", matchmakingListener); - - -function logListener(event: MessageEvent) { - console.log("data: " + event.data + " | [" + Date.now() + "]"); +class ClientInfo { + id = ""; + side: en.PlayerSide; + racket: Racket; } -function matchmakingListener(event: MessageEvent) -{ - console.log("matchmakingListener"); - const data: EventData = JSON.parse(event.data); - if (data.type == EventTypes.start) - { - console.log("Event type = start"); - socket.removeEventListener("message", matchmakingListener); - socket.addEventListener("message", inGameListener); - startGame(); +export const clientInfo = new ClientInfo(); + +socket.addEventListener("open", (event) => { + socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, clientInfo.id) )); +}); + +socket.addEventListener("message", logListener); +socket.addEventListener("message", preMatchListener); + +function logListener(this: WebSocket, event: MessageEvent) { + console.log("%i: " + event.data, Date.now()); +} + +function preMatchListener(this: WebSocket, event: MessageEvent) { + const data: ev.ServerEvent = JSON.parse(event.data); + switch (data.type) { + case en.EventTypes.assignId: + clientInfo.id = (data).id; + break; + case en.EventTypes.matchmakingInProgress: + matchmaking(); + break; + case en.EventTypes.matchmakingComplete: + clientInfo.side = (data).side; + if (clientInfo.side === en.PlayerSide.left) { + clientInfo.racket = gc.playerLeft; + } + else if (clientInfo.side === en.PlayerSide.right) { + clientInfo.racket = gc.playerRight; + } + socket.removeEventListener("message", preMatchListener); + socket.addEventListener("message", inGameListener); + socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); + matchmakingComplete(); + break; } } function inGameListener(event: MessageEvent) { - console.log("inGameListener"); - const data: EventData = JSON.parse(event.data); + const data: ev.ServerEvent = JSON.parse(event.data); switch (data.type) { - case EventTypes.gameUpdate: - console.log("Event type = gameUpdate"); - serverGameUpdate(data as EventGameUpdate); + case en.EventTypes.gameUpdate: + console.log("gameUpdate"); + serverGameUpdate(data as ev.EventGameUpdate); break; - case EventTypes.pause: - console.log("Event type = pause"); - break; - case EventTypes.resume: - console.log("Event type = resume"); + case en.EventTypes.matchNewRound: + console.log("matchNewRound//WIP"); break; } } -function serverGameUpdate(data: EventGameUpdate) +function serverGameUpdate(data: ev.EventGameUpdate) { - g.player1.clear(); - g.player1.pos.y = Math.floor(data.player1.y); - g.player1.update(); + gc.playerLeft.clear(); + gc.playerLeft.pos.y = Math.floor(data.playerLeft.y); + gc.playerLeft.update(); - g.player2.clear(); - g.player2.pos.y = Math.floor(data.player2.y); - g.player2.update(); + gc.playerRight.clear(); + gc.playerRight.pos.y = Math.floor(data.playerRight.y); + gc.playerRight.update(); } -// socket.addEventListener("open", (event) => { -// console.log("socket state %i", socket.readyState); -// }); - export {socket} diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts new file mode 100644 index 00000000..e6fcfd1d --- /dev/null +++ b/src/server/class/Client.ts @@ -0,0 +1,32 @@ + +import {WebSocket} from "ws"; +import {Racket} from "../../shared_js/class/Rectangle.js"; +import { GameSession } from "./GameSession.js"; + +class Client { + socket: WebSocket; + id: string; // Pas indispensable si "socket" a une copie de "id" + isAlive: boolean; + gameSession: GameSession; + constructor(socket: WebSocket, id: string) { + this.socket = socket; + this.id = id; + this.isAlive = true; + } +} + +class ClientPlayer extends Client { + racket: Racket; + constructor(socket: WebSocket, id: string, racket: Racket) { + super(socket, id); + this.racket = racket; + } +} + +class ClientSpectator extends Client { // Wip, unused + constructor(socket: WebSocket, id: string) { + super(socket, id); + } +} + +export {Client, ClientPlayer, ClientSpectator} diff --git a/src/server/class/GameComponentsServer.ts b/src/server/class/GameComponentsServer.ts new file mode 100644 index 00000000..0dd6c514 --- /dev/null +++ b/src/server/class/GameComponentsServer.ts @@ -0,0 +1,17 @@ + +import * as c from "../constants.js" +import { GameComponents } from "../../shared_js/class/GameComponents.js"; + +// Empty object replacement to the web-API (web-API useless on server-side) +class CanvasRenderingContext2D {} +const mockCTX = new CanvasRenderingContext2D(); + +class GameComponentsServer extends GameComponents { + constructor() + { + // @ts-ignore + super(mockCTX); + } +} + +export {GameComponentsServer} diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts new file mode 100644 index 00000000..8ad29d57 --- /dev/null +++ b/src/server/class/GameSession.ts @@ -0,0 +1,30 @@ +import { ClientPlayer } from "./Client"; +import {gameUpdate} from "../gameUpdate.js" +import { GameComponentsServer } from "./GameComponentsServer"; + +// Empty object replacement to the web-API (web-API useless on server-side) + +class GameSession { + id: string; // url ? + playersMap: Map; + unreadyPlayersMap: Map; + updateInterval: NodeJS.Timer; + // gc: GameComponentsServer; + // updateInterval: NodeJS.Timer; + constructor(id: string) { + this.id = id; + this.playersMap = new Map(); + this.unreadyPlayersMap = new Map(); + // this.gc = new GameComponentsServer(); + } + start() { + this.updateInterval = setInterval( () => { + const update = gameUpdate(); + this.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify(update)); + }); + }, 500); + } +} + +export {GameSession} diff --git a/src/server/constants.ts b/src/server/constants.ts new file mode 100644 index 00000000..12beeabc --- /dev/null +++ b/src/server/constants.ts @@ -0,0 +1,2 @@ + +export * from "../shared_js/constants.js" diff --git a/src/server/gameUpdate.ts b/src/server/gameUpdate.ts new file mode 100644 index 00000000..a7672922 --- /dev/null +++ b/src/server/gameUpdate.ts @@ -0,0 +1,26 @@ + +import {EventTypes} from "../shared_js/enums.js" +import {EventGameUpdate} from "../shared_js/class/Event.js" +import { random } from "../shared_js/utils.js"; // temp + +/* +import {Rectangle, MovingRectangle, Racket, Ball, Line} from "../shared_js/class/Rectangle.js"; +import { Vector } from "../shared_js/class/Vector.js"; +class CanvasRenderingContext2D {} // Empty object replacement to the web-API (web-API useless on server-side) +const mockCtx = new CanvasRenderingContext2D; + // @ts-ignore +const playerLeft = new Racket(mockCtx, new Vector(), "white", 1, 1, 1); + */ + +function gameUpdate() : EventGameUpdate +{ + const update: EventGameUpdate = { + type: EventTypes.gameUpdate, + playerLeft: {y: random(50, 650)}, + playerRight: {y: random(50, 650)}, + ball: {x: 0, y: 0, speed: 0} + }; + return update; +} + +export {gameUpdate} \ No newline at end of file diff --git a/src/server/server.ts b/src/server/server.ts index d3494696..5df88098 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -3,25 +3,13 @@ import http from "http"; import url from "url"; import fs from "fs"; import path from "path"; -import { WebSocketServer, WebSocket } from "ws"; -import { v4 as uuidv4 } from 'uuid'; -import { random } from "../shared_js/utils.js"; - -import {EventTypes, EventData, EventGameUpdate} from "../shared_js/class/Event.js" -import {Rectangle, MovingRectangle, Player, Ball, Line} from "../shared_js/class/Rectangle.js"; -import { Vector } from "../shared_js/class/Vector.js"; +import {wsServer} from "./wsServer.js"; wsServer; // no-op const hostname = "localhost"; const port = 8080; -const wsPort = 8042; // pas indispensable d'avoir un autre port si le WebSocket est limité à certaines routes const root = "../../www/"; -class CanvasRenderingContext2D {} // Empty object replacement to the web-API (web-API useless on server-side) -const mockCtx = new CanvasRenderingContext2D; - // @ts-ignore -const player1 = new Player(mockCtx, new Vector(), "white", 1, 1, 1); - const server = http.createServer((req, res) => { // var q = new URL(req.url, `http://${req.getHeaders().host}`) // @ts-ignore @@ -46,84 +34,3 @@ const server = http.createServer((req, res) => { server.listen(port, hostname, () => { console.log(`Pong running at http://${hostname}:${port}/pong.html`); }); - - -const wsServer = new WebSocketServer({port: wsPort, path: "/pong"}); - -class Client { - socket: WebSocket; - id: string; - isAlive: boolean = true; - constructor(socket: WebSocket, id: string) { - this.socket = socket; - this.id = id; - } -} - -const clientsArr: Client[] = []; - - -wsServer.on("connection", (socket, request) => { - - const id = uuidv4(); - const client = new Client(socket, id); - clientsArr.push(client); - socket.on("pong", function heartbeat() { - client.isAlive = true; - console.log("client %s alive at %i", client.id, Date.now()); - }); - - socket.on("message", function log(data) { - console.log("received: %s", data); - }); - - socket.on("message", clientInputListener); - socket.send(JSON.stringify({type: EventTypes.start})); - // socket.send("connection success, bravo client " + id); - // socket.send("start"); - // socket.send("json/20"); -}); - -function clientInputListener(data: string) -{ - return; -} - -function deleteClient(client: Client) -{ - var i = clientsArr.indexOf(client); - if (i != -1) { - clientsArr.splice(i, 1); - } -} - -const pingInterval = setInterval( () => { - clientsArr.forEach( (client) => { - if (client.isAlive === false) { - client.socket.terminate(); - console.log("client %s is no more at %i :'(", client.id, Date.now()); - deleteClient(client); - return; - } - client.isAlive = false; - client.socket.ping(); - }); -}, 5000); - -const gameUpdateInterval = setInterval( () => { - clientsArr.forEach( (client) => { - const update = { - type: EventTypes.gameUpdate, - player1: {y: random(50, 650)}, - player2: {y: random(50, 650)}, - ball: {x: 0, y: 0, speed: 0} - }; - client.socket.send(JSON.stringify(update)); - }); -}, 500); - - -wsServer.on('close', () => { - clearInterval(pingInterval); - clearInterval(gameUpdateInterval); -}); diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts new file mode 100644 index 00000000..ea7619e7 --- /dev/null +++ b/src/server/wsServer.ts @@ -0,0 +1,156 @@ + +import { WebSocketServer, WebSocket as BaseLibWebSocket } from "ws"; + +class WebSocket extends BaseLibWebSocket { + id?: string; +} + +import { IncomingMessage } from "http"; +import { v4 as uuidv4 } from 'uuid'; + +import * as en from "../shared_js/enums.js" +import * as ev from "../shared_js/class/Event.js" +import {Client, ClientPlayer} from "./class/Client.js" +import {GameSession} from "./class/GameSession.js" + +// pas indispensable d'avoir un autre port si le WebSocket est limité à certaines routes +// (et relié à un serveur http préexistant ?) +const wsPort = 8042; +export const wsServer = new WebSocketServer({port: wsPort, path: "/pong"}); + +const clientsMap: Map = new Map; // socket.id/Client (unique Client) +const gameSessionsMap: Map = new Map; // GameSession.id(url)/GameSession (duplicates GameSession) + +wsServer.on("connection", connectionListener); +wsServer.on("error", errorListener); +wsServer.on("close", closeListener); + +function connectionListener(socket: WebSocket, request: IncomingMessage) +{ + const id = uuidv4(); + const client = new Client(socket, id); + clientsMap.set(id, client); + socket.id = id; + + socket.on("pong", function heartbeat() { + client.isAlive = true; + console.log("%i: client %s is alive", Date.now(), client.id); + }); + + socket.on("message", function log(data) { + console.log("data: " + data); + }); + + socket.once("message", clientAnnounceListener); +} + +function clientAnnounceListener(this: WebSocket, data: string) +{ + try { + const msg : ev.ClientAnnounce = JSON.parse(data); + if (msg.type === en.EventTypes.clientAnnounce) { + // TODO: reconnection with msg.id + // TODO: spectator/player distinction with msg.type + + this.send(JSON.stringify( new ev.EventAssignId(this.id) )) + this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )) + matchmaking(this); + } + else { + console.log("Invalid ClientAnnounce"); + } + return; + } + catch (e) { + console.log("Invalid JSON"); + } + this.once("message", clientAnnounceListener); +} + +function matchmaking(socket: WebSocket) +{ + // TODO Actual Matchmaking + + // TODO: Only once + const id = uuidv4(); + const gameSession = new GameSession(id); + gameSessionsMap.set(id, gameSession); + + // TODO: Per player + const player: ClientPlayer = clientsMap.get(socket.id) as ClientPlayer; + player.gameSession = gameSession; + gameSession.playersMap.set(socket.id, player); + gameSession.unreadyPlayersMap.set(socket.id, player); + + socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); + socket.once("message", playerReadyConfirmationListener); + // socket.on("message", clientInputListener); + // setinterval gameloop + +} + +function playerReadyConfirmationListener(this: WebSocket, data: string) +{ + try { + const msg : ev.ClientEvent = JSON.parse(data); + if (msg.type === en.EventTypes.clientPlayerReady) { + const client = clientsMap.get(this.id); + const gameSession = client.gameSession; + gameSession.unreadyPlayersMap.delete(this.id); + if (gameSession.unreadyPlayersMap.size === 0) { + gameSession.start(); + } + } + else { + console.log("Invalid PlayerReady confirmation"); + } + return; + } + catch (e) { + console.log("Invalid JSON"); + } + this.once("message", playerReadyConfirmationListener); +} + +function clientInputListener(this: WebSocket, data: string) +{ + try { + const input: ev.ClientEvent = JSON.parse(data); + if (input.type === en.EventTypes.clientInput) { + console.log("Valid EventInput"); + } + else { + console.log("Invalid EventInput"); + } + } + catch (e) { + console.log("Invalid JSON"); + } +} + +//////////// +//////////// + +const pingInterval = setInterval( () => { + clientsMap.forEach( (client, key, map) => { + if (client.isAlive === false) { + client.socket.terminate(); + map.delete(key); + console.log("%i: client %s is no more :'(", Date.now(), key); + return; + } + client.isAlive = false; + client.socket.ping(); + }); +}, 5000); + +function closeListener() +{ + clearInterval(pingInterval); + // clearInterval(gameUpdateInterval); // TODO: Per Game Session +} + +function errorListener(error: Error) +{ + console.log("Error: " + JSON.stringify(error)); +} diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 2096ae7a..6b8bf2e4 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -1,37 +1,66 @@ -/* Server */ -enum EventTypes { - gameUpdate = 1, - start, - pause, - resume +import * as en from "../enums.js" + +/* From Server */ +class ServerEvent { + type: en.EventTypes; + constructor(type: en.EventTypes = 0) { + this.type = type; + } } -interface EventData { - type: EventTypes; +class EventAssignId extends ServerEvent { + id: string; + constructor(id: string) { + super(en.EventTypes.assignId); + this.id = id; + } } -class EventGameUpdate implements EventData { - type: EventTypes = EventTypes.gameUpdate; - player1 = {y: 0}; - player2 = {y: 0}; +class EventMatchmakingComplete extends ServerEvent { + side: en.PlayerSide; + constructor(side: en.PlayerSide) { + super(en.EventTypes.matchmakingComplete); + this.side = side; + } +} + +class EventGameUpdate extends ServerEvent { + playerLeft = {y: 0}; + playerRight = {y: 0}; ball = {x: 0, y: 0, speed: 0}; + constructor() { + super(en.EventTypes.gameUpdate); + } } -/* Client */ -enum InputEnum { - up = 1, - down + +/* From Client */ +class ClientEvent { + type: en.EventTypes; + constructor(type: en.EventTypes = 0) { + this.type = type; + } } -class EventInput { - input: InputEnum; - constructor(input: InputEnum = 0) { +class ClientAnnounce extends ClientEvent { + role: en.ClientRole; + id: string; + constructor(role: en.ClientRole, id: string = "") { + super(en.EventTypes.clientAnnounce); + this.role = role; + } +} + +class EventInput extends ClientEvent { + input: en.InputEnum; + constructor(input: en.InputEnum = 0) { + super(en.EventTypes.clientInput); this.input = input; } } export { - EventTypes, EventData, EventGameUpdate, - InputEnum, EventInput + ServerEvent, EventAssignId, EventMatchmakingComplete, EventGameUpdate, + ClientEvent, ClientAnnounce, EventInput } diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts new file mode 100644 index 00000000..aa135e14 --- /dev/null +++ b/src/shared_js/class/GameComponents.ts @@ -0,0 +1,33 @@ + +import * as c from "../constants.js" +import {VectorInteger} from "./Vector.js"; +import {Rectangle, Racket, Ball} from "./Rectangle.js"; + + +class GameComponents { + wallTop: Rectangle; + wallBottom: Rectangle; + playerLeft: Racket; + playerRight: Racket; + ball: Ball; + constructor(ctx?: CanvasRenderingContext2D) + { + let pos = new VectorInteger; + + pos.assign(0, 0); + this.wallTop = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); + pos.assign(0, c.h-c.wallSize); + this.wallBottom = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); + + pos.assign(0+c.pw, c.h_mid-c.ph/2); + this.playerLeft = new Racket(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); + pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); + this.playerRight = new Racket(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); + + pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); + this.ball = new Ball(ctx, pos, "white", c.ballSize, c.ballSpeed); + this.ball.dir.assign(-0.8, +0.2); + } +} + +export {GameComponents} diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 9087c5a7..8220dca0 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -77,7 +77,7 @@ class MovingRectangle extends Rectangle implements Moving { } } -class Player extends MovingRectangle { +class Racket extends MovingRectangle { constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number, baseSpeed: number) { super(ctx, pos, color, width, height, baseSpeed); } @@ -88,9 +88,9 @@ class Ball extends MovingRectangle { super(ctx, pos, color, size, size, baseSpeed); } bounce(collider?: Rectangle) { - /* Could be more generic, but testing only player is enough, - because in Pong collider can only be Player or Wall. */ - if (collider instanceof Player) { + /* Could be more generic, but testing only Racket is enough, + because in Pong collider can only be Racket or Wall. */ + if (collider instanceof Racket) { this._bouncePlayer(collider); } else { @@ -112,8 +112,8 @@ class Ball extends MovingRectangle { private _bounceWall() { // Should be enough for Wall this.dir.y = this.dir.y * -1; } - private _bouncePlayer(collider: Player) { // WIP - // Bounce for Player need to be more complexe than this + private _bouncePlayer(collider: Racket) { // WIP + // Bounce for Racket need to be more complexe than this this.speed += this.baseSpeed/20; this.dir.x = this.dir.x * -1; } @@ -154,7 +154,7 @@ class Line extends Rectangle { } } -export {Rectangle, MovingRectangle, Player, Ball, Line} +export {Rectangle, MovingRectangle, Racket, Ball, Line} // How to handle const export in initGame ? // example for class Rectangle diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts new file mode 100644 index 00000000..882193f9 --- /dev/null +++ b/src/shared_js/enums.ts @@ -0,0 +1,37 @@ + +enum EventTypes { + // Class Implemented + gameUpdate = 1, + assignId, + matchmakingComplete, + + // Generic + matchmakingInProgress, + matchNewRound, // unused + matchStart, // unused + matchPause, // unused + matchResume, // unused + + // Client + clientAnnounce, + clientPlayerReady, + clientInput, + +} + +enum InputEnum { + up = 1, + down +} + +enum PlayerSide { + left = 1, + right +} + +enum ClientRole { + player = 1, + spectator +} + +export {EventTypes, InputEnum, PlayerSide, ClientRole} diff --git a/src/shared_js/initGame.ts b/src/shared_js/initGame.ts deleted file mode 100644 index 9ef5dac1..00000000 --- a/src/shared_js/initGame.ts +++ /dev/null @@ -1,31 +0,0 @@ - -import * as c from "./constants.js" -import {Vector, VectorInteger} from "./class/Vector.js"; -import {Rectangle, MovingRectangle, Player, Ball, Line} from "./class/Rectangle.js"; - -export let wall_top: Rectangle; -export let wall_bottom: Rectangle; -export let player1: Player; -export let player2: Player; -export let ball: Ball; - -function initGame(ctx: CanvasRenderingContext2D) -{ - let pos = new VectorInteger; - // Component - pos.assign(0, 0); - wall_top = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); - pos.assign(0, c.h-c.wallSize); - wall_bottom = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); - - pos.assign(0+c.pw, c.h_mid-c.ph/2); - player1 = new Player(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); - pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); - player2 = new Player(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); - - pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); - ball = new Ball(ctx, pos, "white", c.ballSize, c.ballSpeed); - ball.dir.assign(-0.8, +0.2); -} - -export {initGame} diff --git a/tsconfig.json b/tsconfig.json index 338cf3cc..988126ba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,8 +20,8 @@ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.gc. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.gc. 'React.Fragment' or 'Fragment'. */ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ @@ -82,7 +82,7 @@ /* Type Checking */ "strict": true, /* Enable all strict type-checking options. */ // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + "strictNullChecks": false, /* When type checking, take into account 'null' and 'undefined'. */ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ From add08c216f091de47ef64474516bdd2c8df1c4dc Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 21 Nov 2022 19:46:25 +0100 Subject: [PATCH 20/48] authoritative server OK + TODO actual matchmaking --- src/client/class/GameComponents.ts | 33 ++++++ src/client/class/GameComponentsClient.ts | 44 ++++---- src/client/class/RectangleClient.ts | 131 +++++++++++++++++++++ src/client/class/Text.ts | 14 ++- src/client/constants.ts | 3 + src/client/draw.ts | 22 ++-- src/client/gameLoop.ts | 46 +------- src/client/handleInput.ts | 23 ++-- src/client/pong.ts | 20 ++-- src/client/ws.ts | 48 ++++++-- src/server/class/GameComponentsServer.ts | 15 ++- src/server/class/GameSession.ts | 138 ++++++++++++++++++++--- src/server/constants.ts | 3 + src/server/wsServer.ts | 35 ++++-- src/shared_js/class/Event.ts | 23 +++- src/shared_js/class/GameComponents.ts | 21 ++-- src/shared_js/class/Rectangle.ts | 88 ++------------- src/shared_js/class/interface.ts | 11 +- src/shared_js/constants.ts | 3 + src/shared_js/enums.ts | 4 +- 20 files changed, 485 insertions(+), 240 deletions(-) create mode 100644 src/client/class/GameComponents.ts create mode 100644 src/client/class/RectangleClient.ts diff --git a/src/client/class/GameComponents.ts b/src/client/class/GameComponents.ts new file mode 100644 index 00000000..c820b260 --- /dev/null +++ b/src/client/class/GameComponents.ts @@ -0,0 +1,33 @@ + +import * as c from "../constants.js" +import {VectorInteger} from "../../shared_js/class/Vector.js"; +import {RectangleClient, RacketClient, BallClient} from "./RectangleClient.js"; + +class GameComponentsForClient { + wallTop: RectangleClient; + wallBottom: RectangleClient; + playerLeft: RacketClient; + playerRight: RacketClient; + ball: BallClient; + constructor(ctx: CanvasRenderingContext2D) + { + let pos = new VectorInteger; + + pos.assign(0, 0); + this.wallTop = new RectangleClient(pos, c.w, c.wallSize, ctx, "grey"); + pos.assign(0, c.h-c.wallSize); + this.wallBottom = new RectangleClient(pos, c.w, c.wallSize, ctx, "grey"); + + pos.assign(0+c.pw, c.h_mid-c.ph/2); + this.playerLeft = new RacketClient(pos, c.pw, c.ph, c.playerSpeed, ctx, "white"); + pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); + this.playerRight = new RacketClient(pos, c.pw, c.ph, c.playerSpeed, ctx, "white"); + + // pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); // center the ball + pos.assign(-c.ballSize, -c.ballSize); // ball out =) + this.ball = new BallClient(pos, c.ballSize, c.ballSpeed, ctx, "white"); + this.ball.dir.assign(-0.8, +0.2); + } +} + +export {GameComponentsForClient} diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 83143c06..0826554b 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -1,50 +1,50 @@ import * as c from "../constants.js" import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; -import {Rectangle, Line} from "../../shared_js/class/Rectangle.js"; import {TextElem, TextNumericValue} from "./Text.js"; -import { GameComponents } from "../../shared_js/class/GameComponents.js"; +import { GameComponentsForClient } from "./GameComponents.js"; +import { RectangleClient, Line } from "./RectangleClient.js"; -class GameComponentsClient extends GameComponents { +class GameComponentsClient extends GameComponentsForClient { midLine: Line; - score1: TextNumericValue; - score2: TextNumericValue; + scoreLeft: TextNumericValue; + scoreRight: TextNumericValue; - w_grid_mid: Rectangle; - w_grid_u1: Rectangle; - w_grid_d1: Rectangle; - h_grid_mid: Rectangle; - h_grid_u1: Rectangle; - h_grid_d1: Rectangle; + w_grid_mid: RectangleClient; + w_grid_u1: RectangleClient; + w_grid_d1: RectangleClient; + h_grid_mid: RectangleClient; + h_grid_u1: RectangleClient; + h_grid_d1: RectangleClient; constructor(ctx: CanvasRenderingContext2D) { super(ctx); let pos = new VectorInteger; // Scores pos.assign(c.w_mid-c.scoreSize*1.6, c.scoreSize*1.5); - this.score1 = new TextNumericValue(ctx, pos, "white", c.scoreSize); + this.scoreLeft = new TextNumericValue(pos, c.scoreSize, ctx, "white"); pos.assign(c.w_mid+c.scoreSize*1.1, c.scoreSize*1.5); - this.score2 = new TextNumericValue(ctx, pos, "white", c.scoreSize); - this.score1.value = 0; - this.score2.value = 0; + this.scoreRight = new TextNumericValue(pos, c.scoreSize, ctx, "white"); + this.scoreLeft.value = 0; + this.scoreRight.value = 0; // Dotted Midline pos.assign(c.w_mid-c.midLineSize/2, 0+c.wallSize); - this.midLine = new Line(ctx, pos, "white", c.midLineSize, c.h-c.wallSize*2, 15); + this.midLine = new Line(pos, c.midLineSize, c.h-c.wallSize*2, ctx, "white", 15); // Grid pos.assign(0, c.h_mid); - this.w_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + this.w_grid_mid = new RectangleClient(pos, c.w, c.gridSize, ctx, "darkgreen"); pos.assign(0, c.h/4); - this.w_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + this.w_grid_u1 = new RectangleClient(pos, c.w, c.gridSize, ctx, "darkgreen"); pos.assign(0, c.h-c.h/4); - this.w_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.w, c.gridSize); + this.w_grid_d1 = new RectangleClient(pos, c.w, c.gridSize, ctx, "darkgreen"); pos.assign(c.w_mid, 0); - this.h_grid_mid = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + this.h_grid_mid = new RectangleClient(pos, c.gridSize, c.h, ctx, "darkgreen"); pos.assign(c.w/4, 0); - this.h_grid_u1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + this.h_grid_u1 = new RectangleClient(pos, c.gridSize, c.h, ctx, "darkgreen"); pos.assign(c.w-c.w/4, 0); - this.h_grid_d1 = new Rectangle(ctx, pos, "darkgreen", c.gridSize, c.h); + this.h_grid_d1 = new RectangleClient(pos, c.gridSize, c.h, ctx, "darkgreen"); } } diff --git a/src/client/class/RectangleClient.ts b/src/client/class/RectangleClient.ts new file mode 100644 index 00000000..e0e83133 --- /dev/null +++ b/src/client/class/RectangleClient.ts @@ -0,0 +1,131 @@ + +import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; +import {Component, GraphicComponent, Moving} from "../../shared_js/class/interface.js"; +import { Rectangle, MovingRectangle, Racket, Ball } from "../../shared_js/class/Rectangle.js"; + +function updateRectangle(this: RectangleClient) { + this.ctx.fillStyle = this.color; + this.ctx.fillRect(this.pos.x, this.pos.y, this.width, this.height); +} + +function clearRectangle(this: RectangleClient, pos?: VectorInteger) { + if (pos) + this.ctx.clearRect(pos.x, pos.y, this.width, this.height); + else + this.ctx.clearRect(this.pos.x, this.pos.y, this.width, this.height); +} + +class RectangleClient extends Rectangle implements GraphicComponent { + ctx: CanvasRenderingContext2D; + color: string; + update: () => void; + clear: (pos?: VectorInteger) => void; + constructor(pos: VectorInteger, width: number, height: number, + ctx: CanvasRenderingContext2D, color: string) + { + super(pos, width, height); + this.ctx = ctx; + this.color = color; + this.update = updateRectangle; + this.clear = clearRectangle; + } + // update() { + // this.ctx.fillStyle = this.color; + // this.ctx.fillRect(this.pos.x, this.pos.y, this.width, this.height); + // } + // clear(pos?: VectorInteger) { + // if (pos) + // this.ctx.clearRect(pos.x, pos.y, this.width, this.height); + // else + // this.ctx.clearRect(this.pos.x, this.pos.y, this.width, this.height); + // } +} + +class MovingRectangleClient extends MovingRectangle implements GraphicComponent { + ctx: CanvasRenderingContext2D; + color: string; + update: () => void; + clear: (pos?: VectorInteger) => void; + constructor(pos: VectorInteger, width: number, height: number, baseSpeed: number, + ctx: CanvasRenderingContext2D, color: string) + { + super(pos, width, height, baseSpeed); + this.ctx = ctx; + this.color = color; + this.update = updateRectangle; + this.clear = clearRectangle; + } +} + +class RacketClient extends Racket implements GraphicComponent { + ctx: CanvasRenderingContext2D; + color: string; + update: () => void; + clear: (pos?: VectorInteger) => void; + constructor(pos: VectorInteger, width: number, height: number, baseSpeed: number, + ctx: CanvasRenderingContext2D, color: string) + { + super(pos, width, height, baseSpeed); + this.ctx = ctx; + this.color = color; + this.update = updateRectangle; + this.clear = clearRectangle; + } +} + +class BallClient extends Ball implements GraphicComponent { + ctx: CanvasRenderingContext2D; + color: string; + update: () => void; + clear: (pos?: VectorInteger) => void; + constructor(pos: VectorInteger, size: number, baseSpeed: number, + ctx: CanvasRenderingContext2D, color: string) + { + super(pos, size, baseSpeed); + this.ctx = ctx; + this.color = color; + this.update = updateRectangle; + this.clear = clearRectangle; + } +} + +function updateLine(this: Line) { + this.ctx.fillStyle = this.color; + let pos: VectorInteger = new VectorInteger; + let i = 0; + while (i < this.segmentCount) + { + // for Horizontal Line + // pos.y = this.pos.y; + // pos.x = this.pos.x + this.segmentWidth * i; + pos.x = this.pos.x; + pos.y = this.pos.y + this.segmentHeight * i; + this.ctx.fillRect(pos.x, pos.y, this.segmentWidth, this.segmentHeight); + i += 2; + } +} + +class Line extends RectangleClient { + gapeCount: number = 0; + segmentCount: number; + segmentWidth: number; + segmentHeight: number; + constructor(pos: VectorInteger, width: number, height: number, + ctx: CanvasRenderingContext2D, color: string, gapeCount?: number) + { + super(pos, width, height, ctx, color); + this.update = updateLine; + if (gapeCount) + this.gapeCount = gapeCount; + this.segmentCount = this.gapeCount * 2 + 1; + + this.segmentWidth = this.width; + this.segmentHeight = this.height / this.segmentCount; + + // for Horizontal Line + // this.segmentWidth = this.width / this.segmentCount; + // this.segmentHeight = this.height; + } +} + +export {RectangleClient, MovingRectangleClient, RacketClient, BallClient, Line} diff --git a/src/client/class/Text.ts b/src/client/class/Text.ts index a3588ac3..e6ac3708 100644 --- a/src/client/class/Text.ts +++ b/src/client/class/Text.ts @@ -10,11 +10,13 @@ class TextElem implements Component { size: number; font: string; text: string = ""; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, font: string = "Bit5x3") { - this.ctx = ctx; + constructor(pos: VectorInteger, size: number, + ctx: CanvasRenderingContext2D, color: string, font: string = "Bit5x3") + { this.pos = Object.assign({}, pos); - this.color = color; this.size = size; + this.ctx = ctx; + this.color = color; this.font = font; } update() { @@ -38,8 +40,10 @@ class TextElem implements Component { class TextNumericValue extends TextElem { private _value: number = 0; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, font?: string) { - super(ctx, pos, color, size, font); + constructor(pos: VectorInteger, size: number, + ctx: CanvasRenderingContext2D, color: string, font?: string) + { + super(pos, size, ctx, color, font); } get value() { return this._value; diff --git a/src/client/constants.ts b/src/client/constants.ts index b4aae131..df5c8e68 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -5,3 +5,6 @@ export * from "../shared_js/constants.js" export const midLineSize = Math.floor(w/150); export const scoreSize = Math.floor(w/16); export const gridSize = Math.floor(w/500); + +// min interval on Firefox seems to be 15. Chrome can go lower. +export const gameLoopIntervalMS = 15; // millisecond diff --git a/src/client/draw.ts b/src/client/draw.ts index ac0c94ce..716e5459 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -3,12 +3,18 @@ import {gridDisplay} from "./handleInput.js"; function draw() { + pong.clear(); + + drawStatic(); + if (gridDisplay) { drawGrid(); } - gc.midLine.update(); - gc.score1.update(); - gc.score2.update(); + gc.scoreLeft.update(); + gc.scoreRight.update(); + gc.playerLeft.update(); + gc.playerRight.update(); + gc.ball.update(); } function drawStatic() @@ -18,14 +24,6 @@ function drawStatic() gc.midLine.update(); } -function drawInit() -{ - pong.clear(); - drawStatic(); - gc.playerLeft.update(); - gc.playerRight.update(); -} - function drawGrid() { gc.w_grid_mid.update(); @@ -37,4 +35,4 @@ function drawGrid() gc.h_grid_d1.update(); } -export {draw, drawStatic, drawInit, drawGrid} +export {draw, drawStatic, drawGrid} diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index a6ba7f54..a6028ec3 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,9 +1,6 @@ -import {pong, gc, clientInfo} from "./global.js" import * as d from "./draw.js"; -import {random} from "./utils.js"; import {handleInput} from "./handleInput.js"; -let ballInPlay = false; let actual_time: number = Date.now(); let last_time: number; let delta_time: number; @@ -21,47 +18,10 @@ function gameLoop() handleInput(delta_time); - if (ballInPlay) - { - gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - if (gc.ball.pos.x > pong.canvas.width) { - ballInPlay = false; - gc.score1.clear(); - ++gc.score1.value; - setTimeout(newRound, 1500); - } - else if (gc.ball.pos.x < 0 - gc.ball.width) { - ballInPlay = false; - gc.score2.clear(); - ++gc.score2.value; - setTimeout(newRound, 1500); - } - } + // prediction + // gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); d.draw(); } -function newRound() -{ - // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches - if (gc.score1.value >= 11 - || gc.score2.value >= 11) - { - if (Math.abs(gc.score1.value - gc.score2.value) >= 2) - { - if (gc.score1.value > gc.score2.value) { - alert("Player 1 WIN"); - } - else { - alert("Player 2 WIN"); - } - return; - } - } - gc.ball.pos.x = Math.floor(pong.canvas.width/2); - gc.ball.pos.y = Math.floor((pong.canvas.height * 0.1) + random() * (pong.canvas.height * 0.8)); - gc.ball.speed = gc.ball.baseSpeed; - ballInPlay = true; -} - -export {gameLoop, newRound} +export {gameLoop} diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index 1e8d55de..9eef3dad 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -4,7 +4,7 @@ import { socket } from "./ws.js"; import {InputEnum} from "../shared_js/enums.js" import {EventInput} from "../shared_js/class/Event.js" -let gridDisplay = false; +export let gridDisplay = false; function handleInput(delta: number) { @@ -27,25 +27,24 @@ function handleInput(delta: number) function playerMove(delta: number, keys: string[]) { - // gc.playerLeft.dir.y = 0; if (keys.indexOf("w") != -1) { socket.send(JSON.stringify(new EventInput(InputEnum.up))); - // gc.playerLeft.dir.y += -1; } if (keys.indexOf("s") != -1) { socket.send(JSON.stringify(new EventInput(InputEnum.down))); - // gc.playerLeft.dir.y += 1; } - // gc.playerLeft.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); - gc.playerRight.dir.y = 0; - if (keys.indexOf("ArrowUp".toLowerCase()) != -1) { - gc.playerRight.dir.y += -1; + // prediction +/* const racket = clientInfo.racket; + racket.dir.y = 0; + if (keys.indexOf("w") != -1) { + racket.dir.y += -1; } - if (keys.indexOf("ArrowDown".toLowerCase()) != -1) { - gc.playerRight.dir.y += 1; + if (keys.indexOf("s") != -1) { + racket.dir.y += 1; } - gc.playerRight.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); */ + } -export {handleInput, gridDisplay} +export {handleInput} diff --git a/src/client/pong.ts b/src/client/pong.ts index 14c834ea..2c9550d6 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -1,11 +1,13 @@ import {GameArea} from "./class/GameArea.js"; import * as d from "./draw.js"; -import {gameLoop, newRound} from "./gameLoop.js" -// import * as c from "./constants.js" +import {gameLoop} from "./gameLoop.js" +import * as c from "./constants.js" import { GameComponentsClient } from "./class/GameComponentsClient.js"; import {countdown} from "./utils.js"; +import {socket} from "./ws.js"; socket; // no-op + /* Keys Racket 1: W/S Racket 2: Up/Down @@ -23,24 +25,24 @@ function matchmaking() function matchmakingComplete() { console.log("Match Found !"); // PLACEHOLDER, TODO draw on canvas - countdown(3, startGame); } -function startGame() +function startGame() { + countdown(c.matchStartDelay/1000, resumeGame); +} + +function resumeGame() { - // Start - d.drawInit(); window.addEventListener('keydown', function (e) { pong.addKey(e.key); }); window.addEventListener('keyup', function (e) { pong.deleteKey(e.key); }); - pong.interval = window.setInterval(gameLoop, 15); // min interval on Firefox seems to be 15. Chrome can go lower. - setTimeout(newRound, 1000); + pong.interval = window.setInterval(gameLoop, c.gameLoopIntervalMS); } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -export {matchmaking, matchmakingComplete} +export {matchmaking, matchmakingComplete, startGame} diff --git a/src/client/ws.ts b/src/client/ws.ts index fa7ce9b3..b299d12f 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -1,9 +1,10 @@ import {pong, gc} from "./global.js" import * as ev from "../shared_js/class/Event.js" -import {matchmaking, matchmakingComplete} from "./pong.js"; +import {matchmaking, matchmakingComplete, startGame} from "./pong.js"; import * as en from "../shared_js/enums.js" import { Racket } from "../shared_js/class/Rectangle.js"; +import { sleep } from "./utils.js"; const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; @@ -45,11 +46,14 @@ function preMatchListener(this: WebSocket, event: MessageEvent) { else if (clientInfo.side === en.PlayerSide.right) { clientInfo.racket = gc.playerRight; } - socket.removeEventListener("message", preMatchListener); - socket.addEventListener("message", inGameListener); socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); matchmakingComplete(); break; + case en.EventTypes.matchStart: + socket.removeEventListener("message", preMatchListener); + socket.addEventListener("message", inGameListener); + startGame(); + break; } } @@ -59,23 +63,43 @@ function inGameListener(event: MessageEvent) switch (data.type) { case en.EventTypes.gameUpdate: console.log("gameUpdate"); - serverGameUpdate(data as ev.EventGameUpdate); + gameUpdate(data as ev.EventGameUpdate); break; - case en.EventTypes.matchNewRound: - console.log("matchNewRound//WIP"); + case en.EventTypes.scoreUpdate: + console.log("scoreUpdate"); + scoreUpdate(data as ev.EventScoreUpdate); + break; + case en.EventTypes.matchEnd: + console.log("matchEnd"); + matchEnd(data as ev.EventMatchEnd); break; } } -function serverGameUpdate(data: ev.EventGameUpdate) +async function gameUpdate(data: ev.EventGameUpdate) { - gc.playerLeft.clear(); + // await sleep(1000); // artificial latency for testing purpose gc.playerLeft.pos.y = Math.floor(data.playerLeft.y); - gc.playerLeft.update(); - - gc.playerRight.clear(); gc.playerRight.pos.y = Math.floor(data.playerRight.y); - gc.playerRight.update(); + gc.ball.pos.x = Math.floor(data.ball.x); + gc.ball.pos.y = Math.floor(data.ball.y); + gc.ball.speed = Math.floor(data.ball.speed); +} + +function scoreUpdate(data: ev.EventScoreUpdate) +{ + gc.scoreLeft.value = data.scoreLeft; + gc.scoreRight.value = data.scoreRight; +} + +function matchEnd(data: ev.EventMatchEnd) +{ + if (data.winner === clientInfo.side) { + alert("WIN"); // placeholder TODO draw + } + else { + alert("LOSE"); // placeholder TODO draw + } } export {socket} diff --git a/src/server/class/GameComponentsServer.ts b/src/server/class/GameComponentsServer.ts index 0dd6c514..84b185c4 100644 --- a/src/server/class/GameComponentsServer.ts +++ b/src/server/class/GameComponentsServer.ts @@ -2,15 +2,22 @@ import * as c from "../constants.js" import { GameComponents } from "../../shared_js/class/GameComponents.js"; +// DONT WORK AS EXPECTED. I might try again later. // Empty object replacement to the web-API (web-API useless on server-side) -class CanvasRenderingContext2D {} -const mockCTX = new CanvasRenderingContext2D(); +// class CanvasRenderingContext2D {} +// const mockCTX = new CanvasRenderingContext2D(); class GameComponentsServer extends GameComponents { + scoreLeft: number; + scoreRight: number; + ballInPlay: boolean; constructor() { - // @ts-ignore - super(mockCTX); + // super(mockCTX); + super(); + this.scoreLeft = 0; + this.scoreRight = 0; + this.ballInPlay = false; } } diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index 8ad29d57..aaf7b611 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -1,29 +1,141 @@ import { ClientPlayer } from "./Client"; import {gameUpdate} from "../gameUpdate.js" -import { GameComponentsServer } from "./GameComponentsServer"; - -// Empty object replacement to the web-API (web-API useless on server-side) +import { GameComponents } from "../../shared_js/class/GameComponents.js"; +import { clientInputListener } from "../wsServer.js"; +import * as c from "../constants.js" +import { GameComponentsServer } from "./GameComponentsServer.js"; +import { random } from "../../shared_js/utils.js"; +import * as en from "../../shared_js/enums.js" +import * as ev from "../../shared_js/class/Event.js" +/* + Arg "s: GameSession" replace "this: GameSession" for use with setTimeout(), + because "this" is equal to "this: Timeout" +*/ class GameSession { id: string; // url ? playersMap: Map; unreadyPlayersMap: Map; - updateInterval: NodeJS.Timer; - // gc: GameComponentsServer; - // updateInterval: NodeJS.Timer; + gameLoopInterval: NodeJS.Timer | number; + clientsUpdateInterval: NodeJS.Timer | number; + components: GameComponentsServer; + + actual_time: number; + last_time: number; + delta_time: number; + constructor(id: string) { this.id = id; this.playersMap = new Map(); this.unreadyPlayersMap = new Map(); - // this.gc = new GameComponentsServer(); + this.components = new GameComponentsServer(); } start() { - this.updateInterval = setInterval( () => { - const update = gameUpdate(); - this.playersMap.forEach( (client) => { - client.socket.send(JSON.stringify(update)); - }); - }, 500); + setTimeout(this.resume, c.matchStartDelay, this); + setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay, this); + } + resume(s: GameSession) { + s.playersMap.forEach( (client) => { + client.socket.on("message", clientInputListener); + }); + + s.actual_time = Date.now(); + s.gameLoopInterval = setInterval(s._gameLoop, c.gameLoopIntervalMS, s); + s.clientsUpdateInterval = setInterval(s._clientsUpdate, c.clientsUpdateIntervalMS, s); + } + pause(s: GameSession) { + s.playersMap.forEach( (client) => { + client.socket.off("message", clientInputListener); + }); + + clearInterval(s.gameLoopInterval); + clearInterval(s.clientsUpdateInterval); + } + handleInput(client: ClientPlayer, input: en.InputEnum) { + const gc = this.components; + client.racket.dir.y = 0; + if (input === en.InputEnum.up) { + client.racket.dir.y += -1; + } + else if (input === en.InputEnum.down) { + client.racket.dir.y += 1; + } + client.racket.moveAndCollide(this.delta_time, [gc.wallTop, gc.wallBottom]); + /* how to handle Delta time correctly in handleInput ? */ + } + private _gameLoop(s: GameSession) { + s.last_time = s.actual_time; + s.actual_time = Date.now(); + s.delta_time = (s.actual_time - s.last_time) / 1000; + + const gc = s.components; + if (gc.ballInPlay) + { + gc.ball.moveAndBounce(s.delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + if (gc.ball.pos.x > c.w) { + gc.ballInPlay = false; + ++gc.scoreLeft; + s.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); + }); + setTimeout(s._newRound, c.newRoundDelay, s); + } + else if (gc.ball.pos.x < 0 - gc.ball.width) { + gc.ballInPlay = false; + ++gc.scoreRight; + + s.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); + }); + setTimeout(s._newRound, c.newRoundDelay, s); + } + } + } + private _clientsUpdate(s: GameSession) { + const gc = s.components; + const update: ev.EventGameUpdate = { + type: en.EventTypes.gameUpdate, + playerLeft: {y: gc.playerLeft.pos.y}, + playerRight: {y: gc.playerRight.pos.y}, + ball: {x: gc.ball.pos.x, y: gc.ball.pos.y, speed: gc.ball.speed} + }; + s.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify(update)); + }); + } + private _newRound(s: GameSession) { + const gc = s.components; + // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches + if (gc.scoreLeft >= 11 + || gc.scoreRight >= 11) + { + if (Math.abs(gc.scoreLeft - gc.scoreRight) >= 2) + { + s._matchEnd(s); + return; + } + } + gc.ball.pos.x = c.w_mid; + gc.ball.pos.y = Math.floor((c.h * 0.1) + random() * (c.h * 0.8)); + gc.ball.speed = gc.ball.baseSpeed; + gc.ballInPlay = true; + } + private _matchEnd(s: GameSession) { + const gc = s.components; + + let eventEnd: ev.EventMatchEnd; + if (gc.scoreLeft > gc.scoreRight) { + eventEnd = new ev.EventMatchEnd(en.PlayerSide.left); + console.log("Player Left WIN"); + } + else { + eventEnd = new ev.EventMatchEnd(en.PlayerSide.right); + console.log("Player Right WIN"); + } + + s.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify(eventEnd)); + }); } } diff --git a/src/server/constants.ts b/src/server/constants.ts index 12beeabc..974263ff 100644 --- a/src/server/constants.ts +++ b/src/server/constants.ts @@ -1,2 +1,5 @@ export * from "../shared_js/constants.js" + +export const gameLoopIntervalMS = 15; // millisecond +export const clientsUpdateIntervalMS = 100; // millisecond diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index ea7619e7..54e5eddf 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -13,18 +13,18 @@ import * as ev from "../shared_js/class/Event.js" import {Client, ClientPlayer} from "./class/Client.js" import {GameSession} from "./class/GameSession.js" -// pas indispensable d'avoir un autre port si le WebSocket est limité à certaines routes -// (et relié à un serveur http préexistant ?) -const wsPort = 8042; +// pas indispensable d'avoir un autre port si le WebSocket est relié à un serveur http préexistant ? +const wsPort = 8042; export const wsServer = new WebSocketServer({port: wsPort, path: "/pong"}); -const clientsMap: Map = new Map; // socket.id/Client (unique Client) -const gameSessionsMap: Map = new Map; // GameSession.id(url)/GameSession (duplicates GameSession) +const clientsMap: Map = new Map; // socket.id/Client +const gameSessionsMap: Map = new Map; // GameSession.id(url)/GameSession wsServer.on("connection", connectionListener); wsServer.on("error", errorListener); wsServer.on("close", closeListener); + function connectionListener(socket: WebSocket, request: IncomingMessage) { const id = uuidv4(); @@ -37,13 +37,14 @@ function connectionListener(socket: WebSocket, request: IncomingMessage) console.log("%i: client %s is alive", Date.now(), client.id); }); - socket.on("message", function log(data) { + socket.on("message", function log(data: string) { console.log("data: " + data); }); socket.once("message", clientAnnounceListener); } + function clientAnnounceListener(this: WebSocket, data: string) { try { @@ -67,6 +68,7 @@ function clientAnnounceListener(this: WebSocket, data: string) this.once("message", clientAnnounceListener); } + function matchmaking(socket: WebSocket) { // TODO Actual Matchmaking @@ -82,13 +84,15 @@ function matchmaking(socket: WebSocket) gameSession.playersMap.set(socket.id, player); gameSession.unreadyPlayersMap.set(socket.id, player); + player.racket = gameSession.components.playerLeft; socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); + + socket.once("message", playerReadyConfirmationListener); - // socket.on("message", clientInputListener); - // setinterval gameloop } + function playerReadyConfirmationListener(this: WebSocket, data: string) { try { @@ -98,6 +102,9 @@ function playerReadyConfirmationListener(this: WebSocket, data: string) const gameSession = client.gameSession; gameSession.unreadyPlayersMap.delete(this.id); if (gameSession.unreadyPlayersMap.size === 0) { + gameSession.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchStart) )); + }); gameSession.start(); } } @@ -112,12 +119,15 @@ function playerReadyConfirmationListener(this: WebSocket, data: string) this.once("message", playerReadyConfirmationListener); } -function clientInputListener(this: WebSocket, data: string) + +export function clientInputListener(this: WebSocket, data: string) { try { - const input: ev.ClientEvent = JSON.parse(data); + // const input: ev.ClientEvent = JSON.parse(data); + const input: ev.EventInput = JSON.parse(data); if (input.type === en.EventTypes.clientInput) { - console.log("Valid EventInput"); + const client = clientsMap.get(this.id); + client.gameSession.handleInput(client as ClientPlayer, input.input); } else { console.log("Invalid EventInput"); @@ -144,12 +154,13 @@ const pingInterval = setInterval( () => { }); }, 5000); + function closeListener() { clearInterval(pingInterval); - // clearInterval(gameUpdateInterval); // TODO: Per Game Session } + function errorListener(error: Error) { console.log("Error: " + JSON.stringify(error)); diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 6b8bf2e4..3d27ebb6 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -29,11 +29,28 @@ class EventGameUpdate extends ServerEvent { playerLeft = {y: 0}; playerRight = {y: 0}; ball = {x: 0, y: 0, speed: 0}; - constructor() { + constructor() { // TODO: constructor that take GameComponentsServer maybe ? super(en.EventTypes.gameUpdate); } } +class EventScoreUpdate extends ServerEvent { + scoreLeft: number; + scoreRight: number; + constructor(scoreLeft: number, scoreRight: number) { + super(en.EventTypes.scoreUpdate); + this.scoreLeft = scoreLeft; + this.scoreRight = scoreRight; + } +} + +class EventMatchEnd extends ServerEvent { + winner: en.PlayerSide; + constructor(winner: en.PlayerSide) { + super(en.EventTypes.matchEnd); + } +} + /* From Client */ class ClientEvent { @@ -49,6 +66,7 @@ class ClientAnnounce extends ClientEvent { constructor(role: en.ClientRole, id: string = "") { super(en.EventTypes.clientAnnounce); this.role = role; + this.id = id; } } @@ -61,6 +79,7 @@ class EventInput extends ClientEvent { } export { - ServerEvent, EventAssignId, EventMatchmakingComplete, EventGameUpdate, + ServerEvent, EventAssignId, EventMatchmakingComplete, + EventGameUpdate, EventScoreUpdate, EventMatchEnd, ClientEvent, ClientAnnounce, EventInput } diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index aa135e14..0c9309c2 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -1,31 +1,34 @@ - +/* + No more shared. Dont know how to implemente this. + For the moment, this code is only used by the server. +*/ import * as c from "../constants.js" import {VectorInteger} from "./Vector.js"; import {Rectangle, Racket, Ball} from "./Rectangle.js"; - class GameComponents { wallTop: Rectangle; wallBottom: Rectangle; playerLeft: Racket; playerRight: Racket; ball: Ball; - constructor(ctx?: CanvasRenderingContext2D) + constructor() { let pos = new VectorInteger; pos.assign(0, 0); - this.wallTop = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); + this.wallTop = new Rectangle(pos, c.w, c.wallSize); pos.assign(0, c.h-c.wallSize); - this.wallBottom = new Rectangle(ctx, pos, "grey", c.w, c.wallSize); + this.wallBottom = new Rectangle(pos, c.w, c.wallSize); pos.assign(0+c.pw, c.h_mid-c.ph/2); - this.playerLeft = new Racket(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); + this.playerLeft = new Racket(pos, c.pw, c.ph, c.playerSpeed); pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); - this.playerRight = new Racket(ctx, pos, "white", c.pw, c.ph, c.playerSpeed); + this.playerRight = new Racket(pos, c.pw, c.ph, c.playerSpeed); - pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); - this.ball = new Ball(ctx, pos, "white", c.ballSize, c.ballSpeed); + // pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); // center the ball + pos.assign(-c.ballSize, -c.ballSize); // ball out =) + this.ball = new Ball(pos, c.ballSize, c.ballSpeed); this.ball.dir.assign(-0.8, +0.2); } } diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 8220dca0..5049403a 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -3,28 +3,14 @@ import {Vector, VectorInteger} from "./Vector.js"; import {Component, Moving} from "./interface.js"; class Rectangle implements Component { - ctx: CanvasRenderingContext2D; pos: VectorInteger; - color: string; width: number; height: number; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number) { - this.ctx = ctx; + constructor(pos: VectorInteger, width: number, height: number) { this.pos = Object.assign({}, pos); - this.color = color; this.width = width; this.height = height; } - update() { - this.ctx.fillStyle = this.color; - this.ctx.fillRect(this.pos.x, this.pos.y, this.width, this.height); - } - clear(pos?: VectorInteger) { - if (pos) - this.ctx.clearRect(pos.x, pos.y, this.width, this.height); - else - this.ctx.clearRect(this.pos.x, this.pos.y, this.width, this.height); - } collision(collider: Rectangle): boolean { // Collision WIP. To redo var myleft = this.pos.x; var myright = this.pos.x + (this.width); @@ -49,8 +35,8 @@ class MovingRectangle extends Rectangle implements Moving { dir: Vector = new Vector(0,0); speed: number; readonly baseSpeed: number; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number, baseSpeed: number) { - super(ctx, pos, color, width, height); + constructor(pos: VectorInteger, width: number, height: number, baseSpeed: number) { + super(pos, width, height); this.baseSpeed = baseSpeed; this.speed = baseSpeed; } @@ -69,23 +55,18 @@ class MovingRectangle extends Rectangle implements Moving { this.pos.x = oldPos.x; this.pos.y = oldPos.y; } - else - { - this.clear(oldPos); - this.update(); - } } } class Racket extends MovingRectangle { - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number, baseSpeed: number) { - super(ctx, pos, color, width, height, baseSpeed); + constructor(pos: VectorInteger, width: number, height: number, baseSpeed: number) { + super(pos, width, height, baseSpeed); } } class Ball extends MovingRectangle { - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, size: number, baseSpeed: number) { - super(ctx, pos, color, size, size, baseSpeed); + constructor(pos: VectorInteger, size: number, baseSpeed: number) { + super(pos, size, size, baseSpeed); } bounce(collider?: Rectangle) { /* Could be more generic, but testing only Racket is enough, @@ -98,7 +79,6 @@ class Ball extends MovingRectangle { } } moveAndBounce(delta: number, colliderArr: Rectangle[]) { - let oldPos = Object.assign({}, this.pos); this.move(delta); let i = colliderArr.findIndex(this.collision, this); if (i != -1) @@ -106,8 +86,6 @@ class Ball extends MovingRectangle { this.bounce(colliderArr[i]); this.move(delta); } - this.clear(oldPos); - this.update(); } private _bounceWall() { // Should be enough for Wall this.dir.y = this.dir.y * -1; @@ -119,54 +97,4 @@ class Ball extends MovingRectangle { } } -class Line extends Rectangle { - gapeCount: number = 0; - segmentCount: number; - segmentWidth: number; - segmentHeight: number; - constructor(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number, gapeCount?: number) { - super(ctx, pos, color, width, height); - if (gapeCount) - this.gapeCount = gapeCount; - this.segmentCount = this.gapeCount * 2 + 1; - - this.segmentWidth = this.width; - this.segmentHeight = this.height / this.segmentCount; - - // for Horizontal Line - // this.segmentWidth = this.width / this.segmentCount; - // this.segmentHeight = this.height; - } - update() { - this.ctx.fillStyle = this.color; - let pos: VectorInteger = new VectorInteger; - let i = 0; - while (i < this.segmentCount) - { - // for Horizontal Line - // pos.y = this.pos.y; - // pos.x = this.pos.x + this.segmentWidth * i; - pos.x = this.pos.x; - pos.y = this.pos.y + this.segmentHeight * i; - this.ctx.fillRect(pos.x, pos.y, this.segmentWidth, this.segmentHeight); - i += 2; - } - } -} - -export {Rectangle, MovingRectangle, Racket, Ball, Line} - -// How to handle const export in initGame ? -// example for class Rectangle -/* constructor(ctx?: CanvasRenderingContext2D, pos?: VectorInteger, color?: string, width?: number, height?: number) { - if (ctx && pos && color && width && height) - this.init(ctx, pos, color, width, height); -} -// constructor() {} -init(ctx: CanvasRenderingContext2D, pos: VectorInteger, color: string, width: number, height: number) { - this.ctx = ctx; - this.pos = Object.assign({}, pos); - this.color = color; - this.width = width; - this.height = height; -} */ +export {Rectangle, MovingRectangle, Racket, Ball} diff --git a/src/shared_js/class/interface.ts b/src/shared_js/class/interface.ts index 3670d48d..5fdb8315 100644 --- a/src/shared_js/class/interface.ts +++ b/src/shared_js/class/interface.ts @@ -3,10 +3,13 @@ import {Vector, VectorInteger} from "./Vector.js"; interface Component { pos: VectorInteger; - color: string; +} + +interface GraphicComponent extends Component { ctx: CanvasRenderingContext2D; - update(): void; - clear(): void; + color: string; + update: () => void; + clear: (pos?: VectorInteger) => void; } interface Moving { @@ -15,4 +18,4 @@ interface Moving { move(delta: number): void; } -export {Component, Moving} +export {Component, GraphicComponent, Moving} diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index b8602bcc..f014e9cd 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -13,3 +13,6 @@ export const ballSize = pw; export const wallSize = Math.floor(w/100); export const playerSpeed = Math.floor(w/1.5); // pixel per second export const ballSpeed = Math.floor(w/1.5); // pixel per second + +export const matchStartDelay = 3000; // millisecond +export const newRoundDelay = 1500; // millisecond diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts index 882193f9..1acf2219 100644 --- a/src/shared_js/enums.ts +++ b/src/shared_js/enums.ts @@ -2,13 +2,15 @@ enum EventTypes { // Class Implemented gameUpdate = 1, + scoreUpdate, + matchEnd, assignId, matchmakingComplete, // Generic matchmakingInProgress, + matchStart, matchNewRound, // unused - matchStart, // unused matchPause, // unused matchResume, // unused From 04203f4f9d392c34b936ad327c0b49bc6ed1ac49 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 21 Nov 2022 21:04:41 +0100 Subject: [PATCH 21/48] matchmaking OK --- src/server/class/GameSession.ts | 5 +-- src/server/gameUpdate.ts | 26 ------------ src/server/wsServer.ts | 71 +++++++++++++++++++++++---------- src/shared_js/class/Event.ts | 1 + 4 files changed, 52 insertions(+), 51 deletions(-) delete mode 100644 src/server/gameUpdate.ts diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index aaf7b611..0fba43bc 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -1,5 +1,4 @@ import { ClientPlayer } from "./Client"; -import {gameUpdate} from "../gameUpdate.js" import { GameComponents } from "../../shared_js/class/GameComponents.js"; import { clientInputListener } from "../wsServer.js"; import * as c from "../constants.js" @@ -106,8 +105,8 @@ class GameSession { private _newRound(s: GameSession) { const gc = s.components; // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches - if (gc.scoreLeft >= 11 - || gc.scoreRight >= 11) + if (gc.scoreLeft >= 11 || gc.scoreRight >= 11) + // if (gc.scoreLeft >= 2 || gc.scoreRight >= 2) // WIP: for testing { if (Math.abs(gc.scoreLeft - gc.scoreRight) >= 2) { diff --git a/src/server/gameUpdate.ts b/src/server/gameUpdate.ts deleted file mode 100644 index a7672922..00000000 --- a/src/server/gameUpdate.ts +++ /dev/null @@ -1,26 +0,0 @@ - -import {EventTypes} from "../shared_js/enums.js" -import {EventGameUpdate} from "../shared_js/class/Event.js" -import { random } from "../shared_js/utils.js"; // temp - -/* -import {Rectangle, MovingRectangle, Racket, Ball, Line} from "../shared_js/class/Rectangle.js"; -import { Vector } from "../shared_js/class/Vector.js"; -class CanvasRenderingContext2D {} // Empty object replacement to the web-API (web-API useless on server-side) -const mockCtx = new CanvasRenderingContext2D; - // @ts-ignore -const playerLeft = new Racket(mockCtx, new Vector(), "white", 1, 1, 1); - */ - -function gameUpdate() : EventGameUpdate -{ - const update: EventGameUpdate = { - type: EventTypes.gameUpdate, - playerLeft: {y: random(50, 650)}, - playerRight: {y: random(50, 650)}, - ball: {x: 0, y: 0, speed: 0} - }; - return update; -} - -export {gameUpdate} \ No newline at end of file diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index 54e5eddf..b20989cb 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -18,6 +18,7 @@ const wsPort = 8042; export const wsServer = new WebSocketServer({port: wsPort, path: "/pong"}); const clientsMap: Map = new Map; // socket.id/Client +const matchmakingPlayersMap: Map = new Map; // socket.id/ClientPlayer (duplicates with clientsMap) const gameSessionsMap: Map = new Map; // GameSession.id(url)/GameSession wsServer.on("connection", connectionListener); @@ -38,6 +39,13 @@ function connectionListener(socket: WebSocket, request: IncomingMessage) }); socket.on("message", function log(data: string) { + try { + const event: ev.ClientEvent = JSON.parse(data); + if (event.type === en.EventTypes.clientInput) { + return; + } + } + catch (e) {} console.log("data: " + data); }); @@ -50,8 +58,8 @@ function clientAnnounceListener(this: WebSocket, data: string) try { const msg : ev.ClientAnnounce = JSON.parse(data); if (msg.type === en.EventTypes.clientAnnounce) { - // TODO: reconnection with msg.id - // TODO: spectator/player distinction with msg.type + // TODO: reconnection with msg.id ? + // TODO: spectator/player distinction with msg.type ? this.send(JSON.stringify( new ev.EventAssignId(this.id) )) this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )) @@ -63,7 +71,7 @@ function clientAnnounceListener(this: WebSocket, data: string) return; } catch (e) { - console.log("Invalid JSON"); + console.log("Invalid JSON (clientAnnounceListener)"); } this.once("message", clientAnnounceListener); } @@ -71,25 +79,41 @@ function clientAnnounceListener(this: WebSocket, data: string) function matchmaking(socket: WebSocket) { - // TODO Actual Matchmaking - - // TODO: Only once - const id = uuidv4(); - const gameSession = new GameSession(id); - gameSessionsMap.set(id, gameSession); - - // TODO: Per player const player: ClientPlayer = clientsMap.get(socket.id) as ClientPlayer; - player.gameSession = gameSession; - gameSession.playersMap.set(socket.id, player); - gameSession.unreadyPlayersMap.set(socket.id, player); + if (matchmakingPlayersMap.size < 1) + { + matchmakingPlayersMap.set(socket.id, player); + return; + } + else + { + const id = uuidv4(); + const gameSession = new GameSession(id); + gameSessionsMap.set(id, gameSession); - player.racket = gameSession.components.playerLeft; - socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); + // for player + gameSession.playersMap.set(player.id, player); + player.racket = gameSession.components.playerRight; + socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.right) )); + // for opponent + const opponent: ClientPlayer = matchmakingPlayersMap.values().next().value; + gameSession.playersMap.set(opponent.id, opponent); + matchmakingPlayersMap.delete(opponent.id); + opponent.racket = gameSession.components.playerLeft; + opponent.socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); - socket.once("message", playerReadyConfirmationListener); - + // for both + gameSession.playersMap.forEach( (client) => { + gameSession.unreadyPlayersMap.set(client.id, client); + client.gameSession = gameSession; + }); + gameSession.playersMap.forEach( (client) => { + /* set listener last to be absolutly sure there no early game launch + (unlikely, but theoretically possible) */ + client.socket.once("message", playerReadyConfirmationListener); + }); + } } @@ -109,12 +133,12 @@ function playerReadyConfirmationListener(this: WebSocket, data: string) } } else { - console.log("Invalid PlayerReady confirmation"); + console.log("Invalid playerReadyConfirmation"); } return; } catch (e) { - console.log("Invalid JSON"); + console.log("Invalid JSON (playerReadyConfirmationListener)"); } this.once("message", playerReadyConfirmationListener); } @@ -130,11 +154,11 @@ export function clientInputListener(this: WebSocket, data: string) client.gameSession.handleInput(client as ClientPlayer, input.input); } else { - console.log("Invalid EventInput"); + console.log("Invalid clientInput"); } } catch (e) { - console.log("Invalid JSON"); + console.log("Invalid JSON (clientInputListener)"); } } @@ -146,6 +170,9 @@ const pingInterval = setInterval( () => { if (client.isAlive === false) { client.socket.terminate(); map.delete(key); + if (matchmakingPlayersMap.has(key)) { + matchmakingPlayersMap.delete(key); + } console.log("%i: client %s is no more :'(", Date.now(), key); return; } diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 3d27ebb6..ec214460 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -48,6 +48,7 @@ class EventMatchEnd extends ServerEvent { winner: en.PlayerSide; constructor(winner: en.PlayerSide) { super(en.EventTypes.matchEnd); + this.winner = winner; } } From 2b9058ad499ac5b536a1307c49db35e9ed0f9c99 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 22 Nov 2022 00:06:07 +0100 Subject: [PATCH 22/48] audio + client prediction --- src/client/audio.ts | 12 ++++++++++++ src/client/class/RectangleClient.ts | 10 ++++++++++ src/client/constants.ts | 2 ++ src/client/gameLoop.ts | 3 ++- src/client/handleInput.ts | 13 ++++++------- src/client/pong.ts | 5 +---- src/client/ws.ts | 8 ++++++++ src/server/server.ts | 5 ++++- src/shared_js/class/Rectangle.ts | 10 ++++++++-- www/sound/pong/0.mp3 | Bin 0 -> 5223 bytes www/sound/pong/1.mp3 | Bin 0 -> 4178 bytes www/sound/pong/10.mp3 | Bin 0 -> 5223 bytes www/sound/pong/11.mp3 | Bin 0 -> 5223 bytes www/sound/pong/12.mp3 | Bin 0 -> 5223 bytes www/sound/pong/13.mp3 | Bin 0 -> 5223 bytes www/sound/pong/14.mp3 | Bin 0 -> 5223 bytes www/sound/pong/15.mp3 | Bin 0 -> 5223 bytes www/sound/pong/16.mp3 | Bin 0 -> 5223 bytes www/sound/pong/17.mp3 | Bin 0 -> 5223 bytes www/sound/pong/18.mp3 | Bin 0 -> 5223 bytes www/sound/pong/19.mp3 | Bin 0 -> 5223 bytes www/sound/pong/2.mp3 | Bin 0 -> 5223 bytes www/sound/pong/20.mp3 | Bin 0 -> 5223 bytes www/sound/pong/21.mp3 | Bin 0 -> 5223 bytes www/sound/pong/22.mp3 | Bin 0 -> 5223 bytes www/sound/pong/23.mp3 | Bin 0 -> 5223 bytes www/sound/pong/24.mp3 | Bin 0 -> 4178 bytes www/sound/pong/25.mp3 | Bin 0 -> 5223 bytes www/sound/pong/26.mp3 | Bin 0 -> 5223 bytes www/sound/pong/27.mp3 | Bin 0 -> 5223 bytes www/sound/pong/28.mp3 | Bin 0 -> 4178 bytes www/sound/pong/29.mp3 | Bin 0 -> 5223 bytes www/sound/pong/3.mp3 | Bin 0 -> 5223 bytes www/sound/pong/30.mp3 | Bin 0 -> 5223 bytes www/sound/pong/31.mp3 | Bin 0 -> 5223 bytes www/sound/pong/32.mp3 | Bin 0 -> 5223 bytes www/sound/pong/4.mp3 | Bin 0 -> 5223 bytes www/sound/pong/5.mp3 | Bin 0 -> 5223 bytes www/sound/pong/6.mp3 | Bin 0 -> 4178 bytes www/sound/pong/7.mp3 | Bin 0 -> 5223 bytes www/sound/pong/8.mp3 | Bin 0 -> 5223 bytes www/sound/pong/9.mp3 | Bin 0 -> 5223 bytes www/sound/roblox-oof.mp3 | Bin 0 -> 9856 bytes 43 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 src/client/audio.ts create mode 100644 www/sound/pong/0.mp3 create mode 100644 www/sound/pong/1.mp3 create mode 100644 www/sound/pong/10.mp3 create mode 100644 www/sound/pong/11.mp3 create mode 100644 www/sound/pong/12.mp3 create mode 100644 www/sound/pong/13.mp3 create mode 100644 www/sound/pong/14.mp3 create mode 100644 www/sound/pong/15.mp3 create mode 100644 www/sound/pong/16.mp3 create mode 100644 www/sound/pong/17.mp3 create mode 100644 www/sound/pong/18.mp3 create mode 100644 www/sound/pong/19.mp3 create mode 100644 www/sound/pong/2.mp3 create mode 100644 www/sound/pong/20.mp3 create mode 100644 www/sound/pong/21.mp3 create mode 100644 www/sound/pong/22.mp3 create mode 100644 www/sound/pong/23.mp3 create mode 100644 www/sound/pong/24.mp3 create mode 100644 www/sound/pong/25.mp3 create mode 100644 www/sound/pong/26.mp3 create mode 100644 www/sound/pong/27.mp3 create mode 100644 www/sound/pong/28.mp3 create mode 100644 www/sound/pong/29.mp3 create mode 100644 www/sound/pong/3.mp3 create mode 100644 www/sound/pong/30.mp3 create mode 100644 www/sound/pong/31.mp3 create mode 100644 www/sound/pong/32.mp3 create mode 100644 www/sound/pong/4.mp3 create mode 100644 www/sound/pong/5.mp3 create mode 100644 www/sound/pong/6.mp3 create mode 100644 www/sound/pong/7.mp3 create mode 100644 www/sound/pong/8.mp3 create mode 100644 www/sound/pong/9.mp3 create mode 100644 www/sound/roblox-oof.mp3 diff --git a/src/client/audio.ts b/src/client/audio.ts new file mode 100644 index 00000000..42e01526 --- /dev/null +++ b/src/client/audio.ts @@ -0,0 +1,12 @@ + +import * as c from "./constants.js" + +export const soundPong: HTMLAudioElement[] = []; + +for (let i = 0; i <= 32; i++) { + soundPong.push(new Audio("http://localhost:8080/sound/pong/"+i+".mp3")); + soundPong[i].volume = c.soundPongVolume; +} + +export const soundRoblox = new Audio("http://localhost:8080/sound/roblox-oof.mp3"); +soundRoblox.volume = c.soundRobloxVolume; diff --git a/src/client/class/RectangleClient.ts b/src/client/class/RectangleClient.ts index e0e83133..ad5b3da4 100644 --- a/src/client/class/RectangleClient.ts +++ b/src/client/class/RectangleClient.ts @@ -2,6 +2,8 @@ import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; import {Component, GraphicComponent, Moving} from "../../shared_js/class/interface.js"; import { Rectangle, MovingRectangle, Racket, Ball } from "../../shared_js/class/Rectangle.js"; +import {soundPong, soundRoblox} from "../audio.js" +import { random } from "../utils.js"; function updateRectangle(this: RectangleClient) { this.ctx.fillStyle = this.color; @@ -87,6 +89,14 @@ class BallClient extends Ball implements GraphicComponent { this.update = updateRectangle; this.clear = clearRectangle; } + bounce(collider?: Rectangle) { + this._bounceAlgo(collider); + soundPong[ Math.floor(random(0, soundPong.length)) ].play(); + } + /* protected _bouncePlayer(collider: Racket) { + this._bouncePlayerAlgo(collider); + soundRoblox.play(); + } */ } function updateLine(this: Line) { diff --git a/src/client/constants.ts b/src/client/constants.ts index df5c8e68..c724e89a 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -8,3 +8,5 @@ export const gridSize = Math.floor(w/500); // min interval on Firefox seems to be 15. Chrome can go lower. export const gameLoopIntervalMS = 15; // millisecond +export const soundRobloxVolume = 0.3; // between 0 and 1 +export const soundPongVolume = 0.3; // between 0 and 1 diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index a6028ec3..04d4d846 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,3 +1,4 @@ +import {gc} from "./global.js"; import * as d from "./draw.js"; import {handleInput} from "./handleInput.js"; @@ -19,7 +20,7 @@ function gameLoop() handleInput(delta_time); // prediction - // gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); d.draw(); } diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index 9eef3dad..2e929042 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -27,24 +27,23 @@ function handleInput(delta: number) function playerMove(delta: number, keys: string[]) { - if (keys.indexOf("w") != -1) { + if (keys.indexOf("w") != -1 || keys.indexOf("ArrowUp".toLowerCase()) != -1) { socket.send(JSON.stringify(new EventInput(InputEnum.up))); } - if (keys.indexOf("s") != -1) { + if (keys.indexOf("s") != -1 || keys.indexOf("ArrowDown".toLowerCase()) != -1) { socket.send(JSON.stringify(new EventInput(InputEnum.down))); } // prediction -/* const racket = clientInfo.racket; + const racket = clientInfo.racket; racket.dir.y = 0; - if (keys.indexOf("w") != -1) { + if (keys.indexOf("w") != -1 || keys.indexOf("ArrowUp".toLowerCase()) != -1) { racket.dir.y += -1; } - if (keys.indexOf("s") != -1) { + if (keys.indexOf("s") != -1 || keys.indexOf("ArrowDown".toLowerCase()) != -1) { racket.dir.y += 1; } - racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); */ - + racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); } export {handleInput} diff --git a/src/client/pong.ts b/src/client/pong.ts index 2c9550d6..b1db0f1b 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -9,8 +9,7 @@ import {countdown} from "./utils.js"; import {socket} from "./ws.js"; socket; // no-op /* Keys - Racket 1: W/S - Racket 2: Up/Down + Racket: W/S OR Up/Down Grid On-Off: G */ @@ -42,7 +41,5 @@ function resumeGame() pong.interval = window.setInterval(gameLoop, c.gameLoopIntervalMS); } -///////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// export {matchmaking, matchmakingComplete, startGame} diff --git a/src/client/ws.ts b/src/client/ws.ts index b299d12f..8add7081 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -5,6 +5,8 @@ import {matchmaking, matchmakingComplete, startGame} from "./pong.js"; import * as en from "../shared_js/enums.js" import { Racket } from "../shared_js/class/Rectangle.js"; import { sleep } from "./utils.js"; +import * as c from "./constants.js" +import {soundRoblox} from "./audio.js" const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; @@ -88,6 +90,12 @@ async function gameUpdate(data: ev.EventGameUpdate) function scoreUpdate(data: ev.EventScoreUpdate) { + if (clientInfo.side === en.PlayerSide.left && data.scoreRight > gc.scoreRight.value) { + soundRoblox.play(); + } + else if (clientInfo.side === en.PlayerSide.right && data.scoreLeft > gc.scoreLeft.value) { + soundRoblox.play(); + } gc.scoreLeft.value = data.scoreLeft; gc.scoreRight.value = data.scoreRight; } diff --git a/src/server/server.ts b/src/server/server.ts index 5df88098..aa129cdb 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -23,9 +23,12 @@ const server = http.createServer((req, res) => { if (path.extname(filename) === ".html") { res.writeHead(200, {"Content-Type": "text/html"}); } - if (path.extname(filename) === ".js") { + else if (path.extname(filename) === ".js") { res.writeHead(200, {"Content-Type": "application/javascript"}); } + else if (path.extname(filename) === ".mp3") { + res.writeHead(200, {"Content-Type": "audio/mpeg"}); + } res.write(data); return res.end(); }); diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 5049403a..35352b70 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -69,6 +69,9 @@ class Ball extends MovingRectangle { super(pos, size, size, baseSpeed); } bounce(collider?: Rectangle) { + this._bounceAlgo(collider); + } + protected _bounceAlgo(collider?: Rectangle) { /* Could be more generic, but testing only Racket is enough, because in Pong collider can only be Racket or Wall. */ if (collider instanceof Racket) { @@ -87,10 +90,13 @@ class Ball extends MovingRectangle { this.move(delta); } } - private _bounceWall() { // Should be enough for Wall + protected _bounceWall() { // Should be enough for Wall this.dir.y = this.dir.y * -1; } - private _bouncePlayer(collider: Racket) { // WIP + protected _bouncePlayer(collider: Racket) { + this._bouncePlayerAlgo(collider); + } + protected _bouncePlayerAlgo(collider: Racket) { // WIP // Bounce for Racket need to be more complexe than this this.speed += this.baseSpeed/20; this.dir.x = this.dir.x * -1; diff --git a/www/sound/pong/0.mp3 b/www/sound/pong/0.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..14f66a64c99e54af01481d05ada57812563ff10e GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/10.mp3 b/www/sound/pong/10.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f70de101adb6def1201617d853908bcc01aee7c5 GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/11.mp3 b/www/sound/pong/11.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e64aa124ddb8ef7afd88769d4e5511e0cb16be2e GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/15.mp3 b/www/sound/pong/15.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8bee98e0ad0ade78be31c746850638365369190e GIT binary patch literal 5223 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 I|FZ}F2kZHq#sB~S literal 0 HcmV?d00001 diff --git a/www/sound/pong/17.mp3 b/www/sound/pong/17.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c78ff6f9a5a37e23d1ffd44f77cf77af034ef61e GIT binary patch literal 5223 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 C28O}_ literal 0 HcmV?d00001 diff --git a/www/sound/pong/19.mp3 b/www/sound/pong/19.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..884e9ec24fa6ac78d5cc5c0b58f0db80d87250a1 GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/2.mp3 b/www/sound/pong/2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5286a9fb55da8534c079a1d477ffd1640b840d1e GIT binary patch literal 5223 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 TgX;gre@^+Ij=$~yCkFlnCSHD7 literal 0 HcmV?d00001 diff --git a/www/sound/pong/20.mp3 b/www/sound/pong/20.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..16a10734d76d7cee793b49ab38ea16ab58e1573a GIT binary patch literal 5223 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 O=6~<{m&gA<1^ySiQ5p9D literal 0 HcmV?d00001 diff --git a/www/sound/pong/21.mp3 b/www/sound/pong/21.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3a7ab30d101e65e45c3775cf1450cd03b897e60e GIT binary patch literal 5223 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 SU$Xo!o$`OdSNwl`r2hgJIMoXP literal 0 HcmV?d00001 diff --git a/www/sound/pong/24.mp3 b/www/sound/pong/24.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..94d61a1221a0ff5d53a730cd1e3f39fc6262a495 GIT binary patch literal 4178 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 L`>JjG|2qCJAALkn literal 0 HcmV?d00001 diff --git a/www/sound/pong/25.mp3 b/www/sound/pong/25.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..0b724c0659aaada0188cd47769a0d9624bde48da GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/26.mp3 b/www/sound/pong/26.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..bb5518fb260600c631d12c8a4df3e321d5af1b4d GIT binary patch literal 5223 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 Ie}1C>0=d7?761SM literal 0 HcmV?d00001 diff --git a/www/sound/pong/27.mp3 b/www/sound/pong/27.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ebe5bdc1fd28fd4e3285b7dce2ffcab1f3015142 GIT binary patch literal 5223 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 ZPS#jyqY2z8H@p7}mHF@MiU0SW{|QzUx~KpE literal 0 HcmV?d00001 diff --git a/www/sound/pong/28.mp3 b/www/sound/pong/28.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2c265d0756d7a75b71da70ab7e0481510a7c0a5a GIT binary patch literal 4178 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 qZun$R#LG*`C4R&Aor%gCc_}CZUElY+` literal 0 HcmV?d00001 diff --git a/www/sound/pong/29.mp3 b/www/sound/pong/29.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7673dea9823d2acacd02441ccf20931ee40a7a73 GIT binary patch literal 5223 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 SqQ!4f|MQO&^$-4kIPh=71Ol1> literal 0 HcmV?d00001 diff --git a/www/sound/pong/5.mp3 b/www/sound/pong/5.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..50d7f57adb7bf302bf9f210fd556f9ec0586cdb0 GIT binary patch literal 5223 zcmeI0X;9Nw+s6M{31lIJfC(ba2D0j(Bw$2%n+*x8VY8rCNmyi2ih>neYqJpp1PqIq zfDf{73XNhFtF&P;0tSkJJEaJS+NyQovD&)4+L`D5@Xqwx`+npF9t zne*wek zO}C!KwoXRT3Rv`>R|lT|{#(>NvY%#fB!XTTgF6?-vFrKqiT%U>CUAL2C}tj|J`woJp^M9maCU*Cdbs6fqz|Y5P0ZR?aSz4n)~%T|Q-p?VoC& z46fk~v78)BqMF&mQ$tCyD6F z->&-Y;YwOwR=Z}p8w(s7(k*G=A-}m3Wx}zo?*mv*M zy{)yiwKMzfs2x1$c12NfP4BNtWC{G`_0u;ku1g7vl`ApCFF3cB_*xq);nf5TCLN6$ z2dNRkWQ_^Vx9lk74o>qUXmR>JjgwZz2ZqH|jOYyZ1v~Qgk%3m_=FV7QNO#u124L83 z++A2+B0X>f=9W6iJYgRXu!8A=mBidHFWU?8leFan)@XtJARUcR##FEzMk;oVM@uZT zR}uz%D`#?UbbPB1{L+wLqSq%^J8vUx(bPmC^kD^h@6_dt82z-1)7C%|URP}vkU%ZD z*2VxtR=c|!dg94aIth7@ya>^w;<14(@D6n}(iAJZB6bFpXiqmr*?L1Q|O0LA=CrSMk7<|rdk(5T13XqTg@R8iA98hzu9?Hi~@(kL=G+oH>KF0jo=h!ROGL5>v9d)n1PcBw*0 zAc`rh2A7(csO@l@=DQ%riUCp7(JuSFw1Sh@wEq9 zj##Y>(0MTAb^Nm*CvUJWL6lX_+Lc;?VqfNt8s8po-+Z*McPV%j?yHId7XV+;GAG9g zH%l7|`R&vf8=kw`4A}I?I*!lE)6KJ|@qik+Az%i~BZD$4CdmM^g7WQUfAE+p_=y34 zhphZvpx++pS+#AEH%4ETN5`$UvRY>CT`B{`7tJD{rqj+$GZ{@GoKvK ztPT3$>#NZ_A!7*(%7B{Q16AhF+y3&pvxxj~k5}(y|Cal!uGJWRGP(i)ET70><~j** zm zqIsbCa(jyNxEMe2EdmM;f1$vg>FVpl)InU8Eu$z1W6*VyyOvZoZbmZnv+(Djw7ANd zhqCC21~4V!B_dDVBr?ldNu-kpo!othCJ1y+n?X$;s`eIkBvQ48x@d|<2^mspCTv&Z zDwB0k)G|_~HD7K`F}~cir)q=ARV{dhkAH+zx&<6;z_-nM?~Kq@OEy?xH!ht6@5*?W zAOPP>XLfT(QR>TWEa9gLPCO~Jx#*%-Cq=vdga|?^xxmyC#5nae1!t%bovCXQZj*}p zP>DsW^-0*dUtApP@AMxmfgt>z^aMMAD~sc{%g@fy#wh%Gnl%If3g8zDlp(T6l8(zQ zB^XpTWG4rbfg;l^1=_$OO``qa=Sy`Ph?@V3Lpeo zx24G@qHO{if%^B3_&h`fbwl~dp~WXqE(QiRVBE*Wj4=>$#Yn`qYWS|BLErk7kpQrc z6ji`spe#grQ-2-3-=vn{QEJ#MDFLE{a_KIpSQTgR5PMbwF^nc-EQvAUlx#JztSlgl zuCOCtg#ea{Tv6Ubm@8$Kx2|4J1Ms*s$)eK{{tDDICPxC0Q42%pfRu0&9LauKPQyu4 zwN)t#rE7C#D{)_&#+QEx1wQ2MZu}p%Szec7`7Vb?Q_1j`{TPGI8o1LnHm_!-b)9nENI(d%)p;||g zl|ZpZjA-2Et$mo}bW(YccMw#80(Z6IW6PEdvO|OG zJ7VCb;ie&Z`Q8X*#e-6~=Vl0WQIgsNdO<*T`-8QWbM}|3s<9y7P~)o`woA)QkFhM* zsd&=q=oXB$@G^`@IwkJ~W(Otq!s5LhI#^A%ZoBK$HJBabA%Lb_okwxU{$wN`N zBSVN|Pv#o=B)Vr06`y5Oh#O8%q}W?7^l`eId*K+85#lS??I&>K?3%QnYoBS$6;P=l z!kQt{+@sG_Ens=q#42PFHPlK=5s_B6E6Dqn)%nTm<&#hc=}6oO?i`nj;<_D$K`RYm zXOg+mC|P~G`5_+s-BhG*hwyXtXi#$Kd%+UE`wz9P!NaC(G+ zGRx5=wBhT33Wkbx7!o}&ALq-P3d@r?3ni&iXGfU<#FCslcIX?M2%;qnf949eL#J-+e#WO#SS1l=OJnsxe6s7nTof*N%{ z)72&>+%HhF&y92z$-ABhJ<(Z)^by7dvn?t0MJQzXX%JN0C z?AZk>J+{VNO3LEzaFjQXtqA<3i3(#NW@Kr?^dXy@A7ej+!l%j$U4$9iEZ5*Se0;>~ z?KkX;Q?f1ytJ|BXwI>^RRXIhMzM;?;`#jR;JL-_#wdLXs?Rr!J>`9~&Rr{+ZD`xY zDkcR^3v-mI(C6}!gEUJz;KW2@B+MKpgW5`2Hy>sk9MweDnb;rgvr3UNcOs?JyZtu_ zvXk?gR)O{i(ynR0E9E+3ZnbWYXJAU3_=;|m%QXXsd_ z=f zYki_+C8paHWxL+Ty2+!Z?C7gQT-q};P;F_`zObC)GaP$vF>dFNU07b%m86Bok#Y>f zupc1RyH00pgbaDK7YuzPq%=w;9fX+<80UK>u~ErV*6B4^J6%D|zSN^x;XrYKh^TlZlbRIG#aA6J>TMf-Jbmkb{-8Sk J;r~v7{{|(WR9^r9 literal 0 HcmV?d00001 diff --git a/www/sound/pong/6.mp3 b/www/sound/pong/6.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..dd3b16eb088543ef1156f1a7f3f4f412d42d108e GIT binary patch literal 4178 zcmeHJYfzKt68=7NB?Jifj|iMZh$001LV^OKCtQMn0Ruq+MNPs*P!tetEA{e)L~aJl zCD2f-0t$jv37{ZIB?JV-fGAb0U>guPO3_2DMNviy&h-2^GiRLsI6pe$GxN^Av%53z z&a?aO?)*D#2k_qr*c+F$pfg-JC;%XZ0-HXD3m?P$$FT60JJ&0S!*piAFxdNNNT&04 z7)vhzWG}{H8y}PMr{Rk1p!KHwj#ITIV!_5*e0Gp!__fSQ*16oioT;dooG!VI(;g~{S>c4F9bY-Fn(8H%y4vjf&LO|Y5w696T%Glmh!$}q+c zjfdhrg<2&Z?q*X8aS{#79L}?M1L{;1CWwUeCPH|;F!@%NZ=9{6A`I(~X8`?O?N2OF zM8XOtsL*h1t#O%1B~DKv4HWU-KziW#Zu+;{5Xx?yq zN$$YVoptl`?|-Y=c-r*UtC@Eh(2)zFfi!tBeD3`D#z*pk>{!~`54bV1F{!!T;OP7> zM7pr|Uc{S`5iR!Ud*Omu$iKn#^t_>=q0Pb-UAcziAWVCoK`7Wk!Wy^TwtR>j+IA#ZzVaw{z*Gd4@)B%5l7*w z&s@6C;t_RjQ+e5zO%eoUD3|!DB$%(6yH)q+JRt@9DKw!68RHb`Yrr7>@{SP5!N7(q z#Q6YucsM%!6?R3L9U#oukgi4mTZg`A8i-BKZL|FKi>*1) z#gRLAX@={zrk#F#eCFVm>+{a%bHXwkGx#C9$OosYM;k8G-j;x^`LRfs-OdPliX3Roa6<*bd+pS82ep0qq23>C0%*FSuE;t<}r1ke8_T+i|X z2$4-eppHj!#-NCNW`(UjJ73Fc(|Yz-#B@+#e=J(!XDm6^$T88Me>d9U54bn1bUye3 z!R6f?wOykGc+s_O0(&i2Uk3Q0r4!*_cj~3DNKmlL_4`>7XmWfbJeLULSDT+VpeiKgk5l6|5{tk;m)d>$g9_4|Gii9>#qk+ zcct;(^u*SEN80L~x-^koyw#@KA?MNQlk$J&Sy}asZG1b~p^Y>B8ab+Y9c*IRvwOcI=_0y zGkErytjRs@4dJy&MFDWj5xa7)X04HQq(rREM<``dorqeBD366D%N#K}S|f>gB!MW< z)tDJ+Tn&jP7%s+2&EcSl6Hx>!EICGUp$!#7?WS_dc?X8gb)8lA_#TNS%8ghcI@^f` zO8fxh?E;dC1(jrOZ)X&tE<46Eu?8^~cr}-j>riqfb`u+@u5+Vv;VraEPgZpfkW=32 zh8792VPqkA={_75$>N7utDx=^{CK#0NZuGjBjmDm)Dm_E z7LUb5jyH!UT*mrsp`ved=xlLa%;C*X3=H`qH;MEEK={V3NSHE3HulT|^DslKmIiTbb_ARDt7EXchQFGDR zI^IV9XtW2BjwN{zFoDKYGpkLjd^SeY8&d+*`T zv2?%xY_uQSkN=kT#ijtD-Yz9|to^XCvyg=u1jv48t_^RQ-^N$_Xy!~=f!#k;QiQ_~ zWQDHTGTt^OBdW_Q1u>GSI=}&2GI#30sxn#oK)&fC>t*B9Uj~`8v4KiG_G|HlD`uJ#nOQY`<$2a}l{UR+(21Dld+>AZo3&SH$Aq{n=qyPb6Ep|UFn>DBSuUJfHj z*+pTd%hPx6UsVyFWzk(G<4f6%a+LR zz_6j@9(4t0G(5DSZnTXXFzFroU)hY3{8wxEuloNjOaD{Q|BHb?0NZgRzW@LL literal 0 HcmV?d00001 diff --git a/www/sound/pong/7.mp3 b/www/sound/pong/7.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a721426b8a8639e5fe002e2139c3a1b6537cdfca GIT binary patch literal 5223 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 Y#=2U9f#A{p9{+h0zt8^c{>vipFWd!k8UO$Q literal 0 HcmV?d00001 diff --git a/www/sound/pong/8.mp3 b/www/sound/pong/8.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a0a6d9071a8cc7545d0f69b895279e6678e0bfd2 GIT binary patch literal 5223 zcmeH~dr*_tw!ptHFG2{AkN_b(OhSxEd3;F#!$VDY86`jvP(;*xgr}$k#0pf;$%_ym zVnD#CC@)2{dW+(%&{iAXDj*G5B}Q!iojnH_+N>@!oO<5vXVKf{e8f8Ww?2Cxe?%u@i}{U z^KOrX3~pTR_BQbO4}RfRTtzjn*ehhkufeTdfwg}G_%Gtzj3*OydpvbNM(j&kXFKuJ zieLR+F6(GAMrUj!I9i9_<}r;=Yg$Z?M_26+7CkdPn_E*S;@~*!N4IU=>&3PQFD?J2 z=GXbTii^=JHbRAkL&Dyaz{;gI!S~KQe-(dnIL2+(|4GPDGZ(P4#$V$VB>khaqyK(P z2bULBaNA?2SJ@y2lO=YBjRl9DZam85R@S2jwvq2188jnponYFwjJ%<=*`<~Bi|=nw zyxS%=Z(pJ+H@kRI1^nFIr!L=TO{E_m3CJQXt?DyLh*~Tr*_XQ9A?s#fLkuh3>rhCg zbo@|R&otlN5{uVFa6H}*%#a+)hc|QCos$F269jcam7=HB)y{AxLweq_N@$K)WVjiF zurCL6LGEl`O&>gGqZ#HnLWYoTiQh71#fOdgzcspAjBgVB`2LULFN$Ut-j9aNEi8=U zR~F44E1DXa-Q2KZDmM1m7a!HV3n6o(pX8IpN3K^Nu*nUYpP#S!hygBLxllBFw77W9 znkWifI$OGI^RfC6XjRyt{9~Gc$RyZcl05qo8s9z_KAsH473_4HN`sEMs=#R`bduI9 zkUK*^ICYQ|rBIP2i2AB5m+finp6qpM89wkcm)|*lFU$gCtv3a{ zeKR09Ap8k`oJdhjg-H%Zpiq^0P<30u)4Ih!Bx8&W53Gqp6pT2 zN-SApKHz{m40y-80wpA5j12s4q-VyiGI|Ax10_*u?8f>Ydc31b*%$!HrMY+{LUU>( zr9Ms4lRDsvx$s&Whd^VU;WeoWr~RP}K4Q}IrRl4}$7^Sgvf2lFA3B|@-8B2f;d|wC zU75RWe}0Pn+;gZQ%5v;_>I>3OyWV}vf4@p{w=9LRsCawlxm8c{`!jDWv50IUvpdhM zWM1-*MXdPt-Q@2F&(6FXt@-BG-l@R~w-w$2% zmHMzpT)6>Z3%t7NiJ3MlHh`RQ6&z)=9Jmg&Iq0}ADLNq8?@QM(E7=>U+X9KvCqNdK zJAu?RKkMLL_q;6bn+48THq_|DeVGj9F9`~~#BKkcqu*^q!HdF1`jUsUQ>^K(I)4lv zMHo(_55Jd<++TP%-503(qtc4u`itCleGgsm{J|UFVIxK_*@*VofZJg@}+`nTl0e? zcZy*dMm~n+!5)PfxcaTxG8jvi-0_fz88D41ff?D&mouTSVZ9P=PlhF%aiFM3Y`s^2 zhp{>?4sVaedt2xfiTh?UbiFosFKaR60}@JE%Lz2PsnH>K5w=O*1eVYaxM|J?w@VTb zQHEP@ir-xxH!~;lCR68coEo|iSA1{x!)0InJg^CVRbOLlz>nOy6ye=^vNW&x+NH&Q zXj*yHODo+>Ed9E(IseVQYhR3>Ar9T-PV74VL$lw7dEWhVt5-$2U5tCBzjJQg-zlGO zaBjIysY%w%njh}+zHwI<*>of>>E`*my61a#L~f7nyO_#8hG|H>FTpRz2?mYLOx0th=OOkDbWmGH4=;UmF?W3Ft4a>V*_u{POS=D2Ag#pgb(~j8Q8b{2jTG zC)I8Fnf%y9adD zdv)WY|KMBZh`oyBYm1pl5>&KS>6Stj%DmM<{mnvYAkez6?`o?sA*~w+{8%1Z6<%6} z>UX+>m37h+MfCXSd#t8%HM7>ktR5HG70u8PS!%{D3m>(0BlB#I(m!g!WY-PzP6+1Of;&$hY_@M`ihM>%Fr$D9f^Ti zl=CC!ys9B9lu^;gAu62{*7e+S^s=8o5ViXw79ukw&rXD`SZ~r-Ju@61^~Db-3cr0K zxnaM-$5g4az_c7Rk ze3YeDAu=Xe3cB6=ER@Dn05JhTDpn8^e$RnxqAF2Q$LY`GYPtQPQYm>t*8OjH08lET1zUfSLNtxkLYMh`v zkYF<71Gjd&p%Vb&@A9x>%pQAh$-+7U7K&jE{r5mN_) z^?DMC4im-}~M{JYOYq8Z+yIKor=)#09PdXTy-U{4lZ(;Bvz4T&Qb}b@#J_Z8% zE2>+e)KEMEXUGSUga?*uR5Sh7^x)B*v5_Q%_<9-cppX0UEzRPG-FzXBn5{H{w5Z?R zU4pb~5L=Lo+ULfotZY<+m5_aq-b?|o2!TTHgn&x`2Jt0R7_PF^AT1~;Fp94*`_V%? zX?7GJ>jeIBqv+rp9yG^HOFrd*5Ou{{Ub6|=#~`2=*e6Q(6&7+Zt_Dl?Q0LXT!07XE zqw;E>8ebVNGhd1IDPKYP4Z%RHL6|1cXkw=tsM_h5U8Y02B7SlrF8&>-=0uEz<1pba z{BVlL73-*on@r{)7#&95}cYf%#$z$uW zkuy2;(T`m_7$tyE%s>>L-RQ_%?{81CM!qHoZ^utIW&5Dn?^3^bmD6uDt_ zNRmhykpOz^_?lmclIq8n$;VZ;IgPSW>*!XYAbkM!6kFgBvTdvcNs|O%6wLvpqdAyR zjAusNNyIb~j4HR85YeLFR?JU%CqxAu#VBp)iEG8$@l-*nEBz?4mITPcyLTg;k!u>1 zgexlAo($u>D6M)i$jU;0k4?J8r{-C18@mEr521=%wjMT!_2nSw%sh0}vCuQL4vSge zdYEs(zqnGuRuGO|=$ZaXdC%iYQW)>0h~TO7ePv>@kI6y@f=tJaN=0LUB^n)?8Jek< zONru8$}E-(-KmvO2#XmEmj{Ul{6 zO(IwM2ntwU2~QEtX@DOu0~_~sL1p+q{zkAzSqLsJy+1ZbJPqCta4HhJ^9bf zd;0$fpNay2{BW6Ia{bp7@AvWdiQrCs8E&CN*F9H;HlUmP1VQ_~RZ;E=6_NP-hVfzkaa8S}UTGkb>d3j*yfNOv%(x zeYRGw%oG@B;Q*9y51G|;ulrV5f=7dcVRMArT z{(eQ?OSi|L_)WAP@&WpEXgi8S){!HFjf;)S*21?2su$W_M^RCE18P`cL3~VCJ2wW7#n1 zF4>dLuLrVLW8J9`KJa4H&2Eij0byechR~x#BesSDEU3%i*^~if>!}p`62~%yA+$B? zTHL4gYPDU7FUhX9{Vtgs{?2FC>6^OaMr6#XJx`yt51mH(v|+94_j`c3o0e<{6Vc|F z5s`ewFyFsNBizQr4=?o}5)3Gm!?K!ez8FigfKa0D2?yeq41@A;c}7aA1Wru+PnswG J#s9+y{1e~z2T=e3 literal 0 HcmV?d00001 diff --git a/www/sound/pong/9.mp3 b/www/sound/pong/9.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..795555305999f95e6eab1701c253ef30adfef80e GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/www/sound/roblox-oof.mp3 b/www/sound/roblox-oof.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..79bd139cc0edcf2d0934b84729e82d389c11d476 GIT binary patch literal 9856 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 W{|V<`IRAg-nIUwJ)%-tZ#D4?UO$xC9 literal 0 HcmV?d00001 From 7d5895a6cc97c2bfb76745b2d07d16a42c1c1c90 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Wed, 23 Nov 2022 10:43:12 +0100 Subject: [PATCH 23/48] server reconciliation OK (a little rubberbanding) --- src/client/class/GameArea.ts | 6 +-- src/client/constants.ts | 6 ++- src/client/gameLoop.ts | 5 +- src/client/handleInput.ts | 88 ++++++++++++++++++++++++++++----- src/client/pong.ts | 4 +- src/client/ws.ts | 14 ++++-- src/server/class/Client.ts | 4 +- src/server/class/GameSession.ts | 9 +++- src/server/wsServer.ts | 2 +- src/shared_js/class/Event.ts | 5 +- 10 files changed, 110 insertions(+), 33 deletions(-) diff --git a/src/client/class/GameArea.ts b/src/client/class/GameArea.ts index 6831e8d6..96e1bfc8 100644 --- a/src/client/class/GameArea.ts +++ b/src/client/class/GameArea.ts @@ -2,12 +2,12 @@ import * as c from ".././constants.js" class GameArea { - keys: string[]; - interval: number = 0; + keys: string[] = []; + handleInputInterval: number = 0; + gameLoopInterval: number = 0; canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; constructor() { - this.keys = []; this.canvas = document.createElement("canvas"); this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; this.canvas.width = c.CanvasWidth; diff --git a/src/client/constants.ts b/src/client/constants.ts index c724e89a..ae6ecb66 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -7,6 +7,8 @@ export const scoreSize = Math.floor(w/16); export const gridSize = Math.floor(w/500); // min interval on Firefox seems to be 15. Chrome can go lower. +export const handleInputIntervalMS = 15; // millisecond export const gameLoopIntervalMS = 15; // millisecond -export const soundRobloxVolume = 0.3; // between 0 and 1 -export const soundPongVolume = 0.3; // between 0 and 1 + +export const soundRobloxVolume = 0; // between 0 and 1 +export const soundPongVolume = 0; // between 0 and 1 diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 04d4d846..4e069d5f 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,6 +1,5 @@ import {gc} from "./global.js"; import * as d from "./draw.js"; -import {handleInput} from "./handleInput.js"; let actual_time: number = Date.now(); let last_time: number; @@ -17,9 +16,7 @@ function gameLoop() actual_time = Date.now(); delta_time = (actual_time - last_time) / 1000; - handleInput(delta_time); - - // prediction + // client prediction gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); d.draw(); diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index 2e929042..0bee1aef 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -1,13 +1,42 @@ import {pong, gc, clientInfo} from "./global.js" import * as d from "./draw.js"; import { socket } from "./ws.js"; -import {InputEnum} from "../shared_js/enums.js" -import {EventInput} from "../shared_js/class/Event.js" +import * as ev from "../shared_js/class/Event.js" +import * as en from "../shared_js/enums.js" export let gridDisplay = false; -function handleInput(delta: number) +let actual_time: number = Date.now(); +let last_time: number; +let delta_time: number; + +class InputHistory { + input: en.InputEnum; + inputId: number; + deltaTime: number; + constructor(input: en.InputEnum, inputId: number, deltaTime: number) { + this.input = input; + this.inputId = inputId; + this.deltaTime = deltaTime; + } +} + +const inputHistoryArr: InputHistory[] = []; +let id = 0; +/* idMax should be high enough to prevent duplicate "id" in "inputHistoryArr". +In theory a little more than (1000/handleInputIntervalMS) should be enough. */ +const idMax = 999; // 999 arbitrary + +function handleInput() { + console.log("handleInput"); + last_time = actual_time; + actual_time = Date.now(); + delta_time = (actual_time - last_time) / 1000; + if (id > idMax) { + id = 0; + } + var keys = pong.keys; if (keys.length == 0) return; @@ -22,28 +51,63 @@ function handleInput(delta: number) gridDisplay = !gridDisplay; pong.deleteKey("g"); } - playerMove(delta, keys); + playerMove(delta_time, keys); } function playerMove(delta: number, keys: string[]) { - if (keys.indexOf("w") != -1 || keys.indexOf("ArrowUp".toLowerCase()) != -1) { - socket.send(JSON.stringify(new EventInput(InputEnum.up))); + if (keys.indexOf("w") !== -1 || keys.indexOf("ArrowUp".toLowerCase()) !== -1) { + if (keys.indexOf("s") === -1 && keys.indexOf("ArrowDown".toLowerCase()) === -1) { + const input = new ev.EventInput(en.InputEnum.up, ++id); + inputHistoryArr.push(new InputHistory(input.input, input.inputId, delta)); + socket.send(JSON.stringify(input)); + playerMovePrediction(delta, input.input); // client prediction + } } - if (keys.indexOf("s") != -1 || keys.indexOf("ArrowDown".toLowerCase()) != -1) { - socket.send(JSON.stringify(new EventInput(InputEnum.down))); + else if (keys.indexOf("s") !== -1 || keys.indexOf("ArrowDown".toLowerCase()) !== -1) { + const input = new ev.EventInput(en.InputEnum.down, ++id); + inputHistoryArr.push(new InputHistory(input.input, input.inputId, delta)); + socket.send(JSON.stringify(input)); + playerMovePrediction(delta, input.input); // client prediction } +} - // prediction +function playerMovePrediction(delta: number, input: en.InputEnum) +{ + // client prediction const racket = clientInfo.racket; racket.dir.y = 0; - if (keys.indexOf("w") != -1 || keys.indexOf("ArrowUp".toLowerCase()) != -1) { + if (input === en.InputEnum.up) { racket.dir.y += -1; } - if (keys.indexOf("s") != -1 || keys.indexOf("ArrowDown".toLowerCase()) != -1) { + else if (input === en.InputEnum.down) { racket.dir.y += 1; } racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); } -export {handleInput} +function repeatInput(lastInputId: number) +{ + // server reconciliation + let i = inputHistoryArr.findIndex((value: InputHistory) => { + if (value.inputId === lastInputId) { + return true; + } + return false; + }); + + // console.log("repeatInput, lastInputId = " + lastInputId); + // console.log("repeatInput, before splice up to index " + i); + // console.log(inputHistoryArr); + + inputHistoryArr.splice(0, i+1); + + // console.log("repeatInput, after splice"); + // console.log(inputHistoryArr); + + inputHistoryArr.forEach((value: InputHistory) => { + playerMovePrediction(value.deltaTime, value.input); + }); +} + +export {handleInput, repeatInput} diff --git a/src/client/pong.ts b/src/client/pong.ts index b1db0f1b..b3e76040 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -5,6 +5,7 @@ import {gameLoop} from "./gameLoop.js" import * as c from "./constants.js" import { GameComponentsClient } from "./class/GameComponentsClient.js"; import {countdown} from "./utils.js"; +import {handleInput} from "./handleInput.js"; import {socket} from "./ws.js"; socket; // no-op @@ -38,7 +39,8 @@ function resumeGame() window.addEventListener('keyup', function (e) { pong.deleteKey(e.key); }); - pong.interval = window.setInterval(gameLoop, c.gameLoopIntervalMS); + pong.handleInputInterval = window.setInterval(handleInput, c.handleInputIntervalMS); + pong.gameLoopInterval = window.setInterval(gameLoop, c.gameLoopIntervalMS); } diff --git a/src/client/ws.ts b/src/client/ws.ts index 8add7081..4fe1019a 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -3,10 +3,11 @@ import {pong, gc} from "./global.js" import * as ev from "../shared_js/class/Event.js" import {matchmaking, matchmakingComplete, startGame} from "./pong.js"; import * as en from "../shared_js/enums.js" -import { Racket } from "../shared_js/class/Rectangle.js"; +import { RacketClient } from "./class/RectangleClient.js"; import { sleep } from "./utils.js"; import * as c from "./constants.js" import {soundRoblox} from "./audio.js" +import { repeatInput } from "./handleInput.js"; const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; @@ -15,7 +16,7 @@ const socket = new WebSocket(wsUrl, "json"); class ClientInfo { id = ""; side: en.PlayerSide; - racket: Racket; + racket: RacketClient; } export const clientInfo = new ClientInfo(); @@ -24,7 +25,7 @@ socket.addEventListener("open", (event) => { socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, clientInfo.id) )); }); -socket.addEventListener("message", logListener); +// socket.addEventListener("message", logListener); // for testing purpose socket.addEventListener("message", preMatchListener); function logListener(this: WebSocket, event: MessageEvent) { @@ -48,6 +49,7 @@ function preMatchListener(this: WebSocket, event: MessageEvent) { else if (clientInfo.side === en.PlayerSide.right) { clientInfo.racket = gc.playerRight; } + clientInfo.racket.color = "darkgreen"; // for testing purpose socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); matchmakingComplete(); break; @@ -65,6 +67,7 @@ function inGameListener(event: MessageEvent) switch (data.type) { case en.EventTypes.gameUpdate: console.log("gameUpdate"); + // setTimeout(gameUpdate, 1000, data as ev.EventGameUpdate); // artificial latency for testing purpose gameUpdate(data as ev.EventGameUpdate); break; case en.EventTypes.scoreUpdate: @@ -78,14 +81,15 @@ function inGameListener(event: MessageEvent) } } -async function gameUpdate(data: ev.EventGameUpdate) +function gameUpdate(data: ev.EventGameUpdate) { - // await sleep(1000); // artificial latency for testing purpose gc.playerLeft.pos.y = Math.floor(data.playerLeft.y); gc.playerRight.pos.y = Math.floor(data.playerRight.y); gc.ball.pos.x = Math.floor(data.ball.x); gc.ball.pos.y = Math.floor(data.ball.y); gc.ball.speed = Math.floor(data.ball.speed); + + repeatInput(data.lastInputId); // server reconciliation } function scoreUpdate(data: ev.EventScoreUpdate) diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index e6fcfd1d..c244e495 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -6,12 +6,12 @@ import { GameSession } from "./GameSession.js"; class Client { socket: WebSocket; id: string; // Pas indispensable si "socket" a une copie de "id" - isAlive: boolean; + lastInputId: number = 0; + isAlive: boolean = true; gameSession: GameSession; constructor(socket: WebSocket, id: string) { this.socket = socket; this.id = id; - this.isAlive = true; } } diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index 0fba43bc..317412a9 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -50,8 +50,11 @@ class GameSession { clearInterval(s.gameLoopInterval); clearInterval(s.clientsUpdateInterval); } - handleInput(client: ClientPlayer, input: en.InputEnum) { + handleInput(client: ClientPlayer, inputEvent: ev.EventInput) { const gc = this.components; + const input = inputEvent.input; + client.lastInputId = inputEvent.inputId; + client.racket.dir.y = 0; if (input === en.InputEnum.up) { client.racket.dir.y += -1; @@ -96,9 +99,11 @@ class GameSession { type: en.EventTypes.gameUpdate, playerLeft: {y: gc.playerLeft.pos.y}, playerRight: {y: gc.playerRight.pos.y}, - ball: {x: gc.ball.pos.x, y: gc.ball.pos.y, speed: gc.ball.speed} + ball: {x: gc.ball.pos.x, y: gc.ball.pos.y, speed: gc.ball.speed}, + lastInputId: 0 }; s.playersMap.forEach( (client) => { + update.lastInputId = client.lastInputId; client.socket.send(JSON.stringify(update)); }); } diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index b20989cb..922979ae 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -151,7 +151,7 @@ export function clientInputListener(this: WebSocket, data: string) const input: ev.EventInput = JSON.parse(data); if (input.type === en.EventTypes.clientInput) { const client = clientsMap.get(this.id); - client.gameSession.handleInput(client as ClientPlayer, input.input); + client.gameSession.handleInput(client as ClientPlayer, input); } else { console.log("Invalid clientInput"); diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index ec214460..da0da306 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -29,6 +29,7 @@ class EventGameUpdate extends ServerEvent { playerLeft = {y: 0}; playerRight = {y: 0}; ball = {x: 0, y: 0, speed: 0}; + lastInputId = 0; constructor() { // TODO: constructor that take GameComponentsServer maybe ? super(en.EventTypes.gameUpdate); } @@ -73,9 +74,11 @@ class ClientAnnounce extends ClientEvent { class EventInput extends ClientEvent { input: en.InputEnum; - constructor(input: en.InputEnum = 0) { + inputId: number; + constructor(input: en.InputEnum = 0, inputId: number = 0) { super(en.EventTypes.clientInput); this.input = input; + this.inputId = inputId; } } From 3474d54a2b2a780d7aa097ce320c18695738b1b1 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 24 Nov 2022 13:56:51 +0100 Subject: [PATCH 24/48] drawing now seperate from gameLoop + refactoring + added soundMutedFlag --- src/client/audio.ts | 8 +++-- src/client/class/GameArea.ts | 1 + src/client/class/GameComponents.ts | 4 +-- src/client/class/GameComponentsClient.ts | 6 ++-- src/client/class/InputHistory.ts | 15 +++++++++ src/client/class/RectangleClient.ts | 8 ++--- src/client/class/Text.ts | 4 +-- src/client/constants.ts | 8 +++-- src/client/draw.ts | 15 ++++++--- src/client/gameLoop.ts | 6 ++-- src/client/global.ts | 2 +- src/client/handleInput.ts | 41 ++++++------------------ src/client/pong.ts | 13 ++++---- src/client/ws.ts | 24 +++++++------- src/server/class/Client.ts | 4 +-- src/server/class/GameComponentsServer.ts | 9 ++---- src/server/class/GameSession.ts | 12 +++---- src/server/server.ts | 9 +++--- src/server/wsServer.ts | 12 +++---- src/shared_js/class/GameComponents.ts | 4 +-- src/shared_js/class/Rectangle.ts | 4 +-- src/shared_js/class/interface.ts | 2 +- 22 files changed, 105 insertions(+), 106 deletions(-) create mode 100644 src/client/class/InputHistory.ts diff --git a/src/client/audio.ts b/src/client/audio.ts index 42e01526..5990b1d8 100644 --- a/src/client/audio.ts +++ b/src/client/audio.ts @@ -1,12 +1,14 @@ import * as c from "./constants.js" -export const soundPong: HTMLAudioElement[] = []; +export const soundPongArr: HTMLAudioElement[] = []; for (let i = 0; i <= 32; i++) { - soundPong.push(new Audio("http://localhost:8080/sound/pong/"+i+".mp3")); - soundPong[i].volume = c.soundPongVolume; + soundPongArr.push(new Audio("http://localhost:8080/sound/pong/"+i+".mp3")); + soundPongArr[i].volume = c.soundPongVolume; + soundPongArr[i].muted = c.soundMutedFlag; } export const soundRoblox = new Audio("http://localhost:8080/sound/roblox-oof.mp3"); soundRoblox.volume = c.soundRobloxVolume; +soundRoblox.muted = c.soundMutedFlag; diff --git a/src/client/class/GameArea.ts b/src/client/class/GameArea.ts index 96e1bfc8..9cd92302 100644 --- a/src/client/class/GameArea.ts +++ b/src/client/class/GameArea.ts @@ -5,6 +5,7 @@ class GameArea { keys: string[] = []; handleInputInterval: number = 0; gameLoopInterval: number = 0; + drawLoopInterval: number = 0; canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; constructor() { diff --git a/src/client/class/GameComponents.ts b/src/client/class/GameComponents.ts index c820b260..64a2911c 100644 --- a/src/client/class/GameComponents.ts +++ b/src/client/class/GameComponents.ts @@ -1,7 +1,7 @@ import * as c from "../constants.js" -import {VectorInteger} from "../../shared_js/class/Vector.js"; -import {RectangleClient, RacketClient, BallClient} from "./RectangleClient.js"; +import { VectorInteger } from "../../shared_js/class/Vector.js"; +import { RectangleClient, RacketClient, BallClient } from "./RectangleClient.js"; class GameComponentsForClient { wallTop: RectangleClient; diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 0826554b..6c9f154c 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -1,9 +1,9 @@ import * as c from "../constants.js" -import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; -import {TextElem, TextNumericValue} from "./Text.js"; -import { GameComponentsForClient } from "./GameComponents.js"; +import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; +import { TextElem, TextNumericValue } from "./Text.js"; import { RectangleClient, Line } from "./RectangleClient.js"; +import { GameComponentsForClient } from "./GameComponents.js"; class GameComponentsClient extends GameComponentsForClient { midLine: Line; diff --git a/src/client/class/InputHistory.ts b/src/client/class/InputHistory.ts new file mode 100644 index 00000000..cb7e8644 --- /dev/null +++ b/src/client/class/InputHistory.ts @@ -0,0 +1,15 @@ + +import * as en from "../../shared_js/enums.js" + +class InputHistory { + input: en.InputEnum; + inputId: number; + deltaTime: number; + constructor(input: en.InputEnum, inputId: number, deltaTime: number) { + this.input = input; + this.inputId = inputId; + this.deltaTime = deltaTime; + } +} + +export {InputHistory} diff --git a/src/client/class/RectangleClient.ts b/src/client/class/RectangleClient.ts index ad5b3da4..da2e9396 100644 --- a/src/client/class/RectangleClient.ts +++ b/src/client/class/RectangleClient.ts @@ -1,8 +1,8 @@ -import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; -import {Component, GraphicComponent, Moving} from "../../shared_js/class/interface.js"; +import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; +import { Component, GraphicComponent, Moving } from "../../shared_js/class/interface.js"; import { Rectangle, MovingRectangle, Racket, Ball } from "../../shared_js/class/Rectangle.js"; -import {soundPong, soundRoblox} from "../audio.js" +import { soundPongArr } from "../audio.js" import { random } from "../utils.js"; function updateRectangle(this: RectangleClient) { @@ -91,7 +91,7 @@ class BallClient extends Ball implements GraphicComponent { } bounce(collider?: Rectangle) { this._bounceAlgo(collider); - soundPong[ Math.floor(random(0, soundPong.length)) ].play(); + soundPongArr[ Math.floor(random(0, soundPongArr.length)) ].play(); } /* protected _bouncePlayer(collider: Racket) { this._bouncePlayerAlgo(collider); diff --git a/src/client/class/Text.ts b/src/client/class/Text.ts index e6ac3708..114992e7 100644 --- a/src/client/class/Text.ts +++ b/src/client/class/Text.ts @@ -1,6 +1,6 @@ -import {Vector, VectorInteger} from "../../shared_js/class/Vector.js"; -import {Component, Moving} from "../../shared_js/class/interface.js"; +import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; +import { Component } from "../../shared_js/class/interface.js"; // conflict with Text class TextElem implements Component { diff --git a/src/client/constants.ts b/src/client/constants.ts index ae6ecb66..940cfce2 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -1,5 +1,5 @@ -import {w} from "../shared_js/constants.js" +import { w } from "../shared_js/constants.js" export * from "../shared_js/constants.js" export const midLineSize = Math.floor(w/150); @@ -9,6 +9,8 @@ export const gridSize = Math.floor(w/500); // min interval on Firefox seems to be 15. Chrome can go lower. export const handleInputIntervalMS = 15; // millisecond export const gameLoopIntervalMS = 15; // millisecond +export const drawLoopIntervalMS = 15; // millisecond -export const soundRobloxVolume = 0; // between 0 and 1 -export const soundPongVolume = 0; // between 0 and 1 +export const soundMutedFlag = true; +export const soundRobloxVolume = 0.3; // between 0 and 1 +export const soundPongVolume = 0.3; // between 0 and 1 diff --git a/src/client/draw.ts b/src/client/draw.ts index 716e5459..11b85b3e 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -1,7 +1,8 @@ -import {pong, gc, clientInfo} from "./global.js" -import {gridDisplay} from "./handleInput.js"; -function draw() +import { pong, gc } from "./global.js" +import { gridDisplay } from "./handleInput.js"; + +function drawLoop() { pong.clear(); @@ -10,6 +11,12 @@ function draw() if (gridDisplay) { drawGrid(); } + + drawDynamic(); +} + +function drawDynamic() +{ gc.scoreLeft.update(); gc.scoreRight.update(); gc.playerLeft.update(); @@ -35,4 +42,4 @@ function drawGrid() gc.h_grid_d1.update(); } -export {draw, drawStatic, drawGrid} +export {drawLoop} diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 4e069d5f..b8c7cafd 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,5 +1,5 @@ -import {gc} from "./global.js"; -import * as d from "./draw.js"; + +import { gc } from "./global.js"; let actual_time: number = Date.now(); let last_time: number; @@ -18,8 +18,6 @@ function gameLoop() // client prediction gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - - d.draw(); } export {gameLoop} diff --git a/src/client/global.ts b/src/client/global.ts index eeea8765..70564ece 100644 --- a/src/client/global.ts +++ b/src/client/global.ts @@ -1,3 +1,3 @@ export {pong, gc} from "./pong.js" -export {clientInfo} from "./ws.js" +export {socket, clientInfo} from "./ws.js" diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index 0bee1aef..db7e14ee 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -1,8 +1,8 @@ -import {pong, gc, clientInfo} from "./global.js" -import * as d from "./draw.js"; -import { socket } from "./ws.js"; + +import { pong, gc, socket, clientInfo } from "./global.js" import * as ev from "../shared_js/class/Event.js" import * as en from "../shared_js/enums.js" +import { InputHistory } from "./class/InputHistory.js" export let gridDisplay = false; @@ -10,17 +10,6 @@ let actual_time: number = Date.now(); let last_time: number; let delta_time: number; -class InputHistory { - input: en.InputEnum; - inputId: number; - deltaTime: number; - constructor(input: en.InputEnum, inputId: number, deltaTime: number) { - this.input = input; - this.inputId = inputId; - this.deltaTime = deltaTime; - } -} - const inputHistoryArr: InputHistory[] = []; let id = 0; /* idMax should be high enough to prevent duplicate "id" in "inputHistoryArr". @@ -29,28 +18,25 @@ const idMax = 999; // 999 arbitrary function handleInput() { - console.log("handleInput"); last_time = actual_time; actual_time = Date.now(); delta_time = (actual_time - last_time) / 1000; + + const keys = pong.keys; + if (keys.length == 0) { + return; + } + // console.log("handleInput"); if (id > idMax) { id = 0; } - var keys = pong.keys; - if (keys.length == 0) - return; - if (keys.indexOf("g") != -1) { - if (gridDisplay) - { - pong.clear(); - d.drawStatic(); - } gridDisplay = !gridDisplay; pong.deleteKey("g"); } + playerMove(delta_time, keys); } @@ -96,15 +82,8 @@ function repeatInput(lastInputId: number) return false; }); - // console.log("repeatInput, lastInputId = " + lastInputId); - // console.log("repeatInput, before splice up to index " + i); - // console.log(inputHistoryArr); - inputHistoryArr.splice(0, i+1); - // console.log("repeatInput, after splice"); - // console.log(inputHistoryArr); - inputHistoryArr.forEach((value: InputHistory) => { playerMovePrediction(value.deltaTime, value.input); }); diff --git a/src/client/pong.ts b/src/client/pong.ts index b3e76040..016d387a 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -1,13 +1,13 @@ -import {GameArea} from "./class/GameArea.js"; -import * as d from "./draw.js"; -import {gameLoop} from "./gameLoop.js" import * as c from "./constants.js" +import { GameArea } from "./class/GameArea.js"; import { GameComponentsClient } from "./class/GameComponentsClient.js"; -import {countdown} from "./utils.js"; -import {handleInput} from "./handleInput.js"; +import { handleInput } from "./handleInput.js"; +import { gameLoop } from "./gameLoop.js" +import { drawLoop } from "./draw.js"; +import { countdown } from "./utils.js"; -import {socket} from "./ws.js"; socket; // no-op +import {socket} from "./ws.js"; socket; // no-op, just for loading /* Keys Racket: W/S OR Up/Down @@ -41,6 +41,7 @@ function resumeGame() }); pong.handleInputInterval = window.setInterval(handleInput, c.handleInputIntervalMS); pong.gameLoopInterval = window.setInterval(gameLoop, c.gameLoopIntervalMS); + pong.gameLoopInterval = window.setInterval(drawLoop, c.drawLoopIntervalMS); } diff --git a/src/client/ws.ts b/src/client/ws.ts index 4fe1019a..28e2d6a1 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -1,17 +1,17 @@ -import {pong, gc} from "./global.js" -import * as ev from "../shared_js/class/Event.js" -import {matchmaking, matchmakingComplete, startGame} from "./pong.js"; -import * as en from "../shared_js/enums.js" -import { RacketClient } from "./class/RectangleClient.js"; -import { sleep } from "./utils.js"; import * as c from "./constants.js" -import {soundRoblox} from "./audio.js" +import { gc } from "./global.js" +import * as ev from "../shared_js/class/Event.js" +import * as en from "../shared_js/enums.js" +import { matchmaking, matchmakingComplete, startGame } from "./pong.js"; +import { RacketClient } from "./class/RectangleClient.js"; import { repeatInput } from "./handleInput.js"; +import { soundRoblox } from "./audio.js" +import { sleep } from "./utils.js"; const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; -const socket = new WebSocket(wsUrl, "json"); +export const socket = new WebSocket(wsUrl, "json"); class ClientInfo { id = ""; @@ -66,16 +66,13 @@ function inGameListener(event: MessageEvent) const data: ev.ServerEvent = JSON.parse(event.data); switch (data.type) { case en.EventTypes.gameUpdate: - console.log("gameUpdate"); // setTimeout(gameUpdate, 1000, data as ev.EventGameUpdate); // artificial latency for testing purpose gameUpdate(data as ev.EventGameUpdate); break; case en.EventTypes.scoreUpdate: - console.log("scoreUpdate"); scoreUpdate(data as ev.EventScoreUpdate); break; case en.EventTypes.matchEnd: - console.log("matchEnd"); matchEnd(data as ev.EventMatchEnd); break; } @@ -83,6 +80,7 @@ function inGameListener(event: MessageEvent) function gameUpdate(data: ev.EventGameUpdate) { + console.log("gameUpdate"); gc.playerLeft.pos.y = Math.floor(data.playerLeft.y); gc.playerRight.pos.y = Math.floor(data.playerRight.y); gc.ball.pos.x = Math.floor(data.ball.x); @@ -94,6 +92,7 @@ function gameUpdate(data: ev.EventGameUpdate) function scoreUpdate(data: ev.EventScoreUpdate) { + console.log("scoreUpdate"); if (clientInfo.side === en.PlayerSide.left && data.scoreRight > gc.scoreRight.value) { soundRoblox.play(); } @@ -106,6 +105,7 @@ function scoreUpdate(data: ev.EventScoreUpdate) function matchEnd(data: ev.EventMatchEnd) { + console.log("matchEnd"); if (data.winner === clientInfo.side) { alert("WIN"); // placeholder TODO draw } @@ -113,5 +113,3 @@ function matchEnd(data: ev.EventMatchEnd) alert("LOSE"); // placeholder TODO draw } } - -export {socket} diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index c244e495..00e311a7 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -1,6 +1,6 @@ -import {WebSocket} from "ws"; -import {Racket} from "../../shared_js/class/Rectangle.js"; +import { WebSocket } from "../wsServer.js"; +import { Racket } from "../../shared_js/class/Rectangle.js"; import { GameSession } from "./GameSession.js"; class Client { diff --git a/src/server/class/GameComponentsServer.ts b/src/server/class/GameComponentsServer.ts index 84b185c4..769c4c3c 100644 --- a/src/server/class/GameComponentsServer.ts +++ b/src/server/class/GameComponentsServer.ts @@ -8,16 +8,13 @@ import { GameComponents } from "../../shared_js/class/GameComponents.js"; // const mockCTX = new CanvasRenderingContext2D(); class GameComponentsServer extends GameComponents { - scoreLeft: number; - scoreRight: number; - ballInPlay: boolean; + scoreLeft: number = 0; + scoreRight: number = 0; + ballInPlay: boolean = false; constructor() { // super(mockCTX); super(); - this.scoreLeft = 0; - this.scoreRight = 0; - this.ballInPlay = false; } } diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index 317412a9..cfe0c4c0 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -1,11 +1,11 @@ -import { ClientPlayer } from "./Client"; -import { GameComponents } from "../../shared_js/class/GameComponents.js"; -import { clientInputListener } from "../wsServer.js"; -import * as c from "../constants.js" -import { GameComponentsServer } from "./GameComponentsServer.js"; -import { random } from "../../shared_js/utils.js"; + import * as en from "../../shared_js/enums.js" import * as ev from "../../shared_js/class/Event.js" +import * as c from "../constants.js" +import { ClientPlayer } from "./Client"; +import { GameComponentsServer } from "./GameComponentsServer.js"; +import { clientInputListener } from "../wsServer.js"; +import { random } from "../../shared_js/utils.js"; /* Arg "s: GameSession" replace "this: GameSession" for use with setTimeout(), diff --git a/src/server/server.ts b/src/server/server.ts index aa129cdb..09b6c459 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -4,17 +4,16 @@ import url from "url"; import fs from "fs"; import path from "path"; -import {wsServer} from "./wsServer.js"; wsServer; // no-op +import {wsServer} from "./wsServer.js"; wsServer; // no-op, just for loading const hostname = "localhost"; const port = 8080; const root = "../../www/"; const server = http.createServer((req, res) => { - // var q = new URL(req.url, `http://${req.getHeaders().host}`) - // @ts-ignore - var q = url.parse(req.url, true); - var filename = root + q.pathname; + // let q = new URL(req.url, `http://${req.getHeaders().host}`) + let q = url.parse(req.url, true); + let filename = root + q.pathname; fs.readFile(filename, (err, data) => { if (err) { res.writeHead(404, {"Content-Type": "text/html"}); diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index 922979ae..124a5d7e 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -1,7 +1,7 @@ import { WebSocketServer, WebSocket as BaseLibWebSocket } from "ws"; -class WebSocket extends BaseLibWebSocket { +export class WebSocket extends BaseLibWebSocket { id?: string; } @@ -10,8 +10,8 @@ import { v4 as uuidv4 } from 'uuid'; import * as en from "../shared_js/enums.js" import * as ev from "../shared_js/class/Event.js" -import {Client, ClientPlayer} from "./class/Client.js" -import {GameSession} from "./class/GameSession.js" +import { Client, ClientPlayer } from "./class/Client.js" +import { GameSession } from "./class/GameSession.js" // pas indispensable d'avoir un autre port si le WebSocket est relié à un serveur http préexistant ? const wsPort = 8042; @@ -61,8 +61,8 @@ function clientAnnounceListener(this: WebSocket, data: string) // TODO: reconnection with msg.id ? // TODO: spectator/player distinction with msg.type ? - this.send(JSON.stringify( new ev.EventAssignId(this.id) )) - this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )) + this.send(JSON.stringify( new ev.EventAssignId(this.id) )); + this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )); matchmaking(this); } else { @@ -110,7 +110,7 @@ function matchmaking(socket: WebSocket) }); gameSession.playersMap.forEach( (client) => { /* set listener last to be absolutly sure there no early game launch - (unlikely, but theoretically possible) */ + (unlikely, but possible in theory) */ client.socket.once("message", playerReadyConfirmationListener); }); } diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index 0c9309c2..0ef0a64a 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -3,8 +3,8 @@ For the moment, this code is only used by the server. */ import * as c from "../constants.js" -import {VectorInteger} from "./Vector.js"; -import {Rectangle, Racket, Ball} from "./Rectangle.js"; +import { VectorInteger } from "./Vector.js"; +import { Rectangle, Racket, Ball } from "./Rectangle.js"; class GameComponents { wallTop: Rectangle; diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 35352b70..8ebd6415 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -1,6 +1,6 @@ -import {Vector, VectorInteger} from "./Vector.js"; -import {Component, Moving} from "./interface.js"; +import { Vector, VectorInteger } from "./Vector.js"; +import { Component, Moving } from "./interface.js"; class Rectangle implements Component { pos: VectorInteger; diff --git a/src/shared_js/class/interface.ts b/src/shared_js/class/interface.ts index 5fdb8315..39753de1 100644 --- a/src/shared_js/class/interface.ts +++ b/src/shared_js/class/interface.ts @@ -1,5 +1,5 @@ -import {Vector, VectorInteger} from "./Vector.js"; +import { Vector, VectorInteger } from "./Vector.js"; interface Component { pos: VectorInteger; From 4aafbac1a59ae50189fdfbf0cee303e929d39a9b Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Fri, 25 Nov 2022 14:54:17 +0100 Subject: [PATCH 25/48] collision algo with Hugo + ball.dir added to EventGameUpdate --- src/client/class/RectangleClient.ts | 4 +- src/client/ws.ts | 20 ++++++--- src/server/class/GameSession.ts | 16 +++++-- src/shared_js/class/Event.ts | 16 +++++-- src/shared_js/class/Rectangle.ts | 68 ++++++++++++++++++++--------- src/shared_js/constants.ts | 6 +-- 6 files changed, 93 insertions(+), 37 deletions(-) diff --git a/src/client/class/RectangleClient.ts b/src/client/class/RectangleClient.ts index da2e9396..526b7744 100644 --- a/src/client/class/RectangleClient.ts +++ b/src/client/class/RectangleClient.ts @@ -93,8 +93,8 @@ class BallClient extends Ball implements GraphicComponent { this._bounceAlgo(collider); soundPongArr[ Math.floor(random(0, soundPongArr.length)) ].play(); } - /* protected _bouncePlayer(collider: Racket) { - this._bouncePlayerAlgo(collider); + /* protected _bounceRacket(collider: Racket) { + this._bounceRacketAlgo(collider); soundRoblox.play(); } */ } diff --git a/src/client/ws.ts b/src/client/ws.ts index 28e2d6a1..16084660 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -81,12 +81,20 @@ function inGameListener(event: MessageEvent) function gameUpdate(data: ev.EventGameUpdate) { console.log("gameUpdate"); - gc.playerLeft.pos.y = Math.floor(data.playerLeft.y); - gc.playerRight.pos.y = Math.floor(data.playerRight.y); - gc.ball.pos.x = Math.floor(data.ball.x); - gc.ball.pos.y = Math.floor(data.ball.y); - gc.ball.speed = Math.floor(data.ball.speed); - + + gc.playerLeft.pos.y = data.playerLeft.y; + gc.playerRight.pos.y = data.playerRight.y; + gc.ball.pos.x = data.ball.x; + gc.ball.pos.y = data.ball.y; + gc.ball.speed = data.ball.speed; + + gc.ball.dir.x = data.ball.dirX; + gc.ball.dir.y = data.ball.dirY; + + // ERROR: Uncaught TypeError: gc.ball.pos.assign is not a function + // Why ? + // gc.ball.pos.assign( data.ball.x, data.ball.y ); + repeatInput(data.lastInputId); // server reconciliation } diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index cfe0c4c0..c6b00095 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -97,9 +97,19 @@ class GameSession { const gc = s.components; const update: ev.EventGameUpdate = { type: en.EventTypes.gameUpdate, - playerLeft: {y: gc.playerLeft.pos.y}, - playerRight: {y: gc.playerRight.pos.y}, - ball: {x: gc.ball.pos.x, y: gc.ball.pos.y, speed: gc.ball.speed}, + playerLeft: { + y: gc.playerLeft.pos.y + }, + playerRight: { + y: gc.playerRight.pos.y + }, + ball:{ + x: gc.ball.pos.x, + y: gc.ball.pos.y, + dirX: gc.ball.dir.x, + dirY: gc.ball.dir.y, + speed: gc.ball.speed + }, lastInputId: 0 }; s.playersMap.forEach( (client) => { diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index da0da306..d35d1f0d 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -26,9 +26,19 @@ class EventMatchmakingComplete extends ServerEvent { } class EventGameUpdate extends ServerEvent { - playerLeft = {y: 0}; - playerRight = {y: 0}; - ball = {x: 0, y: 0, speed: 0}; + playerLeft = { + y: 0 + }; + playerRight = { + y: 0 + }; + ball = { + x: 0, + y: 0, + dirX: 0, + dirY: 0, + speed: 0 + }; lastInputId = 0; constructor() { // TODO: constructor that take GameComponentsServer maybe ? super(en.EventTypes.gameUpdate); diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 8ebd6415..c3ad81ad 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -11,23 +11,24 @@ class Rectangle implements Component { this.width = width; this.height = height; } - collision(collider: Rectangle): boolean { // Collision WIP. To redo - var myleft = this.pos.x; - var myright = this.pos.x + (this.width); - var mytop = this.pos.y; - var mybottom = this.pos.y + (this.height); - var otherleft = collider.pos.x; - var otherright = collider.pos.x + (collider.width); - var othertop = collider.pos.y; - var otherbottom = collider.pos.y + (collider.height); - if ((mybottom < othertop) - || (mytop > otherbottom) - || (myright < otherleft) - || (myleft > otherright)) { + collision(collider: Rectangle): boolean { + const thisLeft = this.pos.x; + const thisRight = this.pos.x + this.width; + const thisTop = this.pos.y; + const thisBottom = this.pos.y + this.height; + const colliderLeft = collider.pos.x; + const colliderRight = collider.pos.x + collider.width; + const colliderTop = collider.pos.y; + const colliderBottom = collider.pos.y + collider.height; + if ((thisBottom < colliderTop) + || (thisTop > colliderBottom) + || (thisRight < colliderLeft) + || (thisLeft > colliderRight)) { return false; } - else + else { return true; + } } } @@ -75,7 +76,7 @@ class Ball extends MovingRectangle { /* Could be more generic, but testing only Racket is enough, because in Pong collider can only be Racket or Wall. */ if (collider instanceof Racket) { - this._bouncePlayer(collider); + this._bounceRacket(collider); } else { this._bounceWall(); @@ -93,13 +94,40 @@ class Ball extends MovingRectangle { protected _bounceWall() { // Should be enough for Wall this.dir.y = this.dir.y * -1; } - protected _bouncePlayer(collider: Racket) { - this._bouncePlayerAlgo(collider); + protected _bounceRacket(racket: Racket) { + this._bounceRacketAlgo(racket); } - protected _bouncePlayerAlgo(collider: Racket) { // WIP - // Bounce for Racket need to be more complexe than this + protected _bounceRacketAlgo(racket: Racket) { this.speed += this.baseSpeed/20; - this.dir.x = this.dir.x * -1; + + let x = this.dir.x * -1; + + const angleFactorDegree = 60; + const angleFactor = angleFactorDegree / 90; + const racketHalf = racket.height/2; + const ballMid = this.pos.y + this.height/2; + const racketMid = racket.pos.y + racketHalf; + + let impact = ballMid - racketMid; + const horizontalMargin = racketHalf * 0.10; + if (impact < horizontalMargin && impact > -horizontalMargin) { + impact = 0; + } + else if (impact > 0) { + impact = impact - horizontalMargin; + } + else if (impact < 0) { + impact = impact + horizontalMargin; + } + + let y = impact / (racketHalf - horizontalMargin) * angleFactor; + + this.dir.assign(x, y); + /* + // Normalize Vector (for consistency in speed independent of direction) + const normalizationFactor = Math.abs(y) + Math.abs(x); + this.dir.assign(x/normalizationFactor, y/normalizationFactor); + */ } } diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index f014e9cd..c540d1a3 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -7,12 +7,12 @@ export const w = CanvasWidth; export const h = CanvasWidth / CanvasRatio; export const w_mid = Math.floor(w/2); export const h_mid = Math.floor(h/2); -export const pw = Math.floor(w/50); -export const ph = pw*5; +export const pw = Math.floor(w/60); +export const ph = pw*6; export const ballSize = pw; export const wallSize = Math.floor(w/100); export const playerSpeed = Math.floor(w/1.5); // pixel per second -export const ballSpeed = Math.floor(w/1.5); // pixel per second +export const ballSpeed = Math.floor(w/2); // pixel per second export const matchStartDelay = 3000; // millisecond export const newRoundDelay = 1500; // millisecond From 7f248b54496b022e38fb9483e2d24885761da623 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 28 Nov 2022 04:33:27 +0100 Subject: [PATCH 26/48] find a way to sharing init + vector.normalized() + misc --- src/client/class/GameComponents.ts | 33 ------------------------ src/client/class/GameComponentsClient.ts | 24 ++++++++++++++--- src/client/class/RectangleClient.ts | 4 +-- src/client/draw.ts | 6 ++--- src/server/class/GameComponentsServer.ts | 6 ----- src/server/constants.ts | 2 +- src/shared_js/class/GameComponents.ts | 12 +++------ src/shared_js/class/Rectangle.ts | 16 ++++++------ src/shared_js/class/Vector.ts | 4 +++ src/shared_js/constants.ts | 3 ++- 10 files changed, 45 insertions(+), 65 deletions(-) delete mode 100644 src/client/class/GameComponents.ts diff --git a/src/client/class/GameComponents.ts b/src/client/class/GameComponents.ts deleted file mode 100644 index 64a2911c..00000000 --- a/src/client/class/GameComponents.ts +++ /dev/null @@ -1,33 +0,0 @@ - -import * as c from "../constants.js" -import { VectorInteger } from "../../shared_js/class/Vector.js"; -import { RectangleClient, RacketClient, BallClient } from "./RectangleClient.js"; - -class GameComponentsForClient { - wallTop: RectangleClient; - wallBottom: RectangleClient; - playerLeft: RacketClient; - playerRight: RacketClient; - ball: BallClient; - constructor(ctx: CanvasRenderingContext2D) - { - let pos = new VectorInteger; - - pos.assign(0, 0); - this.wallTop = new RectangleClient(pos, c.w, c.wallSize, ctx, "grey"); - pos.assign(0, c.h-c.wallSize); - this.wallBottom = new RectangleClient(pos, c.w, c.wallSize, ctx, "grey"); - - pos.assign(0+c.pw, c.h_mid-c.ph/2); - this.playerLeft = new RacketClient(pos, c.pw, c.ph, c.playerSpeed, ctx, "white"); - pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); - this.playerRight = new RacketClient(pos, c.pw, c.ph, c.playerSpeed, ctx, "white"); - - // pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); // center the ball - pos.assign(-c.ballSize, -c.ballSize); // ball out =) - this.ball = new BallClient(pos, c.ballSize, c.ballSpeed, ctx, "white"); - this.ball.dir.assign(-0.8, +0.2); - } -} - -export {GameComponentsForClient} diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 6c9f154c..1bbe2f4d 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -2,10 +2,28 @@ import * as c from "../constants.js" import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; import { TextElem, TextNumericValue } from "./Text.js"; -import { RectangleClient, Line } from "./RectangleClient.js"; -import { GameComponentsForClient } from "./GameComponents.js"; +import { RectangleClient, RacketClient, BallClient, Line } from "./RectangleClient.js"; +import { GameComponents } from "../../shared_js/class/GameComponents.js"; -class GameComponentsClient extends GameComponentsForClient { +class GameComponentsExtensionForClient extends GameComponents { + wallTop: RectangleClient; + wallBottom: RectangleClient; + playerLeft: RacketClient; + playerRight: RacketClient; + ball: BallClient; + constructor(ctx: CanvasRenderingContext2D) + { + super(); + this.wallTop = new RectangleClient(this.wallTop.pos, this.wallTop.width, this.wallTop.height, ctx, "grey"); + this.wallBottom = new RectangleClient(this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, ctx, "grey"); + this.playerLeft = new RacketClient(this.playerLeft.pos, this.playerLeft.width, this.playerLeft.height, this.playerLeft.baseSpeed, ctx, "white"); + this.playerRight = new RacketClient(this.playerRight.pos, this.playerRight.width, this.playerRight.height, this.playerRight.baseSpeed, ctx, "white"); + this.ball = new BallClient(this.ball.pos, this.ball.width, this.ball.baseSpeed, this.ball.speedIncrease, ctx, "white"); + } +} + + +class GameComponentsClient extends GameComponentsExtensionForClient { midLine: Line; scoreLeft: TextNumericValue; scoreRight: TextNumericValue; diff --git a/src/client/class/RectangleClient.ts b/src/client/class/RectangleClient.ts index 526b7744..5c251704 100644 --- a/src/client/class/RectangleClient.ts +++ b/src/client/class/RectangleClient.ts @@ -80,10 +80,10 @@ class BallClient extends Ball implements GraphicComponent { color: string; update: () => void; clear: (pos?: VectorInteger) => void; - constructor(pos: VectorInteger, size: number, baseSpeed: number, + constructor(pos: VectorInteger, size: number, baseSpeed: number, speedIncrease: number, ctx: CanvasRenderingContext2D, color: string) { - super(pos, size, baseSpeed); + super(pos, size, baseSpeed, speedIncrease); this.ctx = ctx; this.color = color; this.update = updateRectangle; diff --git a/src/client/draw.ts b/src/client/draw.ts index 11b85b3e..7c5249e2 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -5,13 +5,13 @@ import { gridDisplay } from "./handleInput.js"; function drawLoop() { pong.clear(); - - drawStatic(); - + if (gridDisplay) { drawGrid(); } + drawStatic(); + drawDynamic(); } diff --git a/src/server/class/GameComponentsServer.ts b/src/server/class/GameComponentsServer.ts index 769c4c3c..31f3ca67 100644 --- a/src/server/class/GameComponentsServer.ts +++ b/src/server/class/GameComponentsServer.ts @@ -2,18 +2,12 @@ import * as c from "../constants.js" import { GameComponents } from "../../shared_js/class/GameComponents.js"; -// DONT WORK AS EXPECTED. I might try again later. -// Empty object replacement to the web-API (web-API useless on server-side) -// class CanvasRenderingContext2D {} -// const mockCTX = new CanvasRenderingContext2D(); - class GameComponentsServer extends GameComponents { scoreLeft: number = 0; scoreRight: number = 0; ballInPlay: boolean = false; constructor() { - // super(mockCTX); super(); } } diff --git a/src/server/constants.ts b/src/server/constants.ts index 974263ff..031423de 100644 --- a/src/server/constants.ts +++ b/src/server/constants.ts @@ -2,4 +2,4 @@ export * from "../shared_js/constants.js" export const gameLoopIntervalMS = 15; // millisecond -export const clientsUpdateIntervalMS = 100; // millisecond +export const clientsUpdateIntervalMS = 42; // millisecond diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index 0ef0a64a..d6e4e3de 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -1,7 +1,4 @@ -/* - No more shared. Dont know how to implemente this. - For the moment, this code is only used by the server. -*/ + import * as c from "../constants.js" import { VectorInteger } from "./Vector.js"; import { Rectangle, Racket, Ball } from "./Rectangle.js"; @@ -22,13 +19,12 @@ class GameComponents { this.wallBottom = new Rectangle(pos, c.w, c.wallSize); pos.assign(0+c.pw, c.h_mid-c.ph/2); - this.playerLeft = new Racket(pos, c.pw, c.ph, c.playerSpeed); + this.playerLeft = new Racket(pos, c.pw, c.ph, c.racketSpeed); pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); - this.playerRight = new Racket(pos, c.pw, c.ph, c.playerSpeed); + this.playerRight = new Racket(pos, c.pw, c.ph, c.racketSpeed); - // pos.assign(c.w_mid-c.ballSize/2, c.h_mid-c.ballSize/2); // center the ball pos.assign(-c.ballSize, -c.ballSize); // ball out =) - this.ball = new Ball(pos, c.ballSize, c.ballSpeed); + this.ball = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); this.ball.dir.assign(-0.8, +0.2); } } diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index c3ad81ad..256460c6 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -66,8 +66,10 @@ class Racket extends MovingRectangle { } class Ball extends MovingRectangle { - constructor(pos: VectorInteger, size: number, baseSpeed: number) { + readonly speedIncrease: number; + constructor(pos: VectorInteger, size: number, baseSpeed: number, speedIncrease: number) { super(pos, size, size, baseSpeed); + this.speedIncrease = speedIncrease; } bounce(collider?: Rectangle) { this._bounceAlgo(collider); @@ -98,7 +100,7 @@ class Ball extends MovingRectangle { this._bounceRacketAlgo(racket); } protected _bounceRacketAlgo(racket: Racket) { - this.speed += this.baseSpeed/20; + this.speed += this.speedIncrease; let x = this.dir.x * -1; @@ -109,7 +111,7 @@ class Ball extends MovingRectangle { const racketMid = racket.pos.y + racketHalf; let impact = ballMid - racketMid; - const horizontalMargin = racketHalf * 0.10; + const horizontalMargin = racketHalf * 0.15; if (impact < horizontalMargin && impact > -horizontalMargin) { impact = 0; } @@ -122,12 +124,10 @@ class Ball extends MovingRectangle { let y = impact / (racketHalf - horizontalMargin) * angleFactor; - this.dir.assign(x, y); - /* // Normalize Vector (for consistency in speed independent of direction) - const normalizationFactor = Math.abs(y) + Math.abs(x); - this.dir.assign(x/normalizationFactor, y/normalizationFactor); - */ + this.dir.assign(x, y); + this.dir = this.dir.normalized(); + // console.log(`x: ${this.dir.x}, y: ${this.dir.y}`); } } diff --git a/src/shared_js/class/Vector.ts b/src/shared_js/class/Vector.ts index 278394a1..025bca36 100644 --- a/src/shared_js/class/Vector.ts +++ b/src/shared_js/class/Vector.ts @@ -10,6 +10,10 @@ class Vector { this.x = x; this.y = y; } + normalized() : Vector { + const normalizationFactor = Math.abs(this.x) + Math.abs(this.y); + return new Vector(this.x/normalizationFactor, this.y/normalizationFactor); + } } class VectorInteger extends Vector { diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index c540d1a3..4ad26de6 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -11,8 +11,9 @@ export const pw = Math.floor(w/60); export const ph = pw*6; export const ballSize = pw; export const wallSize = Math.floor(w/100); -export const playerSpeed = Math.floor(w/1.5); // pixel per second +export const racketSpeed = Math.floor(w/1.5); // pixel per second export const ballSpeed = Math.floor(w/2); // pixel per second +export const ballSpeedIncrease = ballSpeed/20; // pixel per second export const matchStartDelay = 3000; // millisecond export const newRoundDelay = 1500; // millisecond From 5325c8b9ee850863310d7dfe926f73e8174cd235 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 28 Nov 2022 04:40:03 +0100 Subject: [PATCH 27/48] messages draw on canvas + bugfix: vector.assign() Uncaught TypeError --- src/client/class/GameComponentsClient.ts | 5 +++++ src/client/class/Text.ts | 3 ++- src/client/draw.ts | 2 ++ src/client/pong.ts | 20 +++++++++++++++++--- src/client/utils.ts | 13 ++++++++----- src/client/ws.ts | 22 ++++++++++------------ src/shared_js/class/Rectangle.ts | 10 ++++------ 7 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 1bbe2f4d..c5046ee3 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -27,6 +27,7 @@ class GameComponentsClient extends GameComponentsExtensionForClient { midLine: Line; scoreLeft: TextNumericValue; scoreRight: TextNumericValue; + text1: TextElem; w_grid_mid: RectangleClient; w_grid_u1: RectangleClient; @@ -45,6 +46,10 @@ class GameComponentsClient extends GameComponentsExtensionForClient { this.scoreRight = new TextNumericValue(pos, c.scoreSize, ctx, "white"); this.scoreLeft.value = 0; this.scoreRight.value = 0; + + // Text + pos.assign(0, c.h_mid); + this.text1 = new TextElem(pos, Math.floor(c.w/8), ctx, "white"); // Dotted Midline pos.assign(c.w_mid-c.midLineSize/2, 0+c.wallSize); diff --git a/src/client/class/Text.ts b/src/client/class/Text.ts index 114992e7..88111131 100644 --- a/src/client/class/Text.ts +++ b/src/client/class/Text.ts @@ -13,7 +13,8 @@ class TextElem implements Component { constructor(pos: VectorInteger, size: number, ctx: CanvasRenderingContext2D, color: string, font: string = "Bit5x3") { - this.pos = Object.assign({}, pos); + // this.pos = Object.assign({}, pos); // create bug, Uncaught TypeError: X is not a function + this.pos = new VectorInteger(pos.x, pos.y); this.size = size; this.ctx = ctx; this.color = color; diff --git a/src/client/draw.ts b/src/client/draw.ts index 7c5249e2..71dfa60b 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -12,6 +12,8 @@ function drawLoop() drawStatic(); + gc.text1.update(); + drawDynamic(); } diff --git a/src/client/pong.ts b/src/client/pong.ts index 016d387a..a6606704 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -19,20 +19,34 @@ export const gc = new GameComponentsClient(pong.ctx); function matchmaking() { - console.log("Searching an opponent..."); // PLACEHOLDER, todo draw + console.log("Searching an opponent..."); + gc.text1.clear(); + gc.text1.pos.assign(c.w/5, c.h_mid); + gc.text1.text = "Searching..."; + gc.text1.update(); } function matchmakingComplete() { - console.log("Match Found !"); // PLACEHOLDER, TODO draw on canvas + console.log("Match Found !"); + gc.text1.clear(); + gc.text1.pos.assign(c.w/8, c.h_mid); + gc.text1.text = "Match Found !"; + gc.text1.update(); } function startGame() { - countdown(c.matchStartDelay/1000, resumeGame); + gc.text1.pos.assign(c.w_mid, c.h_mid+c.h/4); + countdown(c.matchStartDelay/1000, (count: number) => { + gc.text1.clear(); + gc.text1.text = `${count}`; + gc.text1.update(); + }, resumeGame); } function resumeGame() { + gc.text1.text = ""; window.addEventListener('keydown', function (e) { pong.addKey(e.key); }); diff --git a/src/client/utils.ts b/src/client/utils.ts index 58cad90f..db971447 100644 --- a/src/client/utils.ts +++ b/src/client/utils.ts @@ -1,14 +1,17 @@ export * from "../shared_js/utils.js" -function countdown(count: number, callback?: () => void) +function countdown(count: number, callback?: (count: number) => void, endCallback?: () => void) { - console.log("countdown ", count); // PLACEHOLDER, TODO draw on canvas + console.log("countdown ", count); if (count > 0) { - setTimeout(countdown, 1000, --count, callback); + if (callback) { + callback(count); + } + setTimeout(countdown, 1000, --count, callback, endCallback); } - else if (callback) { - callback(); + else if (endCallback) { + endCallback(); } } diff --git a/src/client/ws.ts b/src/client/ws.ts index 16084660..e2d76537 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -84,17 +84,11 @@ function gameUpdate(data: ev.EventGameUpdate) gc.playerLeft.pos.y = data.playerLeft.y; gc.playerRight.pos.y = data.playerRight.y; - gc.ball.pos.x = data.ball.x; - gc.ball.pos.y = data.ball.y; + + gc.ball.pos.assign(data.ball.x, data.ball.y); + gc.ball.dir.assign(data.ball.dirX, data.ball.dirY); gc.ball.speed = data.ball.speed; - gc.ball.dir.x = data.ball.dirX; - gc.ball.dir.y = data.ball.dirY; - - // ERROR: Uncaught TypeError: gc.ball.pos.assign is not a function - // Why ? - // gc.ball.pos.assign( data.ball.x, data.ball.y ); - repeatInput(data.lastInputId); // server reconciliation } @@ -113,11 +107,15 @@ function scoreUpdate(data: ev.EventScoreUpdate) function matchEnd(data: ev.EventMatchEnd) { - console.log("matchEnd"); if (data.winner === clientInfo.side) { - alert("WIN"); // placeholder TODO draw + gc.text1.pos.assign(c.w*0.415, c.h_mid); + gc.text1.text = "WIN"; } else { - alert("LOSE"); // placeholder TODO draw + gc.text1.pos.assign(c.w*0.383, c.h_mid); + gc.text1.text = "LOSE"; } + // matchEnded = true; } + +// export let matchEnded = false; diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 256460c6..b8fdeb75 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -7,7 +7,7 @@ class Rectangle implements Component { width: number; height: number; constructor(pos: VectorInteger, width: number, height: number) { - this.pos = Object.assign({}, pos); + this.pos = new VectorInteger(pos.x, pos.y); this.width = width; this.height = height; } @@ -49,12 +49,10 @@ class MovingRectangle extends Rectangle implements Moving { this.pos.y += Math.floor(this.dir.y * this.speed * delta); } moveAndCollide(delta: number, colliderArr: Rectangle[]) { - let oldPos = Object.assign({}, this.pos); + let oldPos = new VectorInteger(this.pos.x, this.pos.y); this.move(delta); - if (colliderArr.some(this.collision, this)) - { - this.pos.x = oldPos.x; - this.pos.y = oldPos.y; + if (colliderArr.some(this.collision, this)) { + this.pos = oldPos; } } } From c656de5cad3b29f218a2007baa23a1ba8c513a9e Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 28 Nov 2022 16:38:02 +0100 Subject: [PATCH 28/48] opponent interpolation --- src/client/gameLoop.ts | 26 ++++++++++++++----- src/client/ws.ts | 44 +++++++++++++++++++++++++++----- src/shared_js/class/Rectangle.ts | 4 +-- 3 files changed, 58 insertions(+), 16 deletions(-) diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index b8c7cafd..1b8d212d 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,5 +1,5 @@ -import { gc } from "./global.js"; +import { gc, clientInfo } from "./global.js"; let actual_time: number = Date.now(); let last_time: number; @@ -7,17 +7,31 @@ let delta_time: number; function gameLoop() { - /* - // I try to clear only what need to be update. - // Will revert to clear() all if not satisfactory. - pong.clear(); - */ last_time = actual_time; actual_time = Date.now(); delta_time = (actual_time - last_time) / 1000; + // interpolation + // console.log(`dir.y: ${clientInfo.opponent.dir.y}, pos.y: ${clientInfo.opponent.pos.y}, opponentNextPos.y: ${clientInfo.opponentNextPos.y}`); + if (clientInfo.opponent.dir.y != 0 ) { + opponentInterpolation(delta_time); + } + // client prediction gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); } +function opponentInterpolation(delta: number) +{ + // interpolation + clientInfo.opponent.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + + if ((clientInfo.opponent.dir.y > 0 && clientInfo.opponent.pos.y > clientInfo.opponentNextPos.y) + || (clientInfo.opponent.dir.y < 0 && clientInfo.opponent.pos.y < clientInfo.opponentNextPos.y)) + { + clientInfo.opponent.dir.y = 0; + clientInfo.opponent.pos.y = clientInfo.opponentNextPos.y; + } +} + export {gameLoop} diff --git a/src/client/ws.ts b/src/client/ws.ts index e2d76537..ae4cc2e3 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -8,6 +8,7 @@ import { RacketClient } from "./class/RectangleClient.js"; import { repeatInput } from "./handleInput.js"; import { soundRoblox } from "./audio.js" import { sleep } from "./utils.js"; +import { Vector, VectorInteger } from "../shared_js/class/Vector.js"; const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; @@ -17,6 +18,8 @@ class ClientInfo { id = ""; side: en.PlayerSide; racket: RacketClient; + opponent: RacketClient; + opponentNextPos: VectorInteger; } export const clientInfo = new ClientInfo(); @@ -43,12 +46,17 @@ function preMatchListener(this: WebSocket, event: MessageEvent) { break; case en.EventTypes.matchmakingComplete: clientInfo.side = (data).side; - if (clientInfo.side === en.PlayerSide.left) { + if (clientInfo.side === en.PlayerSide.left) + { clientInfo.racket = gc.playerLeft; + clientInfo.opponent = gc.playerRight; } - else if (clientInfo.side === en.PlayerSide.right) { + else if (clientInfo.side === en.PlayerSide.right) + { clientInfo.racket = gc.playerRight; + clientInfo.opponent = gc.playerLeft; } + clientInfo.opponentNextPos = new VectorInteger(clientInfo.opponent.pos.x, clientInfo.opponent.pos.y); clientInfo.racket.color = "darkgreen"; // for testing purpose socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); matchmakingComplete(); @@ -66,7 +74,7 @@ function inGameListener(event: MessageEvent) const data: ev.ServerEvent = JSON.parse(event.data); switch (data.type) { case en.EventTypes.gameUpdate: - // setTimeout(gameUpdate, 1000, data as ev.EventGameUpdate); // artificial latency for testing purpose + // setTimeout(gameUpdate, 500, data as ev.EventGameUpdate); // artificial latency for testing purpose gameUpdate(data as ev.EventGameUpdate); break; case en.EventTypes.scoreUpdate: @@ -82,14 +90,36 @@ function gameUpdate(data: ev.EventGameUpdate) { console.log("gameUpdate"); - gc.playerLeft.pos.y = data.playerLeft.y; - gc.playerRight.pos.y = data.playerRight.y; - gc.ball.pos.assign(data.ball.x, data.ball.y); gc.ball.dir.assign(data.ball.dirX, data.ball.dirY); gc.ball.speed = data.ball.speed; + if (clientInfo.side === en.PlayerSide.left) { + clientInfo.racket.pos.assign(clientInfo.racket.pos.x, data.playerLeft.y); + } + else if (clientInfo.side === en.PlayerSide.right) { + clientInfo.racket.pos.assign(clientInfo.racket.pos.x, data.playerRight.y); + } - repeatInput(data.lastInputId); // server reconciliation + // interpolation + clientInfo.opponent.pos.assign(clientInfo.opponentNextPos.x, clientInfo.opponentNextPos.y); + if (clientInfo.side === en.PlayerSide.left) { + clientInfo.opponentNextPos.assign(clientInfo.opponent.pos.x, data.playerRight.y); + } + else if (clientInfo.side === en.PlayerSide.right) { + clientInfo.opponentNextPos.assign(clientInfo.opponent.pos.x, data.playerLeft.y); + } + + clientInfo.opponent.dir = new Vector( + clientInfo.opponentNextPos.x - clientInfo.opponent.pos.x, + clientInfo.opponentNextPos.y - clientInfo.opponent.pos.y + ); + + if (Math.abs(clientInfo.opponent.dir.x) + Math.abs(clientInfo.opponent.dir.y) !== 0) { + clientInfo.opponent.dir = clientInfo.opponent.dir.normalized(); + } + + // server reconciliation + repeatInput(data.lastInputId); } function scoreUpdate(data: ev.EventScoreUpdate) diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index b8fdeb75..3fc10310 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -42,9 +42,7 @@ class MovingRectangle extends Rectangle implements Moving { this.speed = baseSpeed; } move(delta: number) { // Math.floor WIP until VectorInteger debug - // console.log("delta: "+ delta); - // console.log("speed: "+ this.speed); - // console.log("speed*delta: "+ this.speed * delta); + // console.log(`delta: ${delta}, speed: ${this.speed}, speed*delta: ${this.speed * delta}`); this.pos.x += Math.floor(this.dir.x * this.speed * delta); this.pos.y += Math.floor(this.dir.y * this.speed * delta); } From 429387ce830594488167e2d14ac37c625aed3276 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 28 Nov 2022 23:55:24 +0100 Subject: [PATCH 29/48] Wip reworking server handleInput + fixedDeltaTime for server --- src/client/handleInput.ts | 11 ++++++--- src/server/class/Client.ts | 6 ++++- src/server/class/GameSession.ts | 40 ++++++++++++++++++++------------- src/server/constants.ts | 6 ++++- src/server/wsServer.ts | 5 +++-- 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index db7e14ee..78b52ad2 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -58,16 +58,21 @@ function playerMove(delta: number, keys: string[]) } } +function testInputDelay(input: ev.EventInput) { + socket.send(JSON.stringify(input)); +} +// setTimeout(testInputDelay, 100, input); + + function playerMovePrediction(delta: number, input: en.InputEnum) { // client prediction const racket = clientInfo.racket; - racket.dir.y = 0; if (input === en.InputEnum.up) { - racket.dir.y += -1; + racket.dir.y = -1; } else if (input === en.InputEnum.down) { - racket.dir.y += 1; + racket.dir.y = 1; } racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); } diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index 00e311a7..c0f6b2c8 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -2,13 +2,17 @@ import { WebSocket } from "../wsServer.js"; import { Racket } from "../../shared_js/class/Rectangle.js"; import { GameSession } from "./GameSession.js"; +import * as ev from "../../shared_js/class/Event.js" class Client { socket: WebSocket; id: string; // Pas indispensable si "socket" a une copie de "id" - lastInputId: number = 0; isAlive: boolean = true; gameSession: GameSession; + + inputArr: ev.EventInput[] = []; + lastInputId: number = 0; + constructor(socket: WebSocket, id: string) { this.socket = socket; this.id = id; diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index c6b00095..eaa6a1fb 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -50,25 +50,35 @@ class GameSession { clearInterval(s.gameLoopInterval); clearInterval(s.clientsUpdateInterval); } - handleInput(client: ClientPlayer, inputEvent: ev.EventInput) { + private _handleInput(delta: number, client: ClientPlayer) { const gc = this.components; - const input = inputEvent.input; - client.lastInputId = inputEvent.inputId; - - client.racket.dir.y = 0; - if (input === en.InputEnum.up) { - client.racket.dir.y += -1; - } - else if (input === en.InputEnum.down) { - client.racket.dir.y += 1; - } - client.racket.moveAndCollide(this.delta_time, [gc.wallTop, gc.wallBottom]); - /* how to handle Delta time correctly in handleInput ? */ + client.inputArr.forEach( (value) => { + const input = value.input; + client.racket.dir.y = 0; + if (input === en.InputEnum.up) { + client.racket.dir.y = -1; + } + else if (input === en.InputEnum.down) { + client.racket.dir.y = 1; + } + client.racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + }); + client.lastInputId = client.inputArr[client.inputArr.length - 1].inputId; + client.inputArr.length = 0; } private _gameLoop(s: GameSession) { - s.last_time = s.actual_time; + /* s.last_time = s.actual_time; s.actual_time = Date.now(); - s.delta_time = (s.actual_time - s.last_time) / 1000; + s.delta_time = (s.actual_time - s.last_time) / 1000; */ + s.delta_time = c.fixedDeltaTime; + + console.log(s.delta_time); + + s.playersMap.forEach( (client) => { + if (client.inputArr.length != 0) { + s._handleInput(s.delta_time, client); + } + }); const gc = s.components; if (gc.ballInPlay) diff --git a/src/server/constants.ts b/src/server/constants.ts index 031423de..761622fb 100644 --- a/src/server/constants.ts +++ b/src/server/constants.ts @@ -1,5 +1,9 @@ export * from "../shared_js/constants.js" +// 15ms == 1000/66.666 export const gameLoopIntervalMS = 15; // millisecond -export const clientsUpdateIntervalMS = 42; // millisecond +export const fixedDeltaTime = gameLoopIntervalMS/1000; // second + +// 33.333ms == 1000/30 +export const clientsUpdateIntervalMS = 1000/30; // millisecond diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index 124a5d7e..b767ce7d 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -150,8 +150,9 @@ export function clientInputListener(this: WebSocket, data: string) // const input: ev.ClientEvent = JSON.parse(data); const input: ev.EventInput = JSON.parse(data); if (input.type === en.EventTypes.clientInput) { - const client = clientsMap.get(this.id); - client.gameSession.handleInput(client as ClientPlayer, input); + const client = clientsMap.get(this.id) as ClientPlayer; + client.inputArr.push(input); // TODO: reject input if too fast + // client.gameSession.handleInput(client as ClientPlayer, input); } else { console.log("Invalid clientInput"); From 6ac3592bc03a48f22a1ebffe88a687f917689923 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 29 Nov 2022 00:47:02 +0100 Subject: [PATCH 30/48] server handleInput rework done --- src/server/class/Client.ts | 2 +- src/server/class/GameSession.ts | 29 +++++++++++++---------------- src/server/wsServer.ts | 3 +-- src/shared_js/class/Rectangle.ts | 7 +++++-- src/shared_js/constants.ts | 12 +++++++----- 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index c0f6b2c8..ac9a8983 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -10,7 +10,7 @@ class Client { isAlive: boolean = true; gameSession: GameSession; - inputArr: ev.EventInput[] = []; + inputBuffer: ev.EventInput; lastInputId: number = 0; constructor(socket: WebSocket, id: string) { diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index eaa6a1fb..866872d9 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -52,19 +52,18 @@ class GameSession { } private _handleInput(delta: number, client: ClientPlayer) { const gc = this.components; - client.inputArr.forEach( (value) => { - const input = value.input; - client.racket.dir.y = 0; - if (input === en.InputEnum.up) { - client.racket.dir.y = -1; - } - else if (input === en.InputEnum.down) { - client.racket.dir.y = 1; - } - client.racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); - }); - client.lastInputId = client.inputArr[client.inputArr.length - 1].inputId; - client.inputArr.length = 0; + const input = client.inputBuffer.input; + + if (input === en.InputEnum.up) { + client.racket.dir.y = -1; + } + else if (input === en.InputEnum.down) { + client.racket.dir.y = 1; + } + client.racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + + client.lastInputId = client.inputBuffer.inputId; + client.inputBuffer = null; } private _gameLoop(s: GameSession) { /* s.last_time = s.actual_time; @@ -72,10 +71,8 @@ class GameSession { s.delta_time = (s.actual_time - s.last_time) / 1000; */ s.delta_time = c.fixedDeltaTime; - console.log(s.delta_time); - s.playersMap.forEach( (client) => { - if (client.inputArr.length != 0) { + if (client.inputBuffer) { s._handleInput(s.delta_time, client); } }); diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index b767ce7d..f8138c39 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -151,8 +151,7 @@ export function clientInputListener(this: WebSocket, data: string) const input: ev.EventInput = JSON.parse(data); if (input.type === en.EventTypes.clientInput) { const client = clientsMap.get(this.id) as ClientPlayer; - client.inputArr.push(input); // TODO: reject input if too fast - // client.gameSession.handleInput(client as ClientPlayer, input); + client.inputBuffer = input; } else { console.log("Invalid clientInput"); diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 3fc10310..639dbd75 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -1,6 +1,7 @@ import { Vector, VectorInteger } from "./Vector.js"; import { Component, Moving } from "./interface.js"; +import * as c from "../constants.js" class Rectangle implements Component { pos: VectorInteger; @@ -120,9 +121,11 @@ class Ball extends MovingRectangle { let y = impact / (racketHalf - horizontalMargin) * angleFactor; - // Normalize Vector (for consistency in speed independent of direction) this.dir.assign(x, y); - this.dir = this.dir.normalized(); + // Normalize Vector (for consistency in speed independent of direction) + if (c.normalizedSpeed) { + this.dir = this.dir.normalized(); + } // console.log(`x: ${this.dir.x}, y: ${this.dir.y}`); } } diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index 4ad26de6..886d7a55 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -7,13 +7,15 @@ export const w = CanvasWidth; export const h = CanvasWidth / CanvasRatio; export const w_mid = Math.floor(w/2); export const h_mid = Math.floor(h/2); -export const pw = Math.floor(w/60); +export const pw = Math.floor(w*0.017); export const ph = pw*6; export const ballSize = pw; -export const wallSize = Math.floor(w/100); -export const racketSpeed = Math.floor(w/1.5); // pixel per second -export const ballSpeed = Math.floor(w/2); // pixel per second -export const ballSpeedIncrease = ballSpeed/20; // pixel per second +export const wallSize = Math.floor(w*0.01); +export const racketSpeed = Math.floor(w*0.66); // pixel per second +export const ballSpeed = Math.floor(w*0.66); // pixel per second +export const ballSpeedIncrease = Math.floor(ballSpeed*0.05); // pixel per second + +export const normalizedSpeed = false; // for consistency in speed independent of direction export const matchStartDelay = 3000; // millisecond export const newRoundDelay = 1500; // millisecond From 01023d67b5f2eac9f39753e94fc9fc749cf75c6b Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 29 Nov 2022 01:02:34 +0100 Subject: [PATCH 31/48] update memo.txt --- memo.txt | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/memo.txt b/memo.txt index 316ed30d..30c217d1 100644 --- a/memo.txt +++ b/memo.txt @@ -1,10 +1,35 @@ +Done: + - Connexion client/serveur via un Websocket + - implémentation basique (authoritative server) + - Matchmaking + - client prediction + - server reconciliation (buffer des inputs côté client + id sur les inputs) + - amélioration collision avec Hugo + - du son (balle, foule qui applaudi/musique de victoire) (son de la raquette "Oof" de Roblox ? 🤡) + - init de GameComponents partagé entre serveur et client. + - draw on the canvas "WIN", "LOSE", "MATCHMAKING COMPLETE", ... + - interpolation (mis à jour progressif des mouvements de l'adversaire) + - traitement groupé des inputs clients toutes les x millisecondes -- ball direction based on player hit location - ---- - -- node.js server for http access (and javascipt modules files split) - ---- - -- gamesocket with node.js +TODO: +- mode multi-balles +- Détruire les GameSession une fois finies. +- certaines utilisations de Math.floor() superflu ? Vérifier les appels. +- (prediction de l'avancement de la balle basé sur la latence serveur ?) +----------- +idées modes de jeu : + - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) + - mode 2 raquettes (un joueur haut/gauche et bas/droite) + +- bonus divers (mode obstacle, multi-balles, skin patate, ...) +- mode spectateur +----------- +- BUG: Si la balle va très vite, elle peut ignorer la collision avec une raquette ou mur. +la collision est testée seulement après le mouvement. +Pour éviter ce bug il faudrait diviser le mouvement pour faire plusieurs tests de collision successifs. +- BUG mineur: sur un changement de fenêtre, les touches restent enfoncées et il faut les "décoincer" +en réappuyant. Ce n'est pas grave mais peut-on faire mieux ? +---------- +OSEF, rebuts: +- reconnection +- amélioration du protocole, remplacement du JSON (compression. moins de bande passante). From 68e529fec283aeaa2435c259fdbe7d243d9596ee Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Wed, 30 Nov 2022 04:00:55 +0100 Subject: [PATCH 32/48] input desynchro, rollback to instant handle. --- memo.txt | 3 +- src/client/class/InputHistory.ts | 9 ++-- src/client/constants.ts | 3 ++ src/client/gameLoop.ts | 8 +++- src/client/handleInput.ts | 79 +++++++++++++++++++------------- src/client/pong.ts | 4 +- src/client/ws.ts | 17 ++++++- src/server/class/Client.ts | 2 +- src/server/class/GameSession.ts | 24 ++++++---- src/server/constants.ts | 4 +- src/server/wsServer.ts | 5 +- src/shared_js/class/Event.ts | 14 +++--- src/shared_js/class/Rectangle.ts | 14 +++++- src/shared_js/enums.ts | 3 +- 14 files changed, 123 insertions(+), 66 deletions(-) diff --git a/memo.txt b/memo.txt index 30c217d1..4ce404f6 100644 --- a/memo.txt +++ b/memo.txt @@ -9,7 +9,8 @@ Done: - init de GameComponents partagé entre serveur et client. - draw on the canvas "WIN", "LOSE", "MATCHMAKING COMPLETE", ... - interpolation (mis à jour progressif des mouvements de l'adversaire) - - traitement groupé des inputs clients toutes les x millisecondes + - traitement groupé des inputs clients toutes les x millisecondes + (BUG désynchronisation: revenu à un traitement immédiat en attendant) TODO: - mode multi-balles diff --git a/src/client/class/InputHistory.ts b/src/client/class/InputHistory.ts index cb7e8644..e4d3b8f1 100644 --- a/src/client/class/InputHistory.ts +++ b/src/client/class/InputHistory.ts @@ -1,13 +1,14 @@ import * as en from "../../shared_js/enums.js" +import * as ev from "../../shared_js/class/Event.js" class InputHistory { input: en.InputEnum; - inputId: number; + id: number; deltaTime: number; - constructor(input: en.InputEnum, inputId: number, deltaTime: number) { - this.input = input; - this.inputId = inputId; + constructor(inputState: ev.EventInput, deltaTime: number) { + this.input = inputState.input; + this.id = inputState.id; this.deltaTime = deltaTime; } } diff --git a/src/client/constants.ts b/src/client/constants.ts index 940cfce2..5a3f4d9f 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -8,9 +8,12 @@ export const gridSize = Math.floor(w/500); // min interval on Firefox seems to be 15. Chrome can go lower. export const handleInputIntervalMS = 15; // millisecond +export const sendLoopIntervalMS = 15; // millisecond export const gameLoopIntervalMS = 15; // millisecond export const drawLoopIntervalMS = 15; // millisecond +export const fixedDeltaTime = gameLoopIntervalMS/1000; // second + export const soundMutedFlag = true; export const soundRobloxVolume = 0.3; // between 0 and 1 export const soundPongVolume = 0.3; // between 0 and 1 diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 1b8d212d..224e3d0e 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,4 +1,5 @@ +import * as c from "./constants.js"; import { gc, clientInfo } from "./global.js"; let actual_time: number = Date.now(); @@ -7,9 +8,12 @@ let delta_time: number; function gameLoop() { - last_time = actual_time; + /* last_time = actual_time; actual_time = Date.now(); - delta_time = (actual_time - last_time) / 1000; + delta_time = (actual_time - last_time) / 1000; */ + + delta_time = c.fixedDeltaTime; + // console.log(`delta_gameLoop: ${delta_time}`); // interpolation // console.log(`dir.y: ${clientInfo.opponent.dir.y}, pos.y: ${clientInfo.opponent.pos.y}, opponentNextPos.y: ${clientInfo.opponentNextPos.y}`); diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index 78b52ad2..164680e1 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -3,6 +3,7 @@ import { pong, gc, socket, clientInfo } from "./global.js" import * as ev from "../shared_js/class/Event.js" import * as en from "../shared_js/enums.js" import { InputHistory } from "./class/InputHistory.js" +import * as c from "./constants.js"; export let gridDisplay = false; @@ -10,58 +11,66 @@ let actual_time: number = Date.now(); let last_time: number; let delta_time: number; +const inputState: ev.EventInput = new ev.EventInput(); const inputHistoryArr: InputHistory[] = []; -let id = 0; -/* idMax should be high enough to prevent duplicate "id" in "inputHistoryArr". -In theory a little more than (1000/handleInputIntervalMS) should be enough. */ -const idMax = 999; // 999 arbitrary + +// test +/* export function sendLoop() +{ + socket.send(JSON.stringify(inputState)); +} */ function handleInput() { - last_time = actual_time; + /* last_time = actual_time; actual_time = Date.now(); - delta_time = (actual_time - last_time) / 1000; + delta_time = (actual_time - last_time) / 1000; */ + + delta_time = c.fixedDeltaTime; + // console.log(`delta_time: ${delta_time}`); + + inputState.id = Date.now(); + inputState.input = en.InputEnum.noInput; const keys = pong.keys; - if (keys.length == 0) { - return; - } - // console.log("handleInput"); - if (id > idMax) { - id = 0; - } - - if (keys.indexOf("g") != -1) + if (keys.length !== 0) { - gridDisplay = !gridDisplay; - pong.deleteKey("g"); + if (keys.indexOf("g") != -1) + { + gridDisplay = !gridDisplay; + pong.deleteKey("g"); + } + playerMovements(delta_time, keys); } - playerMove(delta_time, keys); + socket.send(JSON.stringify(inputState)); + // setTimeout(testInputDelay, 100); + inputHistoryArr.push(new InputHistory(inputState, delta_time)); + + // client prediction + if (inputState.input !== en.InputEnum.noInput) { + // TODO: peut-etre le mettre dans game loop ? + // Attention au delta time dans ce cas ! + playerMovePrediction(delta_time, inputState.input); + } } -function playerMove(delta: number, keys: string[]) +function playerMovements(delta: number, keys: string[]) { - if (keys.indexOf("w") !== -1 || keys.indexOf("ArrowUp".toLowerCase()) !== -1) { + if (keys.indexOf("w") !== -1 || keys.indexOf("ArrowUp".toLowerCase()) !== -1) + { if (keys.indexOf("s") === -1 && keys.indexOf("ArrowDown".toLowerCase()) === -1) { - const input = new ev.EventInput(en.InputEnum.up, ++id); - inputHistoryArr.push(new InputHistory(input.input, input.inputId, delta)); - socket.send(JSON.stringify(input)); - playerMovePrediction(delta, input.input); // client prediction + inputState.input = en.InputEnum.up; } } else if (keys.indexOf("s") !== -1 || keys.indexOf("ArrowDown".toLowerCase()) !== -1) { - const input = new ev.EventInput(en.InputEnum.down, ++id); - inputHistoryArr.push(new InputHistory(input.input, input.inputId, delta)); - socket.send(JSON.stringify(input)); - playerMovePrediction(delta, input.input); // client prediction + inputState.input = en.InputEnum.down; } } -function testInputDelay(input: ev.EventInput) { - socket.send(JSON.stringify(input)); +function testInputDelay() { + socket.send(JSON.stringify(inputState)); } -// setTimeout(testInputDelay, 100, input); function playerMovePrediction(delta: number, input: en.InputEnum) @@ -81,16 +90,20 @@ function repeatInput(lastInputId: number) { // server reconciliation let i = inputHistoryArr.findIndex((value: InputHistory) => { - if (value.inputId === lastInputId) { + if (value.id === lastInputId) { return true; } return false; }); + // console.log(`inputHistory total: ${inputHistoryArr.length}` ); inputHistoryArr.splice(0, i+1); + // console.log(`inputHistory left: ${inputHistoryArr.length}` ); inputHistoryArr.forEach((value: InputHistory) => { - playerMovePrediction(value.deltaTime, value.input); + if (value.input !== en.InputEnum.noInput) { + playerMovePrediction(value.deltaTime, value.input); + } }); } diff --git a/src/client/pong.ts b/src/client/pong.ts index a6606704..05be7494 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -3,6 +3,7 @@ import * as c from "./constants.js" import { GameArea } from "./class/GameArea.js"; import { GameComponentsClient } from "./class/GameComponentsClient.js"; import { handleInput } from "./handleInput.js"; +// import { sendLoop } from "./handleInput.js"; import { gameLoop } from "./gameLoop.js" import { drawLoop } from "./draw.js"; import { countdown } from "./utils.js"; @@ -54,8 +55,9 @@ function resumeGame() pong.deleteKey(e.key); }); pong.handleInputInterval = window.setInterval(handleInput, c.handleInputIntervalMS); + // pong.handleInputInterval = window.setInterval(sendLoop, c.sendLoopIntervalMS); pong.gameLoopInterval = window.setInterval(gameLoop, c.gameLoopIntervalMS); - pong.gameLoopInterval = window.setInterval(drawLoop, c.drawLoopIntervalMS); + pong.drawLoopInterval = window.setInterval(drawLoop, c.drawLoopIntervalMS); } diff --git a/src/client/ws.ts b/src/client/ws.ts index ae4cc2e3..e80c640f 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -93,6 +93,9 @@ function gameUpdate(data: ev.EventGameUpdate) gc.ball.pos.assign(data.ball.x, data.ball.y); gc.ball.dir.assign(data.ball.dirX, data.ball.dirY); gc.ball.speed = data.ball.speed; + + const predictionPos = new VectorInteger(clientInfo.racket.pos.x, clientInfo.racket.pos.y); // debug + if (clientInfo.side === en.PlayerSide.left) { clientInfo.racket.pos.assign(clientInfo.racket.pos.x, data.playerLeft.y); } @@ -120,11 +123,23 @@ function gameUpdate(data: ev.EventGameUpdate) // server reconciliation repeatInput(data.lastInputId); + + // debug + if (clientInfo.racket.pos.y > predictionPos.y + 1 + || clientInfo.racket.pos.y < predictionPos.y - 1) + { + console.log( + `Reconciliation error: + server y: ${data.playerLeft.y} + reconciliation y: ${clientInfo.racket.pos.y} + prediction y: ${predictionPos.y}` + ); + } } function scoreUpdate(data: ev.EventScoreUpdate) { - console.log("scoreUpdate"); + // console.log("scoreUpdate"); if (clientInfo.side === en.PlayerSide.left && data.scoreRight > gc.scoreRight.value) { soundRoblox.play(); } diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index ac9a8983..c1678848 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -10,7 +10,7 @@ class Client { isAlive: boolean = true; gameSession: GameSession; - inputBuffer: ev.EventInput; + inputBuffer: ev.EventInput = new ev.EventInput(); lastInputId: number = 0; constructor(socket: WebSocket, id: string) { diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index 866872d9..dc72e507 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -39,7 +39,7 @@ class GameSession { }); s.actual_time = Date.now(); - s.gameLoopInterval = setInterval(s._gameLoop, c.gameLoopIntervalMS, s); + s.gameLoopInterval = setInterval(s._gameLoop, c.serverGameLoopIntervalMS, s); s.clientsUpdateInterval = setInterval(s._clientsUpdate, c.clientsUpdateIntervalMS, s); } pause(s: GameSession) { @@ -50,7 +50,11 @@ class GameSession { clearInterval(s.gameLoopInterval); clearInterval(s.clientsUpdateInterval); } + instantInputDebug(client: ClientPlayer) { + this._handleInput(c.fixedDeltaTime, client); + } private _handleInput(delta: number, client: ClientPlayer) { + // if (client.inputBuffer === null) {return;} const gc = this.components; const input = client.inputBuffer.input; @@ -60,10 +64,13 @@ class GameSession { else if (input === en.InputEnum.down) { client.racket.dir.y = 1; } - client.racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + + if (input !== en.InputEnum.noInput) { + client.racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + } - client.lastInputId = client.inputBuffer.inputId; - client.inputBuffer = null; + client.lastInputId = client.inputBuffer.id; + // client.inputBuffer = null; } private _gameLoop(s: GameSession) { /* s.last_time = s.actual_time; @@ -71,11 +78,10 @@ class GameSession { s.delta_time = (s.actual_time - s.last_time) / 1000; */ s.delta_time = c.fixedDeltaTime; - s.playersMap.forEach( (client) => { - if (client.inputBuffer) { - s._handleInput(s.delta_time, client); - } - }); + // WIP, replaced by instantInputDebug() to prevent desynchro + /* s.playersMap.forEach( (client) => { + s._handleInput(s.delta_time, client); + }); */ const gc = s.components; if (gc.ballInPlay) diff --git a/src/server/constants.ts b/src/server/constants.ts index 761622fb..bd5f8e9e 100644 --- a/src/server/constants.ts +++ b/src/server/constants.ts @@ -2,8 +2,8 @@ export * from "../shared_js/constants.js" // 15ms == 1000/66.666 -export const gameLoopIntervalMS = 15; // millisecond -export const fixedDeltaTime = gameLoopIntervalMS/1000; // second +export const serverGameLoopIntervalMS = 15; // millisecond +export const fixedDeltaTime = serverGameLoopIntervalMS/1000; // second // 33.333ms == 1000/30 export const clientsUpdateIntervalMS = 1000/30; // millisecond diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index f8138c39..51c33c9b 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -58,8 +58,8 @@ function clientAnnounceListener(this: WebSocket, data: string) try { const msg : ev.ClientAnnounce = JSON.parse(data); if (msg.type === en.EventTypes.clientAnnounce) { - // TODO: reconnection with msg.id ? - // TODO: spectator/player distinction with msg.type ? + // TODO: reconnection with msg.clientId ? + // TODO: spectator/player distinction with msg.role ? this.send(JSON.stringify( new ev.EventAssignId(this.id) )); this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )); @@ -152,6 +152,7 @@ export function clientInputListener(this: WebSocket, data: string) if (input.type === en.EventTypes.clientInput) { const client = clientsMap.get(this.id) as ClientPlayer; client.inputBuffer = input; + client.gameSession.instantInputDebug(client); // wip } else { console.log("Invalid clientInput"); diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index d35d1f0d..14b86ff3 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -66,7 +66,7 @@ class EventMatchEnd extends ServerEvent { /* From Client */ class ClientEvent { - type: en.EventTypes; + type: en.EventTypes; // readonly ? constructor(type: en.EventTypes = 0) { this.type = type; } @@ -74,21 +74,21 @@ class ClientEvent { class ClientAnnounce extends ClientEvent { role: en.ClientRole; - id: string; - constructor(role: en.ClientRole, id: string = "") { + clientId: string; + constructor(role: en.ClientRole, clientId: string = "") { super(en.EventTypes.clientAnnounce); this.role = role; - this.id = id; + this.clientId = clientId; } } class EventInput extends ClientEvent { input: en.InputEnum; - inputId: number; - constructor(input: en.InputEnum = 0, inputId: number = 0) { + id: number; + constructor(input: en.InputEnum = en.InputEnum.noInput, id: number = 0) { super(en.EventTypes.clientInput); this.input = input; - this.inputId = inputId; + this.id = id; } } diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 639dbd75..8b9e1260 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -44,10 +44,15 @@ class MovingRectangle extends Rectangle implements Moving { } move(delta: number) { // Math.floor WIP until VectorInteger debug // console.log(`delta: ${delta}, speed: ${this.speed}, speed*delta: ${this.speed * delta}`); - this.pos.x += Math.floor(this.dir.x * this.speed * delta); - this.pos.y += Math.floor(this.dir.y * this.speed * delta); + // this.pos.x += Math.floor(this.dir.x * this.speed * delta); + // this.pos.y += Math.floor(this.dir.y * this.speed * delta); + this.pos.x += this.dir.x * this.speed * delta; + this.pos.y += this.dir.y * this.speed * delta; } moveAndCollide(delta: number, colliderArr: Rectangle[]) { + this._moveAndCollideAlgo(delta, colliderArr); + } + protected _moveAndCollideAlgo(delta: number, colliderArr: Rectangle[]) { let oldPos = new VectorInteger(this.pos.x, this.pos.y); this.move(delta); if (colliderArr.some(this.collision, this)) { @@ -60,6 +65,11 @@ class Racket extends MovingRectangle { constructor(pos: VectorInteger, width: number, height: number, baseSpeed: number) { super(pos, width, height, baseSpeed); } + moveAndCollide(delta: number, colliderArr: Rectangle[]) { + // let oldPos = new VectorInteger(this.pos.x, this.pos.y); // debug + this._moveAndCollideAlgo(delta, colliderArr); + // console.log(`y change: ${this.pos.y - oldPos.y}`); + } } class Ball extends MovingRectangle { diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts index 1acf2219..cc8ec311 100644 --- a/src/shared_js/enums.ts +++ b/src/shared_js/enums.ts @@ -22,8 +22,9 @@ enum EventTypes { } enum InputEnum { + noInput = 0, up = 1, - down + down, } enum PlayerSide { From e3fd13072925895797eadda9b2b41110e404a019 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Wed, 30 Nov 2022 19:42:16 +0100 Subject: [PATCH 33/48] GameSession delete + log --- memo.txt | 2 +- src/server/class/GameSession.ts | 2 +- src/server/utils.ts | 8 +++++ src/server/wsServer.ts | 52 +++++++++++++++++++++++++-------- 4 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 src/server/utils.ts diff --git a/memo.txt b/memo.txt index 4ce404f6..8a891dae 100644 --- a/memo.txt +++ b/memo.txt @@ -11,10 +11,10 @@ Done: - interpolation (mis à jour progressif des mouvements de l'adversaire) - traitement groupé des inputs clients toutes les x millisecondes (BUG désynchronisation: revenu à un traitement immédiat en attendant) + - Détruire les GameSession une fois finies. TODO: - mode multi-balles -- Détruire les GameSession une fois finies. - certaines utilisations de Math.floor() superflu ? Vérifier les appels. - (prediction de l'avancement de la balle basé sur la latence serveur ?) ----------- diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index dc72e507..dbec42bf 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -5,7 +5,7 @@ import * as c from "../constants.js" import { ClientPlayer } from "./Client"; import { GameComponentsServer } from "./GameComponentsServer.js"; import { clientInputListener } from "../wsServer.js"; -import { random } from "../../shared_js/utils.js"; +import { random } from "../utils.js"; /* Arg "s: GameSession" replace "this: GameSession" for use with setTimeout(), diff --git a/src/server/utils.ts b/src/server/utils.ts new file mode 100644 index 00000000..0c939b8c --- /dev/null +++ b/src/server/utils.ts @@ -0,0 +1,8 @@ + +export * from "../shared_js/utils.js" + +function shortId(id: string): string { + return id.substring(0, id.indexOf("-")); +} + +export {shortId} diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index 51c33c9b..f9162906 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -12,6 +12,7 @@ import * as en from "../shared_js/enums.js" import * as ev from "../shared_js/class/Event.js" import { Client, ClientPlayer } from "./class/Client.js" import { GameSession } from "./class/GameSession.js" +import { shortId } from "./utils.js"; // pas indispensable d'avoir un autre port si le WebSocket est relié à un serveur http préexistant ? const wsPort = 8042; @@ -35,7 +36,7 @@ function connectionListener(socket: WebSocket, request: IncomingMessage) socket.on("pong", function heartbeat() { client.isAlive = true; - console.log("%i: client %s is alive", Date.now(), client.id); + // console.log(`client ${shortId(client.id)} is alive`); }); socket.on("message", function log(data: string) { @@ -57,7 +58,8 @@ function clientAnnounceListener(this: WebSocket, data: string) { try { const msg : ev.ClientAnnounce = JSON.parse(data); - if (msg.type === en.EventTypes.clientAnnounce) { + if (msg.type === en.EventTypes.clientAnnounce) + { // TODO: reconnection with msg.clientId ? // TODO: spectator/player distinction with msg.role ? @@ -121,7 +123,8 @@ function playerReadyConfirmationListener(this: WebSocket, data: string) { try { const msg : ev.ClientEvent = JSON.parse(data); - if (msg.type === en.EventTypes.clientPlayerReady) { + if (msg.type === en.EventTypes.clientPlayerReady) + { const client = clientsMap.get(this.id); const gameSession = client.gameSession; gameSession.unreadyPlayersMap.delete(this.id); @@ -149,7 +152,8 @@ export function clientInputListener(this: WebSocket, data: string) try { // const input: ev.ClientEvent = JSON.parse(data); const input: ev.EventInput = JSON.parse(data); - if (input.type === en.EventTypes.clientInput) { + if (input.type === en.EventTypes.clientInput) + { const client = clientsMap.get(this.id) as ClientPlayer; client.inputBuffer = input; client.gameSession.instantInputDebug(client); // wip @@ -167,22 +171,46 @@ export function clientInputListener(this: WebSocket, data: string) //////////// const pingInterval = setInterval( () => { + let deleteLog = ""; clientsMap.forEach( (client, key, map) => { - if (client.isAlive === false) { - client.socket.terminate(); - map.delete(key); - if (matchmakingPlayersMap.has(key)) { - matchmakingPlayersMap.delete(key); - } - console.log("%i: client %s is no more :'(", Date.now(), key); - return; + if (!client.isAlive) { + clientTerminate(client, key, map); + deleteLog += ` ${shortId(key)} |`; } client.isAlive = false; client.socket.ping(); }); + + if (deleteLog) { + console.log(`Disconnected:${deleteLog}`); + } + console.log("gameSessionMap size: " + gameSessionsMap.size); + console.log("clientsMap size: " + clientsMap.size); + console.log("matchmakingPlayersMap size: " + matchmakingPlayersMap.size); + console.log(""); }, 5000); +function clientTerminate(client: Client, key: string, map: Map) +{ + client.socket.terminate(); + if (client.gameSession) + { + client.gameSession.playersMap.delete(key); + if (client.gameSession.playersMap.size === 0) + { + clearInterval(client.gameSession.clientsUpdateInterval); + clearInterval(client.gameSession.gameLoopInterval); + gameSessionsMap.delete(client.gameSession.id); + } + } + map.delete(key); + if (matchmakingPlayersMap.has(key)) { + matchmakingPlayersMap.delete(key); + } +} + + function closeListener() { clearInterval(pingInterval); From 6e572f2fb5a23edd0715c8c672f9b186a4304036 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 1 Dec 2022 05:50:31 +0100 Subject: [PATCH 34/48] matchmaking rework for multiples game modes --- src/client/constants.ts | 4 ++ src/client/ws.ts | 4 +- src/server/class/Client.ts | 10 ++--- src/server/class/GameSession.ts | 14 +++---- src/server/wsServer.ts | 72 ++++++++++++++++++--------------- src/shared_js/class/Event.ts | 4 +- src/shared_js/enums.ts | 8 +++- 7 files changed, 67 insertions(+), 49 deletions(-) diff --git a/src/client/constants.ts b/src/client/constants.ts index 5a3f4d9f..325ea7af 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -17,3 +17,7 @@ export const fixedDeltaTime = gameLoopIntervalMS/1000; // second export const soundMutedFlag = true; export const soundRobloxVolume = 0.3; // between 0 and 1 export const soundPongVolume = 0.3; // between 0 and 1 + +// TODO: replace by a selector on the website +import * as en from "../shared_js/enums.js" +export const optionsPLACEHOLDER = en.MatchOptions.noOption; diff --git a/src/client/ws.ts b/src/client/ws.ts index e80c640f..63dd4d92 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -25,7 +25,7 @@ class ClientInfo { export const clientInfo = new ClientInfo(); socket.addEventListener("open", (event) => { - socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, clientInfo.id) )); + socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, c.optionsPLACEHOLDER, clientInfo.id) )); }); // socket.addEventListener("message", logListener); // for testing purpose @@ -58,7 +58,7 @@ function preMatchListener(this: WebSocket, event: MessageEvent) { } clientInfo.opponentNextPos = new VectorInteger(clientInfo.opponent.pos.x, clientInfo.opponent.pos.y); clientInfo.racket.color = "darkgreen"; // for testing purpose - socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); + socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); // TODO: set an interval/timeout to resend until matchStart response (in case of network problem) matchmakingComplete(); break; case en.EventTypes.matchStart: diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index c1678848..fbdd8fd3 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -3,16 +3,14 @@ import { WebSocket } from "../wsServer.js"; import { Racket } from "../../shared_js/class/Rectangle.js"; import { GameSession } from "./GameSession.js"; import * as ev from "../../shared_js/class/Event.js" +import * as en from "../../shared_js/enums.js" class Client { socket: WebSocket; id: string; // Pas indispensable si "socket" a une copie de "id" isAlive: boolean = true; - gameSession: GameSession; - - inputBuffer: ev.EventInput = new ev.EventInput(); - lastInputId: number = 0; - + gameSession: GameSession = null; + matchOptions: en.MatchOptions = 0; constructor(socket: WebSocket, id: string) { this.socket = socket; this.id = id; @@ -20,6 +18,8 @@ class Client { } class ClientPlayer extends Client { + inputBuffer: ev.EventInput = new ev.EventInput(); + lastInputId: number = 0; racket: Racket; constructor(socket: WebSocket, id: string, racket: Racket) { super(socket, id); diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index dbec42bf..3b39c888 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -13,20 +13,20 @@ import { random } from "../utils.js"; */ class GameSession { id: string; // url ? - playersMap: Map; - unreadyPlayersMap: Map; - gameLoopInterval: NodeJS.Timer | number; - clientsUpdateInterval: NodeJS.Timer | number; + playersMap: Map = new Map(); + unreadyPlayersMap: Map = new Map(); + gameLoopInterval: NodeJS.Timer | number = 0; + clientsUpdateInterval: NodeJS.Timer | number = 0; components: GameComponentsServer; + matchOptions: en.MatchOptions; actual_time: number; last_time: number; delta_time: number; - constructor(id: string) { + constructor(id: string, matchOptions: en.MatchOptions) { this.id = id; - this.playersMap = new Map(); - this.unreadyPlayersMap = new Map(); + this.matchOptions = matchOptions; this.components = new GameComponentsServer(); } start() { diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index f9162906..c94c9297 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -62,10 +62,12 @@ function clientAnnounceListener(this: WebSocket, data: string) { // TODO: reconnection with msg.clientId ? // TODO: spectator/player distinction with msg.role ? - + + const player = clientsMap.get(this.id) as ClientPlayer; + player.matchOptions = msg.matchOptions; this.send(JSON.stringify( new ev.EventAssignId(this.id) )); this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )); - matchmaking(this); + matchmaking(player); } else { console.log("Invalid ClientAnnounce"); @@ -79,43 +81,47 @@ function clientAnnounceListener(this: WebSocket, data: string) } -function matchmaking(socket: WebSocket) +function matchmaking(player: ClientPlayer) { - const player: ClientPlayer = clientsMap.get(socket.id) as ClientPlayer; - if (matchmakingPlayersMap.size < 1) - { - matchmakingPlayersMap.set(socket.id, player); + const minPlayersNumber = 2; + const maxPlayersNumber = 2; + const matchOptions = player.matchOptions; + matchmakingPlayersMap.set(player.id, player); + + const compatiblePlayers: ClientPlayer[] = []; + matchmakingPlayersMap.forEach((client) => { + if (compatiblePlayers.length === maxPlayersNumber) { + return; // how can we stop forEach entierly and not just this step ??? + } + if (client.matchOptions === matchOptions) { + compatiblePlayers.push(client); + // PLACE complete forEach stop here + } + }); + + if (compatiblePlayers.length < minPlayersNumber) { return; } - else - { - const id = uuidv4(); - const gameSession = new GameSession(id); - gameSessionsMap.set(id, gameSession); - // for player - gameSession.playersMap.set(player.id, player); - player.racket = gameSession.components.playerRight; - socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.right) )); + const id = uuidv4(); + const gameSession = new GameSession(id, matchOptions); + gameSessionsMap.set(id, gameSession); - // for opponent - const opponent: ClientPlayer = matchmakingPlayersMap.values().next().value; - gameSession.playersMap.set(opponent.id, opponent); - matchmakingPlayersMap.delete(opponent.id); - opponent.racket = gameSession.components.playerLeft; - opponent.socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); + compatiblePlayers.forEach((client) => { + matchmakingPlayersMap.delete(client.id); + client.gameSession = gameSession; + gameSession.playersMap.set(client.id, client); + gameSession.unreadyPlayersMap.set(client.id, client); + }); - // for both - gameSession.playersMap.forEach( (client) => { - gameSession.unreadyPlayersMap.set(client.id, client); - client.gameSession = gameSession; - }); - gameSession.playersMap.forEach( (client) => { - /* set listener last to be absolutly sure there no early game launch - (unlikely, but possible in theory) */ - client.socket.once("message", playerReadyConfirmationListener); - }); - } + // WIP: Not pretty, hardcoded two players. + // Could be done in gameSession maybe ? + compatiblePlayers[0].racket = gameSession.components.playerRight; + compatiblePlayers[1].racket = gameSession.components.playerLeft; + compatiblePlayers[0].socket.once("message", playerReadyConfirmationListener); + compatiblePlayers[1].socket.once("message", playerReadyConfirmationListener); + compatiblePlayers[0].socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.right) )); + compatiblePlayers[1].socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); } diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 14b86ff3..1b6ae6cd 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -75,10 +75,12 @@ class ClientEvent { class ClientAnnounce extends ClientEvent { role: en.ClientRole; clientId: string; - constructor(role: en.ClientRole, clientId: string = "") { + matchOptions: en.MatchOptions; + constructor(role: en.ClientRole, matchOptions: en.MatchOptions, clientId: string = "") { super(en.EventTypes.clientAnnounce); this.role = role; this.clientId = clientId; + this.matchOptions = matchOptions; } } diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts index cc8ec311..5dafa8e0 100644 --- a/src/shared_js/enums.ts +++ b/src/shared_js/enums.ts @@ -37,4 +37,10 @@ enum ClientRole { spectator } -export {EventTypes, InputEnum, PlayerSide, ClientRole} +enum MatchOptions { + // binary flags, can be mixed + noOption = 0b0, + multiBalls = 1 << 0 +} + +export {EventTypes, InputEnum, PlayerSide, ClientRole, MatchOptions} From c8c3111ed4d2ac5bd8c0db79abe6aff410a74f9f Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 1 Dec 2022 15:55:40 +0100 Subject: [PATCH 35/48] WIP multiBalls (need refactoring) --- src/client/class/GameComponentsClient.ts | 16 +++- src/client/constants.ts | 2 +- src/client/draw.ts | 7 ++ src/client/gameLoop.ts | 6 ++ src/client/pong.ts | 2 +- src/client/ws.ts | 11 +++ src/server/class/GameComponentsServer.ts | 6 +- src/server/class/GameSession.ts | 98 +++++++++++++++--------- src/shared_js/class/Event.ts | 14 ++++ src/shared_js/class/GameComponents.ts | 14 +++- src/shared_js/class/Rectangle.ts | 1 + 11 files changed, 132 insertions(+), 45 deletions(-) diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index c5046ee3..047e3589 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -1,5 +1,6 @@ import * as c from "../constants.js" +import * as en from "../../shared_js/enums.js" import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; import { TextElem, TextNumericValue } from "./Text.js"; import { RectangleClient, RacketClient, BallClient, Line } from "./RectangleClient.js"; @@ -11,14 +12,21 @@ class GameComponentsExtensionForClient extends GameComponents { playerLeft: RacketClient; playerRight: RacketClient; ball: BallClient; - constructor(ctx: CanvasRenderingContext2D) + ball2?: BallClient; + ball3?: BallClient; + constructor(options: en.MatchOptions, ctx: CanvasRenderingContext2D) { - super(); + super(options); this.wallTop = new RectangleClient(this.wallTop.pos, this.wallTop.width, this.wallTop.height, ctx, "grey"); this.wallBottom = new RectangleClient(this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, ctx, "grey"); this.playerLeft = new RacketClient(this.playerLeft.pos, this.playerLeft.width, this.playerLeft.height, this.playerLeft.baseSpeed, ctx, "white"); this.playerRight = new RacketClient(this.playerRight.pos, this.playerRight.width, this.playerRight.height, this.playerRight.baseSpeed, ctx, "white"); this.ball = new BallClient(this.ball.pos, this.ball.width, this.ball.baseSpeed, this.ball.speedIncrease, ctx, "white"); + if (options & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + this.ball2 = new BallClient(this.ball2.pos, this.ball2.width, this.ball2.baseSpeed, this.ball2.speedIncrease, ctx, "white"); + this.ball3 = new BallClient(this.ball3.pos, this.ball3.width, this.ball3.baseSpeed, this.ball3.speedIncrease, ctx, "white"); + } } } @@ -35,9 +43,9 @@ class GameComponentsClient extends GameComponentsExtensionForClient { h_grid_mid: RectangleClient; h_grid_u1: RectangleClient; h_grid_d1: RectangleClient; - constructor(ctx: CanvasRenderingContext2D) + constructor(options: en.MatchOptions, ctx: CanvasRenderingContext2D) { - super(ctx); + super(options, ctx); let pos = new VectorInteger; // Scores pos.assign(c.w_mid-c.scoreSize*1.6, c.scoreSize*1.5); diff --git a/src/client/constants.ts b/src/client/constants.ts index 325ea7af..59266782 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -20,4 +20,4 @@ export const soundPongVolume = 0.3; // between 0 and 1 // TODO: replace by a selector on the website import * as en from "../shared_js/enums.js" -export const optionsPLACEHOLDER = en.MatchOptions.noOption; +export const optionsPLACEHOLDER = en.MatchOptions.multiBalls; diff --git a/src/client/draw.ts b/src/client/draw.ts index 71dfa60b..848633da 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -1,5 +1,7 @@ import { pong, gc } from "./global.js" +import * as c from "./constants.js" +import * as en from "../shared_js/enums.js" import { gridDisplay } from "./handleInput.js"; function drawLoop() @@ -24,6 +26,11 @@ function drawDynamic() gc.playerLeft.update(); gc.playerRight.update(); gc.ball.update(); + if (c.optionsPLACEHOLDER & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + gc.ball2.update(); + gc.ball3.update(); + } } function drawStatic() diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 224e3d0e..55d53f82 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,5 +1,6 @@ import * as c from "./constants.js"; +import * as en from "../shared_js/enums.js" import { gc, clientInfo } from "./global.js"; let actual_time: number = Date.now(); @@ -23,6 +24,11 @@ function gameLoop() // client prediction gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + if (c.optionsPLACEHOLDER & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + gc.ball2.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + gc.ball3.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + } } function opponentInterpolation(delta: number) diff --git a/src/client/pong.ts b/src/client/pong.ts index 05be7494..44eab63c 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -16,7 +16,7 @@ import {socket} from "./ws.js"; socket; // no-op, just for loading */ export const pong = new GameArea(); -export const gc = new GameComponentsClient(pong.ctx); +export const gc = new GameComponentsClient(c.optionsPLACEHOLDER, pong.ctx); function matchmaking() { diff --git a/src/client/ws.ts b/src/client/ws.ts index 63dd4d92..559f0c83 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -93,6 +93,17 @@ function gameUpdate(data: ev.EventGameUpdate) gc.ball.pos.assign(data.ball.x, data.ball.y); gc.ball.dir.assign(data.ball.dirX, data.ball.dirY); gc.ball.speed = data.ball.speed; + + if (c.optionsPLACEHOLDER & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + gc.ball2.pos.assign(data.ball2.x, data.ball2.y); + gc.ball2.dir.assign(data.ball2.dirX, data.ball2.dirY); + gc.ball2.speed = data.ball2.speed; + + gc.ball3.pos.assign(data.ball3.x, data.ball3.y); + gc.ball3.dir.assign(data.ball3.dirX, data.ball3.dirY); + gc.ball3.speed = data.ball3.speed; + } const predictionPos = new VectorInteger(clientInfo.racket.pos.x, clientInfo.racket.pos.y); // debug diff --git a/src/server/class/GameComponentsServer.ts b/src/server/class/GameComponentsServer.ts index 31f3ca67..d8f2c044 100644 --- a/src/server/class/GameComponentsServer.ts +++ b/src/server/class/GameComponentsServer.ts @@ -1,14 +1,14 @@ import * as c from "../constants.js" +import * as en from "../../shared_js/enums.js" import { GameComponents } from "../../shared_js/class/GameComponents.js"; class GameComponentsServer extends GameComponents { scoreLeft: number = 0; scoreRight: number = 0; - ballInPlay: boolean = false; - constructor() + constructor(options: en.MatchOptions) { - super(); + super(options); } } diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index 3b39c888..adb5cb1a 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -6,6 +6,7 @@ import { ClientPlayer } from "./Client"; import { GameComponentsServer } from "./GameComponentsServer.js"; import { clientInputListener } from "../wsServer.js"; import { random } from "../utils.js"; +import { Ball } from "../../shared_js/class/Rectangle.js"; /* Arg "s: GameSession" replace "this: GameSession" for use with setTimeout(), @@ -27,11 +28,17 @@ class GameSession { constructor(id: string, matchOptions: en.MatchOptions) { this.id = id; this.matchOptions = matchOptions; - this.components = new GameComponentsServer(); + this.components = new GameComponentsServer(this.matchOptions); } start() { setTimeout(this.resume, c.matchStartDelay, this); - setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay, this); + const gc = this.components; + setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay, this, gc.ball); + if (this.matchOptions & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay + c.newRoundDelay*0.33, this, gc.ball2); + setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay + c.newRoundDelay*0.66, this, gc.ball3); + } } resume(s: GameSession) { s.playersMap.forEach( (client) => { @@ -84,53 +91,74 @@ class GameSession { }); */ const gc = s.components; - if (gc.ballInPlay) + s._ballMovement(s.delta_time, gc.ball); + if (s.matchOptions & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + s._ballMovement(s.delta_time, gc.ball2); + s._ballMovement(s.delta_time, gc.ball3); + } + /* + gc.ballArr.forEach( (ball) => { + s._ballMovement(s.delta_time, ball); + }); + */ + } + private _ballMovement(delta: number, ball: Ball) { + const gc = this.components; + if (ball.ballInPlay) { - gc.ball.moveAndBounce(s.delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - if (gc.ball.pos.x > c.w) { - gc.ballInPlay = false; + ball.moveAndBounce(delta, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + if (ball.pos.x > c.w) { + ball.ballInPlay = false; ++gc.scoreLeft; - s.playersMap.forEach( (client) => { + this.playersMap.forEach( (client) => { client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); }); - setTimeout(s._newRound, c.newRoundDelay, s); + setTimeout(this._newRound, c.newRoundDelay, this, ball); } - else if (gc.ball.pos.x < 0 - gc.ball.width) { - gc.ballInPlay = false; + else if (ball.pos.x < 0 - ball.width) { + ball.ballInPlay = false; ++gc.scoreRight; - - s.playersMap.forEach( (client) => { + + this.playersMap.forEach( (client) => { client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); }); - setTimeout(s._newRound, c.newRoundDelay, s); + setTimeout(this._newRound, c.newRoundDelay, this, ball); } } } private _clientsUpdate(s: GameSession) { const gc = s.components; - const update: ev.EventGameUpdate = { - type: en.EventTypes.gameUpdate, - playerLeft: { - y: gc.playerLeft.pos.y - }, - playerRight: { - y: gc.playerRight.pos.y - }, - ball:{ - x: gc.ball.pos.x, - y: gc.ball.pos.y, - dirX: gc.ball.dir.x, - dirY: gc.ball.dir.y, - speed: gc.ball.speed - }, - lastInputId: 0 - }; + const update = new ev.EventGameUpdate(); + update.playerLeft.y = gc.playerLeft.pos.y; + update.playerRight.y = gc.playerRight.pos.y; + + update.ball.x = gc.ball.pos.x; + update.ball.y = gc.ball.pos.y; + update.ball.dirX = gc.ball.dir.x; + update.ball.dirY = gc.ball.dir.y; + update.ball.speed = gc.ball.speed; + if (s.matchOptions & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + update.ball2.x = gc.ball2.pos.x; + update.ball2.y = gc.ball2.pos.y; + update.ball2.dirX = gc.ball2.dir.x; + update.ball2.dirY = gc.ball2.dir.y; + update.ball2.speed = gc.ball2.speed; + + update.ball3.x = gc.ball3.pos.x; + update.ball3.y = gc.ball3.pos.y; + update.ball3.dirX = gc.ball3.dir.x; + update.ball3.dirY = gc.ball3.dir.y; + update.ball3.speed = gc.ball3.speed; + } + s.playersMap.forEach( (client) => { update.lastInputId = client.lastInputId; client.socket.send(JSON.stringify(update)); }); } - private _newRound(s: GameSession) { + private _newRound(s: GameSession, ball: Ball) { const gc = s.components; // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches if (gc.scoreLeft >= 11 || gc.scoreRight >= 11) @@ -142,10 +170,10 @@ class GameSession { return; } } - gc.ball.pos.x = c.w_mid; - gc.ball.pos.y = Math.floor((c.h * 0.1) + random() * (c.h * 0.8)); - gc.ball.speed = gc.ball.baseSpeed; - gc.ballInPlay = true; + ball.pos.x = c.w_mid; + ball.pos.y = Math.floor((c.h * 0.1) + random() * (c.h * 0.8)); + ball.speed = ball.baseSpeed; + ball.ballInPlay = true; } private _matchEnd(s: GameSession) { const gc = s.components; diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 1b6ae6cd..d8849e10 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -39,6 +39,20 @@ class EventGameUpdate extends ServerEvent { dirY: 0, speed: 0 }; + ball2? = { // ALTERNATIVE POSSIBLE, Array of balls + x: 0, + y: 0, + dirX: 0, + dirY: 0, + speed: 0 + }; + ball3? = { + x: 0, + y: 0, + dirX: 0, + dirY: 0, + speed: 0 + }; lastInputId = 0; constructor() { // TODO: constructor that take GameComponentsServer maybe ? super(en.EventTypes.gameUpdate); diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index d6e4e3de..16375851 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -1,5 +1,6 @@ import * as c from "../constants.js" +import * as en from "../../shared_js/enums.js" import { VectorInteger } from "./Vector.js"; import { Rectangle, Racket, Ball } from "./Rectangle.js"; @@ -9,7 +10,9 @@ class GameComponents { playerLeft: Racket; playerRight: Racket; ball: Ball; - constructor() + ball2?: Ball; + ball3?: Ball; + constructor(options: en.MatchOptions) { let pos = new VectorInteger; @@ -26,6 +29,15 @@ class GameComponents { pos.assign(-c.ballSize, -c.ballSize); // ball out =) this.ball = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); this.ball.dir.assign(-0.8, +0.2); + + if (options & en.MatchOptions.multiBalls) + { // ALTERNATIVE POSSIBLE, Array of balls + pos.assign(-c.ballSize, -c.ballSize); // ball out =) + this.ball2 = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); + this.ball2.dir.assign(-0.8, +0.2); + this.ball3 = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); + this.ball3.dir.assign(-0.8, +0.2); + } } } diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index 8b9e1260..fff71dc9 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -74,6 +74,7 @@ class Racket extends MovingRectangle { class Ball extends MovingRectangle { readonly speedIncrease: number; + ballInPlay: boolean = false; constructor(pos: VectorInteger, size: number, baseSpeed: number, speedIncrease: number) { super(pos, size, size, baseSpeed); this.speedIncrease = speedIncrease; From f73932c131a03466f2dc9d6d7572674ccbd8ddfc Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 1 Dec 2022 17:48:34 +0100 Subject: [PATCH 36/48] multiBalls refactoring with ballsArr[] --- src/client/class/GameComponentsClient.ts | 16 ++--- src/client/draw.ts | 9 +-- src/client/gameLoop.ts | 9 +-- src/client/ws.ts | 25 ++++---- src/server/class/GameSession.ts | 82 +++++++++--------------- src/shared_js/class/Event.ts | 28 ++------ src/shared_js/class/GameComponents.ts | 36 +++++++---- src/shared_js/constants.ts | 2 + src/shared_js/utils.ts | 11 +++- 9 files changed, 97 insertions(+), 121 deletions(-) diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 047e3589..2ab6aefe 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -11,9 +11,7 @@ class GameComponentsExtensionForClient extends GameComponents { wallBottom: RectangleClient; playerLeft: RacketClient; playerRight: RacketClient; - ball: BallClient; - ball2?: BallClient; - ball3?: BallClient; + ballsArr: BallClient[]; constructor(options: en.MatchOptions, ctx: CanvasRenderingContext2D) { super(options); @@ -21,12 +19,12 @@ class GameComponentsExtensionForClient extends GameComponents { this.wallBottom = new RectangleClient(this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, ctx, "grey"); this.playerLeft = new RacketClient(this.playerLeft.pos, this.playerLeft.width, this.playerLeft.height, this.playerLeft.baseSpeed, ctx, "white"); this.playerRight = new RacketClient(this.playerRight.pos, this.playerRight.width, this.playerRight.height, this.playerRight.baseSpeed, ctx, "white"); - this.ball = new BallClient(this.ball.pos, this.ball.width, this.ball.baseSpeed, this.ball.speedIncrease, ctx, "white"); - if (options & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - this.ball2 = new BallClient(this.ball2.pos, this.ball2.width, this.ball2.baseSpeed, this.ball2.speedIncrease, ctx, "white"); - this.ball3 = new BallClient(this.ball3.pos, this.ball3.width, this.ball3.baseSpeed, this.ball3.speedIncrease, ctx, "white"); - } + + const newBallsArr: BallClient[] = []; + this.ballsArr.forEach((ball) => { + newBallsArr.push(new BallClient(ball.pos, ball.width, ball.baseSpeed, ball.speedIncrease, ctx, "white")); + }); + this.ballsArr = newBallsArr; } } diff --git a/src/client/draw.ts b/src/client/draw.ts index 848633da..5d87e7a6 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -25,12 +25,9 @@ function drawDynamic() gc.scoreRight.update(); gc.playerLeft.update(); gc.playerRight.update(); - gc.ball.update(); - if (c.optionsPLACEHOLDER & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - gc.ball2.update(); - gc.ball3.update(); - } + gc.ballsArr.forEach((ball) => { + ball.update(); + }); } function drawStatic() diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 55d53f82..76773e58 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -23,12 +23,9 @@ function gameLoop() } // client prediction - gc.ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - if (c.optionsPLACEHOLDER & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - gc.ball2.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - gc.ball3.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - } + gc.ballsArr.forEach((ball) => { + ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + }); } function opponentInterpolation(delta: number) diff --git a/src/client/ws.ts b/src/client/ws.ts index 559f0c83..aea26ed0 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -90,20 +90,17 @@ function gameUpdate(data: ev.EventGameUpdate) { console.log("gameUpdate"); - gc.ball.pos.assign(data.ball.x, data.ball.y); - gc.ball.dir.assign(data.ball.dirX, data.ball.dirY); - gc.ball.speed = data.ball.speed; - - if (c.optionsPLACEHOLDER & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - gc.ball2.pos.assign(data.ball2.x, data.ball2.y); - gc.ball2.dir.assign(data.ball2.dirX, data.ball2.dirY); - gc.ball2.speed = data.ball2.speed; - - gc.ball3.pos.assign(data.ball3.x, data.ball3.y); - gc.ball3.dir.assign(data.ball3.dirX, data.ball3.dirY); - gc.ball3.speed = data.ball3.speed; - } + data.ballsArr.forEach((ball, i) => { + gc.ballsArr[i].pos.assign(ball.x, ball.y); + gc.ballsArr[i].dir.assign(ball.dirX, ball.dirY); + gc.ballsArr[i].speed = ball.speed; + }); + /* // Equivalent to + gc.ballsArr.forEach((ball, i) => { + ball.pos.assign(data.ballsArr[i].x, data.ballsArr[i].y); + ball.dir.assign(data.ballsArr[i].dirX, data.ballsArr[i].dirY); + ball.speed = data.ballsArr[i].speed; + }); */ const predictionPos = new VectorInteger(clientInfo.racket.pos.x, clientInfo.racket.pos.y); // debug diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index adb5cb1a..f25f11d4 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -20,6 +20,7 @@ class GameSession { clientsUpdateInterval: NodeJS.Timer | number = 0; components: GameComponentsServer; matchOptions: en.MatchOptions; + matchEnded: boolean = false; actual_time: number; last_time: number; @@ -31,14 +32,14 @@ class GameSession { this.components = new GameComponentsServer(this.matchOptions); } start() { - setTimeout(this.resume, c.matchStartDelay, this); const gc = this.components; - setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay, this, gc.ball); - if (this.matchOptions & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay + c.newRoundDelay*0.33, this, gc.ball2); - setTimeout(this._newRound, c.matchStartDelay + c.newRoundDelay + c.newRoundDelay*0.66, this, gc.ball3); - } + setTimeout(this.resume, c.matchStartDelay, this); + + let timeout = c.matchStartDelay + c.newRoundDelay; + gc.ballsArr.forEach((ball) => { + setTimeout(this._newRound, timeout, this, ball); + timeout += c.newRoundDelay*0.5; + }); } resume(s: GameSession) { s.playersMap.forEach( (client) => { @@ -91,35 +92,26 @@ class GameSession { }); */ const gc = s.components; - s._ballMovement(s.delta_time, gc.ball); - if (s.matchOptions & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - s._ballMovement(s.delta_time, gc.ball2); - s._ballMovement(s.delta_time, gc.ball3); - } - /* - gc.ballArr.forEach( (ball) => { - s._ballMovement(s.delta_time, ball); - }); - */ + gc.ballsArr.forEach((ball) => { + s._ballMovement(s.delta_time, ball); + }); } private _ballMovement(delta: number, ball: Ball) { const gc = this.components; if (ball.ballInPlay) { ball.moveAndBounce(delta, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); - if (ball.pos.x > c.w) { + if (ball.pos.x > c.w + || ball.pos.x < 0 - ball.width) + { ball.ballInPlay = false; - ++gc.scoreLeft; - this.playersMap.forEach( (client) => { - client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); - }); - setTimeout(this._newRound, c.newRoundDelay, this, ball); - } - else if (ball.pos.x < 0 - ball.width) { - ball.ballInPlay = false; - ++gc.scoreRight; - + if (this.matchEnded) { + return; + } + + if (ball.pos.x > c.w) { ++gc.scoreLeft; } + else if (ball.pos.x < 0 - ball.width) { ++gc.scoreRight; } + this.playersMap.forEach( (client) => { client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); }); @@ -132,27 +124,16 @@ class GameSession { const update = new ev.EventGameUpdate(); update.playerLeft.y = gc.playerLeft.pos.y; update.playerRight.y = gc.playerRight.pos.y; - - update.ball.x = gc.ball.pos.x; - update.ball.y = gc.ball.pos.y; - update.ball.dirX = gc.ball.dir.x; - update.ball.dirY = gc.ball.dir.y; - update.ball.speed = gc.ball.speed; - if (s.matchOptions & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - update.ball2.x = gc.ball2.pos.x; - update.ball2.y = gc.ball2.pos.y; - update.ball2.dirX = gc.ball2.dir.x; - update.ball2.dirY = gc.ball2.dir.y; - update.ball2.speed = gc.ball2.speed; - - update.ball3.x = gc.ball3.pos.x; - update.ball3.y = gc.ball3.pos.y; - update.ball3.dirX = gc.ball3.dir.x; - update.ball3.dirY = gc.ball3.dir.y; - update.ball3.speed = gc.ball3.speed; - } - + gc.ballsArr.forEach((ball) => { + update.ballsArr.push({ + x: ball.pos.x, + y: ball.pos.y, + dirX: ball.dir.x, + dirY: ball.dir.y, + speed: ball.speed + }); + }); + s.playersMap.forEach( (client) => { update.lastInputId = client.lastInputId; client.socket.send(JSON.stringify(update)); @@ -176,6 +157,7 @@ class GameSession { ball.ballInPlay = true; } private _matchEnd(s: GameSession) { + s.matchEnded = true; const gc = s.components; let eventEnd: ev.EventMatchEnd; diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index d8849e10..7694605b 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -32,27 +32,13 @@ class EventGameUpdate extends ServerEvent { playerRight = { y: 0 }; - ball = { - x: 0, - y: 0, - dirX: 0, - dirY: 0, - speed: 0 - }; - ball2? = { // ALTERNATIVE POSSIBLE, Array of balls - x: 0, - y: 0, - dirX: 0, - dirY: 0, - speed: 0 - }; - ball3? = { - x: 0, - y: 0, - dirX: 0, - dirY: 0, - speed: 0 - }; + ballsArr: { + x: number, + y: number, + dirX: number, + dirY: number, + speed: number + }[] = []; lastInputId = 0; constructor() { // TODO: constructor that take GameComponentsServer maybe ? super(en.EventTypes.gameUpdate); diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index 16375851..4bb0d2c1 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -3,15 +3,14 @@ import * as c from "../constants.js" import * as en from "../../shared_js/enums.js" import { VectorInteger } from "./Vector.js"; import { Rectangle, Racket, Ball } from "./Rectangle.js"; +import { clamp, random } from "../utils.js"; class GameComponents { wallTop: Rectangle; wallBottom: Rectangle; playerLeft: Racket; playerRight: Racket; - ball: Ball; - ball2?: Ball; - ball3?: Ball; + ballsArr: Ball[] = []; constructor(options: en.MatchOptions) { let pos = new VectorInteger; @@ -26,18 +25,27 @@ class GameComponents { pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); this.playerRight = new Racket(pos, c.pw, c.ph, c.racketSpeed); - pos.assign(-c.ballSize, -c.ballSize); // ball out =) - this.ball = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); - this.ball.dir.assign(-0.8, +0.2); - - if (options & en.MatchOptions.multiBalls) - { // ALTERNATIVE POSSIBLE, Array of balls - pos.assign(-c.ballSize, -c.ballSize); // ball out =) - this.ball2 = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); - this.ball2.dir.assign(-0.8, +0.2); - this.ball3 = new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease); - this.ball3.dir.assign(-0.8, +0.2); + let ballsCount = 1; + if (options & en.MatchOptions.multiBalls) { + ballsCount = c.multiBallsCount; } + pos.assign(-c.ballSize, -c.ballSize); // ball out =) + while (this.ballsArr.length < ballsCount) { + this.ballsArr.push(new Ball(pos, c.ballSize, c.ballSpeed, c.ballSpeedIncrease)) + } + this.ballsArr.forEach((ball) => { + ball.dir.x = 1; + if (random() > 0.5) { + ball.dir.x *= -1; + } + + ball.dir.y = clamp(random(), 0, 0.2); + if (random() > 0.5) { + ball.dir.y *= -1; + } + + ball.dir = ball.dir.normalized(); + }); } } diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index 886d7a55..cd76f51e 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -19,3 +19,5 @@ export const normalizedSpeed = false; // for consistency in speed independent of export const matchStartDelay = 3000; // millisecond export const newRoundDelay = 1500; // millisecond + +export const multiBallsCount = 3; diff --git a/src/shared_js/utils.ts b/src/shared_js/utils.ts index b1746e9e..50feb05f 100644 --- a/src/shared_js/utils.ts +++ b/src/shared_js/utils.ts @@ -7,4 +7,13 @@ function sleep (ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } -export {random, sleep} +function clamp(n: number, min: number, max: number) : number +{ + if (n < min) + n = min; + else if (n > max) + n = max; + return (n); +} + +export {random, sleep, clamp} From 93a40f2ad9cd7ce610568e330db2ea714835d075 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 1 Dec 2022 18:20:58 +0100 Subject: [PATCH 37/48] memo.txt update --- memo.txt | 13 +++++++------ src/client/constants.ts | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/memo.txt b/memo.txt index 8a891dae..ff985e79 100644 --- a/memo.txt +++ b/memo.txt @@ -10,20 +10,21 @@ Done: - draw on the canvas "WIN", "LOSE", "MATCHMAKING COMPLETE", ... - interpolation (mis à jour progressif des mouvements de l'adversaire) - traitement groupé des inputs clients toutes les x millisecondes - (BUG désynchronisation: revenu à un traitement immédiat en attendant) + (BUG désynchronisation: revenu à un traitement immédiat en attendant) - Détruire les GameSession une fois finies. + - mode multi-balles TODO: -- mode multi-balles +- mode spectateur +- un ou deux modes de jeu alternatif. - certaines utilisations de Math.floor() superflu ? Vérifier les appels. -- (prediction de l'avancement de la balle basé sur la latence serveur ?) + (éventuellement Math.round() ?) ----------- idées modes de jeu : - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) - mode 2 raquettes (un joueur haut/gauche et bas/droite) - -- bonus divers (mode obstacle, multi-balles, skin patate, ...) -- mode spectateur + - skin patate ??? +- (prediction de l'avancement de la balle basé sur la latence serveur ?) ----------- - BUG: Si la balle va très vite, elle peut ignorer la collision avec une raquette ou mur. la collision est testée seulement après le mouvement. diff --git a/src/client/constants.ts b/src/client/constants.ts index 59266782..90453470 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -20,4 +20,4 @@ export const soundPongVolume = 0.3; // between 0 and 1 // TODO: replace by a selector on the website import * as en from "../shared_js/enums.js" -export const optionsPLACEHOLDER = en.MatchOptions.multiBalls; +export const optionsPLACEHOLDER = en.MatchOptions.noOption | en.MatchOptions.multiBalls; From 59c7ae2a165e917a6ad89c761d0dcde012700c25 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Fri, 2 Dec 2022 21:01:06 +0100 Subject: [PATCH 38/48] added alternate game mode "movingWalls" --- memo.txt | 4 +- src/client/class/GameComponentsClient.ts | 56 ++++++++++++++++++++---- src/client/constants.ts | 5 ++- src/client/draw.ts | 2 +- src/client/gameLoop.ts | 5 +++ src/client/ws.ts | 5 +++ src/server/class/GameSession.ts | 11 ++++- src/shared_js/class/Event.ts | 6 +++ src/shared_js/class/GameComponents.ts | 31 +++++++++---- src/shared_js/constants.ts | 3 ++ src/shared_js/enums.ts | 3 +- src/shared_js/utils.ts | 9 +++- src/shared_js/wallsMovement.ts | 20 +++++++++ 13 files changed, 136 insertions(+), 24 deletions(-) create mode 100644 src/shared_js/wallsMovement.ts diff --git a/memo.txt b/memo.txt index ff985e79..882a3339 100644 --- a/memo.txt +++ b/memo.txt @@ -13,15 +13,15 @@ Done: (BUG désynchronisation: revenu à un traitement immédiat en attendant) - Détruire les GameSession une fois finies. - mode multi-balles + - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) TODO: - mode spectateur -- un ou deux modes de jeu alternatif. - certaines utilisations de Math.floor() superflu ? Vérifier les appels. (éventuellement Math.round() ?) +- un autre mode de jeu alternatif ? ----------- idées modes de jeu : - - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) - mode 2 raquettes (un joueur haut/gauche et bas/droite) - skin patate ??? - (prediction de l'avancement de la balle basé sur la latence serveur ?) diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 2ab6aefe..00fce3c1 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -3,28 +3,68 @@ import * as c from "../constants.js" import * as en from "../../shared_js/enums.js" import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; import { TextElem, TextNumericValue } from "./Text.js"; -import { RectangleClient, RacketClient, BallClient, Line } from "./RectangleClient.js"; +import { RectangleClient, MovingRectangleClient, RacketClient, BallClient, Line } from "./RectangleClient.js"; import { GameComponents } from "../../shared_js/class/GameComponents.js"; +import { assertMovingRectangle } from "../utils.js"; class GameComponentsExtensionForClient extends GameComponents { - wallTop: RectangleClient; - wallBottom: RectangleClient; + wallTop: RectangleClient | MovingRectangleClient; + wallBottom: RectangleClient | MovingRectangleClient; playerLeft: RacketClient; playerRight: RacketClient; ballsArr: BallClient[]; constructor(options: en.MatchOptions, ctx: CanvasRenderingContext2D) { super(options); - this.wallTop = new RectangleClient(this.wallTop.pos, this.wallTop.width, this.wallTop.height, ctx, "grey"); - this.wallBottom = new RectangleClient(this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, ctx, "grey"); - this.playerLeft = new RacketClient(this.playerLeft.pos, this.playerLeft.width, this.playerLeft.height, this.playerLeft.baseSpeed, ctx, "white"); - this.playerRight = new RacketClient(this.playerRight.pos, this.playerRight.width, this.playerRight.height, this.playerRight.baseSpeed, ctx, "white"); + // Rackets + this.playerLeft = new RacketClient( + this.playerLeft.pos, this.playerLeft.width, this.playerLeft.height, this.playerLeft.baseSpeed, + ctx, "white"); + this.playerRight = new RacketClient( + this.playerRight.pos, this.playerRight.width, this.playerRight.height, this.playerRight.baseSpeed, + ctx, "white"); + + // Balls const newBallsArr: BallClient[] = []; this.ballsArr.forEach((ball) => { - newBallsArr.push(new BallClient(ball.pos, ball.width, ball.baseSpeed, ball.speedIncrease, ctx, "white")); + newBallsArr.push(new BallClient( + ball.pos, ball.width, ball.baseSpeed, ball.speedIncrease, + ctx, "white") + ); }); this.ballsArr = newBallsArr; + + // Walls + if (options & en.MatchOptions.movingWalls) + { + const dir = new Vector; + + assertMovingRectangle(this.wallTop); + dir.assign(this.wallTop.dir.x, this.wallTop.dir.y); + this.wallTop = new MovingRectangleClient( + this.wallTop.pos, this.wallTop.width, this.wallTop.height, + this.wallTop.baseSpeed, + ctx, "grey"); + (this.wallTop).dir.assign(dir.x, dir.y); + + assertMovingRectangle(this.wallBottom); + dir.assign(this.wallBottom.dir.x, this.wallBottom.dir.y); + this.wallBottom = new MovingRectangleClient( + this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, + this.wallBottom.baseSpeed, + ctx, "grey"); + (this.wallBottom).dir.assign(dir.x, dir.y); + } + else + { + this.wallTop = new RectangleClient( + this.wallTop.pos, this.wallTop.width, this.wallTop.height, + ctx, "grey"); + this.wallBottom = new RectangleClient( + this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, + ctx, "grey"); + } } } diff --git a/src/client/constants.ts b/src/client/constants.ts index 90453470..786d0f99 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -20,4 +20,7 @@ export const soundPongVolume = 0.3; // between 0 and 1 // TODO: replace by a selector on the website import * as en from "../shared_js/enums.js" -export const optionsPLACEHOLDER = en.MatchOptions.noOption | en.MatchOptions.multiBalls; +export const optionsPLACEHOLDER = en.MatchOptions.noOption; +// export const optionsPLACEHOLDER = en.MatchOptions.multiBalls; +// export const optionsPLACEHOLDER = en.MatchOptions.movingWalls; +// export const optionsPLACEHOLDER = en.MatchOptions.movingWalls | en.MatchOptions.multiBalls; diff --git a/src/client/draw.ts b/src/client/draw.ts index 5d87e7a6..984c2acb 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -32,9 +32,9 @@ function drawDynamic() function drawStatic() { + gc.midLine.update(); gc.wallTop.update(); gc.wallBottom.update(); - gc.midLine.update(); } function drawGrid() diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 76773e58..b911641a 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -2,6 +2,7 @@ import * as c from "./constants.js"; import * as en from "../shared_js/enums.js" import { gc, clientInfo } from "./global.js"; +import { wallsMovements } from "../shared_js/wallsMovement.js"; let actual_time: number = Date.now(); let last_time: number; @@ -26,6 +27,10 @@ function gameLoop() gc.ballsArr.forEach((ball) => { ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); }); + + if (c.optionsPLACEHOLDER & en.MatchOptions.movingWalls) { + wallsMovements(delta_time, gc); + } } function opponentInterpolation(delta: number) diff --git a/src/client/ws.ts b/src/client/ws.ts index aea26ed0..fd97756c 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -90,6 +90,11 @@ function gameUpdate(data: ev.EventGameUpdate) { console.log("gameUpdate"); + if (c.optionsPLACEHOLDER & en.MatchOptions.movingWalls) { + gc.wallTop.pos.y = data.wallTop.y; + gc.wallBottom.pos.y = data.wallBottom.y; + } + data.ballsArr.forEach((ball, i) => { gc.ballsArr[i].pos.assign(ball.x, ball.y); gc.ballsArr[i].dir.assign(ball.dirX, ball.dirY); diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index f25f11d4..93cc544a 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -7,6 +7,7 @@ import { GameComponentsServer } from "./GameComponentsServer.js"; import { clientInputListener } from "../wsServer.js"; import { random } from "../utils.js"; import { Ball } from "../../shared_js/class/Rectangle.js"; +import { wallsMovements } from "../../shared_js/wallsMovement.js"; /* Arg "s: GameSession" replace "this: GameSession" for use with setTimeout(), @@ -95,6 +96,10 @@ class GameSession { gc.ballsArr.forEach((ball) => { s._ballMovement(s.delta_time, ball); }); + + if (s.matchOptions & en.MatchOptions.movingWalls) { + wallsMovements(s.delta_time, gc); + } } private _ballMovement(delta: number, ball: Ball) { const gc = this.components; @@ -133,6 +138,10 @@ class GameSession { speed: ball.speed }); }); + if (s.matchOptions & en.MatchOptions.movingWalls) { + update.wallTop.y = gc.wallTop.pos.y; + update.wallBottom.y = gc.wallBottom.pos.y; + } s.playersMap.forEach( (client) => { update.lastInputId = client.lastInputId; @@ -152,7 +161,7 @@ class GameSession { } } ball.pos.x = c.w_mid; - ball.pos.y = Math.floor((c.h * 0.1) + random() * (c.h * 0.8)); + ball.pos.y = random(c.h*0.3, c.h*0.7); ball.speed = ball.baseSpeed; ball.ballInPlay = true; } diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 7694605b..3f0d440a 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -39,6 +39,12 @@ class EventGameUpdate extends ServerEvent { dirY: number, speed: number }[] = []; + wallTop? = { + y: 0 + }; + wallBottom? = { + y: 0 + }; lastInputId = 0; constructor() { // TODO: constructor that take GameComponentsServer maybe ? super(en.EventTypes.gameUpdate); diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index 4bb0d2c1..4994af89 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -2,29 +2,26 @@ import * as c from "../constants.js" import * as en from "../../shared_js/enums.js" import { VectorInteger } from "./Vector.js"; -import { Rectangle, Racket, Ball } from "./Rectangle.js"; +import { Rectangle, MovingRectangle, Racket, Ball } from "./Rectangle.js"; import { clamp, random } from "../utils.js"; class GameComponents { - wallTop: Rectangle; - wallBottom: Rectangle; + wallTop: Rectangle | MovingRectangle; + wallBottom: Rectangle | MovingRectangle; playerLeft: Racket; playerRight: Racket; ballsArr: Ball[] = []; constructor(options: en.MatchOptions) { - let pos = new VectorInteger; + const pos = new VectorInteger; - pos.assign(0, 0); - this.wallTop = new Rectangle(pos, c.w, c.wallSize); - pos.assign(0, c.h-c.wallSize); - this.wallBottom = new Rectangle(pos, c.w, c.wallSize); - + // Rackets pos.assign(0+c.pw, c.h_mid-c.ph/2); this.playerLeft = new Racket(pos, c.pw, c.ph, c.racketSpeed); pos.assign(c.w-c.pw-c.pw, c.h_mid-c.ph/2); this.playerRight = new Racket(pos, c.pw, c.ph, c.racketSpeed); + // Balls let ballsCount = 1; if (options & en.MatchOptions.multiBalls) { ballsCount = c.multiBallsCount; @@ -46,6 +43,22 @@ class GameComponents { ball.dir = ball.dir.normalized(); }); + + // Walls + if (options & en.MatchOptions.movingWalls) { + pos.assign(0, 0); + this.wallTop = new MovingRectangle(pos, c.w, c.wallSize, c.movingWallSpeed); + (this.wallTop).dir.y = -1; + pos.assign(0, c.h-c.wallSize); + this.wallBottom = new MovingRectangle(pos, c.w, c.wallSize, c.movingWallSpeed); + (this.wallBottom).dir.y = 1; + } + else { + pos.assign(0, 0); + this.wallTop = new Rectangle(pos, c.w, c.wallSize); + pos.assign(0, c.h-c.wallSize); + this.wallBottom = new Rectangle(pos, c.w, c.wallSize); + } } } diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index cd76f51e..ae3320e5 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -20,4 +20,7 @@ export const normalizedSpeed = false; // for consistency in speed independent of export const matchStartDelay = 3000; // millisecond export const newRoundDelay = 1500; // millisecond +// Game Variantes export const multiBallsCount = 3; +export const movingWallPosMax = Math.floor(w*0.12); +export const movingWallSpeed = Math.floor(w*0.08); diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts index 5dafa8e0..dfba2aa3 100644 --- a/src/shared_js/enums.ts +++ b/src/shared_js/enums.ts @@ -40,7 +40,8 @@ enum ClientRole { enum MatchOptions { // binary flags, can be mixed noOption = 0b0, - multiBalls = 1 << 0 + multiBalls = 1 << 0, + movingWalls = 1 << 1 } export {EventTypes, InputEnum, PlayerSide, ClientRole, MatchOptions} diff --git a/src/shared_js/utils.ts b/src/shared_js/utils.ts index 50feb05f..35bb5af1 100644 --- a/src/shared_js/utils.ts +++ b/src/shared_js/utils.ts @@ -1,4 +1,6 @@ +import { MovingRectangle } from "./class/Rectangle.js"; + function random(min: number = 0, max: number = 1) { return Math.random() * (max - min) + min; } @@ -16,4 +18,9 @@ function clamp(n: number, min: number, max: number) : number return (n); } -export {random, sleep, clamp} +function assertMovingRectangle(value: unknown): asserts value is MovingRectangle { + // if (value !== MovingRectangle) throw new Error("Not a MovingRectangle"); + return; +} + +export {random, sleep, clamp, assertMovingRectangle} diff --git a/src/shared_js/wallsMovement.ts b/src/shared_js/wallsMovement.ts new file mode 100644 index 00000000..dbf3f558 --- /dev/null +++ b/src/shared_js/wallsMovement.ts @@ -0,0 +1,20 @@ + +import * as c from "./constants.js"; +import { MovingRectangle } from "../shared_js/class/Rectangle.js"; +import { GameComponents } from "./class/GameComponents.js"; + +function wallsMovements(delta: number, gc: GameComponents) +{ + const wallTop = gc.wallTop; + const wallBottom = gc.wallBottom; + if (wallTop.pos.y <= 0 || wallTop.pos.y >= c.movingWallPosMax) { + wallTop.dir.y *= -1; + } + if (wallBottom.pos.y >= c.h-c.wallSize || wallBottom.pos.y <= c.h-c.movingWallPosMax) { + wallBottom.dir.y *= -1; + } + wallTop.moveAndCollide(delta, [gc.playerLeft, gc.playerRight]); + wallBottom.moveAndCollide(delta, [gc.playerLeft, gc.playerRight]); +} + +export {wallsMovements} From 7355a70821c7ef1b8c51f781da394c913774cb24 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Sun, 4 Dec 2022 19:05:21 +0100 Subject: [PATCH 39/48] minors GameComponents changes --- src/client/class/GameComponentsClient.ts | 54 +++++++++++------------- src/shared_js/class/GameComponents.ts | 4 +- src/shared_js/utils.ts | 1 + 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index 00fce3c1..bf90f66f 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -5,7 +5,7 @@ import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; import { TextElem, TextNumericValue } from "./Text.js"; import { RectangleClient, MovingRectangleClient, RacketClient, BallClient, Line } from "./RectangleClient.js"; import { GameComponents } from "../../shared_js/class/GameComponents.js"; -import { assertMovingRectangle } from "../utils.js"; +import { MovingRectangle } from "../../shared_js/class/Rectangle.js"; class GameComponentsExtensionForClient extends GameComponents { wallTop: RectangleClient | MovingRectangleClient; @@ -18,19 +18,20 @@ class GameComponentsExtensionForClient extends GameComponents { super(options); // Rackets + const basePL = this.playerLeft; + const basePR = this.playerRight; this.playerLeft = new RacketClient( - this.playerLeft.pos, this.playerLeft.width, this.playerLeft.height, this.playerLeft.baseSpeed, - ctx, "white"); + basePL.pos, basePL.width, basePL.height, basePL.baseSpeed, + ctx, "white"); this.playerRight = new RacketClient( - this.playerRight.pos, this.playerRight.width, this.playerRight.height, this.playerRight.baseSpeed, - ctx, "white"); + basePR.pos, basePR.width, basePR.height, basePR.baseSpeed, + ctx, "white"); // Balls const newBallsArr: BallClient[] = []; this.ballsArr.forEach((ball) => { - newBallsArr.push(new BallClient( - ball.pos, ball.width, ball.baseSpeed, ball.speedIncrease, - ctx, "white") + newBallsArr.push(new BallClient(ball.pos, ball.width, ball.baseSpeed, ball.speedIncrease, + ctx, "white") ); }); this.ballsArr = newBallsArr; @@ -38,32 +39,25 @@ class GameComponentsExtensionForClient extends GameComponents { // Walls if (options & en.MatchOptions.movingWalls) { - const dir = new Vector; + const baseWT = this.wallTop; + const baseWB = this.wallBottom; - assertMovingRectangle(this.wallTop); - dir.assign(this.wallTop.dir.x, this.wallTop.dir.y); - this.wallTop = new MovingRectangleClient( - this.wallTop.pos, this.wallTop.width, this.wallTop.height, - this.wallTop.baseSpeed, - ctx, "grey"); - (this.wallTop).dir.assign(dir.x, dir.y); - - assertMovingRectangle(this.wallBottom); - dir.assign(this.wallBottom.dir.x, this.wallBottom.dir.y); - this.wallBottom = new MovingRectangleClient( - this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, - this.wallBottom.baseSpeed, - ctx, "grey"); - (this.wallBottom).dir.assign(dir.x, dir.y); + this.wallTop = new MovingRectangleClient(baseWT.pos, baseWT.width, baseWT.height, baseWT.baseSpeed, + ctx, "grey"); + (this.wallTop).dir.assign(baseWT.dir.x, baseWT.dir.y); + + this.wallBottom = new MovingRectangleClient(baseWB.pos, baseWB.width, baseWB.height, baseWB.baseSpeed, + ctx, "grey"); + (this.wallBottom).dir.assign(baseWB.dir.x, baseWB.dir.y); } else { - this.wallTop = new RectangleClient( - this.wallTop.pos, this.wallTop.width, this.wallTop.height, - ctx, "grey"); - this.wallBottom = new RectangleClient( - this.wallBottom.pos, this.wallBottom.width, this.wallBottom.height, - ctx, "grey"); + const baseWT = this.wallTop; + const baseWB = this.wallBottom; + this.wallTop = new RectangleClient(baseWT.pos, baseWT.width, baseWT.height, + ctx, "grey"); + this.wallBottom = new RectangleClient(baseWB.pos, baseWB.width, baseWB.height, + ctx, "grey"); } } } diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index 4994af89..10e60932 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -3,7 +3,7 @@ import * as c from "../constants.js" import * as en from "../../shared_js/enums.js" import { VectorInteger } from "./Vector.js"; import { Rectangle, MovingRectangle, Racket, Ball } from "./Rectangle.js"; -import { clamp, random } from "../utils.js"; +import { random } from "../utils.js"; class GameComponents { wallTop: Rectangle | MovingRectangle; @@ -36,7 +36,7 @@ class GameComponents { ball.dir.x *= -1; } - ball.dir.y = clamp(random(), 0, 0.2); + ball.dir.y = random(0, 0.2); if (random() > 0.5) { ball.dir.y *= -1; } diff --git a/src/shared_js/utils.ts b/src/shared_js/utils.ts index 35bb5af1..e8f7bca3 100644 --- a/src/shared_js/utils.ts +++ b/src/shared_js/utils.ts @@ -18,6 +18,7 @@ function clamp(n: number, min: number, max: number) : number return (n); } +// Typescript hack, unused function assertMovingRectangle(value: unknown): asserts value is MovingRectangle { // if (value !== MovingRectangle) throw new Error("Not a MovingRectangle"); return; From 9dde821f678670e45e692d5efc0c9b23e8a3b300 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 6 Dec 2022 01:56:39 +0100 Subject: [PATCH 40/48] HTML game modes selector + pong.css in a separate file --- .gitignore | 1 + make.sh | 1 + memo.txt | 2 ++ src/client/class/GameArea.ts | 2 +- src/client/constants.ts | 11 ++----- src/client/gameLoop.ts | 4 +-- src/client/global.ts | 2 +- src/client/pong.css | 53 ++++++++++++++++++++++++++++++++ src/client/pong.html | 59 +++++++++++++++--------------------- src/client/pong.ts | 33 ++++++++++++++++++-- src/client/ws.ts | 29 ++++++++++-------- 11 files changed, 133 insertions(+), 64 deletions(-) create mode 100644 src/client/pong.css diff --git a/.gitignore b/.gitignore index ad799a41..ad53a4d3 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ Thumbs.db node_modules *.js www/**/*.html +www/**/*.css large old diff --git a/make.sh b/make.sh index 71ec2fb2..ebce024a 100644 --- a/make.sh +++ b/make.sh @@ -3,6 +3,7 @@ npx tsc mkdir -p www cp ./src/client/*.html ./www/ +cp ./src/client/*.css ./www/ mkdir -p www/js cp ./src/client/*.js ./www/js/ diff --git a/memo.txt b/memo.txt index 882a3339..be25ed46 100644 --- a/memo.txt +++ b/memo.txt @@ -14,8 +14,10 @@ Done: - Détruire les GameSession une fois finies. - mode multi-balles - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) + - Selection des modes de jeu via HTML TODO: +- Match Abort si tout les joueurs ne sont pas pret assez vite (~15 secondes) - mode spectateur - certaines utilisations de Math.floor() superflu ? Vérifier les appels. (éventuellement Math.round() ?) diff --git a/src/client/class/GameArea.ts b/src/client/class/GameArea.ts index 9cd92302..e6921e4e 100644 --- a/src/client/class/GameArea.ts +++ b/src/client/class/GameArea.ts @@ -13,7 +13,7 @@ class GameArea { this.ctx = this.canvas.getContext("2d") as CanvasRenderingContext2D; this.canvas.width = c.CanvasWidth; this.canvas.height = c.CanvasWidth / c.CanvasRatio; - let container = document.getElementById("canvas-container"); + let container = document.getElementById("canvas_container"); if (container) container.insertBefore(this.canvas, container.childNodes[0]); } diff --git a/src/client/constants.ts b/src/client/constants.ts index 786d0f99..39a3a043 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -8,19 +8,12 @@ export const gridSize = Math.floor(w/500); // min interval on Firefox seems to be 15. Chrome can go lower. export const handleInputIntervalMS = 15; // millisecond -export const sendLoopIntervalMS = 15; // millisecond +export const sendLoopIntervalMS = 15; // millisecond // unused export const gameLoopIntervalMS = 15; // millisecond export const drawLoopIntervalMS = 15; // millisecond export const fixedDeltaTime = gameLoopIntervalMS/1000; // second -export const soundMutedFlag = true; +export const soundMutedFlag = true; // TODO: Radio selector on website export const soundRobloxVolume = 0.3; // between 0 and 1 export const soundPongVolume = 0.3; // between 0 and 1 - -// TODO: replace by a selector on the website -import * as en from "../shared_js/enums.js" -export const optionsPLACEHOLDER = en.MatchOptions.noOption; -// export const optionsPLACEHOLDER = en.MatchOptions.multiBalls; -// export const optionsPLACEHOLDER = en.MatchOptions.movingWalls; -// export const optionsPLACEHOLDER = en.MatchOptions.movingWalls | en.MatchOptions.multiBalls; diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index b911641a..593d1eaa 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,7 +1,7 @@ import * as c from "./constants.js"; import * as en from "../shared_js/enums.js" -import { gc, clientInfo } from "./global.js"; +import { gc, matchOptions, clientInfo } from "./global.js"; import { wallsMovements } from "../shared_js/wallsMovement.js"; let actual_time: number = Date.now(); @@ -28,7 +28,7 @@ function gameLoop() ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); }); - if (c.optionsPLACEHOLDER & en.MatchOptions.movingWalls) { + if (matchOptions & en.MatchOptions.movingWalls) { wallsMovements(delta_time, gc); } } diff --git a/src/client/global.ts b/src/client/global.ts index 70564ece..7d0a7126 100644 --- a/src/client/global.ts +++ b/src/client/global.ts @@ -1,3 +1,3 @@ -export {pong, gc} from "./pong.js" +export {pong, gc, matchOptions} from "./pong.js" export {socket, clientInfo} from "./ws.js" diff --git a/src/client/pong.css b/src/client/pong.css new file mode 100644 index 00000000..cc90b07e --- /dev/null +++ b/src/client/pong.css @@ -0,0 +1,53 @@ + +@font-face { + font-family: "Bit5x3"; + src: url("http://localhost:8080/Bit5x3.woff2") format("woff2"), + url("http://localhost:8080/Bit5x3.woff") format("woff"); + font-weight: normal; + font-style: normal; + font-display: swap; +} +#preload_font { + font-family: "Bit5x3"; + opacity:0; + height:0; + width:0; + display:inline-block; +} +body { + margin: 0; + background-color: #222425; +} +#canvas_container { + text-align: center; + /* border: dashed white 5px; */ + /* max-height: 80vh; */ + /* overflow: hidden; */ +} +#div_game_options { + text-align: center; + font-family: "Bit5x3"; + color: white; + font-size: x-large; +} +#div_game_options fieldset { + max-width: 50vw; + width: auto; + margin: 0 auto; +} +#div_game_options fieldset div { + padding: 10px; +} +#play_pong_button { + font-family: "Bit5x3"; + color: white; + background-color: #333333; + font-size: x-large; + padding: 10px; +} +canvas { + background-color: #333333; + max-width: 75vw; + /* max-height: 100vh; */ + width: 80%; +} diff --git a/src/client/pong.html b/src/client/pong.html index 0e443c3b..f4d97fa5 100644 --- a/src/client/pong.html +++ b/src/client/pong.html @@ -2,46 +2,35 @@ - + -
    .
    -
    +
    .
    + +
    +
    + Game options +
    + + +
    + +
    + + +
    + +
    + +
    +
    +
    + +
    + diff --git a/src/client/pong.ts b/src/client/pong.ts index 44eab63c..dfb857ac 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -1,5 +1,11 @@ +initDom(); +function initDom() { + document.getElementById("play_pong_button").addEventListener("click", init); +} + import * as c from "./constants.js" +import * as en from "../shared_js/enums.js" import { GameArea } from "./class/GameArea.js"; import { GameComponentsClient } from "./class/GameComponentsClient.js"; import { handleInput } from "./handleInput.js"; @@ -7,16 +13,37 @@ import { handleInput } from "./handleInput.js"; import { gameLoop } from "./gameLoop.js" import { drawLoop } from "./draw.js"; import { countdown } from "./utils.js"; +import {initWebSocket} from "./ws.js"; -import {socket} from "./ws.js"; socket; // no-op, just for loading /* Keys Racket: W/S OR Up/Down Grid On-Off: G */ -export const pong = new GameArea(); -export const gc = new GameComponentsClient(c.optionsPLACEHOLDER, pong.ctx); +/* TODO: A way to delay the init of variables, but still use "const" not "let" ? */ +export let pong: GameArea; +export let gc: GameComponentsClient; +export let matchOptions: en.MatchOptions = en.MatchOptions.noOption; + +function init() +{ + console.log("multiBalls:"+(document.getElementById("multiBalls")).checked); + console.log("movingWalls:"+(document.getElementById("movingWalls")).checked); + + if ( (document.getElementById("multiBalls")).checked ) { + matchOptions |= en.MatchOptions.multiBalls; + } + if ( (document.getElementById("movingWalls")).checked ) { + matchOptions |= en.MatchOptions.movingWalls; + } + + document.getElementById("div_game_options").hidden = true; + + pong = new GameArea(); + gc = new GameComponentsClient(matchOptions, pong.ctx); + initWebSocket(matchOptions); +} function matchmaking() { diff --git a/src/client/ws.ts b/src/client/ws.ts index fd97756c..60f1ab87 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -1,6 +1,6 @@ import * as c from "./constants.js" -import { gc } from "./global.js" +import { gc, matchOptions } from "./global.js" import * as ev from "../shared_js/class/Event.js" import * as en from "../shared_js/enums.js" import { matchmaking, matchmakingComplete, startGame } from "./pong.js"; @@ -10,10 +10,6 @@ import { soundRoblox } from "./audio.js" import { sleep } from "./utils.js"; import { Vector, VectorInteger } from "../shared_js/class/Vector.js"; -const wsPort = 8042; -const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; -export const socket = new WebSocket(wsUrl, "json"); - class ClientInfo { id = ""; side: en.PlayerSide; @@ -22,20 +18,27 @@ class ClientInfo { opponentNextPos: VectorInteger; } +const wsPort = 8042; +const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; +export let socket: WebSocket; /* TODO: A way to still use "const" not "let" ? */ export const clientInfo = new ClientInfo(); -socket.addEventListener("open", (event) => { - socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, c.optionsPLACEHOLDER, clientInfo.id) )); -}); - -// socket.addEventListener("message", logListener); // for testing purpose -socket.addEventListener("message", preMatchListener); +export function initWebSocket(options: en.MatchOptions) +{ + socket = new WebSocket(wsUrl, "json"); + socket.addEventListener("open", (event) => { + socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, options, clientInfo.id) )); + }); + // socket.addEventListener("message", logListener); // for testing purpose + socket.addEventListener("message", preMatchListener); +} function logListener(this: WebSocket, event: MessageEvent) { console.log("%i: " + event.data, Date.now()); } -function preMatchListener(this: WebSocket, event: MessageEvent) { +function preMatchListener(this: WebSocket, event: MessageEvent) +{ const data: ev.ServerEvent = JSON.parse(event.data); switch (data.type) { case en.EventTypes.assignId: @@ -90,7 +93,7 @@ function gameUpdate(data: ev.EventGameUpdate) { console.log("gameUpdate"); - if (c.optionsPLACEHOLDER & en.MatchOptions.movingWalls) { + if (matchOptions & en.MatchOptions.movingWalls) { gc.wallTop.pos.y = data.wallTop.y; gc.wallBottom.pos.y = data.wallBottom.y; } From 4be38c59e8c19095bf4ad4397099dc42f6431c66 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 6 Dec 2022 03:53:44 +0100 Subject: [PATCH 41/48] HTML sound selector --- memo.txt | 7 +++++-- src/client/audio.ts | 20 +++++++++++--------- src/client/constants.ts | 1 - src/client/pong.css | 6 +++--- src/client/pong.html | 37 +++++++++++++++++++++---------------- src/client/pong.ts | 20 ++++++++++++++------ 6 files changed, 54 insertions(+), 37 deletions(-) diff --git a/memo.txt b/memo.txt index be25ed46..98951849 100644 --- a/memo.txt +++ b/memo.txt @@ -5,16 +5,17 @@ Done: - client prediction - server reconciliation (buffer des inputs côté client + id sur les inputs) - amélioration collision avec Hugo - - du son (balle, foule qui applaudi/musique de victoire) (son de la raquette "Oof" de Roblox ? 🤡) + - du son (rebonds de la balle, "Oof" de Roblox sur un point) - init de GameComponents partagé entre serveur et client. - draw on the canvas "WIN", "LOSE", "MATCHMAKING COMPLETE", ... - interpolation (mis à jour progressif des mouvements de l'adversaire) - - traitement groupé des inputs clients toutes les x millisecondes + - traitement groupé des inputs clients toutes les x millisecondes (BUG désynchronisation: revenu à un traitement immédiat en attendant) - Détruire les GameSession une fois finies. - mode multi-balles - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) - Selection des modes de jeu via HTML + - Selection audio on/off via HTML TODO: - Match Abort si tout les joueurs ne sont pas pret assez vite (~15 secondes) @@ -22,11 +23,13 @@ TODO: - certaines utilisations de Math.floor() superflu ? Vérifier les appels. (éventuellement Math.round() ?) - un autre mode de jeu alternatif ? +- changer les "localhost:8080" dans le code. ----------- idées modes de jeu : - mode 2 raquettes (un joueur haut/gauche et bas/droite) - skin patate ??? - (prediction de l'avancement de la balle basé sur la latence serveur ?) +- d'autres sons (foule qui applaudi/musique de victoire) ----------- - BUG: Si la balle va très vite, elle peut ignorer la collision avec une raquette ou mur. la collision est testée seulement après le mouvement. diff --git a/src/client/audio.ts b/src/client/audio.ts index 5990b1d8..f1a817d3 100644 --- a/src/client/audio.ts +++ b/src/client/audio.ts @@ -2,13 +2,15 @@ import * as c from "./constants.js" export const soundPongArr: HTMLAudioElement[] = []; - -for (let i = 0; i <= 32; i++) { - soundPongArr.push(new Audio("http://localhost:8080/sound/pong/"+i+".mp3")); - soundPongArr[i].volume = c.soundPongVolume; - soundPongArr[i].muted = c.soundMutedFlag; -} - export const soundRoblox = new Audio("http://localhost:8080/sound/roblox-oof.mp3"); -soundRoblox.volume = c.soundRobloxVolume; -soundRoblox.muted = c.soundMutedFlag; + +export function initAudio(muteFlag: boolean) +{ + for (let i = 0; i <= 32; i++) { + soundPongArr.push(new Audio("http://localhost:8080/sound/pong/"+i+".mp3")); + soundPongArr[i].volume = c.soundPongVolume; + soundPongArr[i].muted = muteFlag; + } + soundRoblox.volume = c.soundRobloxVolume; + soundRoblox.muted = muteFlag; +} diff --git a/src/client/constants.ts b/src/client/constants.ts index 39a3a043..97bae265 100644 --- a/src/client/constants.ts +++ b/src/client/constants.ts @@ -14,6 +14,5 @@ export const drawLoopIntervalMS = 15; // millisecond export const fixedDeltaTime = gameLoopIntervalMS/1000; // second -export const soundMutedFlag = true; // TODO: Radio selector on website export const soundRobloxVolume = 0.3; // between 0 and 1 export const soundPongVolume = 0.3; // between 0 and 1 diff --git a/src/client/pong.css b/src/client/pong.css index cc90b07e..c481c502 100644 --- a/src/client/pong.css +++ b/src/client/pong.css @@ -20,14 +20,14 @@ body { } #canvas_container { text-align: center; - /* border: dashed white 5px; */ + /* border: dashed rgb(245, 245, 245) 5px; */ /* max-height: 80vh; */ /* overflow: hidden; */ } #div_game_options { text-align: center; font-family: "Bit5x3"; - color: white; + color: rgb(245, 245, 245); font-size: x-large; } #div_game_options fieldset { @@ -40,7 +40,7 @@ body { } #play_pong_button { font-family: "Bit5x3"; - color: white; + color: rgb(245, 245, 245); background-color: #333333; font-size: x-large; padding: 10px; diff --git a/src/client/pong.html b/src/client/pong.html index f4d97fa5..cea6522b 100644 --- a/src/client/pong.html +++ b/src/client/pong.html @@ -9,22 +9,27 @@
    .
    -
    - Game options -
    - - -
    - -
    - - -
    - -
    - -
    -
    +
    + game options +
    + + +
    +
    + + +
    +
    + + + + + +
    +
    + +
    +
    diff --git a/src/client/pong.ts b/src/client/pong.ts index dfb857ac..5c9dcce0 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -13,7 +13,8 @@ import { handleInput } from "./handleInput.js"; import { gameLoop } from "./gameLoop.js" import { drawLoop } from "./draw.js"; import { countdown } from "./utils.js"; -import {initWebSocket} from "./ws.js"; +import { initWebSocket } from "./ws.js"; +import { initAudio } from "./audio.js"; /* Keys @@ -28,13 +29,20 @@ export let matchOptions: en.MatchOptions = en.MatchOptions.noOption; function init() { - console.log("multiBalls:"+(document.getElementById("multiBalls")).checked); - console.log("movingWalls:"+(document.getElementById("movingWalls")).checked); - - if ( (document.getElementById("multiBalls")).checked ) { + console.log("multi_balls:"+(document.getElementById("multi_balls")).checked); + console.log("moving_walls:"+(document.getElementById("moving_walls")).checked); + console.log("sound_on:"+(document.getElementById("sound_on")).checked); + + let soundMutedFlag = false; + if ( (document.getElementById("sound_off")).checked ) { + soundMutedFlag = true; + } + initAudio(soundMutedFlag); + + if ( (document.getElementById("multi_balls")).checked ) { matchOptions |= en.MatchOptions.multiBalls; } - if ( (document.getElementById("movingWalls")).checked ) { + if ( (document.getElementById("moving_walls")).checked ) { matchOptions |= en.MatchOptions.movingWalls; } From 38c0acb9170dfaedb38dd1cac90370ab266c83ea Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 6 Dec 2022 04:12:25 +0100 Subject: [PATCH 42/48] mp3 replaced by ogg + value of radio button discared, because never used --- src/client/audio.ts | 4 ++-- src/client/pong.html | 4 ++-- src/server/server.ts | 3 +++ www/sound/pong/0.mp3 | Bin 5223 -> 0 bytes www/sound/pong/0.ogg | Bin 0 -> 4228 bytes www/sound/pong/1.mp3 | Bin 4178 -> 0 bytes www/sound/pong/1.ogg | Bin 0 -> 4298 bytes www/sound/pong/10.mp3 | Bin 5223 -> 0 bytes www/sound/pong/10.ogg | Bin 0 -> 4226 bytes www/sound/pong/11.mp3 | Bin 5223 -> 0 bytes www/sound/pong/11.ogg | Bin 0 -> 4306 bytes www/sound/pong/12.mp3 | Bin 5223 -> 0 bytes www/sound/pong/12.ogg | Bin 0 -> 4398 bytes www/sound/pong/13.mp3 | Bin 5223 -> 0 bytes www/sound/pong/13.ogg | Bin 0 -> 4322 bytes www/sound/pong/14.mp3 | Bin 5223 -> 0 bytes www/sound/pong/14.ogg | Bin 0 -> 4439 bytes www/sound/pong/15.mp3 | Bin 5223 -> 0 bytes www/sound/pong/15.ogg | Bin 0 -> 4199 bytes www/sound/pong/16.mp3 | Bin 5223 -> 0 bytes www/sound/pong/16.ogg | Bin 0 -> 4428 bytes www/sound/pong/17.mp3 | Bin 5223 -> 0 bytes www/sound/pong/17.ogg | Bin 0 -> 4427 bytes www/sound/pong/18.mp3 | Bin 5223 -> 0 bytes www/sound/pong/18.ogg | Bin 0 -> 4324 bytes www/sound/pong/19.mp3 | Bin 5223 -> 0 bytes www/sound/pong/19.ogg | Bin 0 -> 4358 bytes www/sound/pong/2.mp3 | Bin 5223 -> 0 bytes www/sound/pong/2.ogg | Bin 0 -> 4378 bytes www/sound/pong/20.mp3 | Bin 5223 -> 0 bytes www/sound/pong/20.ogg | Bin 0 -> 4238 bytes www/sound/pong/21.mp3 | Bin 5223 -> 0 bytes www/sound/pong/21.ogg | Bin 0 -> 4320 bytes www/sound/pong/22.mp3 | Bin 5223 -> 0 bytes www/sound/pong/22.ogg | Bin 0 -> 4343 bytes www/sound/pong/23.mp3 | Bin 5223 -> 0 bytes www/sound/pong/23.ogg | Bin 0 -> 4240 bytes www/sound/pong/24.mp3 | Bin 4178 -> 0 bytes www/sound/pong/24.ogg | Bin 0 -> 4241 bytes www/sound/pong/25.mp3 | Bin 5223 -> 0 bytes www/sound/pong/25.ogg | Bin 0 -> 4348 bytes www/sound/pong/26.mp3 | Bin 5223 -> 0 bytes www/sound/pong/26.ogg | Bin 0 -> 4399 bytes www/sound/pong/27.mp3 | Bin 5223 -> 0 bytes www/sound/pong/27.ogg | Bin 0 -> 4227 bytes www/sound/pong/28.mp3 | Bin 4178 -> 0 bytes www/sound/pong/28.ogg | Bin 0 -> 4160 bytes www/sound/pong/29.mp3 | Bin 5223 -> 0 bytes www/sound/pong/29.ogg | Bin 0 -> 4205 bytes www/sound/pong/3.mp3 | Bin 5223 -> 0 bytes www/sound/pong/3.ogg | Bin 0 -> 4292 bytes www/sound/pong/30.mp3 | Bin 5223 -> 0 bytes www/sound/pong/30.ogg | Bin 0 -> 4305 bytes www/sound/pong/31.mp3 | Bin 5223 -> 0 bytes www/sound/pong/31.ogg | Bin 0 -> 4319 bytes www/sound/pong/32.mp3 | Bin 5223 -> 0 bytes www/sound/pong/32.ogg | Bin 0 -> 4397 bytes www/sound/pong/4.mp3 | Bin 5223 -> 0 bytes www/sound/pong/4.ogg | Bin 0 -> 4464 bytes www/sound/pong/5.mp3 | Bin 5223 -> 0 bytes www/sound/pong/5.ogg | Bin 0 -> 4220 bytes www/sound/pong/6.mp3 | Bin 4178 -> 0 bytes www/sound/pong/6.ogg | Bin 0 -> 4197 bytes www/sound/pong/7.mp3 | Bin 5223 -> 0 bytes www/sound/pong/7.ogg | Bin 0 -> 4442 bytes www/sound/pong/8.mp3 | Bin 5223 -> 0 bytes www/sound/pong/8.ogg | Bin 0 -> 4351 bytes www/sound/pong/9.mp3 | Bin 5223 -> 0 bytes www/sound/pong/9.ogg | Bin 0 -> 4291 bytes www/sound/roblox-oof.mp3 | Bin 9856 -> 0 bytes www/sound/roblox-oof.ogg | Bin 0 -> 6383 bytes 71 files changed, 7 insertions(+), 4 deletions(-) delete mode 100644 www/sound/pong/0.mp3 create mode 100644 www/sound/pong/0.ogg delete mode 100644 www/sound/pong/1.mp3 create mode 100644 www/sound/pong/1.ogg delete mode 100644 www/sound/pong/10.mp3 create mode 100644 www/sound/pong/10.ogg delete mode 100644 www/sound/pong/11.mp3 create mode 100644 www/sound/pong/11.ogg delete mode 100644 www/sound/pong/12.mp3 create mode 100644 www/sound/pong/12.ogg delete mode 100644 www/sound/pong/13.mp3 create mode 100644 www/sound/pong/13.ogg delete mode 100644 www/sound/pong/14.mp3 create mode 100644 www/sound/pong/14.ogg delete mode 100644 www/sound/pong/15.mp3 create mode 100644 www/sound/pong/15.ogg delete mode 100644 www/sound/pong/16.mp3 create mode 100644 www/sound/pong/16.ogg delete mode 100644 www/sound/pong/17.mp3 create mode 100644 www/sound/pong/17.ogg delete mode 100644 www/sound/pong/18.mp3 create mode 100644 www/sound/pong/18.ogg delete mode 100644 www/sound/pong/19.mp3 create mode 100644 www/sound/pong/19.ogg delete mode 100644 www/sound/pong/2.mp3 create mode 100644 www/sound/pong/2.ogg delete mode 100644 www/sound/pong/20.mp3 create mode 100644 www/sound/pong/20.ogg delete mode 100644 www/sound/pong/21.mp3 create mode 100644 www/sound/pong/21.ogg delete mode 100644 www/sound/pong/22.mp3 create mode 100644 www/sound/pong/22.ogg delete mode 100644 www/sound/pong/23.mp3 create mode 100644 www/sound/pong/23.ogg delete mode 100644 www/sound/pong/24.mp3 create mode 100644 www/sound/pong/24.ogg delete mode 100644 www/sound/pong/25.mp3 create mode 100644 www/sound/pong/25.ogg delete mode 100644 www/sound/pong/26.mp3 create mode 100644 www/sound/pong/26.ogg delete mode 100644 www/sound/pong/27.mp3 create mode 100644 www/sound/pong/27.ogg delete mode 100644 www/sound/pong/28.mp3 create mode 100644 www/sound/pong/28.ogg delete mode 100644 www/sound/pong/29.mp3 create mode 100644 www/sound/pong/29.ogg delete mode 100644 www/sound/pong/3.mp3 create mode 100644 www/sound/pong/3.ogg delete mode 100644 www/sound/pong/30.mp3 create mode 100644 www/sound/pong/30.ogg delete mode 100644 www/sound/pong/31.mp3 create mode 100644 www/sound/pong/31.ogg delete mode 100644 www/sound/pong/32.mp3 create mode 100644 www/sound/pong/32.ogg delete mode 100644 www/sound/pong/4.mp3 create mode 100644 www/sound/pong/4.ogg delete mode 100644 www/sound/pong/5.mp3 create mode 100644 www/sound/pong/5.ogg delete mode 100644 www/sound/pong/6.mp3 create mode 100644 www/sound/pong/6.ogg delete mode 100644 www/sound/pong/7.mp3 create mode 100644 www/sound/pong/7.ogg delete mode 100644 www/sound/pong/8.mp3 create mode 100644 www/sound/pong/8.ogg delete mode 100644 www/sound/pong/9.mp3 create mode 100644 www/sound/pong/9.ogg delete mode 100644 www/sound/roblox-oof.mp3 create mode 100644 www/sound/roblox-oof.ogg diff --git a/src/client/audio.ts b/src/client/audio.ts index f1a817d3..74c73336 100644 --- a/src/client/audio.ts +++ b/src/client/audio.ts @@ -2,12 +2,12 @@ import * as c from "./constants.js" export const soundPongArr: HTMLAudioElement[] = []; -export const soundRoblox = new Audio("http://localhost:8080/sound/roblox-oof.mp3"); +export const soundRoblox = new Audio("http://localhost:8080/sound/roblox-oof.ogg"); export function initAudio(muteFlag: boolean) { for (let i = 0; i <= 32; i++) { - soundPongArr.push(new Audio("http://localhost:8080/sound/pong/"+i+".mp3")); + soundPongArr.push(new Audio("http://localhost:8080/sound/pong/"+i+".ogg")); soundPongArr[i].volume = c.soundPongVolume; soundPongArr[i].muted = muteFlag; } diff --git a/src/client/pong.html b/src/client/pong.html index cea6522b..d23e5590 100644 --- a/src/client/pong.html +++ b/src/client/pong.html @@ -21,9 +21,9 @@
    - + - +
    diff --git a/src/server/server.ts b/src/server/server.ts index 09b6c459..20801d7f 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -28,6 +28,9 @@ const server = http.createServer((req, res) => { else if (path.extname(filename) === ".mp3") { res.writeHead(200, {"Content-Type": "audio/mpeg"}); } + else if (path.extname(filename) === ".ogg") { + res.writeHead(200, {"Content-Type": "audio/ogg"}); + } res.write(data); return res.end(); }); diff --git a/www/sound/pong/0.mp3 b/www/sound/pong/0.mp3 deleted file mode 100644 index 14f66a64c99e54af01481d05ada57812563ff10e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 diff --git a/www/sound/pong/1.ogg b/www/sound/pong/1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3a268b347689aea8e4a979df7b28920620dffa59 GIT binary patch literal 4298 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 diff --git a/www/sound/pong/10.ogg b/www/sound/pong/10.ogg new file mode 100644 index 0000000000000000000000000000000000000000..855ad78b42c4f409366fd8c39673dbaf43cdd28b GIT binary patch literal 4226 zcmd5_G>7sCkU$VgLe(R^D8V8k z0)||Ph&)5tK#CDiLk}VKqTSIqZ z;Or?w^6^`-zy7|tnl9i_;Bpi{J=rNVBZ-j8kK1KLC(sG5&aTeR+ngx`5|fu8iRY&! z5&Y9K`5C*@guFB{8GQx{{l{(b!UNu+ZQlh2F#sPQK@KQm-eVlG7Rg)!%Hm2GN9v?j zw4l=>i|_`jwmhZjVjDqFG4BY4*Ev1xtIOvcpQg*dH7_?QQvkO z=}HANn0!^n%%_=IhZm5q$(Rh<(v9L(UQ;&Vg$$DKg>q42n_M1$v_V|L(Agyf(}Kvk zC5)wY;X7$T?($(KdA*3q6!=cVN7C8}(v^qq6tPe}yL@nK)yu($0O0bg@cAav!%Zf@ z6@W#Rq{44Vh3`^J;^|gK5qLy60J_pG=*1Q{&f4v`=eT3gFN~En2K}p>P6{0QRHgFRCF3`4W!<;uK%-$hVuR{x8NRV zuP@%?@Sb`?(3zTpc>g^9_1dLlHCODCu^G!70&8lDnNJ9^h#orm^n&GP01%}X%phX! zn<0;Q7$0|?Twi`@xkE#3b-rt#U<9rpj9oyV$z9XbuHaC_n=lzeqU^=uU8%Hx+Fr*G2 zKj5OPJn^SFrbI?2FgjV4ll zjc4IxP>CH~UQ4fd%&txpD3kUhpPLv(d{7azkrdyMmEVx7zoAyY%c$l>S1Sc7(kZoG zqxxsv$r#{80Ng3IxlwEb1Dp;CjM2L=7fe7pwzmidJ&gD_Hio`{4&~lm{QCm{z}fB! z(=kv)q01t6v_*upMeML-g|hxxa}OD$gh0n`gjol=;*MQ@OdxLD`1m2N8+W3@WfQUO zPsByVB@bPeSmso?R%0_B(k5{^8=%wP27b`;9zripbe$U5aKfCb`&=wrtFx&qWG0cX zos7FlDt*9gIwmS)1~%8o;vBbR%9zI*dSJAe*ubBo6so@ngaIIR2_n~8#1&BM%eNPh zbtgrKU8ZbAg;ZUonCYM^7w=?T#lvZRxrpgyUn<(ku&;vg0hYqwimE$BmKdLMknLOI z9r`^bOhyT{@DCSr!zf(s_ufMF=VlaCGp>TvwjR7l)N`6<_$@N90`{@ z7aT4R(U$TCCBo5C9`_U8$ejD2m^;YgjflA;nY_sJT(%)=P?Gzolou1pW8*WqbGaOC z>0>c>ERq+wZ5LeSXmclqC9!4Rp)82Zy-ndpO1LqRTSg2AG5+Ub0@^S zN7~#+>@=>Y{H`P`wp2I~#bZ-Horsc;&6V;XRFrT8zl&{kIOgT)$A+xQy%Mf<+L&%Y zGmGt=t)1^191_NtWsR{DV?HUIzK62Ow|v#^@^xpL=rHPy))RV`oHz^~v(E0PpS zKB6WoRE~TFKe{4Op{OrYCM#4a3T0EilH9Kp^r`s@^^8U>>`L*k6&1RFDuvfFR8X;>dxkis=TWeLmzUn-z#dzY_UM z%}3f(5k%O5%)C+y^%|&&5K(S9g$Ph&wd1H}E7S@_R_Mx

    oatvYAs+uRxKfjwm6x z<0&Q5C)brB5c$cGiWDQV;46f$K#{kcQabdjg!7&HK6M&`q(Wpps$^<^=WHMH%xIud z4fU2$^=!YoY2Iicss`fJuNJO5mpZRWR=m;5VN|_kUIVq7?NjY;M4I&I^w}#_x?bb_ zr8;#UX?msEJgV8PcO5lk`N0qjcNdPrJb@u-;6c`1ijc!%aXdnX+IcVp;guRo2^oP| zG#oP2DrC!rvF*GGD14sBF-Wwfk{E5)q?R`}rBOfaS2xcijj!6D&3C8kRnM0LfKLa& z%()6{u~uyk^5Csd5L@74c8qz8y0j{+kE$ai-10RemJU$Oh_VvMlgV6l1X&5w3{uf6 zh%y;7WibF2p77p!P)R=PiAD=1I|6{5$tdX0YQb0PczOl&Y6H^#G)S&HQq6}a#ep1U z1ESLF6$>2w6X+i!N2764R5u`qUZYmQLqSxVJJd6JNFe$?mE(LjqET&zF4cFp!0qq| zM%#CP4R80(+4=6`X1&Jg=WZ8lAO?&tTLpX;do&fMGbvV4$=4ZxU<$IGmk@Jsv?WAo z5tBizlbOTodK|u1Kc-oeC<*=mXAd2+om`8)bB!A}a2**xXv+ zJMt&j74Y^Z07BOy9G*aWNi)lHfkkZI0B%_>tEH^#esGD}y>NWILID zbmtm(Db0+AI}~N(gIVV3IdRzj;dAM_^2+dtCj_*z0$4B()2b5K+A11bE_7YL^I&}X zIV=%jvjQ&x@O(czFK^1h(aG7B;^FD#{kN~V?Cfl#ln)%UvyI9aEG;b8+u5ccms$YO`k-%u1HjLxZ4zrgIJ2nr!6$D0ps4rKi(;8_IQ~Rs z>w|SUq9q{mCrYQFsv>vKcOR?)O%DQl{7k#l+s^N6Q_OD4ecdzpIUFmA?DB zB<4QD>6b6gIDv#mo7aW@61&x0_M(2b;UU@KnD?3R_47ZXUzwLAyLZ*t+G7g73y+y3 zzBB!q3-Dxs``Xu+4E_0C(dV4qx0al=ZMre%Y)Nti>o{#U!c<BT$Q$W||NA!0UlmOT|>ok8%nRNY^_ zxAgP`l}H`V?>*4(L7jb+qyJ%#YVS{!Pv=~YpB6@p-T%Ztek-@>!hg6~&0JfbB0kRv zSaUHmNid^c6MXY8$=@FI7BjJPi>w;H}*?r3QkaMK(#83@=DxX#f1Srun2?CGt2)yPLtmZaYOHT(BA gb?}<-wngr1LuWz7^A_Af!pcm|777PJF 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 VfpUpKXTKl9>N)R!x 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/13.mp3 b/www/sound/pong/13.mp3 deleted file mode 100644 index 724e8b6ecbe763460bc38907212b63fe2d5e2823..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 diff --git a/www/sound/pong/14.ogg b/www/sound/pong/14.ogg new file mode 100644 index 0000000000000000000000000000000000000000..066fff69bb6abd9059b525415a3851635845859a GIT binary patch literal 4439 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/15.mp3 b/www/sound/pong/15.mp3 deleted file mode 100644 index 8bee98e0ad0ade78be31c746850638365369190e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 Mj)rs}y6tQJpSTMp82|tP literal 0 HcmV?d00001 diff --git a/www/sound/pong/16.mp3 b/www/sound/pong/16.mp3 deleted file mode 100644 index 20e994f26cf864418b3b7ead1beba69a23f95766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 zcmeHLX;72b-hc9BB|Kn&fC-C+urxrxCkqfPtqFt}AYfRe5tk zfBy6PpL1qEjv9e~M|e)!#yM`mTtNWnC-ynJnE{mF(+ z@4SvhrXd~4UGyv!@31u{7$9w{OmnN!R|^_q9gFE1Zj7qJ?q)k?egBp-{;|UT&}IZm zlo!Xcs57T-UR=}%3PL?~{Cz1l=S%r%P8M=S_F4o6M3DHNvdS5?al(tJtqYO0YiXWT zi1fZLgLUnIaKa8ndT&fW#A~j?Y-iY)LnYb%Z-D#7ZVWt{KN04m+tQKpYLZkgmAYacL#UR&PrseFY~7kdwk|& za4oH$z)?X)0(v4l zbuyWgEAW0IPQK(n;iNbuZCl<#4^_(!h*~J9;Jl5Q`wt7Izp3B#DbodE_~nReF=-iX z+dpJQEYB6Y_8gA>B9A#fIPz;8F}wed9RZJrf5tZN-dFa~mhqfEXo*yYYKGebN?!bA zJ-&HuRNc~m;C53aQgzyjUe7+ht=rGeRTrgM$dru^W!R{p& zH{6J{3q(ZO^4Z(Z87J+yE|6h0%aJr#?6z!yRYV+nOn9xwO;9PK<}unik{yJlfJy|w zObLmug2^J+bE)mT{UTM!`EtCeh)w3w(;1l!c!6*Mc}HHF8?W|`=@|0c_P=GdkgFA@ zFegN)U@?}UFsbz(ul8aDG^})nX!)9B>7Q--LwnZEoyRUx$yy)v-cOyv#!@V9Z zd-&d^>v!LFJrQ3mnEg0rWXOXZmeBHlkz@P2Mhh?N5y5%`V>AX{6O312Y!reO=$3=X ziH7Qle5xsCPY?HYscTRP7(?@X2LP`q?pNc5rb7Bnn0_;tf1NsQ%rzJqIbE`06Ss|S zzaMRZ!6<+MiUiLfW-^bicSzBg=o$c+^)!J3tSeoyrJ&tC)|A&cdD7*#BN{(nSG6JcCA7e~ zr0=K1-)bTsTpWFC=;*vm*R6xDO{Z2kee~9xqFGF8IN7I9jzyk`yK>{9MZ4K`>X)n! zXMq#X+qZmqD^aPc;g!rh&4@UkaMT&?om^VhFwoun>evOxvsn?DzC*REUOZ{VJ<(m6 zKi|uVBlc~X&u>O8&-6}SR}-}I;5>UiEc_>*-_8!Z{`5ZX-bF{#?H8?6j@C6*>i0n; zoNA_UAXv);)ik`=S(<|!GBFZa@A^;;4=O#5GxxjTrN}3g-isLL7lD$}dQtIk~ z1N^4z#=XdbLip?pln@|g0F%H4SL$?3{N@)cp`OYCj-w?6u4J+49r`N$7>3@RL48!p zRO4QY=x6Z-?zOqb3NAAhuFk@6bc9fE5gd_Tz*8bZqKz&O`Mv#eL z&j6KNrr03dkRtGt9_8BP0o_epteHkBv`+xcmAJh6WTmP^9#Mvef)fR=)_s;C?VxcB ztvTe?_e;IaczPwo7l#TK0XkU$Ac*V32b;mnWBfL$H2gh=6Oy`2BXwiu!y$*`pGlK) z&e52=6g)kurz-wvnzY1K@(i8FVdqMuk4bnmLm{e6=?RYqkzlK*47eryEN~fFnz2*s zRzQ}+7FvwLMovML0v2*HKme=c+fXDb0IvZdERbRtz+<@(h)xw-!Y)7|O39KG$QpKR zODw5l$ZF;ikmbRt6@Q%+68q8!$>CZ(uU2@B26&Sz-nr29^|F_k7Y7xpUo zo}_X!nr$h^YN&iTD@ax5@Y3fRy6p3LQCKct)?$aUe+ghEy^m@>uLMH2uaK9hLli2c zye-B8yr$lV!9>S6#g8z$6-bBN6dsHuh2LR@89_b@5y3BYWO$MRX^kfbf0PkZ3MSe< z!=S!0xqHAwj*>#;%E>hW4)mm6%LO4~3Wf8**3ej3cuf915+!?05hizQl~ZC4S2C?G zF2j?y;oS`yhF%!1rAh()n1>;jA{&(gj|@N&iCpStMb1O&738vI7{I0qZ%q}6a#LL6 zvwR6^hX4mK9!1Z`*~Qa@@vE5rbW{Zna^qY9Rc4z1d-0)5IotbUxW_{7?YDA4mG4&* zI8ZJz^FRd}TC^64@o%t!KoIQ}&liU7cO7y^7TGKLjpFehaI}lhFVg1ufDfq*!Z@&U zFE%VZq0(6>8RUgwR+pSKDC~mQdr@PwoB=kYg31x$;)h5(bmykKpVlt+#wMc++R(0M z3OXsFkm5o`7B|Th4pav+0KlA9*CpZQavVwzP=LR`2V`8wtw)tIDX?K^IAxk3lYdEv zNfa_Ez?p=y)*1+nGldij?n8GrqBNH#Nj8ILEDLsta%%>M*arVa+)Z_IWG5t%zCrhp zYPTVUsSwP00}@=A#i6uC+1RTD;ajA-08L1()lkBI(C7wM|yGJP~)Hto&9zu@4Dxr!^(p zrJat9wa$*Sqo2QlpgdE;2DK%5=T^d^Pt{OyW5L3(Su*hk;Yx2OtP<3I6f+t_o}R44 z0o`1B=YOHAIbj$_@L)ch!`R*OaUCT^c1sie8U0a?h9J#LRaVYL);R&_WbI5QQu-vn|cq-u26CpVd{UKpiqIcTy_V-{sWZ zU*fM8YIF{JzLLEe&9PFia0(QRY-)6_N~6uRf0rtzo|}{1IS8D;*aoolY4{%jfUz*`>r3n zuTKL@zRUZ*sa0V(-e-&JEoY3?JPrYjCG+z)rxA1w5t&s=YfB4em`Fb@zR#5k$Z>)V z1Efd_D2Jt`{2?PCieb@2SA3p)(b zh?$j<-t{rxceJ;H+Sa{)>m1tLy*3W#-fMxwA2iWV)dwdjP8lcsY*I@%6y6|zsPM_N zEj4!Tzb1D`wbJ#-5Ob-?lELdTtPOcbiov+^vL(K?M&i9V=C~aa{~uBNUmVc?v6sJy I|FZ}F2kZHq#sB~S diff --git a/www/sound/pong/16.ogg b/www/sound/pong/16.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7e852275d2a5b5c7f409ebb1d65bafc8b5475e23 GIT binary patch literal 4428 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 YWxk`;2jKX3tpO1Oz5u(x^SQ;~Z`7QX`~Uy| literal 0 HcmV?d00001 diff --git a/www/sound/pong/18.mp3 b/www/sound/pong/18.mp3 deleted file mode 100644 index ce844dbec65235d819bc5b344fce691738771405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 C28O}_ diff --git a/www/sound/pong/18.ogg b/www/sound/pong/18.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6ad253919ee38994ff8c7ea0f36f64d7cbf94700 GIT binary patch literal 4324 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 ZRGn)*LUvvBCI{1C{vGHOE(A+3{{v%VWTXH9 literal 0 HcmV?d00001 diff --git a/www/sound/pong/19.mp3 b/www/sound/pong/19.mp3 deleted file mode 100644 index 884e9ec24fa6ac78d5cc5c0b58f0db80d87250a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 zcmeI0c~H~W+Q)xchyjwAgdkxN1B4i;Xf_lOZ4$Ns0TToT6q>MuNWD1cM-21Y0-MB!qnt#8O;~f*YbzwYP}2y!y`E`$uQ`=ljQ<+t19IGv|5!IL~~a zGv71kEPa?V0)HkjBkAi;vE`oz6aa9^0Q0X9{}sBwV(BmVw3jEB72-!xk)Id`DN^7E}5j8k*l3$8|$=Ps_OsyQ>8_fj*zep&fB zy8$4*ke5a2A#Dvj7xL;iugB;oimv2UafyH^fz_;s*&ukKbn4`2e|)$bGPl$HgklWlgoAJm1?#63_mN%ku4VXi8c%@+Q5KAS z#BsO7-1#&*hSLj@=<-T>wSlB+hBTh{o{85xY(*3exnd|OYjjg#V~vqSlu&fL4CcQU z1A_w&35a62~1&+0chfeo=wc9)%a!33-ul`wN480)enV z(u06NfmLBsD+E8tJe1}bV+XQBDtZ-6S(?DTd-v|m#d{gYFFif}$s!*X1$`pe`stP} zUvK`y`suN}r^o)M^X-l6@1IKX!llJ7@1;ng6ra2##b@W;42$eKzSR2m^=t39pY8SI zoS-i^?}g^B_3uacTKk&X1BY4fFDF>PYIrYm!Kvqznp3}|;-waPmD;lU7@jJFbJdrZ z=M`j9)Jp}=OUF?7mk>|sqrj6xw{_0%PY<)Mh>B0lrZ$858ieO}2cL_zdF_R_&m>HG z8Qd`f`m+J*9tE8mKz-KExEjWw+R%n!bWR?l@)BJgOFutMKPsW#Q&MC>^xxU^{Vufo zn;G(U>d}5nPednJKC@hYoX$OpmAB*Mh*f~EQmzRs?7v;5{YBQ$Un}j;2lZF_dx#_H z37hGhBpSDt23OGvu@vzpiZ3g%$5Ep7G?!9M{5@b&7aVCbl!TSTP+)-q&NHPwQ(#n5 z0_sV435j0z1a2YS4DKPD_3-6SI3-%=a?&<)=@z6vemNA>tmw)s)@sP2_)`}J>S!Tc zz_7qWO{;nC`22+G{B>$GXLU3T&x4R2k-mFNGIThz=*vu0Hhy%t4^^;Jr*nXoMIByu z__Rx%w&7%1#COXFoL9Vh`qlM~wO<_WZonQ|e9P;Oxv@2>=i{#*)}QAP)}4=)Wr zI61gCTl+coJ~8xZM%Bwr*E`|@26NgM-?x0W127`xwt;c0?+2^7-c;K;<26Kz@fV0u z9||EFdf-F47)VN2wn?YqG+d|K4^G$FgNS;eiCXUrVd%@@T%GB%NF4$YL_*%IyIow` z<5#zGB}%|s`tZo;26!9RIp+NVEW2tT_*_>2f+^gM4P8R7;qZPhhm>iBDx^p3*Z>s4 z#L1!K)k!&7ll-3-VeTbrKd%fX<%g(!5OBH&+=`L&?nOj)NA7UP8m}{x6KlF`sY8W2 zDu!9odM(Ovf=L_Sh?<(X*>RLVax#QwKK1ZbLjVwh*HHI~x|_$5NOOTEuLVyA)^XNk8$h7`R|6!=s2?COwa(zcXpW)WGlXy7zwm3X@v1GWIs-1N6 zT8KIHalE_Kr2TalI)yiPEpinIVT4wl^=M1**XcLIHQfT@EbK%?*>sCXFy zJPP#z!YLrY1`y|L)%!7d2&<675GXR$&tW4GnZXvESD z(Xm5EgQ-MxeM%uloqZMPMj!%^smwX+i*1qsxEaGh=dJ)a4rzmn4Xu&&9cezuM}yTZ za;!P065BEA2&9ltRRv6uSlU_tg&=!0*^&wL$VSNWrny^dTrcfsw~1||dypVDH-eXP zBAY=8;t)0nFy#*DBE4(*c6kTZI3}>f?DavwDt8y6+J1_9;A)fDegNeqYLkq>gJKF! z7D?&%;F%U&oJtP37&Hkwe$BK40Xn@g=J5qTp3YVcwLth#ek+PZ1|a?^ZdK6~|#R}n&Sghjk3iQ1a z6rJya>m~CaTY44>;tmxA+ItTqEFh*3*o~&{)>JDRhbjDQ3T(*70rbb^FPwWT+4lOE zi5_X=&-y4x{?IHND!zMORL;doSrG3QpM%!>l+kCQ{s0bji!jZKm#dIED_EFR)x8UY zg}{f?+wih+%8Awd`Qo?V^Acq9L%}n6P$L|xik(I<8~k``F(TfW9rZR0JEnlAolP)e z!p!gi)w-686$#_Ejrh_kKSzmqv4`vPy;h4bB)U-F&83!M2MA0_r9?qFJq1UMakm;- za1-<~lfqW;Tr2#7)TvE>7U)RE8}*=wZ6NEmQBNRqR=kEK_mBZHNG)cK+aS{wW+K{^ zSricNe;#jNYz{pw;??KA#c7`=cM zkW~F&>$_1wAA~4?%nuj0-S13B=Qr5pp!M zO>YP1Vwv7LE=1~UJ1Vp(-!RT4`+7Sy7n9jUJ)D}vtq9xJFo5;Vi8SNH;3Lmfhb0`; zn2KrOqe6%njkQFZql>B15e$z5N|-9px`B@NF>bZch8R9xp)@uf$s{WU+>m6{O;F4# zk=dzl+q~QS0{hI!x<9-^A^{5zUaS8^@~!Ctu^67~8m079MAh(aJ~QB{2%(pBtt0d< z208;noIq)99lVPLL0`9+OIEK(V&E}!Ok3a+^pm7B?f7a7jX5Wu^)&jC@Q(s?nEE7p9jz6*Ra$A@o>-tp_OouUy-9=F@qJ}nc;=!AWSnH z!V3~~f&f*pe}jYydx`^3^o@Jh>w4_sy&WT8z2m}<|9%Wd{Acmm6adJ_3DnH;T`qk9zz~1> zMPTd{kMA)?QD^bvHh`X@L_*9&2FhzB1TJC|Amd;P)_vW;y>!eqc}1K|2d0qPJqM&2R)tuWiXb1iWPQ5e`l-bsM%6Vo zu@dKx**y}vB{jr1Bzb7Qwi@nV1IiqMvxdZ0o=tF%aHk}n{gQ$a(@@gTBd(E)M)0fl zox*F}X2xi%yf4^C`9REe)mI|3mFYUWc5QI4nY1*(ZJC*A57cfn{YmFt9+Y2_*#R=- zZ_;q;pIRkzrI(~>uoj@P6jX~;I+j0457=)AA@M7O<=_o9%A<&a{2X~i*#t7I%B#{U zedgm`Q?y)JdLG32IfX!HTeQ#90~_OH(ech8q5>O7%J5GTPyVPFjQojEiI(`XY9neI zJmzQpCB?~y_J7~lmHs%aQ#>X=SM@gkLA`VAirgz9yAL$0&YM^t@JI;^8{?H(mZ2@{ z$V`(`>`1LrDx~O`(GVIK3nTV~Pi`V3A`k5>yNRd-gZ2uFq%c{MLLg35M^BsbatPx{ zv;|S*lh_awpJ~alNDbz i-lX{Y;c;PcW@#?fnZ=U)mOu0F)BNYe-|PPd1^yR)>Y-i$ diff --git a/www/sound/pong/19.ogg b/www/sound/pong/19.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f6fc42d64d57c8f3653f02da71c51e2acef2472b GIT binary patch literal 4358 zcmd5<<6F5ASh4E{hUlE?4|38ZfL!bO>L!ZRJ z*=5rCkA9c%m)|yb<9Qr1T#n&nrnrRdPR6Bk5~2*~I2z8~)!o%~ohunfptF+%iJXjN zoPS0ZXZOwwE<1xyME5|U|3x#M-{C{*#waL>0k(;e#7!0S+d=tuJh9uRiiEPD{6>)t zHSj3UI-;4Pu1ae?cN!CRMBXU>$Xg?HDAOu1vu!rO@wZ&@vrUy2?R>sNA21#c*O^IP*R+FwEWB!gIZdK zlU7^ByFqcRHt-rV`#d7z8=79S8Qu-5|II@>UJUVZ=IRJQ(H9ZiY z^KQt)=h`M*AvRSVSm4y$P*>pIM>=)Qy&oO)Cr;h)nsmK{-Dug?ZnZh&^k7V4+c{lT z+Tz=>oVL?LLBvLQ%0z?zgz$LG?UG7-H=)RRcv;o%KH~8jBZE8PBAPzlS9yK`{J-_f zJnsOp9}V{Q;Ql+oVM`c;<*c|N_UJS>ereX|jNtx^U|gLO&y=wLPoFm(S|Y?!&F2ki zv`xI`rmOjS3-wnsad5+~aEG2`n}eNEnc%KN&?JLHvLxOIps(m$H-Kicj; zA`VgWLq_-v=4lqQgF7CakwL@<6+s(8`j9AlNUVEEsaqLT$BwO&rOFAF z3cXVP@4Aa2z)JwQS?X}L)By%K4H6iGcVR9VflSNGB{1k=#J{sK>=kq<>z3(n4*&qy zRTt@`03Mkpj@*1YGURmR<|T|U#=mPGAu4hRbnI%Fb)YMu=uZp!$FT>OL#MqD{GjE%xXW1H6-q$!*H#qWalY7I=g?S8 zPbT(!lW?6-K1^>d;uX^a+Ums#q%~P$dQo#Pj20sY_#=s+`X(S80FhfDvB5f_kkVAO zv5=_yhL`K6b>J0KbTxdsldg&%8g$7PPMfNDbT7wpUTBbGEsPIf27e1{Z+kCLe%AKm4K@$XS06K9+~k_@mVScdxXy#$zn&JVKJw(Rf3%RE6Gkw_LZ3nH_khXey; z6j`&D6)i!Lqa}h-J``p%-!P)51x$7M*bsMY9ZNmKU{2@2RTTN0fMvUZ@j5#qD`$+) zzOT-?&&*(XN^S|VEH~%dr^A=u9~qLd9@LY@?Vqx!c|xotVxZ-y>kzWsK^s zDW6$he%3J8ryArYR%DMdcWnE8@tCdGh3DhV$hVbpXUiti!V6FJy{G0n6@_yB90I3K zn(mYO&X+%To*>mv&UUBvcb~Z1;r2sk2I)ekLw}mS&rRPM-XZv6+nxm%U-AX4y*pT! zrv?1+0M9S`;L&2xqy3*gpIW@Lk(2$G5*Z3se&gR9cV%`(RV$dR>45vP6` za#z7YI?@q@dmfpbRdDr6s0kO5t*Jy(QDg;4qx=|Zg(6FJ6*8zsx)gDat8S8_$l81v z1SeI>kUoj70)fa+@~hJf$f)mmviSj^?iyA1WAX;dQ{2u{?2E8$dtiA zgBpr88pX4IMeCfwKvWIHrC-7Q;8gmYGDZ4MD<_R&&72Zy^{h|6vju6@qtmHbd8S_J z`kf+u4r!fLI%||W_3oPKY(E%+5guF(%o7-b(`?APMdrpa7;$Su20Pd=1mTq$PYxM@ zSu_+f*v@52xbYqAF(`b79XBmdmkYM3v&Yr!QLR$(v|rIShqTOgOwDy?>gCTD0AQO5 zfVpd}rM11n3gp3Cp)kJC&Af-Va6AV3vo7_nB9T@Nz1oa)JPnlS^6NP8q~ah) z){MyYdg(kz{{;HSz)>n)q;<^*qE{;9@K6xB^LfRj9ukPYPfnWaMwD`A=u&<63HUfX z0!_!xAK>lY`E0Jcv`w#c`MKN8G5`Y}SS$uUrfXY^GwEcTn3O9)0A~z@uJ7RwVyW-p zMJ4nge52S3Ue^!cYjr!-jzCWG2Uthwkd4F!^qp&X@&5e~_|F#p;S{|dz3Nk^-zF#9V5C&Occo4C->LAulYnynJMj$3!qx3q!P@HfOVd1?xBl~ZShc7@vfh1w@H)3 zDxBBv1_xO8*}g0OOu+-PClD?lKH=3(yA`wj*N`@{YeYpJW9fwy9o%$94mvf*N1{_c zmU`Tlhvtc>#IOnrC*EQ&L$PhP3|8DQW6)F*VS@;8fU6>`7djXybf5WnE-ygC-{|L4*#H8u|^9Z?W%@MZSIEpDdyVQ*Koxgrb?-(-Z+5kGQry72ydw7d2XgaL711Pbt1XAx|7#>dU^l#b51A}8l-&SC=?n#*h~Pl2W{vF8!A|I ztdnSs!B|-@v9`8ZhR5OX%W*hdk!T|Tt-}lU!SdwD!uIkD8$Q>6FotO#URO~+=K83! z;zG`k1(z&e{K&Cty>p0k)Hr_q&gIpjo*QpTy*;8vbqhS<&Lw+p{lr%eprU_I|RqXjkcXJ4>BI_29c3&Jn}> z_qvi!4cz>Gs$TW7P`m%Dy)HQ`B7W)pN%WLQo~|`H1Fko{&bD!y+WOtFnwNCt{_KE? zyFNfUh~dB7f5H2a@t<8SgenV9%rQ{Z>d}$%M=NrR z#$w-G-x*z+)Of%+UB^57?3d*}?^nOl;8^3xIHDguC;#Ew4J&^lI6m6GEOK1+Wb(4! zWH0}R$cJ~MrlPXk9)-SrF}RU;QC~=N0!pV}_6?aISS0*x{+sENox&^)GwDIY3icGb z9XQ{)-zxs+l_zpIKgS>5=b99t+w^HqC`*qGnb}c5zy3$r0p7<2j*XU*+4sjSsZ*S` ziu@mGnI`$nHltUmMO-Uft(`^m!MsDIjtv;s9w z`DOoO)zjLZHJ!%QSF^vrn<&lAVXWS8=n2DO47kfkgY@I!YUCmfp?CnS@xSdO`5r8kRyqzKJ3<73C zKU$=zaO7}A!8SGU*1Qf4>~aoe?q>mwbLiFN$?mxQ4+M+SXYaUpgF9UZwt)>`Aqajh I1oq&60qYcbo&W#< literal 0 HcmV?d00001 diff --git a/www/sound/pong/2.mp3 b/www/sound/pong/2.mp3 deleted file mode 100644 index 5286a9fb55da8534c079a1d477ffd1640b840d1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 TgX;gre@^+Ij=$~yCkFlnCSHD7 diff --git a/www/sound/pong/2.ogg b/www/sound/pong/2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0f09bb3057cf801d9b9dd7c4c6f7feb4092f51a3 GIT binary patch literal 4378 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 I0B1J)AM6m6LjV8( literal 0 HcmV?d00001 diff --git a/www/sound/pong/20.mp3 b/www/sound/pong/20.mp3 deleted file mode 100644 index 16a10734d76d7cee793b49ab38ea16ab58e1573a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 zcmeI0c~H~m*2jNY2)~376A17lB8DvlMEzyMfY2LO0TT@b5fPPru@>31XlitFo067`p{TbpvL;Gi}{0Z-4dGLJ%0jv!S7)A{L zGbQqhqY>W+K=3}~@wR?H^`94ioqs9tmjeG01y=si6E=nZ4p}?|R`mtU4tb9Pa9$|e zso&%LbFUWyFZmU2aV%rvBq#Xq+#l(io3D7@KF*!ga~!Y1;n}QM3I`j>ssF+~Hs^0? z%gYx<6&?Jlk2sCgc}s_jQ6(2bJeJ}4MbWV?f&C^%X3Y0tnlrmg9>;mI^Bx%-_BR{e zh~T`I5ra(1FR9<_c>$RD$|2sq7#D2078-rJ{|CmPvvEkX%^TjqB$5W(Yvf>VhJT=R zH*bGDCR6cCc<RO!8 z#gQt;w#e3*pm|Gn7WkgM%*FJf!I_O#_;w)^o*$G*{_hXu0v_8bg^*_?59d-4U~+$KB}TputzpP9fgu~MTc(pyq1D(xrinc^&nR$%71Y9y z^C9J-F*bN8hzy|*r~#4$;877tCJI>rIOOaa=mNj}X?%Pv>^+hFD}*n9Tlw|Wmw1nr zS6PP^78ahrJM!BO7YA|`>vmn;rq!n}wte>b%F4UMNm5@M2SdfX}DloDs19W9Ad75MR2agO{! zzxe?lVPBVj`bOr{0!CgNoS?9`4_KA14Ihhv2FlWJEae1}YEn4Lp9y%eoQ|Y%3X;4| zXl}f&Q+pul&imT>A@XJjsB+saBDWLqcw{G8=Vyyx`sQl;QU(}rZ#D?~Cjc{1O~X1! zWv&dTw?53Ux zUmmY^uy74dZfQBM-ze0%G(Mt~-Yp8-7I~?y=YHkgZ@s^!o7r74=oi4dA*~vB<0uc$ruCkCW z0@H)sZ${eB1lS_D_c+YPuuQ~Dj4v!YjTv2xd_up8FdNRYj{oC}+x&X=le3TRnfK8Q zRZJwf^81qkSJV}pDQ(ZsfK`pJ9pd>cm;ZDh`}zEgfE8@ZAHBEPDEh8{7Ts#t=J_V! z#O-;Mx$z`#R5324^9Ob?m)7?4Z#+mOYMdW5g=Yy?KLScxH>WH|5SGsG?^-`wnU08wP8wli?u`RtELPI*?@&;83iJj8?+PE@j36<+Y$A zy2B|QS5_tc9=Pyi*Y0y`YHPoVNSolk2(kGzNP#M=y-2^WCv;wnz0&1Bo@lDsUgW;> z;paC>Id^}gR0dNE%|0!YmxbaD*MG@*@LlY4`CRP52ZR^bs?|Afy9bJUuVZr~4!x{M z-n!LeW7XbowjNgPscf~0c$ht2dFW_T?L2(?(ygQ2zf7V}A4xk~a;@#xE4Th_x4FN>#G0N+|XIx##>i~UkfxFSnOm=j8jwXwaxZK;C ze{1x7;3H>yEV*6sqDEKy6t$hXo?&Yn4Pt$#&unx=L`*qRL*cMw?QjF6Geg2#JSUQB~AE zUN|ISR!YUA6;zA4eaoLyumO~3=W>qYVldd5J_tc@mFMObf;dMlA4*lu1KmhdFLK<) zQhwW1#s*Ms4uXkVFx%uv;PJ4h}4WS1NDk_}-~JbJ@I1>W8DIZX{Z2iG^h ziX3~jt`TiQA$ZF-Jxk~EQnuL%v-n{nvIrnI92=-ghMf>7WIN9lk(0ht2_YF0Diy+sgT*JK$3* z5Z}+jYl2LM8iH)xhJ{E0O z16XmddCCUf)ZAxUz-My3v1pA+<0&2|&?S(|R_NsA#@7 zP)(ojO(g`Uo1%dBl$j(lMkSvr%{Yj8&7TkhRP=cw z)v=UhG%et)CxBBBWvub@N;^Bd{NoYEZlsRSShENH%z^SIbGnN61mojaN!cxoUDwr_ z_y@5_nP^h$Z$iM^(Bq7)NU?S`#ykK3oy6MBMJaGJ#Xb8K4DjKUV0a1vAG5T^7!aVr z3a8}IN70s;YApo%Xiz>fB6pCCN-&%5F5+rv{Do}R3f}Y8VSD*lRa{PBfi13-iQ%h6 z5l;>6Tx5}5C{XUmamDve(+A?2e%cdwptM(a;GP5-yIrugqA8~-^|VbQvg&F(f7F<9 z!a(jPLt|^*86ghJ2}!64nt-NK+FHj7ff)IEUQz17BIOLy?fUG9Nr@B4woypRtqB(` zj3j%kc9NW%sbWpzAS}g~BEWK6|6WH5Gi3ImZww^|(zB@8IbQLte0-FsxiyU4bJkxc z1wW!= z$lEGWD__n5>+BAieD7M;S)F@b4IDc4L(}T2j(tP`gG)lWp1{Ou))sktF`YP z->HO#otD1)MyZ}Z^JfOC2RruiBi%6Atz$p8{p&H@_TR;arU0Pcln^egxhe($fGz&; zi$Db+hGS=%jJqW(ngate7dCUT@2*n(`a~`k3nC04d(g-bWFrJ_7>bssj`$_@-|o-$ z-^VPZpv^Km7AtTs;ULxoXM)9Z!aumWe3hE@ndm1`4S62cS%OgN*~@!saJ4u|Wuj4s zPx2?W5$ycNs>VJ%*(4fSl&BO>Rv3YU#6g6qiVI}XE3fV@2g&D-nOX1o$hC6ZZ6Rgn znM`5wNjDIztctfyCe%6IM&K_S0t7ewa2s3bR>I4JD$!$}K{|9{^@*4!WrkXX$vGSaobst9@O>(=Vc&)c?kIJp?=^onEp}CV-*!4nP3Al*| zd6S`3A4iG{CE1$Fh(J&S}{yqPy O=6~<{m&gA<1^ySiQ5p9D diff --git a/www/sound/pong/20.ogg b/www/sound/pong/20.ogg new file mode 100644 index 0000000000000000000000000000000000000000..11ac780e985c9e1410d152434c8d0392751684d0 GIT binary patch literal 4238 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 Xe6?FHo3(r+AdOF8TE{WQBBQ?m2bNen literal 0 HcmV?d00001 diff --git a/www/sound/pong/22.mp3 b/www/sound/pong/22.mp3 deleted file mode 100644 index 60be1f147277a5ca5a6af5d2eb5498c04a7e4d4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 SU$Xo!o$`OdSNwl`r2hgJIMoXP diff --git a/www/sound/pong/23.ogg b/www/sound/pong/23.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f57724b9b9b1a4f0f900fea949b62bd97bf3e5da GIT binary patch literal 4240 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/24.mp3 b/www/sound/pong/24.mp3 deleted file mode 100644 index 94d61a1221a0ff5d53a730cd1e3f39fc6262a495..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4178 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 L`>JjG|2qCJAALkn diff --git a/www/sound/pong/24.ogg b/www/sound/pong/24.ogg new file mode 100644 index 0000000000000000000000000000000000000000..90093efc7e6aa6f17613621bd0b952f890a4eaf0 GIT binary patch literal 4241 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/25.mp3 b/www/sound/pong/25.mp3 deleted file mode 100644 index 0b724c0659aaada0188cd47769a0d9624bde48da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 diff --git a/www/sound/pong/25.ogg b/www/sound/pong/25.ogg new file mode 100644 index 0000000000000000000000000000000000000000..27dfe8eb65134e787b8b1a3893765dad077884a9 GIT binary patch literal 4348 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 A%K!iX literal 0 HcmV?d00001 diff --git a/www/sound/pong/26.mp3 b/www/sound/pong/26.mp3 deleted file mode 100644 index bb5518fb260600c631d12c8a4df3e321d5af1b4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 Ie}1C>0=d7?761SM diff --git a/www/sound/pong/26.ogg b/www/sound/pong/26.ogg new file mode 100644 index 0000000000000000000000000000000000000000..80cb60faaf2968a2b91934455797ca0ed2b6f1a6 GIT binary patch literal 4399 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/27.mp3 b/www/sound/pong/27.mp3 deleted file mode 100644 index ebe5bdc1fd28fd4e3285b7dce2ffcab1f3015142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 ZPS#jyqY2z8H@p7}mHF@MiU0SW{|QzUx~KpE diff --git a/www/sound/pong/27.ogg b/www/sound/pong/27.ogg new file mode 100644 index 0000000000000000000000000000000000000000..13332de644c46885bb092b2b671e1a26b5bcb14d GIT binary patch literal 4227 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 literal 0 HcmV?d00001 diff --git a/www/sound/pong/28.mp3 b/www/sound/pong/28.mp3 deleted file mode 100644 index 2c265d0756d7a75b71da70ab7e0481510a7c0a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4178 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 qZun$R#LG*`C4R&Aor%gCc_}CZUElY+` diff --git a/www/sound/pong/28.ogg b/www/sound/pong/28.ogg new file mode 100644 index 0000000000000000000000000000000000000000..29615795329d22b87942cafaeb723234c0f6b02c GIT binary patch literal 4160 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 PmeuZCcTAVmE?WK<#WD_& literal 0 HcmV?d00001 diff --git a/www/sound/pong/29.mp3 b/www/sound/pong/29.mp3 deleted file mode 100644 index 7673dea9823d2acacd02441ccf20931ee40a7a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 K<#RQd)&B!XG)(^h literal 0 HcmV?d00001 diff --git a/www/sound/pong/31.mp3 b/www/sound/pong/31.mp3 deleted file mode 100644 index a0da9471ee2a305722d7d0859f66b455082fe692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 bgD*ug-Cjo8|C+K4e0m2+=a4^mgsJ~;6*glX literal 0 HcmV?d00001 diff --git a/www/sound/pong/32.mp3 b/www/sound/pong/32.mp3 deleted file mode 100644 index 72e092ed83d92eeb09843181323ee253cf228304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 zcmeH~dr(tJ*1+%0<8lcJgb?5cA_NE-PzW~(kASF22oWS`c#6R1B)m}+P;?a0xj;w| z&><)i5RsQr7<5o^d^-suprV4WWz=;LM|>=fj^oTSzW89PcK`UQrfUD$KlZEnRd;pO zIj5^npVNK1diwoXAMk$(Uz?FTBeR<61OT9C0-`?x`y-5h#PlC9vsR#792qL$@=z4K z_D`4S(`F$Khaxxn#~^pZflDoWMhw3dIks%de5At$4Qs>=-n7i)u<)mp-eN;cM(u+7{wfL9Uia0$XVmA#iQ^7wDm)fshazyqUznbEyyROy_Ub$y!Pt zJK9p_Rth#vcKZsz;p-YVS7^J0Glx_+)%SQkODC@gme0$}JI7(!A;#Dg z)`%J;PJOOam}lK{#LG9B#ZF%E;gKV}pZ+lYQMJr*$E{mWf4I2tZO`e|!J?)27W&_kX$Y6Qa6tck|Pxtsl^XC-*Q@iLpzGwI_Z11n^A)`y}>zlBbFH>vh16j%+poU9~t~b4*kOVCK) zyUec|8<$@z0kXpcOdtMK3GbAYPhTy-&Y;XbJ{-V*o5}N7&R2V*MrW=Nvmg=;6id!$ zkW5-C6I%7-NgCHGjvEEXQ<`)|CNZ_YxO=es^#B-VeBCv`0xlgb()0PrpLicZ-zXek zznCvCu(oIw=}L{G<(BA!EOdB1uZzHw0w@(CVe>9UONVkPQa7*~P*HEIP-@RG``jy* zA8+63FXpao*wzq}a)5mIm$RKqHcd9IdwW4U|KevWVv~0(wvTEsjpA$+dunYejT!CsB3Ze z`5RRs8#o8AB z4_aAF;r-pTndeekj;=8lqDU_twZS%{1fviQmuS%l$ys!VWFfl3l!#gwnKXbr#ZDL< zL$B-#`@R-CCc|Tkf$8_-eO_2_p%0t!2{VhAxY(bs1{$HK5&a5ljj>CHqiNFHH6#rL zfD;xt!y0eSMLW$TQv-Es^j)DNy!K;)U;WWMXOu}plj&%z13I#npB?Lm)Y>^+Q+Sb? zwsL|M`5R%?5{A40FTt`gqaL=7bbZO_+ktE3x4cbP6l6|43?k{5&PUjx^@JdOtffAT zQx60jd;T>)!QxzPX3#gS*B&w>{BKh4eG-a%-Y-m-c~))fAGWYRZp z3rmGNybQZ$)B9w3x^+Nj&2sdk@omqw_KuG`f&`XzvziBWF?YW6)TBj)PaZwc_@q42 zS3w2LUL5Yp<|p@iG{-78(l|8nMhcjxgdwv)4D&&3u#VzxJH!G5v1anTHbBWh0U!nt zS;08aTzjgLL`jnYvC4DOzgx4v>UL2p*tQfFeQp*@(0sFFELIv?Lckk8H>u=j2qJK) z)6vp>IEJ`+UoK(-70aS;H6P7cOiG?maVxU48_$G`kU(_QLxhX0E1C-iv|O?5vVOO;&UI10IER==v>kT3nn5OnsC=_-aFCS6#8u zZeL4?RmJD5>dOi)&GW<)ne>=16++-=ZtN~v5VidVZHgJ>WWj<#;?*-X5r-uRc3k7~ z2IXC{q|uu$%1SJml+$fNbF8z@Yod;b`D(1r<+Ex#d0;G26I1XiArF4;?|3K z-?ygdJEJ6~QDmK?u}LPItYm62tyDvxUZx(hq0OlmeRJVO;C@#(xYz={4DJG(8K@)h z3m&ycX}HHkU^$u!uE!6@pa6)5;q+Em%}Tu;&ZRiZP7eXtusM=CKHRIQkCuIGIVedn zE8k6Zfc-(75@g^ff|ZO_AtXOE9nV3Y7;-!SRhiRjE5W7ZB#syldVyHPZ^_5ls@jx-d6=*bTyB1nJo&-u!U!=A={UL+09Fj{<5GMkhD9* zk}M&Gt87qf;k653)4Y1gKH;rWoD(&ND`J_d+00;SwgMC}j2W!#DnKe^z4I)_&0SAG zFO=PO<(O`M2t&sD`q0O?gJyb{@v|WKtvRl$zeud)?L59Em zaMGJJw;`RFNhExi@4m{671sBakFJes(B!r7(&JHFF?JW`N(mlZ4-s6QSKh5)q|1)8 zE^7!kK%gE5^{bA*!XqD1mrh#!5G`_1=3==5p$7BcLE2%Y*F9wG=1G5@5^oI=ftrUfH7Lz+tL4*6K>KppEK#rJiSY6UNDV zOz|aAWX8JefygZOG2e26+D@`U^4Lz)TcUJtT16hJ2n!5)nyFH02=mle<>f4oG;>76 zVS;dR)Fh&Cy8?33FKLNHgg$RBj>2oME?}|Lt}h98L~CCAn6jUg*fkt>3q53NmR|fG zR)=p3$0~HzT6r6N-}TJUNmN~xugoiGC)E%gxqBhAU^sCnR>NV=_?y~1&Pmo`z=2na zlwCA=%RB8seIB0f)eqUCD_a29m$1>=aaqqJ8a>H|9k;&HCj2<;b=reRrV*f>Vut}s zglXgK1CJY`8b7n3u#?;!H95?jpC#W#1IM zo2}448=rq*hezmy=fb%AiN890DTU$069KVqZPLomTpMOhe)ou>Dukz+quPM+p)^CHTbxo{rmhtuE*t*!A&&d+VYVm$KoI4(_l%#gng5AzDFzU55iAjm0WaR4 zUFuw()k|Jjg^CFN3+EhERfzCRZcl~&UyN-Q#nr5dor1UUE>0|h-ZN#Q3~ z@P-C?Rl5X0vOvW^Usv(i-+KW*Z+go_Kkke(8trF{hPET*ZEi#EfmJLDxt2)Y$r)PW zIaFv%zUpYvaKety@IBEzc}jv=&8AuZP=uh-`cVY~Kzk4Y_|{g( z*2|JH*8tDUTNIaSB=xa2vvZ~=<`Fdu5f0Z(##I~URmkiq8D_M87BJygslij+K+lqr zqhF~!tJ5E8(h}#3mLBu(sk?rpSVL+{b92^``OoLKl{(#&*gINIp=*A9LLH`af{4K#-_0nx0uke6s)Jar@Q-lcLLU#%G}ORVx=cz1Jkov zSsCdZW;zd#JOhFLH_d$N37?QQZ2_7n2$K|p4=SbJ4%utZm3Rb|CKiY6Jtnjxk&kd~ zqHBq|^3=L>jaVUiQS@fKc_~#yW!Wc*5egkjS_J0H(Nov9h=YD%rOhfkB?uTBao(*k=Aar3BrqE27UuOn+LeTU| zXVF7v(K2Fj62;D>0?r5xLG76~l!G=`PCJF(b`8}AMA343*U@NWe1;C`Si*K&1l5mR zQ+jL>w!?Be#$qnr9Kr(61vz)1r~T?4DAAc%u%bc#HCL3ogP7vdspn-n_Ub9=E_!`A z_d0Q98Mn*ZP|hvP+ToD`^vb!`xjXPvRK-QTe=3adx`;KoJA*JlPu8IKXRqr6Ji7)Z zk?qzAD92Gfh2z!>sOvNy6Ij5yte81eeZeWkGHZ5iaCP-T>SL@Vri+3R5C8_<4}Oh z$0T0H*OY%d+oe_^FZAqot-tEogAB$~_1Ar#xL-tXvOL*f9U9))8<%wQoS{5*-tDcd zlZ|~L_+#Ld@h1NX!0}kvZx{OqA;<+dWqDRN{&=OC$(=xmq>t|vZa^^aZ~YS2H&_xt z0lgut=T2CpEv>hN5#Prg8sltRm_0Pkzdz0&(dBKUOPPPyr%VTy2+$;pDMOB7lCF9f zDi3WY{c0u_Jg_~=p>wBGaF)}RVpqx`LTJ73HLY*>n}8^raBWOrEH7}VA#gwvuH%Id z@M!c#2EBCM$oxSfz#$g0l@Mu>?Jh!GBLRJkTub8oF`dia5yHSCgVE~Cth8IB1=ZdJoC#xliuB)>p)cv(xAX>~Ez|U0(wm%(;f*_#>8LzNOEF#vFZz{qY4s-K8 z^bTAR(NM{wx){oN5g`{bU|LhorTVNa;YNh4tOD@?%>=(WRX4@9D8F(@;9u+;`HB!F zAw=2)M)Md^1cvUFZ||G1XxfHbF|=qJXCQ_~m-^lyY|zHgZV+g_U<&RIX&|kaqvi7l zd9)!ZXK6I_-ZJ3t7LCa(I@;UK*24g%dS{kk^ zVQTrD!4f887jt0TOUq+uY0Lp0V<4Ludxk+D%hB@l?w2qVVwrSIHe)<5URN^8V+_SI zW7ls1(s*6oa36nLsc$3=ATw?d7_odtLM%hq=cSb($OAD9dNx32#P;!T5D?_Sb&Oak zf*dR55AlF9lRiO<9plq=CBuE3;q?sNIE_A*2c!t{IX(lkk@hwxIy-Ne$Gor0yH8JN zcuQ~bbGDUmhU1uY;-29+>Ckuy6F|jr1~6ObcKHbtM@GkTM!w)P?9+z~S2fQqFFjXG zc58b%Nu@bM^c@MiM8g=LwihF{@ONdZRhBibbK0I7yXq%f)kP}fBn+l5gB_=ht*_s= zo^q{z@~(s3({bu8@>=4n3*HZVzK?R1^Q}gfC`ac+KN8cJE+Z8sqaug1z^2 zgQGP(h=~CxHc`vOv!@Pc$vzT zC1Y)^*ddeElqyqXs#KY>u26~ZQL?+$ESdU=M$Ktfr47nirfHf?>DsJ5F{pa-SfijT zYj;<$*cAZEq^vrzyMp~?MG9Qu48v>~J_*CF@jxnjRI6NB2sp}R<16C*$A@Qbx^Yg>eYkl z=RNAWNt1!dHek0NHD_^s+N35$_HkD(gX-0j8nCP9-KvZeaGepEK6|IiG-}+xSEo(F zb?-E*1~nN*&%v>r01$%FUYtRYCm;mJn1FSQz=@~P;@5@uHZeg6f-7|!A$$O2QD1m( z1BWim}&v2t#fb^ z2{qLmf^59Oz13fdKkbb~3rY|JLAfJwz@KvVU3C(r0(i9+ZhA_V8urRr;H2UKM_CK2 zj7HfM$M_id$HdWS++^}v7&dCuDsU*UYE`rPi4hR6v0LRj*#T=*tAI<59jCx@a0G)* z89#vAz4iHI$H9|EjobSU56fT_^kCLJ$j^LTohXw^u!~E%90FmdK?3&~xLh=822LoZ zhTx7#tig5t0K8T|C)qm_wg*D!mB1mJ@CxLeYkKki<3Rpbf`7WA_TNGM(-r>}{QrS+ z$-j2h|6<>4NL-i+iNE|cGRYvwilRdBUFErG4?QO7CdC<_c$L`Y077xpL5QZZR-fqx zF{-#j<&<)%TlWE_wFZU4CjJ`nk5uZu(|TFzGeyIeRF#)u>(&!qx^nKda}9Q>Do}-U zdpy7Z>ORcJ;?EpjR34$JMMML5sAC>7wZO$7Qy!Xh z9K%KOL?|{%LE*%m=VL0iXD$I1H^>+ym4xUJXD|S%5bc8uCJGs-A*Si9D#>OD`uq>m zAV0y}6U)kN_M6)w$q7mjfrGS?dR^!*@;@-wzdLH}Tv8bER%v1cd#!D>n20{Yv$kjZ z4}9i12i)FR2-`j#jlnukkSq#3KoMJT6+J7DcB;M7a*=}`)jlmi7yyY6SCX603f!iB zdb5);lVm|ce;eoEhnnT>J)FPt-V5R4^2+F#$5^DYf-Ip2AgwAPM@QL-Q)k;R-|TG4Ri+V*Aft&1V;%H&fiv`WU7gjE!+E6D2-g*|g_zMo4joo3b}Q z;ok7Fs|)OdvicnBm*1Y=aOW5NpVk)r)ET!;Tt*ENC$uF*|1_uJc8lbbxof`qG2@Y< z=Fh@>b38w|$XAUY{-frpgl~G`p8kNVyicXLy-3}RL!SlV>M>xu8X&YheiYv zZj4{OhmySHhTW*Bv)r608%ba!PBQF6^J~wziS|qKXHBe~S@cpXGMp#OnMm7}dzqf| z!#5kAwJjarW!K$x;~rG>l6(2aCeaE(LT68WUj5tN_-|HRIJG{ht<_2Y>7`bv=()CI z_t8GD2gld81Xqr?`J~$I{&U-hZ+?CwbV-=`^-Jx&*PALC(Bh-y>nf}M8-wxd32)Nn z1#33`JUeEze#Y3S*8_Lu&l}!Oyh?@n5WW@rDBcDs6Ep4S)pr#o-?%b6)X6S>?AR$kAo-sDuRn*{}) zI)23}Dfv>D13ez|m~eMOF=KjUvB4^z1|2;U_V|0(PRCsQk1gx7=tmAu4}bImCA58z zTHt{vclJ;Ip8fd8hX<3#-$xYRw+i}Q`{H_dfjX3(o-sxii&uBbARstu6=eG$x!}x# zD?fdK9+*ct_v6UMLbLY~)IVCyw-daGU)&>~{mObIE~uX|?|h>p$}*h8{?HgM=&hqv z`Rrz_+1aZtlZ|iGN8HKUhB}&6e;sP}UjRLp Bi248k literal 0 HcmV?d00001 diff --git a/www/sound/pong/4.mp3 b/www/sound/pong/4.mp3 deleted file mode 100644 index c78bcbc4bc6615803c52ed70a73b6bb2d83a1c94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 SqQ!4f|MQO&^$-4kIPh=71Ol1> diff --git a/www/sound/pong/4.ogg b/www/sound/pong/4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..688b1f81469413df22373bdb217f2aefe960b3e6 GIT binary patch literal 4464 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 T&bE+U1#C;)g^QWI4TgUMw~Vm9 literal 0 HcmV?d00001 diff --git a/www/sound/pong/5.mp3 b/www/sound/pong/5.mp3 deleted file mode 100644 index 50d7f57adb7bf302bf9f210fd556f9ec0586cdb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 zcmeI0X;9Nw+s6M{31lIJfC(ba2D0j(Bw$2%n+*x8VY8rCNmyi2ih>neYqJpp1PqIq zfDf{73XNhFtF&P;0tSkJJEaJS+NyQovD&)4+L`D5@Xqwx`+npF9t zne*wek zO}C!KwoXRT3Rv`>R|lT|{#(>NvY%#fB!XTTgF6?-vFrKqiT%U>CUAL2C}tj|J`woJp^M9maCU*Cdbs6fqz|Y5P0ZR?aSz4n)~%T|Q-p?VoC& z46fk~v78)BqMF&mQ$tCyD6F z->&-Y;YwOwR=Z}p8w(s7(k*G=A-}m3Wx}zo?*mv*M zy{)yiwKMzfs2x1$c12NfP4BNtWC{G`_0u;ku1g7vl`ApCFF3cB_*xq);nf5TCLN6$ z2dNRkWQ_^Vx9lk74o>qUXmR>JjgwZz2ZqH|jOYyZ1v~Qgk%3m_=FV7QNO#u124L83 z++A2+B0X>f=9W6iJYgRXu!8A=mBidHFWU?8leFan)@XtJARUcR##FEzMk;oVM@uZT zR}uz%D`#?UbbPB1{L+wLqSq%^J8vUx(bPmC^kD^h@6_dt82z-1)7C%|URP}vkU%ZD z*2VxtR=c|!dg94aIth7@ya>^w;<14(@D6n}(iAJZB6bFpXiqmr*?L1Q|O0LA=CrSMk7<|rdk(5T13XqTg@R8iA98hzu9?Hi~@(kL=G+oH>KF0jo=h!ROGL5>v9d)n1PcBw*0 zAc`rh2A7(csO@l@=DQ%riUCp7(JuSFw1Sh@wEq9 zj##Y>(0MTAb^Nm*CvUJWL6lX_+Lc;?VqfNt8s8po-+Z*McPV%j?yHId7XV+;GAG9g zH%l7|`R&vf8=kw`4A}I?I*!lE)6KJ|@qik+Az%i~BZD$4CdmM^g7WQUfAE+p_=y34 zhphZvpx++pS+#AEH%4ETN5`$UvRY>CT`B{`7tJD{rqj+$GZ{@GoKvK ztPT3$>#NZ_A!7*(%7B{Q16AhF+y3&pvxxj~k5}(y|Cal!uGJWRGP(i)ET70><~j** zm zqIsbCa(jyNxEMe2EdmM;f1$vg>FVpl)InU8Eu$z1W6*VyyOvZoZbmZnv+(Djw7ANd zhqCC21~4V!B_dDVBr?ldNu-kpo!othCJ1y+n?X$;s`eIkBvQ48x@d|<2^mspCTv&Z zDwB0k)G|_~HD7K`F}~cir)q=ARV{dhkAH+zx&<6;z_-nM?~Kq@OEy?xH!ht6@5*?W zAOPP>XLfT(QR>TWEa9gLPCO~Jx#*%-Cq=vdga|?^xxmyC#5nae1!t%bovCXQZj*}p zP>DsW^-0*dUtApP@AMxmfgt>z^aMMAD~sc{%g@fy#wh%Gnl%If3g8zDlp(T6l8(zQ zB^XpTWG4rbfg;l^1=_$OO``qa=Sy`Ph?@V3Lpeo zx24G@qHO{if%^B3_&h`fbwl~dp~WXqE(QiRVBE*Wj4=>$#Yn`qYWS|BLErk7kpQrc z6ji`spe#grQ-2-3-=vn{QEJ#MDFLE{a_KIpSQTgR5PMbwF^nc-EQvAUlx#JztSlgl zuCOCtg#ea{Tv6Ubm@8$Kx2|4J1Ms*s$)eK{{tDDICPxC0Q42%pfRu0&9LauKPQyu4 zwN)t#rE7C#D{)_&#+QEx1wQ2MZu}p%Szec7`7Vb?Q_1j`{TPGI8o1LnHm_!-b)9nENI(d%)p;||g zl|ZpZjA-2Et$mo}bW(YccMw#80(Z6IW6PEdvO|OG zJ7VCb;ie&Z`Q8X*#e-6~=Vl0WQIgsNdO<*T`-8QWbM}|3s<9y7P~)o`woA)QkFhM* zsd&=q=oXB$@G^`@IwkJ~W(Otq!s5LhI#^A%ZoBK$HJBabA%Lb_okwxU{$wN`N zBSVN|Pv#o=B)Vr06`y5Oh#O8%q}W?7^l`eId*K+85#lS??I&>K?3%QnYoBS$6;P=l z!kQt{+@sG_Ens=q#42PFHPlK=5s_B6E6Dqn)%nTm<&#hc=}6oO?i`nj;<_D$K`RYm zXOg+mC|P~G`5_+s-BhG*hwyXtXi#$Kd%+UE`wz9P!NaC(G+ zGRx5=wBhT33Wkbx7!o}&ALq-P3d@r?3ni&iXGfU<#FCslcIX?M2%;qnf949eL#J-+e#WO#SS1l=OJnsxe6s7nTof*N%{ z)72&>+%HhF&y92z$-ABhJ<(Z)^by7dvn?t0MJQzXX%JN0C z?AZk>J+{VNO3LEzaFjQXtqA<3i3(#NW@Kr?^dXy@A7ej+!l%j$U4$9iEZ5*Se0;>~ z?KkX;Q?f1ytJ|BXwI>^RRXIhMzM;?;`#jR;JL-_#wdLXs?Rr!J>`9~&Rr{+ZD`xY zDkcR^3v-mI(C6}!gEUJz;KW2@B+MKpgW5`2Hy>sk9MweDnb;rgvr3UNcOs?JyZtu_ zvXk?gR)O{i(ynR0E9E+3ZnbWYXJAU3_=;|m%QXXsd_ z=f zYki_+C8paHWxL+Ty2+!Z?C7gQT-q};P;F_`zObC)GaP$vF>dFNU07b%m86Bok#Y>f zupc1RyH00pgbaDK7YuzPq%=w;9fX+<80UK>u~ErV*6B4^J6%D|zSN^x;XrYKh^TlZlbRIG#aA6J>TMf-Jbmkb{-8Sk J;r~v7{{|(WR9^r9 diff --git a/www/sound/pong/5.ogg b/www/sound/pong/5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d2163268bfeef79ceb362fd2dc3f7bdd13f1f3d7 GIT binary patch literal 4220 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 diff --git a/www/sound/pong/6.ogg b/www/sound/pong/6.ogg new file mode 100644 index 0000000000000000000000000000000000000000..34bdd117315513462c5a071cf67e62138bc721ee GIT binary patch literal 4197 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 I`Q4(w0+*p2tN;K2 literal 0 HcmV?d00001 diff --git a/www/sound/pong/7.mp3 b/www/sound/pong/7.mp3 deleted file mode 100644 index a721426b8a8639e5fe002e2139c3a1b6537cdfca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 Y#=2U9f#A{p9{+h0zt8^c{>vipFWd!k8UO$Q diff --git a/www/sound/pong/7.ogg b/www/sound/pong/7.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9c9c994f7d387f7166b403194366e816c4baf583 GIT binary patch literal 4442 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 O<6q*+E4H|UN&f&x8>s>S literal 0 HcmV?d00001 diff --git a/www/sound/pong/8.mp3 b/www/sound/pong/8.mp3 deleted file mode 100644 index a0a6d9071a8cc7545d0f69b895279e6678e0bfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 J#s9+y{1e~z2T=e3 diff --git a/www/sound/pong/8.ogg b/www/sound/pong/8.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0f9acf9968e994117ed9136747447e7989a19bab GIT binary patch literal 4351 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 Gi2ECRx@F@4 literal 0 HcmV?d00001 diff --git a/www/sound/pong/9.mp3 b/www/sound/pong/9.mp3 deleted file mode 100644 index 795555305999f95e6eab1701c253ef30adfef80e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 diff --git a/www/sound/pong/9.ogg b/www/sound/pong/9.ogg new file mode 100644 index 0000000000000000000000000000000000000000..15d82091bd70e6e6b7594b8358af7db583c28f53 GIT binary patch literal 4291 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 W{|V<`IRAg-nIUwJ)%-tZ#D4?UO$xC9 diff --git a/www/sound/roblox-oof.ogg b/www/sound/roblox-oof.ogg new file mode 100644 index 0000000000000000000000000000000000000000..689946ed3ef638d5a9a6eb0e7d9abd35c7870ae7 GIT binary patch literal 6383 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�zdXr7cPdag)Z~el?Z)?@X z$<*y}KXHP90zJ-g5u$Ph47IDL2g5xPMUXXt35%(uU9n;={>7Lk z;Qlt9`SYPZTR)!O+f8~wwY?uS4(zS`srx+nZ*^v-WW&HB{z`R~Ms#PJ8VD@}|_ zq#tMYoEhDADYI6XCZEYStv+Tz@=OwIawYD^FG@!?M@Z849sj~LxzDN~?Ci*a{&5S- zzLtwaOU|LZVp;MSJia|j6WxI9JM?b7YybvjnXab>@1EDhq3n+fjBJy{XxvTCfiCHg zIM}?TvTV>J6jh^O7G!&7->gQ{h{A==x9_G5{apF@@pVpLZ*IMO?keg_IE78HB7kMv77+YRYsTglS6OBFRmpt5KY4ymI=WT)qv1;5*hSU8J;#6hE_KeW^%m|o zC$SGH)VQ9qY<}@nrV)K=@U#=LN$!_x#bLknu^mS@>%C2mseEf9vz=Yy5!%>^z z+SXskCkTP*AHxQ@i)vB@5qi6O8;cf|yA6&GtD$0TyC-dfldq4N+FqMg2a?p3HZ$rM9=H0p<#Jg|-oBf^XYx}cj%%+b9-n>UQLS3}HwpVa> zO-pPD(fO(S_{Sz@Z$nzzm{e7^`$h>CME^X%MFhF z&!!lS29-=f_%$TghH>hLMZxatUG4Nu+WXI0r-+G$9d#G&T=zP-P@J3U#@^qZQKy|x z=#yDT*G@fu^>PXRry(_qnEU>9g1xu;PtKgaKRJotaNEKs$Y%fD-R9RYdD5B6ujoo& zO+Ednv5P+$@IGnEe79SSs5wY3h2=4@)~q;A@+6+k^w}QM=E3)KulKL-dA$soiF)>7 zIbFwZjk7L?iuRW752YP@oV%CooJXA?tkH6~-BFw7@zT{OyVZ8z%CzOhrp=!`mi*?z zB+~eAc}tcK*fQyH;Lb?2HB3;#uVdY z+so2kS5LpOt9}&O^J*q$g5mtaar&1HKgI-dGwQlr1i5f<~ug!~;9E7}_sD(#DopL!xIE>2XU4xN)L z8k%aEDx!MTasv0LP0saJ*I+h9Z&I4|U#mYlEHYK!zJ&6HR94u3;Kt)uv9*GGRYs$O@(J#NPc_RuOLmARWM?|!HHHYSQ!7BUbZI^?lfLe@`hHBNmq_addi z#WeDz{}tSU^P~B8GjrR2x@A;oxua%BrhHb^Gi->q*&!hU1n~YDlwgXMs*;!m-^%Ee|H9>-TGX>WXz_`{~cN4p^J2-*9rVOI+?9Sm-hrPtD;wCJ!v# zv}G_?sqmU7GJ!U48fcFqRyca#OpS~zEUPopse|PBR{EKVfdKZ5=ZZ1G&aqu#?&c)W$Ckcn!pjJpJXESmnum-xJPa$@kap^)8nK z7rNHE$2Qcg{lwofcXqL4S6Rvw&| zghzUEF(}{|;bFua?EbjAq3C_V$GnJ4ftbiNz9l$MG%AcT>gp)hr5|{DQnLDJi|zS{ z2SJLlKI%=cd)|Ge8vUWbJal=Nas-S1MS%l$9cP3%bsc)FVl|Gn7uGOYFJzF>)t z>eXS&`NXdqzdp32NzCe;B*Vq*>yn>a$=htYrwNvON<%Ju-C-}gR9q`s UUsjEEkpJHXAU^UBQk$p013HTK@&Et; literal 0 HcmV?d00001 From 6985d2218fa721fcd8b651dacda2b38b998447a7 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 6 Dec 2022 07:40:15 +0100 Subject: [PATCH 43/48] minor wsServer changes ("for...of" loop replace a "map.forEach" to make early break possible) --- memo.txt | 3 +++ src/server/wsServer.ts | 33 +++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/memo.txt b/memo.txt index 98951849..20d493f3 100644 --- a/memo.txt +++ b/memo.txt @@ -24,6 +24,9 @@ TODO: (éventuellement Math.round() ?) - un autre mode de jeu alternatif ? - changer les "localhost:8080" dans le code. +- sélection couleur des raquettes (your color/opponent color) dans le profil utilisateur. + Enregistrement dans la DB. + init des couleurs dans GameComponentsClient() basé sur les variables de l'utilsateur connecté. ----------- idées modes de jeu : - mode 2 raquettes (un joueur haut/gauche et bas/droite) diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index c94c9297..a82df62d 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -62,6 +62,9 @@ function clientAnnounceListener(this: WebSocket, data: string) { // TODO: reconnection with msg.clientId ? // TODO: spectator/player distinction with msg.role ? + // msg.role is probably not a good idea. + // something like a different route could be better + // "/pong" to play, "/ID_OF_A_GAMESESSION" to spectate const player = clientsMap.get(this.id) as ClientPlayer; player.matchOptions = msg.matchOptions; @@ -89,15 +92,16 @@ function matchmaking(player: ClientPlayer) matchmakingPlayersMap.set(player.id, player); const compatiblePlayers: ClientPlayer[] = []; - matchmakingPlayersMap.forEach((client) => { - if (compatiblePlayers.length === maxPlayersNumber) { - return; // how can we stop forEach entierly and not just this step ??? - } - if (client.matchOptions === matchOptions) { + for (const [id, client] of matchmakingPlayersMap) + { + if (client.matchOptions === matchOptions) + { compatiblePlayers.push(client); - // PLACE complete forEach stop here + if (compatiblePlayers.length === maxPlayersNumber) { + break; + } } - }); + } if (compatiblePlayers.length < minPlayersNumber) { return; @@ -118,8 +122,11 @@ function matchmaking(player: ClientPlayer) // Could be done in gameSession maybe ? compatiblePlayers[0].racket = gameSession.components.playerRight; compatiblePlayers[1].racket = gameSession.components.playerLeft; - compatiblePlayers[0].socket.once("message", playerReadyConfirmationListener); - compatiblePlayers[1].socket.once("message", playerReadyConfirmationListener); + + compatiblePlayers.forEach((client) => { + client.socket.once("message", playerReadyConfirmationListener); + }); + compatiblePlayers[0].socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.right) )); compatiblePlayers[1].socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); } @@ -183,8 +190,10 @@ const pingInterval = setInterval( () => { clientTerminate(client, key, map); deleteLog += ` ${shortId(key)} |`; } - client.isAlive = false; - client.socket.ping(); + else { + client.isAlive = false; + client.socket.ping(); + } }); if (deleteLog) { @@ -194,7 +203,7 @@ const pingInterval = setInterval( () => { console.log("clientsMap size: " + clientsMap.size); console.log("matchmakingPlayersMap size: " + matchmakingPlayersMap.size); console.log(""); -}, 5000); +}, 4200); function clientTerminate(client: Client, key: string, map: Map) From d2cdc564ac21b5cd31d5439ba08693f11b04ee2c Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Wed, 7 Dec 2022 19:33:56 +0100 Subject: [PATCH 44/48] Match abort if all players not ready in time (5s) + HTML Keys instructions --- memo.txt | 85 ++++++++++++++++++++++-------------------- src/client/pong.css | 14 +++---- src/client/pong.html | 51 +++++++++++++------------ src/client/pong.ts | 50 ++++++++++++++++--------- src/client/ws.ts | 8 +++- src/server/wsServer.ts | 28 ++++++++++---- src/shared_js/enums.ts | 1 + 7 files changed, 139 insertions(+), 98 deletions(-) diff --git a/memo.txt b/memo.txt index 20d493f3..56b3d9f1 100644 --- a/memo.txt +++ b/memo.txt @@ -1,45 +1,48 @@ -Done: - - Connexion client/serveur via un Websocket - - implémentation basique (authoritative server) - - Matchmaking - - client prediction - - server reconciliation (buffer des inputs côté client + id sur les inputs) - - amélioration collision avec Hugo - - du son (rebonds de la balle, "Oof" de Roblox sur un point) - - init de GameComponents partagé entre serveur et client. - - draw on the canvas "WIN", "LOSE", "MATCHMAKING COMPLETE", ... - - interpolation (mis à jour progressif des mouvements de l'adversaire) - - traitement groupé des inputs clients toutes les x millisecondes - (BUG désynchronisation: revenu à un traitement immédiat en attendant) - - Détruire les GameSession une fois finies. - - mode multi-balles - - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) - - Selection des modes de jeu via HTML - - Selection audio on/off via HTML - TODO: -- Match Abort si tout les joueurs ne sont pas pret assez vite (~15 secondes) -- mode spectateur -- certaines utilisations de Math.floor() superflu ? Vérifier les appels. - (éventuellement Math.round() ?) -- un autre mode de jeu alternatif ? -- changer les "localhost:8080" dans le code. -- sélection couleur des raquettes (your color/opponent color) dans le profil utilisateur. - Enregistrement dans la DB. - init des couleurs dans GameComponentsClient() basé sur les variables de l'utilsateur connecté. + - lors d'un newRound() verifier si tout les joueurs sont encore en ligne et stopper le match sinon + (victoire si encore un joueur en ligne, annulation du match si aucun joueur en ligne) + - mode spectateur + - certaines utilisations de Math.floor() superflu ? Vérifier les appels. + (éventuellement Math.round() ?) + - un autre mode de jeu alternatif ? + - changer les "localhost:8080" dans le code. + +Done: + - Connexion client/serveur via un Websocket + - implémentation basique (authoritative server) + - Matchmaking + - client prediction + - server reconciliation (buffer des inputs côté client + id sur les inputs) + - amélioration collision avec Hugo + - du son (rebonds de la balle, "Oof" de Roblox sur un point) + - init de GameComponents partagé entre serveur et client. + - draw on the canvas "WIN", "LOSE", "MATCHMAKING COMPLETE", ... + - interpolation (mis à jour progressif des mouvements de l'adversaire) + - traitement groupé des inputs clients toutes les x millisecondes + (BUG désynchronisation: revenu à un traitement immédiat en attendant) + - Détruire les GameSession une fois finies. + - mode multi-balles + - mode murs mouvant (la zone de jeu rétréci / agrandi en continu) + - Selection des modes de jeu via HTML + - Selection audio on/off via HTML + - Match Abort si tout les joueurs n'ont pas répondus assez vite (5 secondes) + ----------- -idées modes de jeu : - - mode 2 raquettes (un joueur haut/gauche et bas/droite) - - skin patate ??? -- (prediction de l'avancement de la balle basé sur la latence serveur ?) -- d'autres sons (foule qui applaudi/musique de victoire) ------------ -- BUG: Si la balle va très vite, elle peut ignorer la collision avec une raquette ou mur. -la collision est testée seulement après le mouvement. -Pour éviter ce bug il faudrait diviser le mouvement pour faire plusieurs tests de collision successifs. -- BUG mineur: sur un changement de fenêtre, les touches restent enfoncées et il faut les "décoincer" -en réappuyant. Ce n'est pas grave mais peut-on faire mieux ? +BUG: + - Si la balle va très vite, elle peut ignorer la collision avec une raquette ou mur. + la collision est testée seulement après le mouvement. + Pour éviter ce bug il faudrait diviser le mouvement pour faire plusieurs tests de collision successifs. + - Sur un changement de fenêtre, les touches restent enfoncées et il faut les "décoincer" + en réappuyant. Ce n'est pas grave mais peut-on faire mieux ? ---------- OSEF, rebuts: -- reconnection -- amélioration du protocole, remplacement du JSON (compression. moins de bande passante). + - idées modes de jeu : + - mode 2 raquettes (un joueur haut/gauche et bas/droite) + - skin patate ??? + - (prediction de l'avancement de la balle basé sur la latence serveur ?) + - d'autres sons (foule qui applaudi/musique de victoire) + - reconnection + - amélioration du protocole, remplacement du JSON (compression. moins de bande passante). + - sélection couleur des raquettes (your color/opponent color) dans le profil utilisateur. + Enregistrement dans la DB. + init des couleurs dans GameComponentsClient() basé sur les variables de l'utilsateur connecté. diff --git a/src/client/pong.css b/src/client/pong.css index c481c502..14533592 100644 --- a/src/client/pong.css +++ b/src/client/pong.css @@ -7,13 +7,6 @@ font-style: normal; font-display: swap; } -#preload_font { - font-family: "Bit5x3"; - opacity:0; - height:0; - width:0; - display:inline-block; -} body { margin: 0; background-color: #222425; @@ -24,7 +17,14 @@ body { /* max-height: 80vh; */ /* overflow: hidden; */ } +#div_game_instructions { + text-align: center; + font-family: "Bit5x3"; + color: rgb(245, 245, 245); + font-size: large; +} #div_game_options { + margin-top: 20px; text-align: center; font-family: "Bit5x3"; color: rgb(245, 245, 245); diff --git a/src/client/pong.html b/src/client/pong.html index d23e5590..30f2e781 100644 --- a/src/client/pong.html +++ b/src/client/pong.html @@ -6,30 +6,35 @@ -

    .
    -
    -
    - game options -
    - - -
    -
    - - -
    -
    - - - - - -
    -
    - -
    -
    +
    + game options +
    + + +
    +
    + + +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    +

    --- keys ---

    +

    move up: 'w' or 'up arrow'

    +

    move down: 's' OR 'down arrow'

    +

    grid on/off: 'g'

    diff --git a/src/client/pong.ts b/src/client/pong.ts index 5c9dcce0..29eb657f 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -17,11 +17,6 @@ import { initWebSocket } from "./ws.js"; import { initAudio } from "./audio.js"; -/* Keys - Racket: W/S OR Up/Down - Grid On-Off: G -*/ - /* TODO: A way to delay the init of variables, but still use "const" not "let" ? */ export let pong: GameArea; export let gc: GameComponentsClient; @@ -46,7 +41,8 @@ function init() matchOptions |= en.MatchOptions.movingWalls; } - document.getElementById("div_game_options").hidden = true; + document.getElementById("div_game_options").remove(); + document.getElementById("div_game_instructions").remove(); pong = new GameArea(); gc = new GameComponentsClient(matchOptions, pong.ctx); @@ -55,32 +51,52 @@ function init() function matchmaking() { - console.log("Searching an opponent..."); + const text = "searching..."; + console.log(text); gc.text1.clear(); - gc.text1.pos.assign(c.w/5, c.h_mid); - gc.text1.text = "Searching..."; + gc.text1.pos.assign(c.w*0.2, c.h*0.5); + gc.text1.text = text; gc.text1.update(); } function matchmakingComplete() { - console.log("Match Found !"); + const text = "match found !"; + console.log(text); gc.text1.clear(); - gc.text1.pos.assign(c.w/8, c.h_mid); - gc.text1.text = "Match Found !"; + gc.text1.pos.assign(c.w*0.15, c.h*0.5); + gc.text1.text = text; gc.text1.update(); } -function startGame() { - gc.text1.pos.assign(c.w_mid, c.h_mid+c.h/4); +function matchAbort() +{ + const text = "match abort"; + console.log(text); + gc.text1.clear(); + gc.text1.pos.assign(c.w*0.15, c.h*0.5); + gc.text1.text = text; + gc.text1.update(); + + gc.text1.pos.assign(c.w*0.44, c.h*0.6); + gc.text1.text = "sorry =("; + const oriSize = gc.text1.size; + gc.text1.size = gc.text1.size*0.2; + gc.text1.update(); + gc.text1.size = oriSize; +} + +function matchStart() +{ + gc.text1.pos.assign(c.w*0.5, c.h*0.75); countdown(c.matchStartDelay/1000, (count: number) => { gc.text1.clear(); gc.text1.text = `${count}`; gc.text1.update(); - }, resumeGame); + }, matchResume); } -function resumeGame() +function matchResume() { gc.text1.text = ""; window.addEventListener('keydown', function (e) { @@ -96,4 +112,4 @@ function resumeGame() } -export {matchmaking, matchmakingComplete, startGame} +export {matchmaking, matchmakingComplete, matchAbort, matchStart} diff --git a/src/client/ws.ts b/src/client/ws.ts index 60f1ab87..a8396b1c 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -3,7 +3,7 @@ import * as c from "./constants.js" import { gc, matchOptions } from "./global.js" import * as ev from "../shared_js/class/Event.js" import * as en from "../shared_js/enums.js" -import { matchmaking, matchmakingComplete, startGame } from "./pong.js"; +import { matchmaking, matchmakingComplete, matchAbort, matchStart } from "./pong.js"; import { RacketClient } from "./class/RectangleClient.js"; import { repeatInput } from "./handleInput.js"; import { soundRoblox } from "./audio.js" @@ -67,7 +67,11 @@ function preMatchListener(this: WebSocket, event: MessageEvent) case en.EventTypes.matchStart: socket.removeEventListener("message", preMatchListener); socket.addEventListener("message", inGameListener); - startGame(); + matchStart(); + break; + case en.EventTypes.matchAbort: + socket.removeEventListener("message", preMatchListener); + matchAbort(); break; } } diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index a82df62d..73604b67 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -129,6 +129,18 @@ function matchmaking(player: ClientPlayer) compatiblePlayers[0].socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.right) )); compatiblePlayers[1].socket.send(JSON.stringify( new ev.EventMatchmakingComplete(en.PlayerSide.left) )); + + setTimeout(function abortMatch() { + if (gameSession.unreadyPlayersMap.size !== 0) + { + gameSessionsMap.delete(gameSession.id); + gameSession.playersMap.forEach((client) => { + client.socket.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchAbort) )); + client.gameSession = null; + clientTerminate(client); + }); + } + }, 5000); } @@ -185,10 +197,10 @@ export function clientInputListener(this: WebSocket, data: string) const pingInterval = setInterval( () => { let deleteLog = ""; - clientsMap.forEach( (client, key, map) => { + clientsMap.forEach( (client) => { if (!client.isAlive) { - clientTerminate(client, key, map); - deleteLog += ` ${shortId(key)} |`; + clientTerminate(client); + deleteLog += ` ${shortId(client.id)} |`; } else { client.isAlive = false; @@ -206,12 +218,12 @@ const pingInterval = setInterval( () => { }, 4200); -function clientTerminate(client: Client, key: string, map: Map) +function clientTerminate(client: Client) { client.socket.terminate(); if (client.gameSession) { - client.gameSession.playersMap.delete(key); + client.gameSession.playersMap.delete(client.id); if (client.gameSession.playersMap.size === 0) { clearInterval(client.gameSession.clientsUpdateInterval); @@ -219,9 +231,9 @@ function clientTerminate(client: Client, key: string, map: Map) gameSessionsMap.delete(client.gameSession.id); } } - map.delete(key); - if (matchmakingPlayersMap.has(key)) { - matchmakingPlayersMap.delete(key); + clientsMap.delete(client.id); + if (matchmakingPlayersMap.has(client.id)) { + matchmakingPlayersMap.delete(client.id); } } diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts index dfba2aa3..33368ff8 100644 --- a/src/shared_js/enums.ts +++ b/src/shared_js/enums.ts @@ -10,6 +10,7 @@ enum EventTypes { // Generic matchmakingInProgress, matchStart, + matchAbort, matchNewRound, // unused matchPause, // unused matchResume, // unused From b3bd43c423ec3bcb65fbe2385602f216b7830cb4 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 8 Dec 2022 04:08:16 +0100 Subject: [PATCH 45/48] added victory by forfeit --- memo.txt | 4 +-- src/client/class/GameComponentsClient.ts | 4 +++ src/client/draw.ts | 2 ++ src/client/pong.css | 1 + src/client/pong.ts | 14 ++++++----- src/client/ws.ts | 24 +++++++++++++++--- src/server/class/GameSession.ts | 32 +++++++++++++++++++++--- src/shared_js/class/Event.ts | 4 ++- 8 files changed, 69 insertions(+), 16 deletions(-) diff --git a/memo.txt b/memo.txt index 56b3d9f1..9af85cef 100644 --- a/memo.txt +++ b/memo.txt @@ -1,6 +1,4 @@ TODO: - - lors d'un newRound() verifier si tout les joueurs sont encore en ligne et stopper le match sinon - (victoire si encore un joueur en ligne, annulation du match si aucun joueur en ligne) - mode spectateur - certaines utilisations de Math.floor() superflu ? Vérifier les appels. (éventuellement Math.round() ?) @@ -26,6 +24,8 @@ Done: - Selection des modes de jeu via HTML - Selection audio on/off via HTML - Match Abort si tout les joueurs n'ont pas répondus assez vite (5 secondes) + - lors d'un newRound() verifier si tout les joueurs sont encore en ligne et stopper le match sinon + (victoire si encore un joueur en ligne, annulation du match si aucun joueur en ligne) ----------- BUG: diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index bf90f66f..deabbdb3 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -68,6 +68,8 @@ class GameComponentsClient extends GameComponentsExtensionForClient { scoreLeft: TextNumericValue; scoreRight: TextNumericValue; text1: TextElem; + text2: TextElem; + text3: TextElem; w_grid_mid: RectangleClient; w_grid_u1: RectangleClient; @@ -90,6 +92,8 @@ class GameComponentsClient extends GameComponentsExtensionForClient { // Text pos.assign(0, c.h_mid); this.text1 = new TextElem(pos, Math.floor(c.w/8), ctx, "white"); + this.text2 = new TextElem(pos, Math.floor(c.w/24), ctx, "white"); + this.text3 = new TextElem(pos, Math.floor(c.w/24), ctx, "white"); // Dotted Midline pos.assign(c.w_mid-c.midLineSize/2, 0+c.wallSize); diff --git a/src/client/draw.ts b/src/client/draw.ts index 984c2acb..0837c84c 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -15,6 +15,8 @@ function drawLoop() drawStatic(); gc.text1.update(); + gc.text2.update(); + gc.text3.update(); drawDynamic(); } diff --git a/src/client/pong.css b/src/client/pong.css index 14533592..39368218 100644 --- a/src/client/pong.css +++ b/src/client/pong.css @@ -12,6 +12,7 @@ body { background-color: #222425; } #canvas_container { + margin-top: 20px; text-align: center; /* border: dashed rgb(245, 245, 245) 5px; */ /* max-height: 80vh; */ diff --git a/src/client/pong.ts b/src/client/pong.ts index 29eb657f..52414153 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -78,12 +78,14 @@ function matchAbort() gc.text1.text = text; gc.text1.update(); - gc.text1.pos.assign(c.w*0.44, c.h*0.6); - gc.text1.text = "sorry =("; - const oriSize = gc.text1.size; - gc.text1.size = gc.text1.size*0.2; - gc.text1.update(); - gc.text1.size = oriSize; + setTimeout(() => { + gc.text2.pos.assign(c.w*0.44, c.h*0.6); + gc.text2.text = "pardon =("; + const oriSize = gc.text2.size; + gc.text2.size = c.w*0.025; + gc.text2.update(); + gc.text2.size = oriSize; + }, 3000); } function matchStart() diff --git a/src/client/ws.ts b/src/client/ws.ts index a8396b1c..6d589082 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -173,14 +173,30 @@ function scoreUpdate(data: ev.EventScoreUpdate) function matchEnd(data: ev.EventMatchEnd) { if (data.winner === clientInfo.side) { - gc.text1.pos.assign(c.w*0.415, c.h_mid); + gc.text1.pos.assign(c.w*0.415, c.h*0.5); gc.text1.text = "WIN"; + if (data.forfeit) { + if (clientInfo.side === en.PlayerSide.left) { + gc.text2.pos.assign(c.w*0.65, c.h*0.42); + gc.text3.pos.assign(c.w*0.65, c.h*0.52); + } + else { + gc.text2.pos.assign(c.w*0.09, c.h*0.42); + gc.text3.pos.assign(c.w*0.09, c.h*0.52); + } + setTimeout(() => { + gc.text2.text = "par forfait"; + }, 2500); + setTimeout(() => { + gc.text3.text = "calme ta joie"; + }, 5000); + } } else { - gc.text1.pos.assign(c.w*0.383, c.h_mid); + gc.text1.pos.assign(c.w*0.383, c.h*0.5); gc.text1.text = "LOSE"; } - // matchEnded = true; + // matchEnded = true; // unused } -// export let matchEnded = false; +// export let matchEnded = false; // unused diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index 93cc544a..d9953502 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -149,10 +149,13 @@ class GameSession { }); } private _newRound(s: GameSession, ball: Ball) { - const gc = s.components; + if (s._checkDisconnexions()) { + return; + } // https://fr.wikipedia.org/wiki/Tennis_de_table#Nombre_de_manches - if (gc.scoreLeft >= 11 || gc.scoreRight >= 11) - // if (gc.scoreLeft >= 2 || gc.scoreRight >= 2) // WIP: for testing + const gc = s.components; + const minScore = 11;// can be changed for testing + if (gc.scoreLeft >= minScore || gc.scoreRight >= minScore) { if (Math.abs(gc.scoreLeft - gc.scoreRight) >= 2) { @@ -165,6 +168,29 @@ class GameSession { ball.speed = ball.baseSpeed; ball.ballInPlay = true; } + private _checkDisconnexions() { + if (this.playersMap.size !== 2) + { + this.matchEnded = true; + if (this.playersMap.size != 0) + { + const gc = this.components; + const luckyWinner: ClientPlayer = this.playersMap.values().next().value; + let eventEnd: ev.EventMatchEnd; + if (luckyWinner.racket === gc.playerLeft) { + eventEnd = new ev.EventMatchEnd(en.PlayerSide.left, true); + console.log("Player Left WIN (by forfeit)"); + } + else { + eventEnd = new ev.EventMatchEnd(en.PlayerSide.right, true); + console.log("Player Right WIN (by forfeit)"); + } + luckyWinner.socket.send(JSON.stringify(eventEnd)); + } + return true; + } + return false; + } private _matchEnd(s: GameSession) { s.matchEnded = true; const gc = s.components; diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 3f0d440a..381e30a3 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -63,9 +63,11 @@ class EventScoreUpdate extends ServerEvent { class EventMatchEnd extends ServerEvent { winner: en.PlayerSide; - constructor(winner: en.PlayerSide) { + forfeit: boolean; + constructor(winner: en.PlayerSide, forfeit = false) { super(en.EventTypes.matchEnd); this.winner = winner; + this.forfeit = forfeit; } } From 75925b5f84a4faf5b4377808ffb7ee55890d1d05 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 8 Dec 2022 04:42:31 +0100 Subject: [PATCH 46/48] messages refactoring --- src/client/message.ts | 80 +++++++++++++++++++++++++++++++++++++++++++ src/client/pong.ts | 48 ++------------------------ src/client/ws.ts | 32 +++++------------ 3 files changed, 92 insertions(+), 68 deletions(-) create mode 100644 src/client/message.ts diff --git a/src/client/message.ts b/src/client/message.ts new file mode 100644 index 00000000..5c1cdc15 --- /dev/null +++ b/src/client/message.ts @@ -0,0 +1,80 @@ + +import * as c from "./constants.js" +import { gc } from "./global.js" +import * as en from "../shared_js/enums.js" + +/* + before game +*/ +export function matchmaking() +{ + const text = "searching..."; + console.log(text); + gc.text1.clear(); + gc.text1.pos.assign(c.w*0.2, c.h*0.5); + gc.text1.text = text; + gc.text1.update(); +} + +export function matchmakingComplete() +{ + const text = "match found !"; + console.log(text); + gc.text1.clear(); + gc.text1.pos.assign(c.w*0.15, c.h*0.5); + gc.text1.text = text; + gc.text1.update(); +} + +export function matchAbort() +{ + const text = "match abort"; + console.log(text); + gc.text1.clear(); + gc.text1.pos.assign(c.w*0.15, c.h*0.5); + gc.text1.text = text; + gc.text1.update(); + + setTimeout(() => { + gc.text2.pos.assign(c.w*0.44, c.h*0.6); + gc.text2.text = "pardon =("; + const oriSize = gc.text2.size; + gc.text2.size = c.w*0.025; + gc.text2.update(); + gc.text2.size = oriSize; + }, 2500); +} + + +/* + in game +*/ +export function win() +{ + gc.text1.pos.assign(c.w*0.415, c.h*0.5); + gc.text1.text = "WIN"; +} + +export function lose() +{ + gc.text1.pos.assign(c.w*0.383, c.h*0.5); + gc.text1.text = "LOSE"; +} + +export function forfeit(playerSide: en.PlayerSide) +{ + if (playerSide === en.PlayerSide.left) { + gc.text2.pos.assign(c.w*0.65, c.h*0.42); + gc.text3.pos.assign(c.w*0.65, c.h*0.52); + } + else { + gc.text2.pos.assign(c.w*0.09, c.h*0.42); + gc.text3.pos.assign(c.w*0.09, c.h*0.52); + } + setTimeout(() => { + gc.text2.text = "par forfait"; + }, 1500); + setTimeout(() => { + gc.text3.text = "calme ta joie"; + }, 3500); +} diff --git a/src/client/pong.ts b/src/client/pong.ts index 52414153..a66dc9d5 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -49,56 +49,17 @@ function init() initWebSocket(matchOptions); } -function matchmaking() -{ - const text = "searching..."; - console.log(text); - gc.text1.clear(); - gc.text1.pos.assign(c.w*0.2, c.h*0.5); - gc.text1.text = text; - gc.text1.update(); -} - -function matchmakingComplete() -{ - const text = "match found !"; - console.log(text); - gc.text1.clear(); - gc.text1.pos.assign(c.w*0.15, c.h*0.5); - gc.text1.text = text; - gc.text1.update(); -} - -function matchAbort() -{ - const text = "match abort"; - console.log(text); - gc.text1.clear(); - gc.text1.pos.assign(c.w*0.15, c.h*0.5); - gc.text1.text = text; - gc.text1.update(); - - setTimeout(() => { - gc.text2.pos.assign(c.w*0.44, c.h*0.6); - gc.text2.text = "pardon =("; - const oriSize = gc.text2.size; - gc.text2.size = c.w*0.025; - gc.text2.update(); - gc.text2.size = oriSize; - }, 3000); -} - -function matchStart() +export function start() { gc.text1.pos.assign(c.w*0.5, c.h*0.75); countdown(c.matchStartDelay/1000, (count: number) => { gc.text1.clear(); gc.text1.text = `${count}`; gc.text1.update(); - }, matchResume); + }, resume); } -function matchResume() +function resume() { gc.text1.text = ""; window.addEventListener('keydown', function (e) { @@ -112,6 +73,3 @@ function matchResume() pong.gameLoopInterval = window.setInterval(gameLoop, c.gameLoopIntervalMS); pong.drawLoopInterval = window.setInterval(drawLoop, c.drawLoopIntervalMS); } - - -export {matchmaking, matchmakingComplete, matchAbort, matchStart} diff --git a/src/client/ws.ts b/src/client/ws.ts index 6d589082..ca3a1227 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -3,7 +3,8 @@ import * as c from "./constants.js" import { gc, matchOptions } from "./global.js" import * as ev from "../shared_js/class/Event.js" import * as en from "../shared_js/enums.js" -import { matchmaking, matchmakingComplete, matchAbort, matchStart } from "./pong.js"; +import * as msg from "./message.js"; +import { start } from "./pong.js"; import { RacketClient } from "./class/RectangleClient.js"; import { repeatInput } from "./handleInput.js"; import { soundRoblox } from "./audio.js" @@ -45,7 +46,7 @@ function preMatchListener(this: WebSocket, event: MessageEvent) clientInfo.id = (data).id; break; case en.EventTypes.matchmakingInProgress: - matchmaking(); + msg.matchmaking(); break; case en.EventTypes.matchmakingComplete: clientInfo.side = (data).side; @@ -62,16 +63,16 @@ function preMatchListener(this: WebSocket, event: MessageEvent) clientInfo.opponentNextPos = new VectorInteger(clientInfo.opponent.pos.x, clientInfo.opponent.pos.y); clientInfo.racket.color = "darkgreen"; // for testing purpose socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) )); // TODO: set an interval/timeout to resend until matchStart response (in case of network problem) - matchmakingComplete(); + msg.matchmakingComplete(); break; case en.EventTypes.matchStart: socket.removeEventListener("message", preMatchListener); socket.addEventListener("message", inGameListener); - matchStart(); + start(); break; case en.EventTypes.matchAbort: socket.removeEventListener("message", preMatchListener); - matchAbort(); + msg.matchAbort(); break; } } @@ -173,28 +174,13 @@ function scoreUpdate(data: ev.EventScoreUpdate) function matchEnd(data: ev.EventMatchEnd) { if (data.winner === clientInfo.side) { - gc.text1.pos.assign(c.w*0.415, c.h*0.5); - gc.text1.text = "WIN"; + msg.win(); if (data.forfeit) { - if (clientInfo.side === en.PlayerSide.left) { - gc.text2.pos.assign(c.w*0.65, c.h*0.42); - gc.text3.pos.assign(c.w*0.65, c.h*0.52); - } - else { - gc.text2.pos.assign(c.w*0.09, c.h*0.42); - gc.text3.pos.assign(c.w*0.09, c.h*0.52); - } - setTimeout(() => { - gc.text2.text = "par forfait"; - }, 2500); - setTimeout(() => { - gc.text3.text = "calme ta joie"; - }, 5000); + msg.forfeit(clientInfo.side); } } else { - gc.text1.pos.assign(c.w*0.383, c.h*0.5); - gc.text1.text = "LOSE"; + msg.lose(); } // matchEnded = true; // unused } From c88a6145eb69afda4aae411c1fb6a2a445262eac Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 8 Dec 2022 07:35:20 +0100 Subject: [PATCH 47/48] minor refactoring --- src/client/class/GameArea.ts | 4 +-- src/client/class/GameComponentsClient.ts | 5 +--- src/client/class/InputHistory.ts | 4 +-- src/client/class/RectangleClient.ts | 34 ++++++++---------------- src/client/class/Text.ts | 6 ++--- src/client/draw.ts | 6 +---- src/client/gameLoop.ts | 4 +-- src/client/handleInput.ts | 6 ++--- src/client/utils.ts | 4 +-- src/server/class/Client.ts | 10 +++---- src/server/class/GameComponentsServer.ts | 5 +--- src/server/class/GameSession.ts | 9 +++---- src/server/utils.ts | 4 +-- src/shared_js/class/Event.ts | 24 +++++++---------- src/shared_js/class/GameComponents.ts | 4 +-- src/shared_js/class/Rectangle.ts | 28 +++++++++---------- src/shared_js/class/Vector.ts | 8 +++--- src/shared_js/class/interface.ts | 8 +++--- src/shared_js/enums.ts | 12 ++++----- src/shared_js/utils.ts | 10 +++---- src/shared_js/wallsMovement.ts | 4 +-- 21 files changed, 70 insertions(+), 129 deletions(-) diff --git a/src/client/class/GameArea.ts b/src/client/class/GameArea.ts index e6921e4e..5483baa4 100644 --- a/src/client/class/GameArea.ts +++ b/src/client/class/GameArea.ts @@ -1,7 +1,7 @@ import * as c from ".././constants.js" -class GameArea { +export class GameArea { keys: string[] = []; handleInputInterval: number = 0; gameLoopInterval: number = 0; @@ -34,5 +34,3 @@ class GameArea { this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); } } - -export {GameArea} diff --git a/src/client/class/GameComponentsClient.ts b/src/client/class/GameComponentsClient.ts index deabbdb3..9fa0a2a3 100644 --- a/src/client/class/GameComponentsClient.ts +++ b/src/client/class/GameComponentsClient.ts @@ -62,8 +62,7 @@ class GameComponentsExtensionForClient extends GameComponents { } } - -class GameComponentsClient extends GameComponentsExtensionForClient { +export class GameComponentsClient extends GameComponentsExtensionForClient { midLine: Line; scoreLeft: TextNumericValue; scoreRight: TextNumericValue; @@ -114,5 +113,3 @@ class GameComponentsClient extends GameComponentsExtensionForClient { this.h_grid_d1 = new RectangleClient(pos, c.gridSize, c.h, ctx, "darkgreen"); } } - -export {GameComponentsClient} diff --git a/src/client/class/InputHistory.ts b/src/client/class/InputHistory.ts index e4d3b8f1..952693af 100644 --- a/src/client/class/InputHistory.ts +++ b/src/client/class/InputHistory.ts @@ -2,7 +2,7 @@ import * as en from "../../shared_js/enums.js" import * as ev from "../../shared_js/class/Event.js" -class InputHistory { +export class InputHistory { input: en.InputEnum; id: number; deltaTime: number; @@ -12,5 +12,3 @@ class InputHistory { this.deltaTime = deltaTime; } } - -export {InputHistory} diff --git a/src/client/class/RectangleClient.ts b/src/client/class/RectangleClient.ts index 5c251704..1cc1c4f5 100644 --- a/src/client/class/RectangleClient.ts +++ b/src/client/class/RectangleClient.ts @@ -17,7 +17,7 @@ function clearRectangle(this: RectangleClient, pos?: VectorInteger) { this.ctx.clearRect(this.pos.x, this.pos.y, this.width, this.height); } -class RectangleClient extends Rectangle implements GraphicComponent { +export class RectangleClient extends Rectangle implements GraphicComponent { ctx: CanvasRenderingContext2D; color: string; update: () => void; @@ -31,19 +31,9 @@ class RectangleClient extends Rectangle implements GraphicComponent { this.update = updateRectangle; this.clear = clearRectangle; } - // update() { - // this.ctx.fillStyle = this.color; - // this.ctx.fillRect(this.pos.x, this.pos.y, this.width, this.height); - // } - // clear(pos?: VectorInteger) { - // if (pos) - // this.ctx.clearRect(pos.x, pos.y, this.width, this.height); - // else - // this.ctx.clearRect(this.pos.x, this.pos.y, this.width, this.height); - // } } -class MovingRectangleClient extends MovingRectangle implements GraphicComponent { +export class MovingRectangleClient extends MovingRectangle implements GraphicComponent { ctx: CanvasRenderingContext2D; color: string; update: () => void; @@ -59,7 +49,7 @@ class MovingRectangleClient extends MovingRectangle implements GraphicComponent } } -class RacketClient extends Racket implements GraphicComponent { +export class RacketClient extends Racket implements GraphicComponent { ctx: CanvasRenderingContext2D; color: string; update: () => void; @@ -75,7 +65,7 @@ class RacketClient extends Racket implements GraphicComponent { } } -class BallClient extends Ball implements GraphicComponent { +export class BallClient extends Ball implements GraphicComponent { ctx: CanvasRenderingContext2D; color: string; update: () => void; @@ -93,10 +83,6 @@ class BallClient extends Ball implements GraphicComponent { this._bounceAlgo(collider); soundPongArr[ Math.floor(random(0, soundPongArr.length)) ].play(); } - /* protected _bounceRacket(collider: Racket) { - this._bounceRacketAlgo(collider); - soundRoblox.play(); - } */ } function updateLine(this: Line) { @@ -105,17 +91,20 @@ function updateLine(this: Line) { let i = 0; while (i < this.segmentCount) { - // for Horizontal Line + /* Horizontal Line */ // pos.y = this.pos.y; // pos.x = this.pos.x + this.segmentWidth * i; + + /* Vertical Line */ pos.x = this.pos.x; pos.y = this.pos.y + this.segmentHeight * i; + this.ctx.fillRect(pos.x, pos.y, this.segmentWidth, this.segmentHeight); i += 2; } } -class Line extends RectangleClient { +export class Line extends RectangleClient { gapeCount: number = 0; segmentCount: number; segmentWidth: number; @@ -129,13 +118,12 @@ class Line extends RectangleClient { this.gapeCount = gapeCount; this.segmentCount = this.gapeCount * 2 + 1; + /* Vertical Line */ this.segmentWidth = this.width; this.segmentHeight = this.height / this.segmentCount; - // for Horizontal Line + /* Horizontal Line */ // this.segmentWidth = this.width / this.segmentCount; // this.segmentHeight = this.height; } } - -export {RectangleClient, MovingRectangleClient, RacketClient, BallClient, Line} diff --git a/src/client/class/Text.ts b/src/client/class/Text.ts index 88111131..11f00ab9 100644 --- a/src/client/class/Text.ts +++ b/src/client/class/Text.ts @@ -3,7 +3,7 @@ import { Vector, VectorInteger } from "../../shared_js/class/Vector.js"; import { Component } from "../../shared_js/class/interface.js"; // conflict with Text -class TextElem implements Component { +export class TextElem implements Component { ctx: CanvasRenderingContext2D; pos: VectorInteger; color: string; @@ -39,7 +39,7 @@ class TextElem implements Component { } } -class TextNumericValue extends TextElem { +export class TextNumericValue extends TextElem { private _value: number = 0; constructor(pos: VectorInteger, size: number, ctx: CanvasRenderingContext2D, color: string, font?: string) @@ -54,5 +54,3 @@ class TextNumericValue extends TextElem { this.text = v.toString(); } } - -export {TextElem, TextNumericValue} diff --git a/src/client/draw.ts b/src/client/draw.ts index 0837c84c..204c55f5 100644 --- a/src/client/draw.ts +++ b/src/client/draw.ts @@ -1,10 +1,8 @@ import { pong, gc } from "./global.js" -import * as c from "./constants.js" -import * as en from "../shared_js/enums.js" import { gridDisplay } from "./handleInput.js"; -function drawLoop() +export function drawLoop() { pong.clear(); @@ -49,5 +47,3 @@ function drawGrid() gc.h_grid_u1.update(); gc.h_grid_d1.update(); } - -export {drawLoop} diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 593d1eaa..60e25753 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -8,7 +8,7 @@ let actual_time: number = Date.now(); let last_time: number; let delta_time: number; -function gameLoop() +export function gameLoop() { /* last_time = actual_time; actual_time = Date.now(); @@ -45,5 +45,3 @@ function opponentInterpolation(delta: number) clientInfo.opponent.pos.y = clientInfo.opponentNextPos.y; } } - -export {gameLoop} diff --git a/src/client/handleInput.ts b/src/client/handleInput.ts index 164680e1..33b956f4 100644 --- a/src/client/handleInput.ts +++ b/src/client/handleInput.ts @@ -20,7 +20,7 @@ const inputHistoryArr: InputHistory[] = []; socket.send(JSON.stringify(inputState)); } */ -function handleInput() +export function handleInput() { /* last_time = actual_time; actual_time = Date.now(); @@ -86,7 +86,7 @@ function playerMovePrediction(delta: number, input: en.InputEnum) racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); } -function repeatInput(lastInputId: number) +export function repeatInput(lastInputId: number) { // server reconciliation let i = inputHistoryArr.findIndex((value: InputHistory) => { @@ -106,5 +106,3 @@ function repeatInput(lastInputId: number) } }); } - -export {handleInput, repeatInput} diff --git a/src/client/utils.ts b/src/client/utils.ts index db971447..ff45234d 100644 --- a/src/client/utils.ts +++ b/src/client/utils.ts @@ -1,7 +1,7 @@ export * from "../shared_js/utils.js" -function countdown(count: number, callback?: (count: number) => void, endCallback?: () => void) +export function countdown(count: number, callback?: (count: number) => void, endCallback?: () => void) { console.log("countdown ", count); if (count > 0) { @@ -14,5 +14,3 @@ function countdown(count: number, callback?: (count: number) => void, endCallbac endCallback(); } } - -export {countdown} diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index fbdd8fd3..df8f996b 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -5,9 +5,9 @@ import { GameSession } from "./GameSession.js"; import * as ev from "../../shared_js/class/Event.js" import * as en from "../../shared_js/enums.js" -class Client { +export class Client { socket: WebSocket; - id: string; // Pas indispensable si "socket" a une copie de "id" + id: string; // same as "socket.id" isAlive: boolean = true; gameSession: GameSession = null; matchOptions: en.MatchOptions = 0; @@ -17,7 +17,7 @@ class Client { } } -class ClientPlayer extends Client { +export class ClientPlayer extends Client { inputBuffer: ev.EventInput = new ev.EventInput(); lastInputId: number = 0; racket: Racket; @@ -27,10 +27,8 @@ class ClientPlayer extends Client { } } -class ClientSpectator extends Client { // Wip, unused +export class ClientSpectator extends Client { // Wip, unused constructor(socket: WebSocket, id: string) { super(socket, id); } } - -export {Client, ClientPlayer, ClientSpectator} diff --git a/src/server/class/GameComponentsServer.ts b/src/server/class/GameComponentsServer.ts index d8f2c044..691a3991 100644 --- a/src/server/class/GameComponentsServer.ts +++ b/src/server/class/GameComponentsServer.ts @@ -1,9 +1,8 @@ -import * as c from "../constants.js" import * as en from "../../shared_js/enums.js" import { GameComponents } from "../../shared_js/class/GameComponents.js"; -class GameComponentsServer extends GameComponents { +export class GameComponentsServer extends GameComponents { scoreLeft: number = 0; scoreRight: number = 0; constructor(options: en.MatchOptions) @@ -11,5 +10,3 @@ class GameComponentsServer extends GameComponents { super(options); } } - -export {GameComponentsServer} diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index d9953502..a37204a6 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -10,10 +10,11 @@ import { Ball } from "../../shared_js/class/Rectangle.js"; import { wallsMovements } from "../../shared_js/wallsMovement.js"; /* - Arg "s: GameSession" replace "this: GameSession" for use with setTimeout(), - because "this" is equal to "this: Timeout" + multiples methods of GameSession have parameter "s: GameSession". + its used with calls to setTimeout(), + because "this" is not equal to the GameSession but to "this: Timeout" */ -class GameSession { +export class GameSession { id: string; // url ? playersMap: Map = new Map(); unreadyPlayersMap: Map = new Map(); @@ -210,5 +211,3 @@ class GameSession { }); } } - -export {GameSession} diff --git a/src/server/utils.ts b/src/server/utils.ts index 0c939b8c..3cd0a4a5 100644 --- a/src/server/utils.ts +++ b/src/server/utils.ts @@ -1,8 +1,6 @@ export * from "../shared_js/utils.js" -function shortId(id: string): string { +export function shortId(id: string): string { return id.substring(0, id.indexOf("-")); } - -export {shortId} diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 381e30a3..29ed9933 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -2,14 +2,14 @@ import * as en from "../enums.js" /* From Server */ -class ServerEvent { +export class ServerEvent { type: en.EventTypes; constructor(type: en.EventTypes = 0) { this.type = type; } } -class EventAssignId extends ServerEvent { +export class EventAssignId extends ServerEvent { id: string; constructor(id: string) { super(en.EventTypes.assignId); @@ -17,7 +17,7 @@ class EventAssignId extends ServerEvent { } } -class EventMatchmakingComplete extends ServerEvent { +export class EventMatchmakingComplete extends ServerEvent { side: en.PlayerSide; constructor(side: en.PlayerSide) { super(en.EventTypes.matchmakingComplete); @@ -25,7 +25,7 @@ class EventMatchmakingComplete extends ServerEvent { } } -class EventGameUpdate extends ServerEvent { +export class EventGameUpdate extends ServerEvent { playerLeft = { y: 0 }; @@ -51,7 +51,7 @@ class EventGameUpdate extends ServerEvent { } } -class EventScoreUpdate extends ServerEvent { +export class EventScoreUpdate extends ServerEvent { scoreLeft: number; scoreRight: number; constructor(scoreLeft: number, scoreRight: number) { @@ -61,7 +61,7 @@ class EventScoreUpdate extends ServerEvent { } } -class EventMatchEnd extends ServerEvent { +export class EventMatchEnd extends ServerEvent { winner: en.PlayerSide; forfeit: boolean; constructor(winner: en.PlayerSide, forfeit = false) { @@ -73,14 +73,14 @@ class EventMatchEnd extends ServerEvent { /* From Client */ -class ClientEvent { +export class ClientEvent { type: en.EventTypes; // readonly ? constructor(type: en.EventTypes = 0) { this.type = type; } } -class ClientAnnounce extends ClientEvent { +export class ClientAnnounce extends ClientEvent { role: en.ClientRole; clientId: string; matchOptions: en.MatchOptions; @@ -92,7 +92,7 @@ class ClientAnnounce extends ClientEvent { } } -class EventInput extends ClientEvent { +export class EventInput extends ClientEvent { input: en.InputEnum; id: number; constructor(input: en.InputEnum = en.InputEnum.noInput, id: number = 0) { @@ -101,9 +101,3 @@ class EventInput extends ClientEvent { this.id = id; } } - -export { - ServerEvent, EventAssignId, EventMatchmakingComplete, - EventGameUpdate, EventScoreUpdate, EventMatchEnd, - ClientEvent, ClientAnnounce, EventInput -} diff --git a/src/shared_js/class/GameComponents.ts b/src/shared_js/class/GameComponents.ts index 10e60932..ec36f15f 100644 --- a/src/shared_js/class/GameComponents.ts +++ b/src/shared_js/class/GameComponents.ts @@ -5,7 +5,7 @@ import { VectorInteger } from "./Vector.js"; import { Rectangle, MovingRectangle, Racket, Ball } from "./Rectangle.js"; import { random } from "../utils.js"; -class GameComponents { +export class GameComponents { wallTop: Rectangle | MovingRectangle; wallBottom: Rectangle | MovingRectangle; playerLeft: Racket; @@ -61,5 +61,3 @@ class GameComponents { } } } - -export {GameComponents} diff --git a/src/shared_js/class/Rectangle.ts b/src/shared_js/class/Rectangle.ts index fff71dc9..bbbb30e5 100644 --- a/src/shared_js/class/Rectangle.ts +++ b/src/shared_js/class/Rectangle.ts @@ -3,7 +3,7 @@ import { Vector, VectorInteger } from "./Vector.js"; import { Component, Moving } from "./interface.js"; import * as c from "../constants.js" -class Rectangle implements Component { +export class Rectangle implements Component { pos: VectorInteger; width: number; height: number; @@ -33,7 +33,7 @@ class Rectangle implements Component { } } -class MovingRectangle extends Rectangle implements Moving { +export class MovingRectangle extends Rectangle implements Moving { dir: Vector = new Vector(0,0); speed: number; readonly baseSpeed: number; @@ -61,7 +61,7 @@ class MovingRectangle extends Rectangle implements Moving { } } -class Racket extends MovingRectangle { +export class Racket extends MovingRectangle { constructor(pos: VectorInteger, width: number, height: number, baseSpeed: number) { super(pos, width, height, baseSpeed); } @@ -72,13 +72,22 @@ class Racket extends MovingRectangle { } } -class Ball extends MovingRectangle { +export class Ball extends MovingRectangle { readonly speedIncrease: number; ballInPlay: boolean = false; constructor(pos: VectorInteger, size: number, baseSpeed: number, speedIncrease: number) { super(pos, size, size, baseSpeed); this.speedIncrease = speedIncrease; } + moveAndBounce(delta: number, colliderArr: Rectangle[]) { + this.move(delta); + let i = colliderArr.findIndex(this.collision, this); + if (i != -1) + { + this.bounce(colliderArr[i]); + this.move(delta); + } + } bounce(collider?: Rectangle) { this._bounceAlgo(collider); } @@ -92,15 +101,6 @@ class Ball extends MovingRectangle { this._bounceWall(); } } - moveAndBounce(delta: number, colliderArr: Rectangle[]) { - this.move(delta); - let i = colliderArr.findIndex(this.collision, this); - if (i != -1) - { - this.bounce(colliderArr[i]); - this.move(delta); - } - } protected _bounceWall() { // Should be enough for Wall this.dir.y = this.dir.y * -1; } @@ -140,5 +140,3 @@ class Ball extends MovingRectangle { // console.log(`x: ${this.dir.x}, y: ${this.dir.y}`); } } - -export {Rectangle, MovingRectangle, Racket, Ball} diff --git a/src/shared_js/class/Vector.ts b/src/shared_js/class/Vector.ts index 025bca36..fbe121e5 100644 --- a/src/shared_js/class/Vector.ts +++ b/src/shared_js/class/Vector.ts @@ -1,5 +1,5 @@ -class Vector { +export class Vector { x: number; y: number; constructor(x: number = 0, y: number = 0) { @@ -16,13 +16,13 @@ class Vector { } } -class VectorInteger extends Vector { +export class VectorInteger extends Vector { // PLACEHOLDER // VectorInteger with set/get dont work (No draw on the screen). Why ? } /* -class VectorInteger { +export class VectorInteger { // private _x: number = 0; // private _y: number = 0; // constructor(x: number = 0, y: number = 0) { @@ -45,5 +45,3 @@ class VectorInteger { // } } */ - -export {Vector, VectorInteger} diff --git a/src/shared_js/class/interface.ts b/src/shared_js/class/interface.ts index 39753de1..544d54a8 100644 --- a/src/shared_js/class/interface.ts +++ b/src/shared_js/class/interface.ts @@ -1,21 +1,19 @@ import { Vector, VectorInteger } from "./Vector.js"; -interface Component { +export interface Component { pos: VectorInteger; } -interface GraphicComponent extends Component { +export interface GraphicComponent extends Component { ctx: CanvasRenderingContext2D; color: string; update: () => void; clear: (pos?: VectorInteger) => void; } -interface Moving { +export interface Moving { dir: Vector; speed: number; // pixel per second move(delta: number): void; } - -export {Component, GraphicComponent, Moving} diff --git a/src/shared_js/enums.ts b/src/shared_js/enums.ts index 33368ff8..108f3a66 100644 --- a/src/shared_js/enums.ts +++ b/src/shared_js/enums.ts @@ -1,5 +1,5 @@ -enum EventTypes { +export enum EventTypes { // Class Implemented gameUpdate = 1, scoreUpdate, @@ -22,27 +22,25 @@ enum EventTypes { } -enum InputEnum { +export enum InputEnum { noInput = 0, up = 1, down, } -enum PlayerSide { +export enum PlayerSide { left = 1, right } -enum ClientRole { +export enum ClientRole { player = 1, spectator } -enum MatchOptions { +export enum MatchOptions { // binary flags, can be mixed noOption = 0b0, multiBalls = 1 << 0, movingWalls = 1 << 1 } - -export {EventTypes, InputEnum, PlayerSide, ClientRole, MatchOptions} diff --git a/src/shared_js/utils.ts b/src/shared_js/utils.ts index e8f7bca3..6cba06d2 100644 --- a/src/shared_js/utils.ts +++ b/src/shared_js/utils.ts @@ -1,15 +1,15 @@ import { MovingRectangle } from "./class/Rectangle.js"; -function random(min: number = 0, max: number = 1) { +export function random(min: number = 0, max: number = 1) { return Math.random() * (max - min) + min; } -function sleep (ms: number) { +export function sleep (ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } -function clamp(n: number, min: number, max: number) : number +export function clamp(n: number, min: number, max: number) : number { if (n < min) n = min; @@ -19,9 +19,7 @@ function clamp(n: number, min: number, max: number) : number } // Typescript hack, unused -function assertMovingRectangle(value: unknown): asserts value is MovingRectangle { +export function assertMovingRectangle(value: unknown): asserts value is MovingRectangle { // if (value !== MovingRectangle) throw new Error("Not a MovingRectangle"); return; } - -export {random, sleep, clamp, assertMovingRectangle} diff --git a/src/shared_js/wallsMovement.ts b/src/shared_js/wallsMovement.ts index dbf3f558..0f6dbe58 100644 --- a/src/shared_js/wallsMovement.ts +++ b/src/shared_js/wallsMovement.ts @@ -3,7 +3,7 @@ import * as c from "./constants.js"; import { MovingRectangle } from "../shared_js/class/Rectangle.js"; import { GameComponents } from "./class/GameComponents.js"; -function wallsMovements(delta: number, gc: GameComponents) +export function wallsMovements(delta: number, gc: GameComponents) { const wallTop = gc.wallTop; const wallBottom = gc.wallBottom; @@ -16,5 +16,3 @@ function wallsMovements(delta: number, gc: GameComponents) wallTop.moveAndCollide(delta, [gc.playerLeft, gc.playerRight]); wallBottom.moveAndCollide(delta, [gc.playerLeft, gc.playerRight]); } - -export {wallsMovements} From abf5c45aa7fb969fe89010389c232f155b3e980a Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Thu, 8 Dec 2022 14:43:07 +0100 Subject: [PATCH 48/48] spectator mode WIP, working so far --- memo.txt | 4 +- src/client/gameLoop.ts | 44 +++++++++--- src/client/global.ts | 30 +++++++- src/client/pong.ts | 15 ++-- src/client/pongSpectator.html | 19 +++++ src/client/pongSpectator.ts | 46 ++++++++++++ src/client/ws.ts | 124 ++++++++++++++++++++++++++++++-- src/server/class/Client.ts | 4 +- src/server/class/GameSession.ts | 78 +++++++++++++------- src/server/constants.ts | 3 +- src/server/wsServer.ts | 40 +++++++---- src/shared_js/class/Event.ts | 20 +++++- src/shared_js/constants.ts | 4 ++ 13 files changed, 364 insertions(+), 67 deletions(-) create mode 100644 src/client/pongSpectator.html create mode 100644 src/client/pongSpectator.ts diff --git a/memo.txt b/memo.txt index 9af85cef..73d12845 100644 --- a/memo.txt +++ b/memo.txt @@ -1,5 +1,5 @@ TODO: - - mode spectateur + - mode spectateur (WIP, semble fonctionner) - certaines utilisations de Math.floor() superflu ? Vérifier les appels. (éventuellement Math.round() ?) - un autre mode de jeu alternatif ? @@ -29,6 +29,8 @@ Done: ----------- BUG: + - Uncaught (in promise) DOMException: The element has no supported sources. + Bug de son. Peut etre du au CORS. Il faut tester de referencer le son avec u chemin relatif. - Si la balle va très vite, elle peut ignorer la collision avec une raquette ou mur. la collision est testée seulement après le mouvement. Pour éviter ce bug il faudrait diviser le mouvement pour faire plusieurs tests de collision successifs. diff --git a/src/client/gameLoop.ts b/src/client/gameLoop.ts index 60e25753..784841c3 100644 --- a/src/client/gameLoop.ts +++ b/src/client/gameLoop.ts @@ -1,8 +1,10 @@ import * as c from "./constants.js"; import * as en from "../shared_js/enums.js" -import { gc, matchOptions, clientInfo } from "./global.js"; +import { gc, matchOptions, clientInfo, clientInfoSpectator} from "./global.js"; import { wallsMovements } from "../shared_js/wallsMovement.js"; +import { RacketClient } from "./class/RectangleClient.js"; +import { VectorInteger } from "../shared_js/class/Vector.js"; let actual_time: number = Date.now(); let last_time: number; @@ -20,7 +22,7 @@ export function gameLoop() // interpolation // console.log(`dir.y: ${clientInfo.opponent.dir.y}, pos.y: ${clientInfo.opponent.pos.y}, opponentNextPos.y: ${clientInfo.opponentNextPos.y}`); if (clientInfo.opponent.dir.y != 0 ) { - opponentInterpolation(delta_time); + racketInterpolation(delta_time, clientInfo.opponent, clientInfo.opponentNextPos); } // client prediction @@ -33,15 +35,37 @@ export function gameLoop() } } -function opponentInterpolation(delta: number) +export function gameLoopSpectator() { - // interpolation - clientInfo.opponent.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + delta_time = c.fixedDeltaTime; - if ((clientInfo.opponent.dir.y > 0 && clientInfo.opponent.pos.y > clientInfo.opponentNextPos.y) - || (clientInfo.opponent.dir.y < 0 && clientInfo.opponent.pos.y < clientInfo.opponentNextPos.y)) - { - clientInfo.opponent.dir.y = 0; - clientInfo.opponent.pos.y = clientInfo.opponentNextPos.y; + // interpolation + if (gc.playerLeft.dir.y != 0 ) { + racketInterpolation(delta_time, gc.playerLeft, clientInfoSpectator.playerLeftNextPos); + } + if (gc.playerRight.dir.y != 0 ) { + racketInterpolation(delta_time, gc.playerRight, clientInfoSpectator.playerRightNextPos); + } + + // client prediction + gc.ballsArr.forEach((ball) => { + ball.moveAndBounce(delta_time, [gc.wallTop, gc.wallBottom, gc.playerLeft, gc.playerRight]); + }); + + if (matchOptions & en.MatchOptions.movingWalls) { + wallsMovements(delta_time, gc); + } +} + +function racketInterpolation(delta: number, racket: RacketClient, nextPos: VectorInteger) +{ + // interpolation + racket.moveAndCollide(delta, [gc.wallTop, gc.wallBottom]); + + if ((racket.dir.y > 0 && racket.pos.y > nextPos.y) + || (racket.dir.y < 0 && racket.pos.y < nextPos.y)) + { + racket.dir.y = 0; + racket.pos.y = nextPos.y; } } diff --git a/src/client/global.ts b/src/client/global.ts index 7d0a7126..c789fca6 100644 --- a/src/client/global.ts +++ b/src/client/global.ts @@ -1,3 +1,29 @@ -export {pong, gc, matchOptions} from "./pong.js" -export {socket, clientInfo} from "./ws.js" +import * as en from "../shared_js/enums.js"; +import { GameArea } from "./class/GameArea.js"; +import { GameComponentsClient } from "./class/GameComponentsClient.js"; + +// export {pong, gc, matchOptions} from "./pong.js" +export {socket, clientInfo, clientInfoSpectator} from "./ws.js" + +export let pong: GameArea; +export let gc: GameComponentsClient; +export let matchOptions: en.MatchOptions = en.MatchOptions.noOption; + +export function initPong(value: GameArea) { + pong = value; +} + +export function initGc(value: GameComponentsClient) { + gc = value; +} + +export function initMatchOptions(value: en.MatchOptions) { + matchOptions = value; +} + +export let startFunction: () => void; + +export function initStartFunction(value: () => void) { + startFunction = value; +} diff --git a/src/client/pong.ts b/src/client/pong.ts index a66dc9d5..07363807 100644 --- a/src/client/pong.ts +++ b/src/client/pong.ts @@ -18,9 +18,9 @@ import { initAudio } from "./audio.js"; /* TODO: A way to delay the init of variables, but still use "const" not "let" ? */ -export let pong: GameArea; -export let gc: GameComponentsClient; -export let matchOptions: en.MatchOptions = en.MatchOptions.noOption; +import { pong, gc } from "./global.js" +import { initPong, initGc, initMatchOptions, initStartFunction } from "./global.js" + function init() { @@ -34,22 +34,25 @@ function init() } initAudio(soundMutedFlag); + let matchOptions: en.MatchOptions = en.MatchOptions.noOption; if ( (document.getElementById("multi_balls")).checked ) { matchOptions |= en.MatchOptions.multiBalls; } if ( (document.getElementById("moving_walls")).checked ) { matchOptions |= en.MatchOptions.movingWalls; } + initMatchOptions(matchOptions); document.getElementById("div_game_options").remove(); document.getElementById("div_game_instructions").remove(); - pong = new GameArea(); - gc = new GameComponentsClient(matchOptions, pong.ctx); + initPong(new GameArea()); + initGc(new GameComponentsClient(matchOptions, pong.ctx)); + initStartFunction(start); initWebSocket(matchOptions); } -export function start() +function start() { gc.text1.pos.assign(c.w*0.5, c.h*0.75); countdown(c.matchStartDelay/1000, (count: number) => { diff --git a/src/client/pongSpectator.html b/src/client/pongSpectator.html new file mode 100644 index 00000000..f0357cb6 --- /dev/null +++ b/src/client/pongSpectator.html @@ -0,0 +1,19 @@ + + + + + + + + +
    + +
    +
    +

    Spectator View

    +
    + + + + + diff --git a/src/client/pongSpectator.ts b/src/client/pongSpectator.ts new file mode 100644 index 00000000..4efb9a19 --- /dev/null +++ b/src/client/pongSpectator.ts @@ -0,0 +1,46 @@ + +initSpectator(); +function initSpectator() { + // Wip + init(); +} + +import * as c from "./constants.js" +import * as en from "../shared_js/enums.js" +import { GameArea } from "./class/GameArea.js"; +import { GameComponentsClient } from "./class/GameComponentsClient.js"; +import { gameLoopSpectator } from "./gameLoop.js" +import { drawLoop } from "./draw.js"; +import { initWebSocketSpectator } from "./ws.js"; +import { initAudio } from "./audio.js"; + + +/* TODO: A way to delay the init of variables, but still use "const" not "let" ? */ +import { pong, gc } from "./global.js" +import { initPong, initGc, initMatchOptions, initStartFunction } from "./global.js" + +function init() +{ + initAudio(false); + + // WIP matchOptions + let matchOptions: en.MatchOptions = en.MatchOptions.noOption; + initMatchOptions(matchOptions); + + + initPong(new GameArea()); + initGc(new GameComponentsClient(matchOptions, pong.ctx)); + initStartFunction(start); + initWebSocketSpectator(c.gameSessionIdPLACEHOLDER); +} + +function start() +{ + resume(); +} + +function resume() +{ + pong.gameLoopInterval = window.setInterval(gameLoopSpectator, c.gameLoopIntervalMS); + pong.drawLoopInterval = window.setInterval(drawLoop, c.drawLoopIntervalMS); +} diff --git a/src/client/ws.ts b/src/client/ws.ts index ca3a1227..aa901cc0 100644 --- a/src/client/ws.ts +++ b/src/client/ws.ts @@ -1,10 +1,9 @@ import * as c from "./constants.js" -import { gc, matchOptions } from "./global.js" +import { gc, matchOptions, startFunction } from "./global.js" import * as ev from "../shared_js/class/Event.js" import * as en from "../shared_js/enums.js" import * as msg from "./message.js"; -import { start } from "./pong.js"; import { RacketClient } from "./class/RectangleClient.js"; import { repeatInput } from "./handleInput.js"; import { soundRoblox } from "./audio.js" @@ -19,16 +18,24 @@ class ClientInfo { opponentNextPos: VectorInteger; } +class ClientInfoSpectator { + // side: en.PlayerSide; + /* WIP: playerLeftNextPos and playerRightNextPos could be in clientInfo for simplicity */ + playerLeftNextPos: VectorInteger; + playerRightNextPos: VectorInteger; +} + const wsPort = 8042; const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong"; export let socket: WebSocket; /* TODO: A way to still use "const" not "let" ? */ export const clientInfo = new ClientInfo(); +export const clientInfoSpectator = new ClientInfoSpectator(); // WIP, could refactor this export function initWebSocket(options: en.MatchOptions) { socket = new WebSocket(wsUrl, "json"); socket.addEventListener("open", (event) => { - socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, options, clientInfo.id) )); + socket.send(JSON.stringify( new ev.ClientAnnouncePlayer(options, clientInfo.id) )); }); // socket.addEventListener("message", logListener); // for testing purpose socket.addEventListener("message", preMatchListener); @@ -68,7 +75,7 @@ function preMatchListener(this: WebSocket, event: MessageEvent) case en.EventTypes.matchStart: socket.removeEventListener("message", preMatchListener); socket.addEventListener("message", inGameListener); - start(); + startFunction(); break; case en.EventTypes.matchAbort: socket.removeEventListener("message", preMatchListener); @@ -77,7 +84,7 @@ function preMatchListener(this: WebSocket, event: MessageEvent) } } -function inGameListener(event: MessageEvent) +function inGameListener(this: WebSocket, event: MessageEvent) { const data: ev.ServerEvent = JSON.parse(event.data); switch (data.type) { @@ -186,3 +193,110 @@ function matchEnd(data: ev.EventMatchEnd) } // export let matchEnded = false; // unused + + + +/* Spectator */ + +export function initWebSocketSpectator(gameSessionId: string) +{ + socket = new WebSocket(wsUrl, "json"); + socket.addEventListener("open", (event) => { + socket.send(JSON.stringify( new ev.ClientAnnounceSpectator(gameSessionId) )); + }); + // socket.addEventListener("message", logListener); // for testing purpose + socket.addEventListener("message", preMatchListenerSpectator); + + clientInfoSpectator.playerLeftNextPos = new VectorInteger(gc.playerLeft.pos.x, gc.playerLeft.pos.y); + clientInfoSpectator.playerRightNextPos = new VectorInteger(gc.playerRight.pos.x, gc.playerRight.pos.y); + +} + +export function preMatchListenerSpectator(this: WebSocket, event: MessageEvent) +{ + const data: ev.ServerEvent = JSON.parse(event.data); + if (data.type === en.EventTypes.matchStart) + { + socket.removeEventListener("message", preMatchListenerSpectator); + socket.addEventListener("message", inGameListenerSpectator); + startFunction(); + } +} + +function inGameListenerSpectator(this: WebSocket, event: MessageEvent) +{ + const data: ev.ServerEvent = JSON.parse(event.data); + switch (data.type) { + case en.EventTypes.gameUpdate: + gameUpdateSpectator(data as ev.EventGameUpdate); + break; + case en.EventTypes.scoreUpdate: + scoreUpdateSpectator(data as ev.EventScoreUpdate); + break; + case en.EventTypes.matchEnd: + matchEndSpectator(data as ev.EventMatchEnd); + break; + } +} + +function gameUpdateSpectator(data: ev.EventGameUpdate) +{ + console.log("gameUpdateSpectator"); + + if (matchOptions & en.MatchOptions.movingWalls) { + gc.wallTop.pos.y = data.wallTop.y; + gc.wallBottom.pos.y = data.wallBottom.y; + } + + data.ballsArr.forEach((ball, i) => { + gc.ballsArr[i].pos.assign(ball.x, ball.y); + gc.ballsArr[i].dir.assign(ball.dirX, ball.dirY); + gc.ballsArr[i].speed = ball.speed; + }); + + // interpolation + for (const racket of [gc.playerLeft, gc.playerRight]) + { + let nextPos: VectorInteger; + if (racket === gc.playerLeft) { + nextPos = clientInfoSpectator.playerLeftNextPos; + } + else { + nextPos = clientInfoSpectator.playerRightNextPos; + } + + racket.pos.assign(nextPos.x, nextPos.y); + if (racket === gc.playerLeft) { + nextPos.assign(racket.pos.x, data.playerLeft.y); + } + else { + nextPos.assign(racket.pos.x, data.playerRight.y); + } + + racket.dir = new Vector( + nextPos.x - racket.pos.x, + nextPos.y - racket.pos.y + ); + + if (Math.abs(racket.dir.x) + Math.abs(racket.dir.y) !== 0) { + racket.dir = racket.dir.normalized(); + } + } +} + +function scoreUpdateSpectator(data: ev.EventScoreUpdate) +{ + console.log("scoreUpdateSpectator"); + gc.scoreLeft.value = data.scoreLeft; + gc.scoreRight.value = data.scoreRight; +} + +function matchEndSpectator(data: ev.EventMatchEnd) +{ + console.log("matchEndSpectator"); + // WIP + /* msg.win(); + if (data.forfeit) { + msg.forfeit(clientInfo.side); + } */ +} diff --git a/src/server/class/Client.ts b/src/server/class/Client.ts index df8f996b..c6e4defa 100644 --- a/src/server/class/Client.ts +++ b/src/server/class/Client.ts @@ -10,7 +10,6 @@ export class Client { id: string; // same as "socket.id" isAlive: boolean = true; gameSession: GameSession = null; - matchOptions: en.MatchOptions = 0; constructor(socket: WebSocket, id: string) { this.socket = socket; this.id = id; @@ -18,6 +17,7 @@ export class Client { } export class ClientPlayer extends Client { + matchOptions: en.MatchOptions = 0; inputBuffer: ev.EventInput = new ev.EventInput(); lastInputId: number = 0; racket: Racket; @@ -27,7 +27,7 @@ export class ClientPlayer extends Client { } } -export class ClientSpectator extends Client { // Wip, unused +export class ClientSpectator extends Client { constructor(socket: WebSocket, id: string) { super(socket, id); } diff --git a/src/server/class/GameSession.ts b/src/server/class/GameSession.ts index a37204a6..55879135 100644 --- a/src/server/class/GameSession.ts +++ b/src/server/class/GameSession.ts @@ -2,7 +2,7 @@ import * as en from "../../shared_js/enums.js" import * as ev from "../../shared_js/class/Event.js" import * as c from "../constants.js" -import { ClientPlayer } from "./Client"; +import { ClientPlayer, ClientSpectator } from "./Client"; import { GameComponentsServer } from "./GameComponentsServer.js"; import { clientInputListener } from "../wsServer.js"; import { random } from "../utils.js"; @@ -18,8 +18,10 @@ export class GameSession { id: string; // url ? playersMap: Map = new Map(); unreadyPlayersMap: Map = new Map(); + spectatorsMap: Map = new Map(); gameLoopInterval: NodeJS.Timer | number = 0; - clientsUpdateInterval: NodeJS.Timer | number = 0; + playersUpdateInterval: NodeJS.Timer | number = 0; + spectatorsUpdateInterval: NodeJS.Timer | number = 0; components: GameComponentsServer; matchOptions: en.MatchOptions; matchEnded: boolean = false; @@ -50,7 +52,8 @@ export class GameSession { s.actual_time = Date.now(); s.gameLoopInterval = setInterval(s._gameLoop, c.serverGameLoopIntervalMS, s); - s.clientsUpdateInterval = setInterval(s._clientsUpdate, c.clientsUpdateIntervalMS, s); + s.playersUpdateInterval = setInterval(s._playersUpdate, c.playersUpdateIntervalMS, s); + s.spectatorsUpdateInterval = setInterval(s._spectatorsUpdate, c.spectatorsUpdateIntervalMS, s); } pause(s: GameSession) { s.playersMap.forEach( (client) => { @@ -58,7 +61,8 @@ export class GameSession { }); clearInterval(s.gameLoopInterval); - clearInterval(s.clientsUpdateInterval); + clearInterval(s.playersUpdateInterval); + clearInterval(s.spectatorsUpdateInterval); } instantInputDebug(client: ClientPlayer) { this._handleInput(c.fixedDeltaTime, client); @@ -114,24 +118,46 @@ export class GameSession { if (this.matchEnded) { return; } - - if (ball.pos.x > c.w) { ++gc.scoreLeft; } - else if (ball.pos.x < 0 - ball.width) { ++gc.scoreRight; } - - this.playersMap.forEach( (client) => { - client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); - }); + this._scoreUpdate(ball); setTimeout(this._newRound, c.newRoundDelay, this, ball); } } } - private _clientsUpdate(s: GameSession) { - const gc = s.components; - const update = new ev.EventGameUpdate(); - update.playerLeft.y = gc.playerLeft.pos.y; - update.playerRight.y = gc.playerRight.pos.y; + private _scoreUpdate(ball: Ball) { + const gc = this.components; + if (ball.pos.x > c.w) { + ++gc.scoreLeft; + } + else if (ball.pos.x < 0 - ball.width) { + ++gc.scoreRight; + } + this.playersMap.forEach( (client) => { + client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); + }); + this.spectatorsMap.forEach( (client) => { + client.socket.send(JSON.stringify(new ev.EventScoreUpdate(gc.scoreLeft, gc.scoreRight))); + }); + } + private _playersUpdate(s: GameSession) { + const gameState: ev.EventGameUpdate = s._gameStateSnapshot(); + s.playersMap.forEach( (client) => { + gameState.lastInputId = client.lastInputId; + client.socket.send(JSON.stringify(gameState)); + }); + } + private _spectatorsUpdate(s: GameSession) { + const gameState = s._gameStateSnapshot(); + s.spectatorsMap.forEach( (client) => { + client.socket.send(JSON.stringify(gameState)); + }); + } + private _gameStateSnapshot() : ev.EventGameUpdate { + const gc = this.components; + const snapshot = new ev.EventGameUpdate(); + snapshot.playerLeft.y = gc.playerLeft.pos.y; + snapshot.playerRight.y = gc.playerRight.pos.y; gc.ballsArr.forEach((ball) => { - update.ballsArr.push({ + snapshot.ballsArr.push({ x: ball.pos.x, y: ball.pos.y, dirX: ball.dir.x, @@ -139,15 +165,11 @@ export class GameSession { speed: ball.speed }); }); - if (s.matchOptions & en.MatchOptions.movingWalls) { - update.wallTop.y = gc.wallTop.pos.y; - update.wallBottom.y = gc.wallBottom.pos.y; + if (this.matchOptions & en.MatchOptions.movingWalls) { + snapshot.wallTop.y = gc.wallTop.pos.y; + snapshot.wallBottom.y = gc.wallBottom.pos.y; } - - s.playersMap.forEach( (client) => { - update.lastInputId = client.lastInputId; - client.socket.send(JSON.stringify(update)); - }); + return (snapshot); } private _newRound(s: GameSession, ball: Ball) { if (s._checkDisconnexions()) { @@ -187,6 +209,9 @@ export class GameSession { console.log("Player Right WIN (by forfeit)"); } luckyWinner.socket.send(JSON.stringify(eventEnd)); + this.spectatorsMap.forEach( (client) => { + client.socket.send(JSON.stringify(eventEnd)); + }); } return true; } @@ -209,5 +234,8 @@ export class GameSession { s.playersMap.forEach( (client) => { client.socket.send(JSON.stringify(eventEnd)); }); + s.spectatorsMap.forEach( (client) => { + client.socket.send(JSON.stringify(eventEnd)); + }); } } diff --git a/src/server/constants.ts b/src/server/constants.ts index bd5f8e9e..b7efffd3 100644 --- a/src/server/constants.ts +++ b/src/server/constants.ts @@ -6,4 +6,5 @@ export const serverGameLoopIntervalMS = 15; // millisecond export const fixedDeltaTime = serverGameLoopIntervalMS/1000; // second // 33.333ms == 1000/30 -export const clientsUpdateIntervalMS = 1000/30; // millisecond +export const playersUpdateIntervalMS = 1000/30; // millisecond +export const spectatorsUpdateIntervalMS = 1000/30; // millisecond diff --git a/src/server/wsServer.ts b/src/server/wsServer.ts index 73604b67..7a7e9e77 100644 --- a/src/server/wsServer.ts +++ b/src/server/wsServer.ts @@ -10,9 +10,10 @@ import { v4 as uuidv4 } from 'uuid'; import * as en from "../shared_js/enums.js" import * as ev from "../shared_js/class/Event.js" -import { Client, ClientPlayer } from "./class/Client.js" +import { Client, ClientPlayer, ClientSpectator } from "./class/Client.js" import { GameSession } from "./class/GameSession.js" import { shortId } from "./utils.js"; +import { gameSessionIdPLACEHOLDER } from "./constants.js"; // pas indispensable d'avoir un autre port si le WebSocket est relié à un serveur http préexistant ? const wsPort = 8042; @@ -61,16 +62,29 @@ function clientAnnounceListener(this: WebSocket, data: string) if (msg.type === en.EventTypes.clientAnnounce) { // TODO: reconnection with msg.clientId ? - // TODO: spectator/player distinction with msg.role ? - // msg.role is probably not a good idea. - // something like a different route could be better - // "/pong" to play, "/ID_OF_A_GAMESESSION" to spectate - - const player = clientsMap.get(this.id) as ClientPlayer; - player.matchOptions = msg.matchOptions; - this.send(JSON.stringify( new ev.EventAssignId(this.id) )); - this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )); - matchmaking(player); + // "/pong" to play, "/pong?ID_OF_A_GAMESESSION" to spectate (or something like that) + if (msg.role === en.ClientRole.player) + { + const announce: ev.ClientAnnouncePlayer = msg; + const player = clientsMap.get(this.id) as ClientPlayer; + player.matchOptions = announce.matchOptions; + this.send(JSON.stringify( new ev.EventAssignId(this.id) )); + this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchmakingInProgress) )); + matchmaking(player); + } + else if (msg.role === en.ClientRole.spectator) + { + const announce: ev.ClientAnnounceSpectator = msg; + const gameSession = gameSessionsMap.get(announce.gameSessionId); + if (!gameSession) { + // WIP: send "invalid game session" + return; + } + const spectator = clientsMap.get(this.id) as ClientSpectator; + spectator.gameSession = gameSession; + gameSession.spectatorsMap.set(spectator.id, spectator); + this.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchStart) )); + } } else { console.log("Invalid ClientAnnounce"); @@ -107,6 +121,7 @@ function matchmaking(player: ClientPlayer) return; } + // const id = gameSessionIdPLACEHOLDER; // Force ID, TESTING SPECTATOR const id = uuidv4(); const gameSession = new GameSession(id, matchOptions); gameSessionsMap.set(id, gameSession); @@ -226,7 +241,8 @@ function clientTerminate(client: Client) client.gameSession.playersMap.delete(client.id); if (client.gameSession.playersMap.size === 0) { - clearInterval(client.gameSession.clientsUpdateInterval); + clearInterval(client.gameSession.playersUpdateInterval); + clearInterval(client.gameSession.spectatorsUpdateInterval); clearInterval(client.gameSession.gameLoopInterval); gameSessionsMap.delete(client.gameSession.id); } diff --git a/src/shared_js/class/Event.ts b/src/shared_js/class/Event.ts index 29ed9933..992827e4 100644 --- a/src/shared_js/class/Event.ts +++ b/src/shared_js/class/Event.ts @@ -82,16 +82,30 @@ export class ClientEvent { export class ClientAnnounce extends ClientEvent { role: en.ClientRole; - clientId: string; - matchOptions: en.MatchOptions; - constructor(role: en.ClientRole, matchOptions: en.MatchOptions, clientId: string = "") { + constructor(role: en.ClientRole) { super(en.EventTypes.clientAnnounce); this.role = role; + } +} + +export class ClientAnnouncePlayer extends ClientAnnounce { + clientId: string; + matchOptions: en.MatchOptions; + constructor(matchOptions: en.MatchOptions, clientId: string = "") { + super(en.ClientRole.player); this.clientId = clientId; this.matchOptions = matchOptions; } } +export class ClientAnnounceSpectator extends ClientAnnounce { + gameSessionId: string; + constructor(gameSessionId: string) { + super(en.ClientRole.spectator); + this.gameSessionId = gameSessionId; + } +} + export class EventInput extends ClientEvent { input: en.InputEnum; id: number; diff --git a/src/shared_js/constants.ts b/src/shared_js/constants.ts index ae3320e5..be86ba7b 100644 --- a/src/shared_js/constants.ts +++ b/src/shared_js/constants.ts @@ -24,3 +24,7 @@ export const newRoundDelay = 1500; // millisecond export const multiBallsCount = 3; export const movingWallPosMax = Math.floor(w*0.12); export const movingWallSpeed = Math.floor(w*0.08); + + +export const gameSessionIdPLACEHOLDER = "42"; // TESTING SPECTATOR PLACEHOLDER +// for testing, force gameSession.id in wsServer.ts->matchmaking() \ No newline at end of file

    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%0A++`5SS;7j-ta6ME+v6F9CAvD$R>_gU>*ZkS! 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%0Aem@T~%~0ODS)d>j!fJ+Kf?XW+ui4LwCo04VDRu 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