From a39eedbcab2bbb8a10788792eeac4c075da867c6 Mon Sep 17 00:00:00 2001 From: ulrich Date: Sat, 11 May 2019 17:48:18 +0200 Subject: [PATCH] =?UTF-8?q?le=20zafer=20l=C3=A9=20dos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/__pycache__/client.cpython-37.pyc | Bin 0 -> 1173 bytes client/apple-sprite.png | Bin 0 -> 48335 bytes client/c.py | 108 +++++++++++++++++++++++ client/client.py | 35 +------- 4 files changed, 112 insertions(+), 31 deletions(-) create mode 100644 client/__pycache__/client.cpython-37.pyc create mode 100644 client/apple-sprite.png create mode 100644 client/c.py diff --git a/client/__pycache__/client.cpython-37.pyc b/client/__pycache__/client.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d71ec5f1884f5edc6487edbabff038416ffd61a GIT binary patch literal 1173 zcmZuw&2AGh5VpPlNmEKGe?kHjxa^?~a6v){k(RXllr2iy%L*x4txegIWLLIZ)RLU& z1MmPG(jzaxqj2yQ2`R6@iJ4ufpu(2t$1@&(Gh?qd8Z`o=_T$^@uMQ#KQTa105FW!) zF%V8T9gw)S%amTKs1@c z+M}@837e2HnOfS`&Kq_@DQIv7jY8MBDo@`DZM^n+|5?=8Huc`t+KYZ~yW45MG+vsI zMk3WF$clc#rBKS)MJ{zn4OL%=tix45pSO0DkgBymkXib+^-AWuG8qmNo#mreA@e<< z`#LT9YLvVaEh&b%7R!~A4l*&)t%|J_hth+94NSrXLg)gWr{!LX8REbOoM!qIlrx#q zG5se~I(5gS%$ZI-PJc_j4o>KVfp6^uiZ^CZ4;CFcw>n$vwXiPn1_`|<5^oYn z#CS@Kcrq9m8wF!aksg@EZm0LEzq+%&-s$!?JJH7WQ{$wAT#3*!HcxaSv2Vr)Z;>4c zUKXz+bEN@;JpsQ((9}GTD*qbA=~KA`JO6YXYf*L_PiT0IAL)c>I%Sw~mC@3Nraml0 z^TEyLNW5R(O@^X539T}gvG-IyGR`1RxC*Jf08!3@^5E149J&TJg;gPlb3s09s?K1ZYLZ-7lavWsMN%k%thMGj0N&L8b5w zg?0&7UWBm5;rqiv$x9%IcI=|}GcFOH#47wR33(L^@NbAJ|21QjQJ=xX!u^oRE5M?# zQ8m51#4Qdnuv`GkUwvO_k!&zD^=d}S7Gtf h$g1TJhdJLLh(}mPg*X-fnN4Aq)Mviq2fkfv{sNVs^|Jr~ literal 0 HcmV?d00001 diff --git a/client/apple-sprite.png b/client/apple-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..5d19922dc574e33f7c173a5d6c7b04e1c14abec6 GIT binary patch literal 48335 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
MqpGvDbs6p^Y5pT$@A95 zZO9{(Jvz@nYSGB2*&ba@-T}9AQNUauI|{p+`Ia1mIShe7ca>Cz6G@lvTxjpJCa8+t zce|20f2p~-`RS%ZytjX6K&<-g(kv8idHU?hT}F^tB-^)*j`8i6SJ|uPlg`nuK6&`l zMcMgn#qHEjy<9A>GJwsO8iL8{an7LRCCuqpoWyBHhmN+jSxn*RryOcG!Wd?ovyF0zd+%`^xze z7$|v3cIk1|FGJww)R_wtnJ8D&T=>!OPQ9|BeLSJ3+-I66VT~M$(PmuD5m{OeZ)cy~ zDI^zhE4`Qu`XsV(@OQrM%hhi_T}=|J`(B1UzNhxu@VTtTMu#9MCi|2+If`T?3bZ7( zf@PN=rFyVXXzwR^@?DFSW+{v{Z?=&kN+H-?&UZGgnu0m@;JKXGm#YAX)Sm^^;4P6! z(^*UfarbhWZ*KndF^2LhMNoR~Zlw&P-a_VN?DO5k89UGvP@zTEkAs9Z@oeyjq?%ga z1izw?IXXiUx5^~Bnc!*ltbDn;&uTeTO}v2SXFL9plgOo4ybr_ zz&`~4Ws(yfdhY!1@znMkT`3VJuLb{py}tHkGl|*iPaZ5%UX2d$)=gfqO_T}OV-#u>D z6;K0Q#jD!{K?t$%S(>*J0_(p!{s8Y?_~*a2Usn0NUD|yVW6BT2`W%is?l&n{XiZ$d z7w=^Pb8XwN{J_J&^|j&i$ZnJ5(hoX%s$)h2Vc-CCW#!+AcDDrU@^cG@84iZQV<$yn zOuN9q^^(wm7<~t#`umH7s1&e9zz7O7G5&+4bIpMtbuCrVSMR)`HVvlBpQ-^V?gFF% zmm=|8IQM(GtpyH|rZg&!#}CQ=7RoJ>$`J7=nDL1RGdyea-&6tSR{A$7b`cfqGO2E5 zs(Zf#HYD`*DI^ot`VBYkDq)rTt#`k}Ba0gJ-bmGy9{mh5)6hkiRuws4SGR@F8yg?4 z&&B#crqZSoq9#QAs(uFoyxxGkICWhq-IxT-XZD4@*Tm&Ird-W)C=F4UwXQRQ(7_=LGZ9Cgf9M5RB^mG zsXt8&q}iG^_h``Gf$dih0;IW#!$4|oF2?~Eupc?LZlrI=Tu6<>{1c&`s5jB&e4;6B z+}f`^JBB;+648&>C`#@gE!@*K6^^(ODS2q}@6ZtAYZ}g|pM-i9m8{SrAXWWn;E`sX z`QCQ4q4G8f5q-M-B+MRNwltV#iI&#rYjFK8Qva80GPu{?UEkEpPvuw7(O4ORRmV<_ z^t8|n=+km&p*Cw@)g3sA$%H8M8HtA}s)>H~K+uq2(hP3i1nqCIHJ%J5m=A*kr;4ys zxM(8}(xqwi+g85n>79V}C<_^E379nZhr;!H=f8(v$Y@jlf!1?gFnZ+w_1k3hW5N7J zmSA!IC+`2YpZnFXo^g$5F39m((AKudjRmBOaAX<~xU!sf4^i^jQR`*zen|H(C zom7?}_qV4_y_{@~cOwc2^szXoYmD!&o{!%its#hk+*{vi%oyIo|7L(wY^oH*40O-v zj!K~#u7C!JQI8BwqXF zPq&+G4)4VpGtT%Dp+nAz+6*Gn$JkVtNnXYoSlggN`CLVkZvgUi%jxn0H6U14)5DBK zK*f{!9sv>m-?8i=uZtNVhp_3Y&v@8#-WK7_zZlCG3 z>S#KF)2eJq^mS37pm+{T2UZe1oTu+vm8_n=l<1m-lXbM6E^aN&=&1gn=esyssDj7t zZWp|BggJA^Wu?($VdrLy@};kkbn)9#1KT$?Vc3Xu{OtMEj}4gk|51`F`&z=@Cl%ry zdZ8NNg@)6-ZZmzN?;?J@`<3h6?PX>5wr|vA5RoKe&?jrSS*o0d<^egTm9_hSvx9Pe zRg9$cf)RN{Kt=;C)kyurvSf`vYUc53v0k=q2~@bPi7!{QyF>Opv+=LNuPxlvt$ScU z2;8C&;kh5(jNayyM51Bo$mN0bQlv%vqRxO?ff6?S9m!HcfSM9)Z$b9o_YztL)U)&F z5mxs|Zp&Gx>xGAMauqv5uuA;rgYLVGJ)6;)`w$SnF(fh)=y5jr!k`p}M>j~CS@{M^ zzOxGkEremobX+wSH%il;cm+$Chmp!wD!n{SgZ`DQcV;Xk&2BGQihsYKV<4sF`hNMK z4@AO-@C>rU@y0nXecc6GAswz78!EQ#uOS)|uxjsBS=Y5ujf^sjz%AB4@E3-rNzGEa z{_L$&$`Vmz4pyPUY9nWow~q(>?-l>MiilIyG@^3GbtNtRZ z;eSSIMkAvG_an~{SgkjUzlD2x5CaVJA zPP&h7YpjIiJQYDfX1|)gxT;#v{Lesuug%g@qp9-2xM#t+9GEmJ3|d1abDde&Q~tex!%~A^x&EFUe^Z$M_tA~Td~4d z54j|fO=IDw(#0LEJXhb|Yn{OTf$um_B)RBehQSPe)(TR6Zp8nP_fJJ1HaCUbG)nZS zt6T(2hsd=8FWltV%LjfDFF}qeiKM~3H3PLL%$`VBM}N(~{vA)WS6vBN3kXlA0DvL^N7xd2I zP_FjgugG8>+@e1CGEJ7#=jSU$-})Mo90qqVnB)^g$Ovw3POdr7GKJ$H1$+ zBdU~(*m2~`sf9Z;CDm9lm4!e;hPp)<)W!E2?Z?z5XG#3ad5S7j9GDLR4 zz-ip$M+g=>;kky}*-U%H`1w3;cF8)BQulLz#X>ObPB|EljO2P&wJIIS-96N6U zK4Liyp#T{9=Sp#J0UCJT7@=R}%Ur=q1xw{~WdX=B?Be&mwx(wSSNM2P#(22#`d68? z_CM8?*k8|3(i-NN{`a`@a9u3tD4qY#i&5#Vp_(qOXpYque~lf*A?*0tmp{dP04UJf zozj}LLuPG(PapukGEm-#sc5)i6|>u^$cXpN)3?vvENQ@_qUWh3^dj+#-Ooe|uiL6? zm7jEg>kgaE8f2W7_HQ}gr&nRIBBHmz^G1LwFuEAhpDLucdMCW8S(@2i;_{nI`av=$ z30ngy>XWEqb%76dyrT6L!mVgnzcCHU1~)5jGgpvr;Kb>-z)@fljFO*rB5pw~VD_NF zr27^JzvAP=)+cECU!oEPRs4(I7_a2@gxPjHKfU+PN^@NoNAdy8f)X@1a7O_+Bl{j* zbGC_R??L?Tn>GYtPH%7`e=!#nK2R#LS^pIC*7^?pqXRMdyGX9uc+_w_i`$w5RqND+ z1?a&7pN}Jo=3+m2UdJZY-aPde4iM|Wj69jUupmasg2NKmT-43cAWV#c_CHVS({cGY zas#t`!^M-WcN`tWa660#Y=Jac4yi);ep|$A!eXt9kI0%QQn}gIda)@^h-{SgkT#(4`e{VBP<1 z3&(WwCcbnYnZW7K!a6=V&oZ3jm@t8->2mx6)`S*iWj&|0lgWvM3T**aM{@w+ z(&gRjH~2+bGKY2iltfKRJkb2U`K?vVuk>WBeI)rCjJI~#azez@xfh~J^Q-uIfp*1) zocp1^gA0SWGFzt)9|rS&`N4+S>LB~%sM-t)HfP6x5q;Tj-~8I=Sc_H0+Rk`Wx*ta@8;|f^Eat7Ps{X_t<%=6 z!4J0)u(ZIx9YNFkMZi$;@4x!P3C0T?*8-C-9Pf1d?+OC(Io`ZRz_+1pglxtm_J4ft z5BVY?O)xxc6RVlK=EAZ3A8Ql_kYV+IX|u~Ia@k}8ynbe~bDgBu;}Qi)d7C6HC8uM! z!ZQ>o)J(G>$-)G1XSmG*NqAH`DrDW`t%p@!=13)1=Oa*?mK524B~Pzs;d@YVsmrI4 z`8rAB_m|#c9qONhgIdYmjAENj!5%j}lf=T^zrJGQfBG+a3h}?1PJNi=iGT2R7<)`S zt8GbZtl)F#etWkY{x_S5@ZB{(c2EgZbII)`MwXIkvdxb`4{wj=4oA^`jIFrbO#KKQ zNaVoBx;-!dFw_{Rfl1$m6C(!rVafe8kM-`WA@QGbrBJ1HDm|*}G(V}Fs~Y9d8W!PJ zRxWLORq6KTPrZ|rt7PE6GPFT%op)6I;H95hEG86#ISBS-^HD|t?P{!-V(pvZ@U7F- zv4kjH9m7iRLrcoDhu<=1D>o6`ZDifR_|$MZ1?MkZ!2l;lfN(dumf*YHzq8=G7wrNw zB#B)O7rThU_BFSkg{yEaKjZxn5pTo-_0v-8w?jT*qUq^MwN?!GVu}KcBQk5{)nCDN z4i55vhGo43mSP?4Q3zr;NyBENa~IfI@G(WqVvd|P573|zs_yX9{pOINKD;llXCcUP z7`G8_Gd}s6k@y&sP{!*d%x;pEEcBBSytdS2T1DOLu3PTp?>$2wPM=H|Nr_f%{p!Xd zCPs@&kMf}cRujNJy~2uk=<5;o}bNPt%(8pSv31dXIdZd!xrw&!}w*Va`WXIlr@NAzOg;)mOi|;}w9Y?qd~JF*) z4V|D?H#4_lGsW@zSFF1CS0~TL8UY_Pa2J5vcOe4o3O)XG>Lj0JQ^loA8SU^&hNO8q z)TFWHC9|uVcfcVMxTlat<(W}F2xR)c3N_k60usQrJOpe~o$oJ1<;DM9X$|7mh}Rlx zI=hY~6Vch#UB=wp#hko+6$)H3D{&Q4Xa8Y~6C}sru=DepY<;A>tikMP!Nkx`$Z+qi zjHuSqJz6X-t`4o*-(W6+Xi%<#GFVU_xLyroLPqzM03js~fu1S8^<4i5gRS^)XYsY$ z@5*tq5Z>RM4wyv`ph5}1?Z;gH0~n3nm5h>ULXW8pdKAlZaGX=5U@K-Rehp+JeU0~t=zr!qs**uXbhmQOlGd?9J579_H-;mal z2WnlE5yj1F3{g#V{t8n5J4W^Ncz+O`3mkH3pdC<9+@N8C?cno-IjIU&CoC7*Pc zHrsYAihrWF#q=~~*dAQIBNhH0w{sFv1r&^%WvlJ>XGMrYiOLT@r2N*37_z$IT4fdT z8l`mgcetVwtEz@1I;wp%bSH&bJJOl5yZ}BNB7{Gs79Aio(>E$VMSDj4ekiZLz6~vp z@pXz;daxi-Vy9|lB_%Pi=yg$ufp_BL5whO15%k0yANX{x)N$=fz)6e&`fWjVM_A+*t$Y$8*-;wvYs(f+m*K8a=w z==0J{me^VDdCRY$ziu(-*FAo(m_1D$mZqq{%Da@1YQ7NZ6Uho3_36M0aHMrAte>EU zutY&~$9%NpEE$KO1b3P-#WK{ABumYPamG?)Idn*<$eKt7fPa?BoetLtY(^HD%q*Zp zRghO#fT~wEzx{nD7uB+e_ho(HIx2Ubq_p_&`_nK$AX{RM5amf@CUn!{QHlUfc*FXnhMDa>QTyp$Low1bksY zkH9hr_>p$7Xdy<;4o~)^5Eg@eOn_F5gBYH0v`URKx1T_a%HEOP*a0v;EvRz7s9Ot zoI_y5q60B70KAd-W4O8m6hzzrTw19+!JwWmJ#w^%=63{{(H!QZpdoPtjT18~uK^TK zZSa%m%z_K|D&7y221;**gnPc>YedH8IDXh=03w~7@7|x!?#C%IaCR6asH4{-)qTI6 zt*jx?@9P(2n3-}Uy$2j}?y2-y33!KrpU35Wjw9b`5B7h%wdXp<5PCC|@#^yD?g}4v zckdv=prEJ|5@9lP<-Ocnk!o0%tY%P@x@J$jGFHFlF2Uwn z4{OhF|JCP~h(`}fCiJsykWATRN7D`kwwj8}DYxyZ4U`w|SeA9$%9>eb+&Cm&ejvn3 z+QDj!luck6^5XJ%JC2Q4BR+N}cg_n&&s@N*`Yl}Litca*3ckPxgwa&2sH(NiI~U&u z)B*oGbXk%9Gc~tjE#2t2rWu&P8#;0`U?_@F%FcefLn{>vTMxZr`RFyoZ4fP04?KOn zgW!L`yjUHUX=U+D=Imm^2n0}9*3&=oxxJ#ojlsr!E=#Lc(A8M;BuYjNnP;*8CCbx& z=#_1)t9w|U#^tcrJBYNkJo(jXpdG$*Bjh#BLdSEK6?s|U6Ro~xTvoOBK?p7TQz?Lc z)|3DtTjFK1pquBgieMX2XBwk`k;Ke16L0EiMpNVdnQW_5U`vyasCj-`u8gl5pFQ(u zO&!+0sbUk#9PI)YwZPgw>zg);i>HRmkFCt-)Of0mF!*`-P0h;qI%owMc2W6f@DlXp@fSH+M zR$8)f|J%^j@+{q<9+omZHYIqqTl+lFh>g*U*j7`(F_u6JYK2UHFM1CAOhLkk&5 zuYUjmF`5I`5;W;YU65b;$$YJ^o3&n$ro?-}*>|D9=YLaa#5Q!_VqSdaxx<^za1dZ0u z4zm(zuw&~hn$JRm;?>07*ryr-KXshf$l^3?;VWp&K;+yMKq9GTf-p)0D%)!39n~Gm zZGF>V1QaJn-4bQI5iuTsnQNJ`FIDP+RH# z0v_VRrlk!y3#ueA^vCq?Y0(3Xol=3^yUjc!f378ubYqFfKFy%Q!^e>zY@jUaw&P|% z8y5WQi@W$_SR2DE)06H%eovB#1)Q5*6JqE?R^mnb#i%?>IOd5QClIl@N;C7N83Am%o$o zw+_sxbsr*2tzvnSTKF4+k$&e7Nmu>nsK}lsVFo0ODqo*o08VODaN}P%1+zhvk6H2K zG_(v9ftl*GiMJR2(P0M!d9)hA&WLSSCxQL#uHy|XX06a;C8S~__M2z#;TxaEt1C%? zv7C{5;rJfdlvW3F)f}uIo8>p{C>hW@0xKJAfZFRa8e0V)rVrU9a+O?3%)gzW7Sq3v zr<~tE#E#Cpbm0O2de-041O|**3tjcg8R?NYWeBH}JR85a421z}{)PKQEgaknri^{H zS&bd_srd1M)%Dupzv=G{dRV2@n^9-=W9q+=L}hR3ruBNC6PA6pOy=(HV$YXnu;;T+ z16uJ71)(@ETCDjI-+QFDa@yb)U66!P3fLoW#gn8 zI%4!HWHICHyl0V`OuC};AH(DG?|Np?KWX}ey6EzS#+xW6-5`j{7 zvi{v5T#s{=s>sDBlrWgTGfS zRPetJ<3|EU)i=@27owd>BD?4$?yJ*dUKk}69|{f@?!Oy7{&zKoHKaDwskD3&tzOk3 z?v||hy^Fw`yxH0eEYLepYeLFS3L89j_x@H#z!c+Kq7nmO0~_g6X;rbGSxEDX&W5Ue zWKqVt-$*VxrIqtqDj5KT0)U!;@2kU{k~jXr>v7#;a3zmvD6dH<46(S?G8C!nXjU_L zE`1xXFj6W*+CtO4rJ^ExDjW>u4EAyqp+3I(PL>@hoz}-a@~<<(F?xXOOmwlHP5oYKsTFP{7(|r zdLKCmGNT4hv3Q2v7^LtO_vITY5Wm~pK0C69?tt;Vtn`A<1Rpwn2aFh~O>rqijmn~a zkG?(lL?#@d0wR|#M{=8wE*cKa)1j>ah7+x_;io;dNO@x!Ymf0WXi!GyV#e+4rvJAU zgqMCs1cB|PVvOGRiWo>2aq=*enU3FG(zn9}i*ic-#Xnk~|NdxE$4nyqmuWJK1bn`gqCw{=)eNF!F!YqlY6;r-VdTTRTC{rq|9@2s4*A2)bi z{je^26g~PB9K&tOe4oC<3wW&l zxr-D28uwbo?F}Q>tj73{CCb%QL3L~7d4R&FYXO(TSzDe$?m`^FH`l}!fG-Svkw z{P1k8tL zNGQU^0MwaSnIJXf5Q4Wg0CoxiM|_wWn0|?_8-^M;tyIc}VrtH6j14)yy<^5lSmoN6 z2ghm#jD&cYM>#SVXwfSz&H)vzCgzCF+Cnf@MSeB}uu>sZ00wFEB4iS)tOeJ!2)znb z&NGCpNL_@|z7Zq)#umLQ3a}EM{vo&08ja~`jk4ki67~;>n$5G@E18!^Ymvc;K|lsQ zhW#Er3vf>m_4B?X6hYN9#{9}Gyy^j1|Sy_ zRDW4?Fe=sLMf>s2Wr@yaj?S10FS8bBZ#!A_@?5Wt7G+bvHC;=w|0*1^>bGl}G<2`DD?n33$kW zSJ_RB^6^fT?#EbAA+bAO-QcG(#OXriR0kJ)k*1i>o%eo)t$LRUDj>O%Jk?@P>La#ttU-q5rXonJi);KuOACo8 zm@2`iTCtv$0B&7+0sJOmergoKys#}zka&PO=v`=QAmUVAkr#5jY|e`DywuTJV21Xq z)~Kq^|Mgt6kU*!{IfCFm8TLW*+tJF(VFFX$)S`-Ls*W8S!UB0UH+lAVRF_oj z^3Rp|2r7sMyyt{kyuOs&gCCjGO#Ore`vo3yU<)2G%3S=jYtC~k#5^>sBW-^xl`JGZ z@*i58f6@nu|)XK+@_W6>@#4l_~uOAGSuD& zV=TgwP}+`KdbMfaQM}VJ)*h0qsp;>#z}+F_P3GcER9Mc^u?Ln2DQ?<^p?zFKp>kSn z)U2)R9}?ijYSI1>NEG?RqGp&{UEA_3;5bM1IfAfBn;k&#P(FKt@o{-^vmN+Q(&d^Y z*b~lk7nrp3GoD@Qrq%zVwUy`8Nxu_)gLhLPUHr%OaXrOMNL~Lc0)p_0JWvvhvL8z@ zzuevF_?Nv2L&O7^6cW3N^;!LctN{RM@^}Pd5LdjPsa)ywwU2f(Wl&%D%o$HrkBEO zSD%a9`3OPA&9h?Z{y4NAqanhP4+)DC84}SLU97V3oSF7ShO;}oVqjIAPx6|O%zYoCuYKXcnL5^o67(I!S+JC0+41~r2(r69>XiCb_IIG z#8xI`5ERMDm(&1cR zyi{L1UN~&C7RSv&<^4PfU#mm$vN4F7_QdZ2gV!Pyy24U50r9<7BVZkau)=@fO+J$Q z96rmIa+ocLR%j1gniK)@Fr+3K&h;kw4_uei+Z#S6r%-?Yd8ezQsE%o7X#Rdb?l|L9 zFmgPhSCsXle^3|)_m|re-!su-8V?80#mxmNinfn%E3Mfz76z)F_b>Sv#$X0ixTMJ1 z-kR2tW4sFuSazlIK0IB_`SMVzw| zlk^#?jT#IIM#vQ!oAk@N8v;aXCj`8-hQ?gX%L2cjf5-8_83q>&5K#-2MRn)!K&HrI z9D+FVH|+gd2dD4KD^?uc)_fP|Cdl&AJK}@`Uw7UMvEtU`$(q!V;}?&PuIP#WX#RVO zWDF7{)%N^lI5fAIFAG@o0y6^=4W$=70#XFLzNQua#~3faZmb6kt!irf(7aY}tUso# zCMT$1b2Ldn`XvcRp`9@k#X973plY5pAA7R^Fu13_RTkXe8#BtIMG2}-K>*N)qR2rc zH=+ig~X;X@npFW96y!Pky=e$$zsy?igTb_n{3i+|s05>4jut z&!dduxlgs2w=z08aa2;1Gyd6oG=Kza=%q~N%OavCoqEH;27LkgCdnJeGB)`oYH8vh zUfYx(Fn-*DPE*d ztQ05|_u%dl+=IKjd-3A#UffUK@9tcjA8>AxtJylU_sp6#`5c}#w|)RkZ~~l zc6Rrxw>3Ev)(p~T70kQ)3&v_kdoaf=YMJ^c9o^ILzv6EEkaTvgTi+|;++uZy=$j^< z5G)&udwJ*_Y8st~_=j*)jXpGF{OJel#Ujh6)wfCndbBD(u5r4GGzLf0l?94W)g$2> z{{-y=$3U=YsM%=Fm9U1Y$ocH?^sFs78wtQ0QDn2E;P~`vsF=EE+rGKJF~sU|YKA7x z6^U%wCx^S`P@(GMywAO8ahlyogx;7d(?`MP+c5RzQ03R<^ajZb(Z8c_Jgr7EX33kx z1Ap9Dd%8W2h+)omRDi$Ab|T1{?2orCWhDw(BKvjf6ZgvD2cG)gaYx}^+U6g`%6Vp< ztNE{BOAULJQGNA}m=dAF$e!2-a&! zZ!}51ZqR^JlE?}A(;&yc$WqPeZbc`7@IZQ*DPC;GmCa(vQ1L8RgEhJb|EjXf6}g^R z#&Q|gh-bR%UoshT6N{6Zvn8Zi;h%Z#Dmn~H|-o9=}pqo*+P*=X5q3s#3Yt{U1hQ>CW_yadq(uB_j?Dm z{4LmjQ!9}F<(=8fR98=-2}zEc@v*kH^G~=soY8f6A$?7oNyW`Xk>j>$IN;Xw>XQj> z3^SSm%Qhw6FLb^0r9tZyaYuXjsJoCGP z41LqjUXR1Ef->b}pin*Vd2Zt`(VJ5XuX~g(`7}9>K%#@**gk?@XHX18wkK;Ft4%Yz z#`x``*P}Sj^Ebf*QH~6XebosJ!f*I@uQT$!L|l5YPJ}mcjFC=ll1<_&LMNFs$At;a z>bkB&6yZgy+VW%X0#5i6M`^Jt`v-CGX@xaQ$uaPLqr2ZMahwP@Nm%v9hH%|1uuf!d z@Cr}Vd{F+J7iZRM-vJuMaR+%b&j{p`t-tBgVqm^Sy3ypng4A+J(`)n`--x9Q%BJSCej!GC>=g6*YeUHl_zf znn%EgtLFxf%Xt^8N&Mo&M!0UZL^Q4y6vTjyH;2)pZ$z;M?(rK$m_>HF`cT=VB-PLi<&{33&LSZ>ZsT5F4NM^M ztG)T>kjPk3CbyIJSAIT>oQc zBa94IW85pZDoq&Dx)3m!FEj6az!e9?p;u~6Ck}cyD9AF+(*i-f&&^{@D>X2?9!n(7 zCHIgGrTnMz5}H65L6`Kth??9O`wg8^6_!ks35jmoxksI$1G}Um_acGt22uQuM`q)0VlY3{B~7 z)EbUrGxye5MnCtl_}u?t_oUW;Go)A;0_U*WVV_xkWnY6` zDc}gYIpRjM@4j1Wll^VC;x@M3E_Pn9C)ls_JSRo!-ii4Ex+J$MW^ye%CGC$v0L>Nk z@DKcCcCTxw*sqNpjGLMag(^7Sobs5!ShpNBY4nB{>OG=NwQM~yucDyAeb&KXumLgC zAZM?j*7Zs~l$J?1ij?45feMs5X0WDSE~b_?Mci17l_eZ0YB8V0oy9_%?U^oJRUFs_ z>rOtu4z)0>LE`vx`I6nM@#Ab6Ld8Z?uyoWgw|AqA!r=vj37b2n0*>~s#Tf$@@9SPdqy zl(0+|nss)%&3dh=-~VXyV9p>(x9;j?Tw}m}&ISnVPQu~n!Hkt!zX+}MTB2SQXm&(x z`q8)anj9*wcVMw>;6fy5bel(?2tOWW}enPJ=YpDd&eX#_BvkSiGO}E z%q47Ens$6mpH2IvEHe5M4`?Jn1PNZ|VIVRfE_?=qeF@<+mn%}8_w*?p2FtH4rm}g0 zFt_VQ_eP}DMa}^?UjKYr4E@PxB`o?HJfIkulyHSA4-)-xvB08o5A@Q4aX%RPYX?N~ zlpe?BGAASN<~P6DqU3Uv$Zzt+{nePBbACXy9tXnTmfQf&vpoT=b!wt?V&rbd;B{Nw zWztN$V#$$9?O4RXk=s8Q`19)MJ;JWv#jTJv3>}cELSJyP1exP+C`D~XkSBR%78Xex z*7;_i9+=Ma2x5lc$Uw5OwtVWpr+A{`Cl2p=u*(bd`u1p;mERY9-`s$H54nuje4DRy z8Z*8n?ed0CVknGGG%xO$;`e0TciO;~f4#q8Prv2dbcrcDeElpUT)&>xCIzluQV-#Y zh-eN|gaglu+Un{eo9N|r;SfxTQqcMIU*Qgo3cGVD0vRzo#q3?09s6;y1^pQ8t<_2_ ze=>8{YCQ9QB%HEB?*x*v3hcsu{i;}(PMo+{q^Md6-Vt9Vr@357$lsqs(<7BxN#IK- zU$l4jp5+unEeF+$giw10`Hu??=@STI1I*m9babntr?x}bwUcO>)cmh+9QL+pj1Ocu zrLzG_Q)Vw8@aG?{wETe1!fRG`M=*@x-Eo@z=C31|AMam@~Z6nE%;k@P)JS*;4N}8;w*b^dSG;i|e*;tPq!%sz(m!%Bs{sp^hFrwW+qNI7H#&9J+ z`hbnPo_ZyzP7Dm=&Yy?*S%z-}_jB(mW&ruE7~7_&fwbPtnP=$GY9D%nN~|a33P5EB zUq&m}yZ)Z-By)^^jm!XEwqWhFIZ~4VUx)87Re|#_X6-LF;HiQQwi&Zmn6iAJ2QDZc z$Uax9>EE=*vd&@TUru6Bde42YdByrZ_HvzAhV|*(eyQNijubtQW^m;LqO2((4oy1} z{BReVeAVVfn<7M3%J)Ie-}DK895PccDrA#F@!jUi133HrZtDm<$b?^PuW1gf7NYd1 z^s)iA=*^I`gmarU$N@5+{C>5aY10ckRc=#g#a>_0sZEz?6X0vhY%B-bEH^E5#!GM| zd5nr6KhQtXH-SiwnVI$@6z+xMRGO_LD{Z!U`;v_4jl8cf-*4BJXC7+rnjvSqC`Cy< zxiX)zfYZa}CXH!oGUApcBTb$*crYM-E9wMnut^BcDiOLb>%1DY4>6f|f7+(vKy4Z? zPI+6J*7jy@Y{JoX?=MCvaD>OTXQnyKwmY6kG_Cx!#9s^+i2(a2m*NNh-btP$Zsj6r z;yD~9oo%!VBVDKOt5`eD~+1Pp37LtOM9|W{3Yyz_XPeQ~5(ss<@}yQU%~# zU;()BJ}GxmaS*z4!NSB`7iNTzS46u~_&Gpi)^>cg6)8Yes+rPig8G_-t_mqS7o$_b zs%nV|8~>qVy<}>+Nq^?HlPW$!YD|=$1`AIA_k93&Uzh+Ur4ZuEcF2%@$S(NSU6e9M zgOBt9I@NNZ*m6^N6Vm!}8Ve2bVE)J1h1ko> z@9zx3__2nMl=ju;nKL@o2_GoukAmh4+kRTA;4yI;rZ0(lwdud6?w0B?A#xy~oPGOq zI_?YtYKgJVsDRLhaht^r?#SZ&x%!tlVZWj0UOGEsyXw5!{!`a{_u^FWN)rZ$(ETTE zK&@XR;rXP>@O%=|skgUP61#PN|YC+T>&CEx=Qeb^%0+FWDII*Tycjc6W7r6L~_0uq^$wxsuT=w|yf`^~} zIp9i9<$tC_lUV-*OAU9Bx11YWK8ir%<1mmD1I&>N>d@5#0TB#Vg*5<#qL}zNM9uEG z_Zj~~taWYv$+SdOTTpe68~8&*e*!NOHa?kTlTeqby{sHjleQ0`rp3Y*fk_y*v?9z; zJvqW*oIXX6%FyD(Nd?LW)ev2S%p~x>Ck7#@`O4NaJx@>#Ruh(UmW!X3WKEKq^kL!i z%Kr=;$=uFuL}QovzEbsZQ^$pIj7kPTzrs4>4aGpRSJqd=V5emg62P(UsYR%vAcwb3 zaD>Ac{qMa`?hb(}$dsHbG)yagZ|M+YL)rq#itP^U>gh%u56M;jZ$2RcK04uDOF0;f zj@j~)BLIBVYINnd5=Zx#f72vxvU&7=+m_a4)jNS>4(6|fdxkU-`!ySsS)26retpaA zQ>j;FW4|*S<(vVtzs;Tdu>pn1H(C(Dw+@ygx=YL|QflCpbaoSp7@54XH#u}Of)Ta^ z?NciL$lEp;j9R;J?q?UaP}_BawCfN2iRQx=@<;vUpT9~Xq8G+s3B5e$M{fUErf-Vm zO7~+|UUiuZzI^pv+@Fct;nh;cLH10}lvc0Q#dI9ZtbA^Qfun%rvYbr%2Vih`6K)kM`7#&Ar+ z$cDk*NnL7zgvtlrJ2qF=?y>u&cApd}`+uvPQIQii5zrFI5eayMK)umzqKJbpMecx* zD&>~y@Z|_j99r7(H7Y*>Q}0jupZK6w-lt?Ugi+C3IHd;+^t5*2pxv&0XVmLr}?e?;;7l7dIwB8Rv4=Bwh% zz0L>{Rx9K5#Kyo3^`EL{%GSj!vl*AhS;8=h3;PpmC6P5Le$P<`uVrUG0Ys z@|BmA(7W>)@od$1W`^a88~$Tu%0Jrg_*Sm&y|%9@5`f3YxkchZ?ejPk<$xU)@iV~S zn0~`R$cc2Xls~tbu`0tA_1x@`7H1>ure&YXdcFqgo^_^$Y&>qO)q@#t4}G~6&)DEO zeFl1niUI-(>$!|@KAi!$tp=&~!}tPUGw+4U%Q z;o*OI{>Z45{;7#3kSEVVLD!9fEpd6YnZuKU|M9>zHz$<0wmxJ+5jl|N-TG!j+h#t? zA$j6w?qU6)22*(=dj`_AJt4fXiS z6TqyLha*4drP#&xITDcP6hC{ z=TWU&Fw?gWbF!t8hI#;%!RPe>LUXmSixGO!m&Pk^M|HgPn7ZmP=qA>cGJ`icxnQq~ zoGsbPgm|;{$Le4n&8>j=T^|H3EiE^g-8KvhE=LqC(&SUqPUHIrca2<%u#Et}*z({l zR8|*-AEPFQK^gl?UznskC84sAzpclCy{Fr;V@*vRL4eUzB9&&mu~jsU`-8a4R+g;u zMf1u>U0LA+4<7NS6x7@mx?YrRh?QL34Ny%kRvo;VT0*e<8MW}h|0EEpSvAJ>eEUmb zk3B!@@0kon!slS4kuN#$LRLGu^9JN5j{rCs%?vp2L3hf*AdbU zMA|9p%4+WX{Kh@0`Lrdp?z+yXG0E+eg*ddt?G~Top`-t9s&;N&sOj2jH;@eFz=v{s z#!AlVNUAGe3v{9qW6Gs8Md?&pv5n)c(9+y!pShy9Z~bO8sghPn!*`bWq-p8nCkBU1I!&y5GeT3mm`J3^oDGUT0X7{aon+d>&}A@qrK`<_Xr<|=$s zIfAQ#ij1mt`9tk|>umVd2}_bCa0mnrU#1>1UAOFF`egF4nO7cDXyI;(vurbD+yi>7 zTNlH*C2P8v2M2)~fNKYAWg7?MUOqo3>5JuX=&q=BLU5Ms_|Fq;8uX@*SbHq-T~w>4 z44wvu6C*DpMK&1SgS<;Pv(^3V!{cX3j7I+cDU?_`Zx;U-`_dAyl5UW#_oHW*uaFgL z>~rX8&o2IaACIO#CAZ<6ds-Gud$ksF$=R5ub7MxIVf8uayB^->PzO8(CtxZBQ~^Ln zJZPRaPrYSU`}*c1a(m@qd|%j)6*phzY`4+w$D5mSqr?2sEo>-09^ehgH|VV3@TJ41 zy(yuhc#2UE_XC8UB>IP*?D0f+;oN=h&`#9R-204t4>2W&oB7vD9a3mW$Pqp%b8T?* zihSJ-O?=v}n0)S>m>X&xo!fF-&%{6)=O|;V!$P5PDahcqgY|qv@L~DWhsC)vx`A!$ zxjw)oukO%Z^ZEER-;d4@^;q~UC0bv~ynV%g*a)D$EqMC?JNlA!Kd<&J7 ze6@Oyj-^p4@N$?Q#rEIBuQNPfE)F*}tw3893~x+6zJV}=fnM=BYEZw!M?)40G0YAj zK%@0&^*}5QX7+c@*Xi8DZb3SG&HH?o6#V>dEObZ-!qM#wC3C$hH2WF9i7EkV{JXQ? z;s}+@mL6Tr+J21Tr478jx?!{`<}-@};7`(L*&Jxv--)agVC4MnsR7Ps=~EqlN)w~n z`1{eAKlMf~OX4a$9%sc7PbakV!?D;8%^a`1mDS)INvyiKN)igb+C;h^`tZeZhiEP1 zHEM5W;Ta7hqIL~39v@~2Qtq3cO_%Rie)DRpJ`}Ydx_RZ39RFJ9)9@#n&hb%*&6uX- z%k`T&J>GB@mFP#Z5m!yjy)Nhe3a4mLlTnS*NaUo+8?T8riVx~9WGFf1WxQ_dY>utp$0t(2H~jF{X4!;=wf_2gb+y z{BX7uSLV9v3-k8;rZx(#??2v3eeLLcvrI*`#N*{DunGrwAv|-jxY+4aIQvZ}>x(il1-k9%FQ$-6n>2h_PP zXLJ2)DmuqhUvHgS1#>N?)7!OX=LsuAnT0u7 zfDU^0Jg`(UIeB49=X2AxIh)sJK{kr^T=wC#%6=?!wJf=PqnM`~Z zfIQOxjD$agkwJO{gG?Az(nr3n-oJnOxAJ=pMi;SZ^oDRuP&1xh-g#f9e2Y!|mapJ> zne4j<1>Ax|2|>D6I4v*BYq3;vTKauKk3`*Ow{d?Z?p9G8+5-nfTK$@S{#Zn{%Mm2f z!(1MLa_6~4Kl9Fc{>hBd-}wadm;Q5Qe!3)=W)-a_?SW|h(>de+PIs$a4k0GTXvV>) z5%VB>{Jc(rM!kr{=c!?rmEjj|VYCu;$#)_+Zy*Q^isbyP_tb1HV!NSk)=aqo$GbM@ zk>@8NU`)4dDWRGskbP3r$FgK_M1u*twYKv)Rnw-Lj>oeBTYkCsdcg5n`sh6A7#hT|8jCX+rZ{rV<2fy={y#mugglExhdUA z-)3_`T*vcEtE z{$K_47Lb^QnMuYx$!WBE`cT!k%NG~2Hl5zLsl*_HD!d?m_<-Y8`MmoC6ZgGU9G&&C zU;(#qB3`Sdy4p(_(j5!~0u-ODA5F^QOGw~J4})hLM0b2MXPXWbvuONe^D|1J_9H=m zp_blSkiB3CRK&n?X;LapcQuC3#}2*Y7Wb-Ytp zBL@oIoivx?oydP-*pNqCsjQ`Zc-B!kxJuDJZtT5NeO8M{YkmnM;{l^#9*{iius_IL z%d=`RN3juIKfNxVIhr$A?Z*)hCp4Wj<@4C6jyus#8}aZ0ym)wIiTLri4{Nx;j^5HHfopG7;WAXrl6)*J=*a<<_oD+?-C zMbA?HB7B30U^E~spQWa@;u$qj-Q}lE^>33N)3hqa5z9_i)>}ErwqkS&20mK@$Y?TR9OlV4L7;T4}#>{H&itw(Uy|eD3+{>0p1fmsQ#4QKRE}&Z6pA~uf zwQO*{T9)tHN@)K@ri;`BSJ|Vaw*0g9%d?8wVnbdsYTnoJ>2($5be`SAyE;B!F3obw zMZpY|!(eADvz5ucNCCRD^gz~`%c(*{>A8Jui8!K>bRi`T`V8|?t5wNw$MU{S= z&r@()^VQksGx_#>9x^)Or8Y?labiz^Va%?4m|uBBQ?%4jQh3RCffeN z);fP%>JX}x9W>u&+y5x&6!4cGM5E#S1>)!Od({Sc1NbFKKu)w$C4UPvhyP0aVu*s! z_6ZSCI%M+7N0s5uw%&QfeJ&Yt1*Y5{4@#kR^uk?3;Q<#XZHqgSl=Rs6uUQC;q`d}r z8GjFK$=hhQk3*&@PYLJ49ZW94%iP1eixH)*@iiYWdlFS+n`Wr+S*qv_q_ z9o5*9fh0t+BB2mAD=fz6q!uTPx+ZGMudP0lb=GZfWG}OuChQ zc>0n&{?M1c4pNzNSf&A9jfyF^zS=_Pu!DB-=YFAQC;AD8nIdPiyaV$Nj_97O{b4Cx z_>7@1w##<{&pl=DzgJ`e|D9Da3A4jOw{)@|%)N@W*!Qc#*YusvK$ zy-KYZ0aMU^a0Sk`Zm(7|Dtvds1Am%DJ@J3-&)0QQ~A+tulqh=<9B~82Ua!_9S$p0mQ?|b!pLqkX|Y&J^?ILPZiQl2 z#ON&#EMQR(pwyc9Jeve;daj_#^GR+Mbu%3rWb}S>N4Q16F{tdMG=H2d?CG?}7l9+R z{G7rigIH%ir+)GW%~wk8OQy1}q3&E^*^&8h zhL%JaoS4S-d+w<(Cc+KliZNVOAQEsCunhjOyg<_KSaI;;S3+bS%O1{clEIqNQ_{F+ zbGhuS``P8YC*e0bi54-@)0Sb^e3kM%IL4k{Dk^sgVmQ@giU~2H{jix(T7S+e4lQH8L>{*cl${0phkdmckId;}dYFAG4F>yWsQ ztPhVc<{O-8*(D`N0bp7STXyZZ-#_G;HHon3JRZW3gLcy;=C)}lLR4bRM9#79f<_Hn zVvfb{?^G$X(XTdJ7<8ZYnJZ$Ba^GZxeDNlwMQ9o=A|mZ9Yv`*}V5cg~<6yE^Ja{Uq zw9I-2k;P!xhH;PXY$kmuceNr02AJJ-#d_@Nm;UtaQo!RNK8Iif=!W_XA~OZ+IjkOw zSDmg=3gB!l2X+?B{BJ@0`fnrAMNLM&=VCPm`7qR1BQBavE9pA&)CzO#U16UzQ@E6qYk?L6I%HgwkX{V<1s9-Ydy7 zM!O$OW9z@Zr?8LsR0Fs}1n`#)ivG#jx;#{!JZs_1PV&S5C(9@)QR>E1Z15Amx$L1^ z^@EC(M_6r;NHckV;+xOK+c}Gi_z-2CO5@y9bPe-m^_)*P*;B{^fn!i*_X9zWpG!1? z^1Q;x)6_gX)+LpbBC|W?9*M`|xBIGMOyt82#Xjc96i9X;te-Jg;$f__gxo_2cUmQ* zXSSLoNXsKLhD(@cz&0d0wctwzLhq8G$hD3XE_)kZ-HB|7$y6br4qMW?f3e8(MI3zX~>JVXusyeSE8^{8q1q0%7=pM+_~ZN_I=F!2na6R>ne3z8))D{ zf9`2X8is?Kb6B z3C+a+_L}41|5-gD-}3P}xK??$Z0}@vWVmMI(oH&rGnTbd{nR}7bCri9^VjN=^j$qm z6c#;}1MDX8)k?q5O(82Wun*U&k=o?H#HDvjkieh6hjDs9gmV1`&0|kdYfSOh37en* zknvwVx5PP~K06aLPX1zk=_A4b+%bY)C}z|*Ly<0Q?uhwTbTmVWiiC`;(k``t4 zS7g^kn$Xp-Xkl z?faRxMs&T~Zre$V3bMOs4WeV3qptU3)&}mcP>bFJ3SdH|(37@>L7Qk@GNH=S%pLEm zICZCZf`779ov?EEkcwiHLh;%ZGxFrKKhC})Xs}l}NZ(tt9YdgjcD+(P0<#FFS_>az>^Lm&LNaVDL&qgw~A3;Z4cPW4v?>>c@(GgN3wMe`JjhD<=D%v+v ze%;j%GbaZ1H3kxo6yz|_UnzVzhe~aE&Zl6f2eaEHJ)LRMqEua7@NVy&y8CSC>28oh zG-*kqPY%9y_lv8nvU^Dea2|a~;8BYh(XB#5QY)L+f=|rrows>o#4OWx*l#;H01OAQtQW~x&7w5aXC`lIg`m- zu78AUpvV+u#XbBVr?I&HQZTSwBu<3zY@ zZn>wlJUH*bpMc?1lt@_;z>3m##;Ju1+wY^VS8F^mFTSXdg2>4gDYZO&HZc2jAjZr^ z2spnsiE8fAw{-QHw(T>;iS9Z&0luJDMZ1^0m78$7C=X4?j@T!9Vi05I$E3nO7M|u1 zO*pqzef$!>h7LzrASPna9i9Ogf2ruP`l))O4Ik0gbCnT^+^x6&1T7Ew{yY_NayLAt zM<=ajUF8p&FFUS!@TWO#1m_+J`Vzhq`2=>#O6q7L`DWC`=8ubl`B!c7r@Gp6F*_$` ze^-xx{VHvC7Bypj%SP|W?c5w~BgSLJ5f-Ue%Qzgjqb%bwWYn+~i>BX=PZf8Q9T_aM zQUo%@hxqnCzFPF)wwp)qLJ%Xm+V4+cer+Mdy7vE;>ss_wU#dj47&B3E@!z22rstI3 ziy(MO)$pEYbs0#svCqG%w<7n!oa%=wurzc0hIL#3wS>&dcG?5{Lag@eEA=o3j#<4@ z=(Rs4WB@8>sEy5jw`?R;nI4R}%@T-#gh<;lQ+ti1Geq##axX;Yg}6r6)T--NN1P0| zeX`hQ<&CK3VGp>QMViJNbS?jVQY@L0f1lJp^6F#qE4L4+9+qfWRS`kT?;4-5Yd=zGj$-5L?@%VR$V7P?$aFco9VI4drqY+yO{@8eAI-c$GJ zcbI84RX|3JC+bc?kG2|7AN;04Axq}&RTMRadKIhh+X}g zg56f7l~l1iAutmMI46xYIQwMgxpv$D^cFzo=S~+($zP*HU@3Rk->e@e<27eRd^zKz zxkw{od2d{*2MpR5(+1F8c7GJQavr^8Uby~aSF}%?EvAc->D*OGc|IRWpq%QPP%OvQhUm)mjC%ijH(uP|yPS;bi-p5r ze%o%X;(3X}=*_{6#YrNAh3uxbcTzxO1b-EPjlbi4Bx;qthoWPD@XBiPtzc^{ps~@k zKXTE&Ux1q^KBzrgf!7ghYW2}l=w)3{E+%s@DE<;}V;AX)Wjc|0y5REVgt6|W-B4Y- zI^ow>K#Lh_^)kf@O9Py|2$= zRUbfAdUx4n%yA3zLzxW{+ZPl{O8P*`+*c*?E!qb$Fhmu5E63I%xUvtW@eteM{Kef$w ze<7bt7n|%PAZV}-Hr|p(H64B%&d`^^)>1AWLTwpoVpM+ibu?z@>wIdHMM`U;5Q+?L z^OmOmOZ2t|cC?!dt$kvk@`9%P01A|BIcD1GkH&fV2^)hU8ZOzjt}2b*HXFqEnh(LW z-HH^98EZELFZyZ(MI^9#V6p=OM;}pv|FW>O)T9*l@DWy!w)*^Q3bfBb95q;_VyK&Qy$lTERx7|^T;cf@h zOMC1JoA^CXS=#AZeUo{xOxQQ4LOIq+~^W5U|AgB z%~x6;EJnBDRU0#IJ3eRW1#uLZ_w^$~AqI^^>A21AQ)-7bSW44y!WK629e3_VTNiz& zBKN+K0=2fK`R62+s`(`kGe`x4ecAe-VVYaRm7dSE{iS2p1oLo~Yu(;r?Hs#sbV& zXR5(Zd8pf$#j@0DOAD=)Akcil+FPUpM!De+bZl>FC8Hbl zOpM3b?)Fi)b!@HD+igyLYFbFl zNkL&7=`Ar=yl6&*k^`^u-w1DH{JV6mC#R_K^0T}cJYVl=K}bi@f<2TBAF%^Li#2;V za&OUCREBtVwVC!tS6ga-cF`UO(%s+b?HK^f-tHzH5ti#0;=)jZB{b!0VzNnQCoj#R z7B=e3B0;n2@$MZ*x(TBD{0qhJX^U7{v$I_jItqMxO`GjdN`%fer<j5vYhu?`Kj4L-SwBmlSFtX&p1psLqtSm_TSw_ zvOY(3TOKrlH(n>jGHF;z{nRl3C(C>U?&8Wr4?)!*05W9F^=%`FsIe3vBbuk9q#6&z za2Lxc(BoKChmt{#pf(>%Yt7TfqSIU&PCnPcn*YoYG}s2-Yuik6=L}SGL?sHXD@Dh$ zj71l242mJEY$-rdDlr;0<*h2)`OaPC4cYZqqOr+$Vb0!&V3&H@u%_Pa8m`O?WJ=3* zUG)gecC9RIGpt@Wfh7HT;s|ehH6VqGGE7wV^UO_6AG^W#Mu;?^MyR0jCayDuZnW?l zVwK1!NH}v-dedmtK@>tgP15!V(jUiM;4OvOWP*%A@hRB(lCH?i&T-CbAEd@xa? zzzi~8Vh?6LLlH-?l%29BpH|FeZiL98!np=q=%^fFIkBksKEyu@Ej?no?6Ay*ZVS8A zu2#j;6Gh2&IVp6FQ8Q5p@r40eWXW$TuktFW))i0w0 z^$2RFF=r5v-RC#1yCFM+JVctwVIj10!ncKVW)AFgh*8xR0>0rzig+aMMNLEr#=s9z z)bxP;Gy(kF&-ZM7i1@MWv=XhX16o?>RB*k|<)dbY1o8@qr2l8#E-JP}6Y2D2ACw%C z_7Fuy_pYwQNF*q>C?Qwk>VC`NH75IZ@`vsIu2AGc%y*F6AUux*&aLwOzrr3<+4SaDte-A6bR5Qd*9xd7v%$(VU#57>?YTu*u)ZO< zRH11Df@(lD6Im1my>dNX4r4mU5tmI3Yu2>^6x3kW;N545TkE2}rj?YH+T!fR$h}{a z1o$|b@@y;%K~{z-)-wiE~(}rxj5X!&1s6UH;zo2OO9?-ev52U$6lBNIv0Xa4=V zt8POq;r!yeGQRgs{wQ#e&Wl%bG4X8mR|Ff36v5^D|MaI1_JZeh`iEw} We+$4$^=c6UNb)ku;4-PNzW)dGY3Zy0 literal 0 HcmV?d00001 diff --git a/client/c.py b/client/c.py new file mode 100644 index 0000000..7b7a3d6 --- /dev/null +++ b/client/c.py @@ -0,0 +1,108 @@ +# -*- coding: utf-8 -*- +import socket, json, time +import pygame + +# ---------- SOCKETS ---------- + +RESP_BUFFER_LENGTH = 1024 +ip_adress="192.168.1.14" +port=8090 + +LARGEUR_BLOCK = 10 +NB_BLOCKS = 30 +LARGEUR_ECRAN = LARGEUR_BLOCK * NB_BLOCKS + +def connect(): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((ip_adress,port)) + return s + +def sendData(data): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((ip_adress,port)) + s.sendall(data.encode('utf-8')) + s.send('#EOF\n'.encode('utf-8')) + received = s.recv(RESP_BUFFER_LENGTH) + s.close() + return received + +def newGame(): + received = sendData('{"type": "new-game"}') + return json.loads(received) + +def update(gameId = 1, direction = None): + data = { + "type" : "update", + "game-id": gameId, + "direction": direction + } + received = sendData(json.dumps(data)) + return json.loads(received) + +# ---------- END SOCKETS ---------- + +LARGEUR_BLOCK = 20 +NB_BLOCKS = 30 +LARGEUR_ECRAN = LARGEUR_BLOCK * NB_BLOCKS + +pygame.init() +ecran = pygame.display.set_mode((LARGEUR_ECRAN,LARGEUR_ECRAN)) + +snakeSprite = pygame.image.load("snake-sprite.png").convert_alpha() +snakeSprite = pygame.transform.scale(snakeSprite, (LARGEUR_BLOCK, LARGEUR_BLOCK)) + +appleSprite = pygame.image.load("apple-sprite.png").convert_alpha() +appleSprite = pygame.transform.scale(appleSprite, (LARGEUR_BLOCK, LARGEUR_BLOCK)) + +def afficher(ecran, snakeCoords, fruitsCoords): + snake = [] + for coords in snakeCoords: + if coords not in snake: + snake.append(coords) + + pygame.draw.rect(ecran, (255,255,255), (0,0,LARGEUR_ECRAN,LARGEUR_ECRAN)) + for coords in fruitsCoords: + ecran.blit(appleSprite, (coords[0] * LARGEUR_BLOCK, coords[1] * LARGEUR_BLOCK)) + + for coords in snake: + ecran.blit(snakeSprite, (coords[0] * LARGEUR_BLOCK, coords[1] * LARGEUR_BLOCK)) + +def handleControls(event, gameId): + if event.key == pygame.K_LEFT: + return update(gameId, 'left') + elif event.key == pygame.K_RIGHT: + return update(gameId, 'right') + elif event.key == pygame.K_UP: + return update(gameId, 'down') + elif event.key == pygame.K_DOWN: + return update(gameId, 'up') + else: + return None + +def main(): + gameInit = newGame() + gameId = gameInit['ID'] + up = gameInit + + continuer = True + + while continuer: + afficher(ecran, up['SNAKE'], up['FOOD']) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + continuer = False + elif event.type == pygame.KEYDOWN: + updateTmp = handleControls(event, gameId) + print(updateTmp) + if updateTmp != None and 'TYPE' in updateTmp: + if updateTmp['TYPE'] != 'error': + up = updateTmp + time.sleep(0.2) + up = update(gameId) + pygame.display.flip() + + pygame.quit() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/client/client.py b/client/client.py index 814dac5..67cece7 100644 --- a/client/client.py +++ b/client/client.py @@ -10,7 +10,7 @@ LARGEUR_BLOCK = 10 NB_BLOCKS = 30 LARGEUR_ECRAN = LARGEUR_BLOCK * NB_BLOCKS -def connect(ip_adress, port): +def connect(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip_adress,port)) return s @@ -37,6 +37,7 @@ def update(gameId = 1, direction = None): received = sendData(json.dumps(data)) return json.loads(received) +""" def draw(up): snake = [] for coords in up['SNAKE']: @@ -52,41 +53,13 @@ def draw(up): else: s = s + ' ' - -import pygame - -pygame.init() -screen = pygame.display.set_mode((400, 300)) -done = False - def main(): #s = connect('192.168.1.14', 8090) gameInit = newGame() up = update(gameInit['ID']) - """ while True: direction = raw_input() up = update(gameInit['ID'], direction) - draw(up)""" - - continuer = True - pygame.init() - ecran = pygame.display.set_mode((LARGEUR_ECRAN,LARGEUR_ECRAN)) - - - while continuer: - snakeSprite = pygame.image.load("snake-sprite.png") - snakeSprite = snakeSprite.convert_alpha() - pygame.draw.rect(ecran, (0,0,90), (0,0,LARGEUR_ECRAN,LARGEUR_ECRAN)) - ecran.blit(snakeSprite, (-50,0)) - for event in pygame.event.get(): - if event.type == pygame.KEYDOWN: - continuer = False - pygame.display.flip() - - pygame.quit() - - -if __name__ == '__main__': - main() \ No newline at end of file + draw(up) +"""