From 6100ecf39480f676c18d7455fdaaa0d82b5ccd09 Mon Sep 17 00:00:00 2001 From: "mahesh.kk" Date: Mon, 19 May 2014 15:59:52 -0400 Subject: [PATCH] Add gamepad controller support for the game --- .gitignore | 1 + .../controllers/GamepadController.coffee | 40 ++++++++++ .../controllers/GamepadController.js | 69 ++++++++++++++++++ bkcore/hexgl/ShipControls.js | 45 +++++++++--- css/help-3.png | Bin 0 -> 39917 bytes index.html | 1 + launch.coffee | 2 +- launch.js | 4 +- 8 files changed, 148 insertions(+), 14 deletions(-) create mode 100644 .gitignore create mode 100644 bkcore.coffee/controllers/GamepadController.coffee create mode 100644 bkcore.coffee/controllers/GamepadController.js create mode 100644 css/help-3.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/bkcore.coffee/controllers/GamepadController.coffee b/bkcore.coffee/controllers/GamepadController.coffee new file mode 100644 index 0000000..253ecd6 --- /dev/null +++ b/bkcore.coffee/controllers/GamepadController.coffee @@ -0,0 +1,40 @@ +### + GamepadController (Orientation + buttons) for touch devices + + @class bkcore.GamepadController + @author Mahesh Kulkarni +### +class GamepadController + + @isCompatible: -> + return ('getGamepads' of navigator) or ('webkitGetGamepads' of navigator) + + ### + Creates a new GamepadController + ### + constructor: (@buttonPressCallback) -> + @active = true + @leftStickArray = [] + @rightStickArray = [] + + ### + @public + ### + updateAvailable: -> + return false if not @active + gamepads = if navigator.getGamepads then navigator.getGamepads() else navigator.webkitGetGamepads() + return false if not gamepads?[0] + gp = gamepads[0] + return if not gp.buttons? or not gp.axes? + @acceleration = gp.buttons[0] + @lstickx = gp.axes[0] + @ltrigger = gp.buttons[6] + @rtrigger = gp.buttons[7] + @select = gp.buttons[8] + @buttonPressCallback this + true + +exports = exports ? @ +exports.bkcore ||= {} +exports.bkcore.controllers ||= {} +exports.bkcore.controllers.GamepadController = GamepadController diff --git a/bkcore.coffee/controllers/GamepadController.js b/bkcore.coffee/controllers/GamepadController.js new file mode 100644 index 0000000..c1d778b --- /dev/null +++ b/bkcore.coffee/controllers/GamepadController.js @@ -0,0 +1,69 @@ +// Generated by CoffeeScript 1.6.3 +/* + GamepadController (Orientation + buttons) for touch devices + + @class bkcore.GamepadController + @author Mahesh Kulkarni +*/ + + +(function() { + var GamepadController, exports, _base; + + GamepadController = (function() { + GamepadController.isCompatible = function() { + return ('getGamepads' in navigator) || ('webkitGetGamepads' in navigator); + }; + + /* + Creates a new GamepadController + */ + + + function GamepadController(buttonPressCallback) { + this.buttonPressCallback = buttonPressCallback; + this.active = true; + this.leftStickArray = []; + this.rightStickArray = []; + } + + /* + @public + */ + + + GamepadController.prototype.updateAvailable = function() { + var gamepads, gp; + if (!this.active) { + return false; + } + gamepads = navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads(); + if (!(gamepads != null ? gamepads[0] : void 0)) { + return false; + } + gp = gamepads[0]; + if ((gp.buttons == null) || (gp.axes == null)) { + return; + } + this.acceleration = gp.buttons[0]; + this.lstickx = gp.axes[0]; + this.ltrigger = gp.buttons[6]; + this.rtrigger = gp.buttons[7]; + this.select = gp.buttons[8]; + this.buttonPressCallback(this); + return true; + }; + + return GamepadController; + + })(); + + exports = exports != null ? exports : this; + + exports.bkcore || (exports.bkcore = {}); + + (_base = exports.bkcore).controllers || (_base.controllers = {}); + + exports.bkcore.controllers.GamepadController = GamepadController; + +}).call(this); diff --git a/bkcore/hexgl/ShipControls.js b/bkcore/hexgl/ShipControls.js index 31478e5..d03acd4 100644 --- a/bkcore/hexgl/ShipControls.js +++ b/bkcore/hexgl/ShipControls.js @@ -120,6 +120,7 @@ bkcore.hexgl.ShipControls = function(ctx) this.touchController = null; this.orientationController = null; + this.gamepadController = null if(ctx.controlType == 1 && bkcore.controllers.TouchController.isCompatible()) { @@ -136,7 +137,7 @@ bkcore.hexgl.ShipControls = function(ctx) self.key.forward = true; }); } - else if(ctx.controlType == 3 && bkcore.controllers.OrientationController.isCompatible()) + else if(ctx.controlType == 4 && bkcore.controllers.OrientationController.isCompatible()) { this.orientationController = new bkcore.controllers.OrientationController( domElement, true, @@ -151,6 +152,20 @@ bkcore.hexgl.ShipControls = function(ctx) self.key.forward = true; }); } + else if(ctx.controlType == 3 && bkcore.controllers.GamepadController.isCompatible()) + { + this.gamepadController = new bkcore.controllers.GamepadController( + function(controller){ + if (controller.select) + ctx.restart(); + else + self.key.forward = controller.acceleration > 0; + self.key.ltrigger = controller.ltrigger > 0; + self.key.rtrigger = controller.rtrigger > 0; + self.key.left = controller.lstickx < -0.1; + self.key.right = controller.lstickx > 0.1; + }); + } else if(ctx.controlType == 2) { if(Leap == null) @@ -376,26 +391,34 @@ bkcore.hexgl.ShipControls.prototype.update = function(dt) angularAmount += this.orientationController.beta/45 * this.angularSpeed * dt; rollAmount -= this.orientationController.beta/45 * this.rollAngle; } + if(this.gamepadController != null && this.gamepadController.updateAvailable()) + { + angularAmount -= this.gamepadController.lstickx * 0.2 * this.angularSpeed * dt; + rollAmount += this.gamepadController.lstickx * this.rollAngle; + } if(this.leapBridge != null && this.leapBridge.hasHands) { angularAmount += this.leapBridge.palmNormal[0] * 2 * this.angularSpeed * dt; this.speed += Math.max(0.0, (0.5 + this.leapBridge.palmNormal[2])) * 3 * this.thrust * dt; } + else + { + if(this.key.left) + { + angularAmount += this.angularSpeed * dt; + rollAmount -= this.rollAngle; + } + if(this.key.right) + { + angularAmount -= this.angularSpeed * dt; + rollAmount += this.rollAngle; + } + } if(this.key.forward) this.speed += this.thrust * dt; else this.speed -= this.airResist * dt; - if(this.key.left) - { - angularAmount += this.angularSpeed * dt; - rollAmount -= this.rollAngle; - } - if(this.key.right) - { - angularAmount -= this.angularSpeed * dt; - rollAmount += this.rollAngle; - } if(this.key.ltrigger) { if(this.key.left) diff --git a/css/help-3.png b/css/help-3.png new file mode 100644 index 0000000000000000000000000000000000000000..40adbb7ebe098c4a7941fb9871613938cab95d15 GIT binary patch literal 39917 zcmeFYS3pzSw>OFky6Fni5tJgm6Pgr75CH=SB=p{E=)H&(m8JqgiZqp$00E?T!GJW8 z5?X*rz|f>dYAAQ@z0d!A_u<^{`92&TV6Me1V~#n-n7>ihD+4_(S}JxbGBPq+?Z+C1 zWMt&kWMr33|GEmi@gs1v1Ao{8G))7HV9o)-c79G|4;*3kPPeta>|C4-o$MS#efyo1 z$;hsFxEY%Un1Y`uIl#Qc?f&i~9^&N#j3y&fRtxd5bMSBqxNYy`;^wWwv)$UsbKA{P zg~tR0mIV7ebaHij9Oma_6sBkF5a!{a=*Xj{dRsX}37EjkDZuV_h?l3gzfy<_&p-1j z0qwtEOYq$Or%Ql`3eUepnSu>&KZN-?-3Ez+#2h50WN*tWic5i{WEG@DZ%a!`$w)}b zNJz_Wu6{dxa0gNBp8gP)sEfE&#F_TMww*~0<@RCoYN|J{O@ z4;cL46MOsr7oz}{Nrc$>NJxoGN_ctwy{~_I`v(|0{U0*^$KL+Np*~I$hED#lKtBiI zJe+y|GZ^6A|9zpqI|9@w>HE0>hhpcc0dolSa`Fz))==RA{v+<_=BVVP=;S10?_e*c zs37AgChKJ9B&Mh+Ei0xVB`qf{FKH(yqu~6XdH$#Ik}@)KQZkP;HRR+TNJ(kRD1v|o zNp+B>ysYdakhH>o#%g=}2iSQ#IQ?gBH(>4m8msYt9jo-v&&e(T=4T9pdHzQV3|wIW zFn?E=&+Uf~ZwrF$9NfJBeir)sjQ-uShLfLLkdxyhKbY6;f0(S~_CFAyDKD)ct0Awb z_~_BYzlm2+SJwb`@jy;muxa(ApZ$H<# z`ikamtc>mZ>UOYG<#s{+Zj)C`b^-?mngmW&A}+Q=zsnSEWp7n=SXl+G&-sUkg@@DrqtawAF=TR={%zVnx=j6V z>nU#x#XqfQWpBGK|I@lZ@!0m?ez)EE0L$|C&vg)k>A$U)?3AMawlq@6ng4Bl_}}UN zmv{e)!v6}&|7ykmZ!C(}^;|$IZ=1wgCHqPZqo1%`YnjHP`B?5Xv2tyFu1^t%wwf;5 zmnV@d=Qi;Y;#+~cpOOMSt;xs?v{c&L+dTox`0RI(zi(4gx)tY=y&5*?0|JseB=Ffg zz&G^hm@JorjBJ9EQnWAx5jQ9P)qv$;H|6UnI-16fm1oyg77yiK{CG9ot6GF4a&+sX z%~>{PhRA+M^|dGrqh+i($Kv})$RxGqBO4Zz_()YUvirq=32t%8I4t z3L+n7oEkp&=z$hFPC7*5pA!4U$nIaz`Rqm!Atv`8?L-7Tz*Di<1o$$-=*h^+coUggWw3l#*`|tX^L=)02Ia*IG zFWr8GcpsUbbZ9QcWHMaFv%$$?6TGVcV*%!50OsT<;2`#w*NB%iWv$w?5SgH~Zo;MZ z;b4o4#;7Xkg0Exlru5nR-fK8HDH^hgAsUto0=}6)q-v`5s5%K5iUl_7r1w?Z_ELGd z4O|#`AlZ2{?Bf99X}d9cfj5OpS`)Wk5h|XU)j6v_!bAo+WM?S|lB!R^ZPJo-t!P5N zp2}{5&VJv6R3bZG-izDLvQnpUUGlB(gm!OQ5Rk3_GY2C5bS_gru8UL%ogR!B(}9@q zcE9R-gf!WE)L-$)A(a0!7rlUkf6ptnaR`}l3N+!YDd{l&!W-Q#?k$URJo9Er8nPjK zOl&VY+YBKZjUW2^zEApS^&8jgVQ_ilBZ1@yERt~;mqE_FLmyBaZo(3tqi8ZJ{d2*U>8+H2Z**IPYi`J7y}(we^Os+LRqo?r>l*oy3|B*qCXc= zvn6AbU5pS7k|rBCirn#HLFt4>Z<54=cfl;tayXG{qkspR7*m)$?zM=Q(=@kb+d{-I z02$n0d()*pU!M4Q{Bk|tNdQqriycXk^ESdQv|!AIBqk3W-~<~uw@8@!K3iGsnk6w3 zHJ0@YuV#5Vw^!bvqswAy{Tr_$p8DkY9?OfVeLk2B8JXaG|6NMai3|jC!bStB6N*bWI-W z`<@FP9orE7bds1XZthHrS--dnQIipYl|e^#uHqdc0PT7veJ3VfY4pL_146iE3XQ-m zQLzP;D-SE=3cj_>qdD~o$u#ha;!$iJ+-Y-bcrWp)lpPSKb4T#h4e(aucQl9PX;$Mc z;KV6_J;p%24bkvSZW9k!Bznf5}%JX&3nVO!Z=6T;OCJyW)bIo&$c7&^o%^NbX5{;&?!v-(pw- z=o#G@BGM$Q^XF(mpJm$snp^kiB;T$BHT5-)ioxARL z(@SvzQa<$9w&;(;G`d4P)lUkIcl*&%nOF|G1I_CE(D{#19u%_s9QXl|SN{6S<~E~6 zY`69xU8H@*F(0n_IyS6IbDNc&vQca3Fz@MWQA7>dvfK0Hbz~&t7Ey$VG1<^LRjOAz zt4f*@nA3uzM*Mb75`fF-<-u|RIkV0aBejes!)SVbx5VFpm@@C$9p#K?hD;cTI~gxS zyCVup;RgZF5!kD7KMvR(I!4bzSng%(dx8-4R}VtPG+{>kRnECKwNY$6T=(@Bmhd8x z2lEydtN3C<`l?fD$D2<1&RP5D^Lg|&HUQt>hVoS#K*xs!PzQDRG*O*u8X5sLME=+x zHU6>*Ee+(F+d9^05$8}U^x`9MGv19i@bl1Us(hOv;&%_Je&2{{yQZ^1hmx#vY@jaM z&o`huQgs{ez!WyT?Z5jg4qFe4tUCS*NdNr+fTNxnPZasy2b5h#zSKxyfa;X3_IzB6 zMo{H!+rK^jgvm+tT*(_2s0~0{zp9j441@{0w$jsJ59nB?vQds#o&~jiL%$vpSZj2u zN;0xiHZGc~NMd-Gu>HepG(M}b`G~9M3K`i~R{$08e{l0QxAQ4EcI-_MSBv^M>kdDr zLLQ3~vI}^c8tk#=XV%OKM}WM?w`S`*Z`!Md3eNwQFZq;RqRPdQKLUDGO!jQjP3@d> zLoJkl#iBmVCO>!rFd0V@3XnE2Z1K{RkX(_Y{z^VD%nSKwtWxKsGCRu3K0yRN&a z3a?LHboX0qMeDc%M`YU{t}=;9QB^K7^XeB#xa@7}dNG}3ZrC}GCMKEs+SFNl5afm$ z?lhjd(EDyKN`-Ocf9W=~$MXG8 z{LDc>CsHrpK=6*V;QI;JlQ{O-^I5cn)tqzG2}Qq%{&p<;1a1=_-Q8c}@-QSde|19^rO76F|v|ofsm$_jJVRN$cmFZcoe}M85xpw`PIyzcmPb z*iEW9BsnE3PPh(1s8p)2BS#6PG~cUBIbH;xeEz{mx6U2lTY9|4%U6+OBvJc9y=;y2 zg-{xiN{g*akE{*raVQh25$-zojH03;^Bm0DX&)d5j3x#PkY&@PkOF?{p~F{x4KC~el_40^NST;DxufA(5|uZG!M{#Kk_7G$;} zhz|C-5w9F|)z-UMyN+XcAn74+ckGL?xKy+K=wq|9lq49yrA*uaX-!h;eqlC#?H;DW zYRL+6Uq1(Ck9~}&a3Ka~FvRLyKkr5J6Of<7DrA_7gUQS_2g79l{X8Y>WB$;88?*SjEbov>r zd`&+4f?TEozHC@k*pCOp8R8pXY~r$@3SX6sQi}O9PiV^+Hm=L5kP#^>b}1W0iaxj9 z#j3OTrDgt^4C0B27k;XyC(QLmW66QjfsUWczyAJZYE7fPbqa!s^6ZZysj65X5c7o^ z(dg>C+8OG7jSvahKw``eSD?MkCmmHW3KSnR+?4EU!gkKNveSNZbq$Y3bkH*E4JM)@ zkwquw)7gRxo4??07LtNa&wvliVZ7&FmlSwQ$;?d_c~;CXU#WTMhUrVPv|O=I2_(38 zF2ML}Wb=Hk=5m&uNsSx;6o*3I3H_RtzgziCc1+3W7WK^s)NQ9SxtE06RFheHIS1qj z?tzlmZrTMCX|eFO*&i`ioWN`om;lgq6I^lM%<@x1iY_K`aXGa}7oTgr&wJmM2&-bz z4?O(}8|q+eIX1HLI zJNF|-sxsCa3^qzXut>hUSz`o$pR zqHNhTiYfP!SO}yy^0osVpl_UoWVb%`R_pNm_EhzKD*#%Be89^Q&){74{_heq15EfQ zL4?wV<;Y(;OI{gC>BEQCR}3T&RXQz&PaBcHv{|Uup(zRLN^@vOxhv+9ipd-R8>9*D z@#M@c+T#>(RMLs!s z1Cd;@X6@FJVT{wScIR;+6E;dwG^HrL zc<`$?L&vzM=nh}7qm_HbiYSIy<%J%qOUqT#@rxq3m=CK_LZu-iv^I6b;g;QV@D~U zK@j5%`RZPi-B670_yfM`A8z5z3SS~nDZ`4X7W}9!xq`WnqB1YFmPg6fjWJ)H~pjO$4uYK^qMzHczR z+3lVCxGTD(>1G-xW9#Il#L!tg$RA#iTL6k zM(?QuJ9i*h@RAOo=Q-W^YnqF8p%&LL$%j&-Ww!+DE$pD5&w0oO$mPpZd~(w>8{E=^J!>eo)v?x@hXt*9->ZYgwp+ z8SLpF&>3l!lUrASN5^&8UkZy>5#N%=;WQ|7Y9-!QNd^cjr_^B1{0EMdJmqZe6f~!gmk!1OBgs)}wTI zbo~P_4$w8#?ugg$$YB$cz_GIHI)eEO=bJ)Ar0&}C<|88fuS4@t5iC2BQTSDT^iiX7 zn(25qDNu#mqtFlfVjI44=+F5nIz0E7T7X0NU>0ZJp9Coz3uSvq4uH|J(#ChfzRT+H zhZ0iJn)hB0q ziH?9__}i9Ii7tauC*&Vf<_;^KsesX9>>2?{%G|*recn|5k(&ZVm6wqHp|j zpDuV;6~M<%cAaWTMSx#vj~0&m7K^B&TlL2m1U_+B$_?WibpZ&{kC4QFJ)-IrW52oFhVsbpopreKr}}ly}SbdbA{#g-MOfU zX?o}v5i4bx#USwbMbWSEP6jfvLf*%=cSNi(5cojWd%6fn5K_piF>`rezC_RZCY~Y_ z#(Th%?Bko3L>!ivI%i>F)Y+TER9HtMCs(SYjV|j_J{EgY&Bz^C=x6NpCn*jKd5WZ} znLDOk6ZTYSl87-P4;xbXcW!_UED5*O<)4|x$4 zP4y!RgX-E9k;8{+mkh-8TaMzAoWLDO)m8iwG?gzCYA`X;_l5G%jKzAyJ^|Q);1vc_ z*Wfu$&yLGN8;DqQu`N5mp_V#mpZ$U^9X@=fl-YQ`?fR>q+A^XKU3EiMjo$-N`F(|N7(dxOQ*{Dr4vPIocuy`Dl}y66N$borJiU+78{gM0Vc{2y@*# zkhDn|OYb=vXR_sI<4W2IL~M_~9=6Hm{(@cD4nKNC92eG4**UHZ^8I+skN(yTPcWd%O{OE-gp!r16kJBSoI~N9~~Qvw>J~Z+ZcDv$U#|ge`~odM zqVBjyAWJ&NLs~69+M-`xfRlIRao@SP&ggU}O;)-2S0asw6J;lm?ce>=^7q)pS& zr=&dUunq^ywvkhccPk}L7s^D)=R+d&3fZ$-AT|b-MW7y;9l)S&DU!kOfoO&w;C)fvmmg2^mo7?~-w$1v*0)DSswd??x@ z>S>al)v0RKtE3AlT)GIDyPHDX+9k>y1SsO)fk%;m!j4v_0;Mu89%`|w@>mC}i1E|9 z#5--6?Dh#Xz2%eFtBUh0_Nh)NuDOYo&t!!;TapEDT0p;QCZ39a4+h*6l&sBL%qt8P zW@R1yH>mX@k?T(3^qEXtTALCZfq+N`L>~r|uqet8xPJPnSpU)5{nG$qd+MZ9h~=$S zkAa^s%TrLAR}o{%1(g8Bx2b(XDe~){wZ{q0jDReym6d=NXCq`~BVE0cI+5h%P)UpL zJ7gakgO8#Vn$b9;_+5VSDp}md?yg+tJ;<)2oH9K>QWm^Z#(a@bV$eA}#=rCov8Zv) zt3Uwo^U|bDP$?Rhk(m>}A>+Ig6+z$u92@K$u~){acN*wKI?NQik;%f3lAYhAm=Eis z<&c{mE7tYeoUNZ6PmfZo@8b%e?uxlGsIU;gQ>v3Nb3>Vh-#}j)*Xr!h+xb!BwrHI(jJuX13`N1y96?s{zYhV$rqy!DoZf;wEoaFrA=F7%9taVs$;*O=JF{%Qk=<{rGsjtU2Ty5PKJi=( z4jf(ic0IQT7bY9QQbmW0KMCeXb6~RXW$EXn(BpD9k8+bxO-K4fZCN11IK~?T;T~A+ zz@kfs^b1-h#!L)T=mbu4rByrBBVQ77gA-h1f8X>sm&1oyKRY5urd#8*wKF5~-tlHhXGZ+-ppJD?lxO z?{NPfqGRCWsn+XO!RKCkbSy9@*PD1vaaFI5Dc!dd(T`M`<(xRNI`(c#Kg*b-VNVN2 z3QxKtC(y4eiEuWuT8lNjC5u4IQ8JSn$Q*eRC8k^;@!||fqTT-`8DBj+QE|daq%7+Q zpg4vJ0pk7`T;pj}nIQ=IJbOdO&>R@UL1_=n1!bw3#Hz#Fz&zCf9l?V*qImqZPXa}^a+l`-MC691koKi zgyvmznGw2CxfaLL6p{_N{fB6d$@soWRbAS}`r8BX1f&kq{>ik&Yib8C*O&QmyTuq= zkc!0_+Sp2$fu8Ic6;BMrN{RBk?YKPJVjSUvG(691?|!A7=@zZDIzjcAo~aFd04k7W z8{84h=p8Q|67Ufh+X+>+i(=~XRXi2ruimQr^QyY9n{vh1;*9iEJj$U%Vp5ZaNkhZP ziC(HxFcyj)N2h4t`SK>SBRHeY>Za;NV^(Li)Zjq7dwK`1PG|9WQRb{-$7}(0rO)iJ zrAg}dJye4NB8OP$1sad&)UYz0#zcHRg(55lad`<_$6wx`=B>n2reti zi|0v=W*6giW7g#u_`b@JKCfq^I$+m9gm7=B8In%qyADok`oyUaHEU1w!P}=ynb2v@ zbl(VspSwD>KsrL>{rremYwJ-=Qsj_8QOt+mt9V6%hzULQQba3FG%W5oi6@b<=WxKD z*pE|dI>Nn)5EOx22<}$6k&K1~&N6n4>>t5@r1x}4Y}WlM?LHXA3+Q~EV?N*@%0vkC zX{eADY~YXWINV4y!#jtM61=K@@Z93)Ry{tD?6|3WY#Io)M0dk-TgnaXrdp&d2^)ea_gbAMIDMc zd$pBRSI%<7Hp*%@@)k9iS2I!8eI3bkVrhx#ne!rLpBs2f8 z?RvCqwAADN&NVyidS_pJG&fg6Y}#zg^vAWc*YVp=_zxlc2)G4OmS3;`cq*&&S&!wJyG>0X@g!_}MPK@u`{&rG_IIA$+{GL^c-UklLuGWQ@p>?9|9A^kYJ`HwG=KPt z;TRIo>I*)ufy@*OEAVUEz@kQzi49@;WS)_Qeg$fOvQ)wwDlHnfxV;M$d_Sact1a{< zvpFpFrZ~jLNWDx2%q6Y)7zrsv{})D$7fiIYV$09ky=`tp4=T2|j=??}2dQ#d)8qfx z5w$BmFvucu%sKV)KO1wnx4_w3N;mf#y3!a;X$5j%6BWYU7Y4Kk8W%k$z|CHW$sbFK@;>oM6n$ipPYLNKFM$6M5V^-5wTJUMQ;x$Yn zP`-tgiqGHIrbYHTF2)yYwaNXKhEN^O=bdLz`>~hN%xZav3Y#%0!EE;=M79_FDpmalRAjPgs zUNxTl?WTkIE8u+&pUFU11;4z6du3 zgn4+a;K0I)_m}15{D5L2ICTtyFn=lQ^d9{#&lmknR@=S8DP${eO@hwl{=wXGq z#L)9IO~kJH05Q=b-a%-ZnLu;Xw}{sj$dG#LooUE9NdrgncKTg`fOc^Zc1($ZtF=)y1k|4xAYM ztvQc<&V6CG;J`9jaBbk;g6X8v;GYMTO~%H=Aggi{_<&CWc&%;pl!2&ez#A;4^uyb} zQ$9kkv~EW};JIAmaGwzmUY=m$d1cICzp6y17;L?E@4kpf)NQ^ibkv7dX+&HKyh#@*_3-b3Hs%WISs?u*-n%Y_zy#q5hOctzFQLf{D843CFI zD2CN0sRtLT%W7jDf0V#{P8ixz(j$mz-dZK^G#ft(a{HxF;)}@*b0`&BRhNVJQ@@|sxe#%y7fDTPDO%W70bL_U>SbC}gp*WZ1 z)F*>C_$+p(o^1whOwQoZNi*L-jjp3Sy|?{(ZgwAS!a98YCn?)SIT3y2GQg$?2_=?QlX^r;X)!jI+CFrP@yBnw&Uu`^QbLFd+)fC<=<^vl& zeI9C>uyQU%6!|8!SpDWsTxFU0c4yCs^TeRetD(z6~~CF*doBzl3KX!aH(!njF$`*_^%0YT2lpSA<=T z_kLNFn1N)xW@WLFhx1;4R!1$)ZJ0p*gdy#E!#Up9%JxR3dQJ{gSq#Q!;3Wr|4-md; ze2ECorZFN@Zt4s6_sv72eaz#*%r0}IpW1aLcYM%wa|bdu@%xpRxhx`0WX}R4atkh< zr3x2ikV6^d!A=;lMHv~bfWzAI1d-S+ zGK``MR!=8wd`3882YXy7=ZkfUiDFiJ>i|#^|BQzUyvLU;}T%y2|Ecqu9V zih<&5)!B&Juji!gPW}^i)rh9y_lo0>l38n<5>3-ya7Sg)TKT!;1x~7+=9c_&TgRy! z%Hlx64~j|jT*_HeFNdCcU$b`8dwkb1f|I{GzYY)Oj!1bL386rg z3EC_Ar_5Iv*~rJIuh)@GAo)Yz*N#1MvQF&Vv+j@+wMQk)TJlZSwfDPs{2j^D6QZh;6MDE9<>Vu?*1UdZ^th&sfQzd-h>4J{&EI^wEqN;RB+j#!b! z&aF2foA;)}bpL>kI9`yGH{_9%!F;7jt#$>K_}FUb_&Es1enG=hASpc9s!8gjHz#sA z&Xyuxlrocr2-Z#&>g>uVtV~sGm!7ysJzH`%9v*;;r0Y}Nl~oga>|fvvZhLB-eivL@ z@IEAtq0cbwrN!9)6wo39pZ*9rRzZ(M*ejnmelzzxh;ngYQA9DUO7O`rKQm%g1 z2i^bKLPOHxC+{`)Fxh|&9D`h2-9}%)a%>p5_CGqFlMIs~`=-XYE&<-iTkG_PPg%I> zFY=ZPtlAPAJ4EtbRGX)NPcJ3eaaJY%39R^QM1PzzSIlTX)#v>s<44ij@d;86y|QN< zZd>EOeGR;gN}jld(@0(&6=pEqHNcfzNU6p1!jyd4c+qF<$kKX?1>9OY&fx84JN zg7!payg6&*HyJ29SvMj`TrK*HYb>ZIjJI_%FT9?flE7WhUopv@gP9&#NK z2T0q@7F=_^I7dx;1QzT9Iy1jvXkiQbq|kc8x>R11eGe z4z7kRl;o#ZQ(97=gx%Cwt}*R2xpTGOS#q)Sq%PRh6R6fu*_x;@jjRc>b%kW6W&EAE zQhxtwL}YCvoJaYhS-Y>CkRBo%F!C;yabd>sqGmc`&)rSi=41Zhiy`@t?blG7h(@OI zk2hY@8GQz>W%;*V!U;Ot^%G}iRw1JB?GYW{&bN!?@`Ev(Ek1suUgj2oumlMInnv5p zHC+x&wDe(&ahRy{YmQlt%Ozy2+(gA^XmyEU)Pwr(xViLjWz-k8J}B=+2{7 z@Gr$x7TPnt1ItGV9QrP9KRYH{I@932J5qPdo~^G@Zo?W&UkJz4OTVa5EQu!}!)h!< zLe`fz8VM$dhk@_C`Y|Sr@r*>_qgP34{Bx?Jp7aEo<&~67%gDg`q-~Ss`ur7q3s5w4 zOBMnb7M)mN)R*lHQVILxDt8kQSc+f!^C~w?%vy2?slV|{3yy0i2FX;{PB!mW2h>(Y z3C~*#Ta4tc#bQbjX;xNqQ|LZVV@5qUqRc3VDr04Y1>!AfbF!VO%DDMRmpESY-60FU zV9YY2+hp}lpwmnBsX2v+Wkf$(W=MZ+mYKgZux8afLCe|Q`g|x38~A=#Or(UWl`)@Y zX+v`3;_^WMB592-;o87D0MrLh<#YJy0R!tEdyU@NAy(?8r9lklmeQ;CuG76i-qzFU z#w=I__Q@nU)PbVg8>JvC^#0|?Sph;gAV#k(8lt>gq;WbZp~{6&mv=Tx-w7gq9qz`6 zj67!LtbCtVgm#p9%~VBV0gi93N~q06Qr6G6C8?jX(Z;)@rA_DjCqC_NANPopYvK1y zQ8W9E$x7X}kvK}mX@gZ$#=u_Nvo~Gq%KOe^iP|V3+whHLQhvrEoJqoXl;FkuJD1D&dZAr zXg-@8z^xid?}1NLRJ_hRqF@0@B(q580#R2E(^Z>4@U9B-; zd*<9Vaq0`r+acWN7XZ)JJCMRBv#4NS&F;-vo2{Pf4{nwF9z3L1$q3;F&(AusRNXPQ z${~jegc(R(-FQU~U2zri-+z~F{?q?Qz$aNs(S7wn=}3c&F7t(7Q>82I5)UhxOUxP| z(%2$$=%i4M4ppPH*U=>wf9kpKO4^u=igz;0I+`NbEucDLVZ2Y|WEP}(J~bH)PiDaN z`Lw0?FA_>Q4p(>vJ61I-COkG90X4kHN$XRgVVoFl3nk|0&Cdo-S*@uUUl~q&?9i9G z`Axx=W|Hw*!0~uLg8f(2_z6rDE2d+s0>?+?sDBa?G-Gc<#&|SxG>O2~Qtp^gD=BUt z{AmC!eyW&1`=qL`Q%eV144$wh#XN7U7dJZVLYE$;3R2vH^NTqaY5XpzBw=di10vH$ zhHp&HKBqb&EyeNzsc6kwq(}#Cm2ZvU;=xCYxsfZyjbZ!lxhk!pQ?dQ&0-tMyw>n5$ zpa1c~T?R6Qk{>K5q^C!KLDBq2m2Z^`6#sUlA(Kph!Q0k@E~r5UdEcs$6#J~%W54>0 zHD7eR#kSWjJhr9v*p*t*sBRA&JJDuQlT&MF-DO|0f7HEcKC`!w2#ZCFdp~KiGI|s2 zTvq4Q#xIfK2Lv<$!v36i>o!GRC23Cp*vvl%+VSMQ!f0;_M_(_Z42UYvfaT{MgXiA1 zUEe5s`qA@nKG=nZM?Q9%yjgJ};`4}U*d68B?gvhj!1($aTHH1Yl*VDI?xC z>Z2=m^-j6$AB5s654Kvc5x=Is{nbDc84@7imhs{Vb{T(~r+F8H06151B=_U+b(mdy zOQ*xMWa_q4Q=O;0Zhn4PE+qKGwkL5%$>zt%W^0^R-J8YdNGhlYo-JIq;R}_g~435+3_`-AUJWtvEMy8cxf`Jcb}6gV>;s*F zJ1tpyO<>?&lW3%sJ9j6`LyEvcH;cwOKizTCW&_sSxTDK?D9aAOR`xVJCVbVkPe)=$ znvXirCX}+B@#(hws9NaK+WiI~cfanC7TD-+Ea2oJO1jw%_^~?5Y78?CCQQ8&mTgJf zDXYJ;ck);7+3JBCdKg%A0XaI2kD+;&`TEA8d+qSbq@zVy%X&>5_RzMekj}elF`;C< zp>7=;bB*g;FQVDuwaR3Pe!<^i89KcmT>SdtKD%~F{`=W8Vsr8y6q&tm5BTOg2K4pQ z!)BTX1qx4;D~6AbCtW^bgukS`y?aZRX-{oP!r;Nf-wJ{cl!~>V+xdbU;-O|wbZo(L zvv=#l&GC+g=&AB{aOC^!Ml&EU0v+#i&S_lXURX8)o`gEnXLm`4?wy38<|Zaz8f zoN4J4R5v&Oq&|GzRn$N^k}GX}sX(%m%I=mcdj6BO%~CQ|1(eo(PX!tGeE_Ih`vq3j z9Wr`QJRb#|M!?!w$>DfirJnJ8p=DLuo=)pZemHCF>R$||mEpxnNtT?mEC_cfXhy&Yo;c95-9a)04NbcHzu@%yi-X2OFs2wn#TNUG z^S;-=Xhsmx zu`e04=nUGu+M!GJaTmk`XbTHay%NqR)*|`bcXskfCnvUMcD?5Qv-qjzs{W(P!dkCl z?`<^!;nfNM)i_4IZ;|zi8QA9()D6jZdT;N2{bH%)etzNw)Tuda7maf0MOoasc109> zvnz$7ZPJcr*qqH74M=W2Swni4;n?DLhBkqZmJuW9l@v{;L>)=KeN(K#=gqf&LY>gF z2dOvMZ1i2B{2UP%JRoCzZMPrD`pD&Phq z`kwe*NLSEh9haF}r=ZRHsgjoM8(N%pOTD94s|LO+ZB#@b$wMBASvFO>83k6dD!>-n zGD(Jj%yA1>j~&M(*}zxHqF!I-l4(e1n%G#bODut}Hs^2PgK0*q#^Yl@x%tO>95ibq zo|`$KEnUm^j(}8v#phiLBDy{xC&0UZFMD0=C((G~)mSpX%$)V3D3O9l=<$Jl^_Oq4boBCbcD0(O$h2_>JR)LsI zM7Hw*E;{%`xf%IekqS;^kj%n_PT4s^Vtpz*`zH0O0V=ih2@2Tk=Q-H96gHLo{s9D7YTPazFx5U8jn`)~C1D&be!KNE zMftOd3w{P-$?|y(#j09b+>w7Wg&ewYdE_Omj7VrDa09Ub`z$c%>_LZ%b*y=szw#-~ zIP?PEy`QG5*^+OIO1@(%^4f*7bdxowhw^8FoN6m05B4DEQ9whIKI>VPJ+UxJ^K7mp za_@^`^3pWO+9g`64yi3!2gX)*uKBv(Dn#GC3W?y5wO;9pb9lg9bH5x=`qs5bI@Kdv z4%G++4(j9wHxtRBK}w2eEyo?E)VyKVN|Xzq%LhUdaYZuOcJ<{%v?*s~&ULLRMLrPSiXaR_Hxtk|J z$D(eY0JNhb9fUh*gJ=pqp1YDnoyrO;#*90D19!4q;JUFKGi$6MCuPN{RKxIp=oJ4UDsa1fG^uf zO$udr?0pswI&jmOxUO~OjkEFfuwa3?sv5|?TO3L5m}Y(pFO)zv;J(;RcrkvBE95o@ zRq_Lk7;I&?k!Lqfc6LVRLL>3R7Z1W?!xMFy4Kwm z{ju6%3pk(M50@M6nFl*`D~xv>n=wV737GBGVL6VfTrFU%HfP{?Xzf`xQ0`u8dI52s zRh_cfFha)&dQMk=$rJ~R-+nLW#XjBu7+~4Qw!ie-?I)Ix(xDM3)?&oCD0PjhM(dKD zzryHt&}ENT$H<;C)%~oEAatH8J#WQX?`{fkwd%bG1^SFUZw&m{h-{XhiwDQz-gYkw>jcCGGePYm zTdmvQ6D~Vk9|epATMNS>8w;x8JhvdI=SyZ4Tb-WalvBw2;YE$;$M0+k#`d4^R$Plr zB3m*dOA3TTyOc1SBUl0zj-_Mel9C5O6Lt>TX} zBb?gOC%&nGWnB5Ijbq?}REuTeovM|60|SQplDL-6_2r%GX5qH=hA|*a+B^5{Pa-|% z>r@FAYp%)XqiG_BHZTmbdu)a1MTxW0xqa~kZ^7T>DfePCDh#BPY*GSTrz@)Yfzq!MKXD~C;iYIcE*djZG$ zLW*7R{jjFa{(d8Y-*0+U4F%*X`Kk|uY_aQn7bHSycFoO*P^%4mY85GT(L5|Iey))nvaQ+ldxH?c_wm*2XzcKUJmWD?dfb>>H z)?f*FwaT6O$@%gibNq?cdL}Svkr*_7~Jssrq1T0_em(puR8iHcYsWu#)jH1f^qLcs?*(kW)qL!6u%05 zu?2ZZWMgmM6p3O^6>8ALeL-}esI2ZcJOR=kIvDw()Nq#w9>YsKy%@B3-A_En8>u^RI+k0 zaQCpet109vnFS3HB2Rf%1!QVyK)R|u5yTO_arlobMswRjgL0a>zy5rzAf?QiaOi$A z$rILL4m_5E6iLt4f?v$vWT0}px$(J!DF?1-heyA{xF137bIW|>_ zKt=~kNiVAAbRQG|Q9lEwNia}i{ovh5F6vzT<43Dgi;!E|IPHoFDzcPxFni_4q{p^Q zS`hx0fx}^+57@OUwa&&uX@UIRMFf-0wYw@?!;|L4)B_I-QaD<7*k*DN%vz489Eh$k z>CNEIBwnS{9NCoPB?3q2cw=$PA5|pEY-}Lhp(l9c3xBv*x@83B)VQ8c$4AUgFd(kO zLk;IxP*ILROyodory5$5Q1L4T0Ykg-%mOl0w!IwV&e<3j%forRL9$IJbv)&^j}&Xn^%8CbT0aVsaNGF3`o)}1{}%;C z>C=suE45RN3W|t+1@WHC3G@T?{K(>Z-a8_2Hy8h#T|Z;Rb#uQeNXl%o#P3({CFh$k zo2f9Jdu-JHRGC*FEWa1(^V|OdD+IT5XAB4BOdv&?gy1v{4kYs=N@B!=_a<}-{ zKPFGwWb9+t8vwY85m$hGT-W-aMu7i%;}}+HPqhdT-M_I(KiNM9QV!FhH@6jjuv3(J zZA4_IVvR?G+R8SyYziVaf_-x>(_a0gEd4=h-=_X8_NsWaex8%^se#tAEo55JYBQ*| zG~|4^#-5`3>Z0GTO@OZXD7U*+uN9itcNyRPu4nA_kJf1DAh@L&xS*q4ny~V-cPBcm z^Tc*)9XBK7Z`+DAiK3w#DK|J!W7xt~n={@a4BP-Ei)5b$?N?daKm0H?J~ua@_cc-@ zebQw4oAedvXxTeP!X!gYAj@Vg?gTQ|6lwUrwQ^-k*XDFUTj^|j)3oxu600wRb zh=HxX+{hm>NcYC1xZA}(MfFre25|=~#W8aNgPML0xA69!o#1lBIwm^E%3{&iZy z!AJ${9sCJnO1dY1Qj^^~yReQJ;(B~B{8m~a;As5(BM`2s z8b6;@H&GMK^b}KEP`~**a`$~r%c(7sZf{-@$5nXb2uokdgP#WHQt#$9RdYB~ObA^I zKf?~A&8|<-Q*z!ssjX-3i?##=5h_Fi8iqHuz;TmIcFr0BhwXQ8_*6zs#5t=reQ7fF z0d7ds?%8Qk80c-nJ(ji|z59mD=V~v7HN69Ld)dB^yS9z^!LkmeQ&h5?ON$qs3fLlX zp3Xl`AMJ1jM%)|p`OUyP7=!eIK$L$ zJ?Vidqy%8JNs}9Q+HzNa@*^9b-XM5J0-T=hd|dkQH<9fs(MNkHW7%Kbm08@P#y{MGzkP|71MZexyG*zP1$m(* z+;u@`hna}tHq_78y7`MUiLJ$Za)*5-gZTTK4$B0`(eTHfnC$59I>WA2Y0)tOEOKiU;fP6mDdsy9}GwXf%DAqysKu~Q)hE~ z;Un9_5;ex>tV)-jK*VyBoX;iF@FXL*^fHpdu2W$ttvCL;cp-P9&-KHOGimjD^Xc6(3KH_LCCJX9_uPGxc7EV|-~H(4FYt_*j;vfW*}oZWEF3S_Tr6 zoqoa!s?;ddAE!FMdTP}m8CBU9dTA|ytLz$h=p#TNCcs;X*WPBkU~9x3+NC?Il7 zzrr+Vtgn9jbZ%4@j|-<7_K5tM~Be_5;vg89jPzv~T8 zJit#L7I&2|@OhZ=@$|9FXFnU6B_@cRb?dBCeSBLX_qf^pMcU(BJOGwa?>sSF_~`eI z8hsdd7A4G6-fMtZ-Jbf(jJUUFvGN%J>%RrIF(H|(cSV=;pJLmbBHI+DyK{JBvgv=M z+=Ug=*{_tHQwTN=^#~7YsuV?ad?8yu!^gMxSLX=ufg4V=pU0G`5m+8dTAr}ZW*L&3 zf%?yJb~`+|$o$OqRqBcgSPgI_>P)a!O2_8GfQICkG9Xxt!8{*P!D=F zXSWr#dKqTm4Hpp`o0soyN$_Oq4E;@KL|^~7e=LIDhFUPcpJOp0e(~Y12}@H_n$xQQ zDkn|?g8dvaJ?Tw?t44?PjS_x-P;FR2Na-&T1r}(cfY~V}UTwAT-{`G7d1}a@KJM_^_`ZN{!_WFj*&)8_*?f`&I@97Y zmMOl!*Ggi%Om5HDs?7%Dn)#CqFom#U{OkpFz(=jl6P8$KKbwHE?#algRR#irQ2>2s zOw~zB3&l}h2Hor z_z}G;q3Lxo+Y~*F4EcGcrOgiB2VldrigfyG1;lVbJ>yGU-MU7qg1*dKJ>jo{liK{J zC`xT@%2~;@PSqJBpcPt9Y2^l@+8Sje`U}ZRPSoUl$^+VqCKTm0mto>NczY&Toqb6# z(dApxL;wLK#?8jTzu_&nv>XOVc9cuB(Fyl!qI;Y~VIpH{A-9&5cbz(=|URbVeiR;pBsv^*)GoQkd6Wv6B^Gp4`XE{!U69D^Oo>djvc}$& z8C9H@QDlc)#`35xOR!kgtjYEMuCLjE_1S5e(q4ffQv#vZjgjVX%1=x39# z!Dxz~`WAD))g9cO^4GkV@k=1PfZ=8&VzziPIMdQU#j#uUX5V#gI}*ICmJn{hp9Va1 zr%V9pi8(9$eGbX$spt-kBUfC^)cBo)#a|@UA z>E5DH##d`gDP1#$g!ZwZ?R6tIi_N6NSNIL?744<&+J|am(F04}uT%>xAI}Gr@10IF z>be%SErgXNZz*Rzhb{=+%vRIm@lA-A?!F+s&10q#Hh06x9g_Vrgx@IM+MD06@aLGC zJf&_(Zhubk-@38lCbjmT#jgd#cH_sS@PpCvZXzfR5RLQBonRE0+pbg9u=w z=6j*X)ow#oxLagDy2>v3OBX-U78Cd9oUz)-^dpDBg*UCfzFb3hg*(5!5jyhaIAll9 z|8H>IL!R&BylFS|uP-+^XkZICF*(}1x}XJ)7w7MI9CVCoTwg!2=cKzy+_i3F^!naI ziURJVF_Bi3j&<4_iGZcox~(dno1zIKerDu6#KPjRK}7lL+&iee(@jzFsB#K3za8f2 zkD(!#g}ta*g%vvk=J)DlGUJ+r1nqjj*u=%YGNB}^Mt>6ZE}6SUK^8Qm@gOnuOJ~vD z%mK`&y`rLEPsRq2zg26@fGjh|Xv1_whRj24!Sffy@=M&d&#BtPru?WqBY_RiVGAaP_H)H|onJK3)VY(^8xX12mr$x})42CkFFeviyen6OOY6-iyw&aX zo9cNkr19|V+f0p3oWp!W<=%RQx2xHXRXpVKJA*9rb$B81kjW%EehIhXDmrqZlU&1_ z;dBO(nB_gCyBI__{h_(__1~W3T$-oxt?PB1ygcw)!pB{06RHb z5TL36y#y=p0sJoEse!IGkd#R@%u1On<4sA&7P*~bP`+Sztm)RNt7Z^zZ1Ta7_i7!( zYRzOmU18?29M0#cdXK?j<9D{QTq&JAPS{KEYwT-Z%%11p#^kx>b)^`2_z14#$G*xC zo`Q&$4-|Lt^;Gw{it-tod*zlNQ(-DjxFNazrbK=G2clUvsVM1q%fU$i=If(n^0j&h z{A{zhvfvg+`jeonFD5*dG=pBB%ir`pUwYa0i%#`u*#{O$6>;WrSH!eEky{V6*>YVI ziB{f&&`|Q_89WK!I;w6rEKikrc;UyNPJ5kHDZ@xBrYltP5#0xfX>Gkfy>XZ@QtZ}} zUVlrXzyeJ?O>J#44=6Dtih>1*r%7tFi+o`&`&NfTZki5DmnbrRte;dyx*bEiJl8bi zR?A=K+)=yR6Ng*r~w?04B{t<-Bs+Zfw7DR(8x%G&J&*vb%mD^`Brt?OaiAD`&i( z#^SYYYm#1Kt4&&0c>8@u6=Dd_czpZWgRbn{3Gr)o03og>U~X$Tbe#CuJAb6Zg~`(p zJAOUI0`#PZnlW^$_(!uX8}70sa>R8zEOoSUJ!Xd5x+6x6myX$W<2bp5fyVrMV(cwf zS7tH9K?(I?>yKt335M&u(>0{jf#kY|ww?s(df)5J5uHN;Eh{6UciPSqT@f$uXvsT? z!&q3g_kGVoD?tBj=nV+4_iI^?1@Q#{XaxFMnDQc7hx+q=l4WF{nkyM+pij)PWAlyWt>~wY0TmO zKps>C9OrTxLUi4g2Fr7#hpX_dv1CK|FT`5xPA<-dL&nv`?@4EhMPcD%Ih_DHIuYvSd1Y2)REJaglc~tn2{6EF60imhAIw>e;fVsa+e*!>) z1yRk8RPjy5S4=)2@njkJO{|-f;EZ-UvbVp|W8!;4qQzD0b;6!T2(^}L{vsMi`K?h6 zUjx|*QyWx zq|*`+NY$Yb~cA+p&? z{U0J&=GhJNsK}Matwq5%nNm$swq!A^@m+kJ0c*=|n9y#OLY?bB{lUn_>7FX^o15gg zOOrwHeWIVC>kVGdhw6h04%!m416d5%74UC%ilthvg==<8pA9D~)gvL6fLcUTd^19# zFwUE&5^(urxb*O8P8#qp7l`uNzo?4G!;)>WA4+LFoCDX!@oJOcR2kWr7zJP+$@nND zU%a>GUmCW*G4WN%zGcRbr`y6ldN!l$Lfh+F3NV*TqF`0Fn)_54zlAHdZ<_ilvF$Fm ze>EwOb!Tey3Xi{8l=t zU+iLl0Z{kn_C1b>(?w004Vcan{=^AWNX2jC9=4`EI-!~x>l1of-1_bA^;Dn;Tv&=9 z7s&tC+z_M#8z?xrb`)u&TcNk7oS68)Knv5WC@_krA$&J@?YS}`i&+(9n60+*A89ORQp_9IF!9~ z?d!^nF0RpDTcA|feP)@yv7Drb#_Y`HWU`fe?Au9_+G-$kQW-wEJk3nzpu4#>DU&=z zUv_h8{yD`LK&}%5C{fnO|6xuPMJ6k$aaVjNI~ww`IZ3Hq&gTnOI0@)q!nu$83mNY& zpDwl43oQ8-W$dI^>;#x8IP3BvgN3hy5;c{x3RH_9d=lbx&3e~r>d*i5Y7sw#-%wewz2twafpng5*C1x1oEIgf3Ym<2x97iLLNS zinnd^vRgb!3gh2o zo|mv+xt*w4rJ6s_Pu4p6+L%x`mqG28xtRTUCgwfS_jW+Wc@$`VbE%j~Sq{mN^?-{0%R4^(B9)HL?a4ImK98YXpin$ukP)UJN!0X?&@59dZnS6=(qjN z)44dZ@?Sj^)3s)DihU}qKiPDRZ+;ZBkBh|{rtBxZI^Y152|^zQZ*+%uh&}dY(EC#0 zEN|ahbRHXF&&3n1(l`z9gQY_FYju?KK19)Ze(AcrQMczQvEyR#bW^Kp>#Z-MD64pS zm*V>JLx{$kc)>}xB>BfMt8n=x5{*8ABf`0E6_%fOc6ORVw6c(R62(N&~Z}>jFz;o#>lx%Qy>W|k<8V~T96+4vJDjp#XhLLxFvKc*XnC@8w zYTayF^*Usd2PQ>M$DJ3epmEHESIduJgQPCBj`@p8RW-ebm0CSEMrz0MbO7?}t#%i1 zw(55@%R9j5onKtfV0IDPOjN8onW{Za9o`$f14!rq-DXLUM!=r61ygL&w>;%mO-P@< zL-TWloDB6-SU2a9cmAuvw8ya3gyWD@|Dx5&OMCOIDsiKk-NHS516jZK&7g68x3D)!}x^0+O~YHn|7<nlvf%N7zbT!# zjM!{7`EDO%aZiab@ij0zw8BQw)2sRU_=BIcN?qq^NxkvRkA*&!MM~H^W=Zv8!fA*J@K)JiO`)8qfHY{&5kr=*nf(wVsfbyEoqjXPUOc{U+xi8fmg!1F7G ztGTKBF#FbW1E*mNCGi$F08GsyKttr72c?{B+?1OPf{Fl?YhFOtkwmu@Vy=*#^M}1sM!EW?08S5^kTQr*_-An4PHMYH>28Qf{UruHzOMA-`<)0`gKl`*Wzr((UR!7WpuI=@SmYH)yJHa9c6TVFhB=*Y zi@pmTvd@)GT{T^wT4vahJu-`X;1*IzaOO|92KDQ}4t*MZ2hlIz-R^RW6TJI^ zDRM_&>9{X|%Va0uVmq!|`1jcNkKIwyg&MjU*;ngxO;-3!*H>_FaSj>ZvF9!=t(Q0l$?J*k<`1&( z#PSXYk8uy0Q@itLSDqpSP@H*~;x7bCRH|7m2~EvTLyEX0(eKic_c(^jYn4J+viv*DzibD1Rcn=o{G?|tL`CK!c zwCy*v`w|QZ11UG#b9hDh^dLM!MEUacath!u296BuWTQucmDkb_j}CqI*-Y+UIdHi; z2suY@^MoB-g8O*ew1-XVb|__eAXGjUdn3(EyAn!WO+rwdOB^{npM=e5)XJlf@5CDY-2QG?zRxs!@B75d z5bpFE^r<$W306?qvMeu%IJy!?eJi@lK~j-Yo?oDSDA5-pcYGAY-AqJaD}Oo>)Wi0* zZ%SAVRB@+3qQuo zb&I%)nSkhjel_TO)C)n)+#z`OjYNMia-;n$5h6V3Zkp;SHF4!2|2;LlgX>qsKm~HL zG*nXa^&o?Xi|yxmhtA>+iWH9Nl-so3>ouEQ`YPDUJ~k z)cOa}n~JKKN9UhR%6%?PX2R}2QoOSL&Je?@q-72-C4cLv9trK+&z}g^{g_ukC3K}I zQ}LkL*SsI=@~r7nabgN;%=k=G)}Ou(B5@rW#xHR zjy1_?gXtgIADTZrm~31$)s}N#>p)?ArUC!0_$D#XA4Sal#|IE$RZs<8P`@AzX3~_W z7E5b#mCGs+%GB#;AbRRMC_ooChGK5mMme^T|BTiEJ!E$6?7q+o%WrW7l_|6t*rP9J zklgEP8dY*5+DKpCa^~?a_NI`{}HG$+V0wM>i(#0 zR;^67cQ9CVUPLBr*GAw<=rbHSo0^y`yPb9X^07>5w2eS#d+uz6rCwLNL7Q~9WRyld zIib_9T7gX(g5K-Q%YnwLj==g3-1=FE_~m_|8cUOT5`Doy^72+u2{XN5u^4cT<9S&T zaxQ|xg{wQ_G;P=9@FQ@!u9n5I=fFq?w#;oWk!4uMOzCB9iztb^nL~yBOQ?W9apno7@$WVRUQ8pfC+BNBrWwMNXVtlH zW6V%~h<&`XGdx><*);k4;pgIHDLaQxM=#IUGwY5sd~F?`dbFoTI8@fn*}4Pns=Iy* zEJ3aQZK*GHM{}iok&CjR>DZMX{5n1LPr&OdJfK2_Cnh+22GkP1n*+`(U=_IX)pNCQ z_rD20b!{honQY=)zOURbcBUL^z zxI&;+mrj8!ejnlJH$%FHOdx8ei*sNtNCEHvDzN9f;F`~KIMcd}f`rkt&|=WYRnc7` z=C&(jMM4bEA%xIzisX zh)dn$?<^k4v)WB4=Vt%(Y+(^F0t+$k1J~)gsss2b$_WC!6)NwTikgP4%aoUCzZ+-2 zGiBTu!+{g9!A;Ux$S!82ntg`-I&z<5Oy)u-U{Nj^GRTqpi(dkspq%D12-+bqYs!j0 zMSY7fSn5)Ub1Yqlo*VU!s!X-ocD+?ok5&S(QR#>v;2bsHfzk|zd{zxTm&LG68#D=i3ndIW=nfL&uX}oy!t_RL}OL6{*?DERgg8q(QA158X~_;7~?a@ zOT^f&+IZy-=TsXCd5Gzdb-ApDNX{NPZ zQl6XpcC-F!Y21ASvOWrdnACa)lHS32I}IO=7d2KnlsOI@MK%J0pC*KXqz~FZmuc!p z_q!X~hBCeSS?i-)OkNfGm&kCZE$fpjQ#9Xp06jYO#6Gv4h%x;kENlg#frh(&TS`|AlKm zIzz%PhK|Yl)w8h1R@osBeY0kjHa=AODnb&a%Z%yiKSwR#<(Oq+9v#H7* z)i)Eig=29xINh6Iet)64DIK>&`NgT-2{!}iBZ;NS%f9Yof|BLStI0-xag=9X3p-+* z7VLgG4r$B8#%R0lQxgP+@U(y4m-Ya$!&0-u!b*$CBlL*N_)r)431gg%lYXtq`~8!c zIz9za3ST#ag#_$CQRCk;@H;Ua6G2*J$sPXyI0_>pFTsvjVZ@EXG>3FaEn<&vO>Yyl zYmrx&x-qDX+c0+)Hgk z8Ig)ek3v}&^qnU=nbu@vCCsKqcYLq2cYMz?kD=#R$1O51O43}R4^V}!kNLoNNC<9d z1d_UcrB5b4K6Pz_+U|VVH$xAX$!~6E>rK$Bz9!ZB;>BrluGI6~2Im(JESs3yC0z(k z$7>pbK<mAL@WV688{u8+TcIxlfCl3A9CPv>@GU4b4|3ZNt!;cgoh8*cx; z5T*4+Y|MH|cUqysfpG*M0jbB#F43C*pr`-}_}THavry~?VrSXAoJKe}qYEVXwn(WsIdKzkC<7By`A>J|5~10EA)I|_w)Jt3GWIa zA;_YisUY=#&8(i{v2KL_xnit6d>DG$Si7QGx$Z?+q*Ho{2ssbl}=eYRvYwMnFS zUBZI?_omMU3q|(iW+K=0g0%nBgb8;de1#n5oD|sV{`Hf=)>u$&GiC(dMNX<;@$A1@ zHmHX3E>4s>!8y-MiIDy8C846)>`AyN8n{GL0R$YRm5))buIvfeJxEv$+I<-Zc9H*q z{QBGZjk6QUqmmU%o&(28njbtklXU|RQ zQp~O>DwvaiC9K+m_4I`+&aUH@UoMep8}ON@KfQ=KewowliIFKYJr!O(TX~!qem*A} zgxX(ear(&qhIh`Lktb1k$RfLaqQ#J zoxUU1MvjaF*RS^<2-}>k>gWkZUqt8J1ksh-&$i(+}{N)w2PJl!kXk((K4^62`|F z&a^7?NaFdFk4HTYDYbT{-?Rv57Y#gZz2*NNUM(Qa+ZK<_*jXR-d60Y&4dG*2#NldT zcF&9uH}vhA;A%ugJ2umVQ;uQGkuL&!8ZLGq0p-g_k++(m#DMp^IJ=^LbW|kQj%b#b z-q`wLgC)Q+G+wQc)X!M#FkN~L!v>D_Apv9Xxu3(1sLMaMcUMf-&e|xQ4xu6S;cKM& zf(WOPBRh-cHvAgGQVn~Bay3fFc0vl>nune@YB*pecF;XBHv$r|p01a8igH&HoupMC z2V0_2C7DIXqB17TSENO}2ca@4c^OPdt}tijI5b^)LH zassL??I%I!uddrtvTt!sKzloBO+|%jZ+&d=%xH_$2vX5D_YZOCiXK<;Zv! zrfHqlqq<1p(9$fg+AJW^cGbp%3SeJqUCHAP-AxzoguXvbG`gvD+7PUu+UX*k9Er94Zg_F zguNAQKENhGt;+2WaGC}F?4&WijY6lgBuA_XXr@iTo*U85%yl|{zUY#YinHhj@w-}eY3wI8$kVj~6 zT?Fit)b$xOUK!cS`~n2}iCwurCkqjdx85Jz72g)PohVmmL?gx+LO`|QJH~qG)I%GS zA!Zo1u_!YR5B$L<8H5^@riY-_T`xUY%6zLMH`LCBf&Es3zCGpvZ+x2!3JuD=nYO6* z=IpBXxDw({mCR&>E}z08*jxf@b4_QkY*vDlgp49v;WJK{v+TR_S0Rf?Q|{ZQ@&SYR z)6W!Tc7TAU?X0hRt7;^?2&S1E@^|z;W87>2>JENWs*u;uH@b^8nb@c+--!L%QNF~L zTxd)Z%VMhRWl87B7)q~bsv`=XDqrT!ET?W%k`c|3RRlC1|io4yIoK5jWmy&jRu)c zVyqgRaxHdL*p{EIAxP9&hdd?n1a9wIx7nc$_aHe+JN&?+0<3h@fKLHzJ znZ1_te%=5j4*M>QDe@IiqISBqMiUj*T~hY%6^%&vY4HPn4pg(D%KDjXf_?b_Wvf(+ zB+8Coe?18Z_9F-+wq&FxU6#=0AFY|{8{`_#?opksF_=PzHOFBVf8Nj0TV=f&P~z$Cgwt-x z3FM;o`0#Jsx!kLCH{~!pH;)7wiYWYfQhpza{`Gy-wHoM`q{e>AWku3M!DeSS(*znW z$b^~u?Lp=BguRFm-ga|{!h~K?8?2wGG|c5v1J3GjV7#1kiJmo2d7ABO2{%!@L_E}R zz;D(Nm7XLhU{X&FnwTP*?}6Y0JTKzNe>t-6cVp%`>d&p=Qkb)Ond>?}RN?HIAG|)l zYRSEX9l|;PA;n8^whifnOrQziMbWdSCpWjr??*URsZ-*b)c2;4bFM8&bqeMsXlvwJ z=5^iT%46F=21PeWMk)bzxn?@UiaJ@kA~~PShwaPUtnkv`@wL1yyT-*7tW&{NhMjQw z!J$lv&zOV0=ay(IsbZ?)X7% zWny8|=8a_UT<;!f9(ieIzN}v`Gk(=hj-bAr%c$dcF+EAk>w^A)4Ha)z#oi?+WUT(+ zABpIpO%FgH)_nwd8|4Ztzi6V4h8bESP+Bj>x}sok5T!vXB`LoSI48B$fss; z0kWbAo)pOW=l~tBwB*&x%1%5GIBUhh&BpZ5O7&a64eeeVsqRC{KP6XMljyfwDWqY! znj* z|1ICxs^yi|a8G5E7H7eJ{7ku5^jf#?iP?F3-9AsB)(gfc0;=gj`XaQPe%P?7QSRJ| zTobj7bjzOmSqcOu z-%OEUJK|A-r<8J_`-_pI$iR(1opW-Th!L*ZDdLa;&YHfuIl=kaUtIE2(vFAvOAgVW zrimHuqG&te1Mv!u4sf-hNm60{<^_!~mVZ|C&GPD2*4@&N7c%btF3toSIo$0C0SPc) zOYNR$w7O;29h5H!b;42a5a*sYC8M~g_ic_oD-xceWrQdRb>rzwh8>T6UbA@Md7qI= zDUj5DEnM0VMK$)9?|Yc{9Wdq2>?1dIIGOf%i0<;nL>sX{>EM!wk+U_S+ZfO5EtWSo zAGK40Z|+HVX#*qnKpGt;?&jjtQ8nt#V5C-mbQ0|x3%c2^u-r8JE^G}k?4bLEY%1r? zs{bSbOpLrDu#r~DGIP5E0=dNYNHW>;V_x`ZbR0+(w$SG#X*~6h7y_Q{mA=;9tcpBP zDx?v-0T`meFERPM;Q2F*cv{K5&gQRLHbthVlfr$s@(;W#G&F`1P62(3Fd|@$(Au0~Pim1uL3aWa)6Yot zi7W}G=uE#k)^~mV=k3Ss{Yu8+vLGnNd7LMAQdHQt^mlt_CokYYc*;)bViV}DV+((! zUp;mosm{>cww=`f<+)Nxkl~=rvx6?m!6IUNB2y}8DDk3H5WX0&*I6s7({`?xX%Nk6 z=pHo>_{N3#EURgVtdHDcQG!#9XMRCb>45J-od>JjlNI-9ilb{wI6dXmIg|#PMI>@X#p{NKf`~~ zM~tBGKdnH{JIjb%)72i%B`d_LM21^j$F*kmuXo4@pv-`e^Au(N`6Z_>686uW3}g2R zuY<&|ROgkb??;6vmSY?I+)|sng@OyE8%<}LW(@^G=@UIn*?*)00Pn2CKd;Fc2k#Ry zR;08grbd6GyM8S3e7s=?W~T|qdq5NrZ(6&6N1>P`KeL!f(fQh8GSHctLkH9fFieq5_B;h`%(L}d!Q{2TR@>0_SC!eKB`34Upia>zF>n=at>r**B4-I zzJUW-5>7Q1Q6#`>SQ+~(Ef6pzdo|`@co$ic@8b1tU1D#8&@*KceGx(A>RAxM-;{Wttz~{J!7Y!C6D%Gai z6$qtutfrc7j{p&T`F%tgJisOQ%FStKqhb4aqHT^UnUIi?THTHN@`_{^A3ot`4>eaC zS?Qf1v3x(Y!o;^-4g}QXqek9dNFZ-9%_MnJ&&==Vv}6HGOcl7j=p;ozJ(VY0q2|Pj zjwIC=QF*gW6V-K{hD8;gc)|LQPNN6>m3)_}mGBpzEpc5VmKz zXL#DC0v@gkFh2kRd{o=7qmw(FV!ST6*`1>t$j4dGNwY9zMQf(yt#C!~$%&}n9;AuT z^f$u8^xGJNL>@uOYNL?!g?_wn4MF~c(unYM;h`f zFFq&j0M|_O{95X62G4cbsl+n>OeWj?`+3c2W*O}SS_96}c5VcAr1oBb^YNAO7}@DZ z6xcdh5(AQdMZ{@~x$WI@f#Rd4?!$vUw2_u3nb;HY1#d(aZ(+U_vl)}{ie;c;u#yVC@)nz>$P@cK2Ml_-vD&AGUpGPYDKPto01 zq)Kka9aWNBE)sab=A=ncj*0c}PPEb1yTPq@`n5 zpZQiE<^f0U)xBa_Mn*KLwqNPM981sBFGs2&f16@C37DCIk*6tKJ!^!Z)B4wY?jC(P zA1Hbsc(hY=o^DWKJ^V;t^2L&{o4(Ksc*1Alkx>foI-^Q0e{K{mpEsSYhf9)&fVH9Y z@-Vi>896VpJ%mWm6k;5Q9co+z=E3DNTZBv<-9Wmfl&BUDyS~Yrg;0!t zoe>=Sd)~qL3)M#nFP~opfuORe(<`{TZ&-|xbl}mPn%i;o6Xf`sh5ksa!*snJe< zmb^{&pC2AixG94Mn%<3*{_e43C!*FG^xmKUyw+sQcAuy;nX2T2V`JP-bcp!|(FxboBbkl#Zlw$E!JPtjBxE)?*9jfAzM; zWB)D9XPBOxw*=nW_Cgdm%o1dklM z2=&=^?WCkeUZq{k#WgyP94TtM>UPv0`9_hKU=k=wU1khJ6ByW+t|a|#7V#WSVpSmCBkV+6Fg>OkfzA)aCOhBJaU90mi`avZ_3+oX{)7{on~g%Xyge zC^Y-1#W)Amhn@1a6G_q?T3*`vx*!6U$h!BnFX(9bMsf8`rb_FKf%ab6qa|;Ykeh7~~w@&6N28cLe8&$K#W;ZzUyGzQs-( zmdr2kx`W=e;vvYHMGns-U*BYtP+Fq2##SVSt=E1$N=%{D38>46CusC>(Os75Ns#Hp009Qo0wbUa*@>}k7r`j39z>&%`r zqbJMIC;>0S)Wb_Auy;Cgw?zHML2?w3_MINgoPab|jF9b$_vn&e5AJ^c_*LZ8fOJ5G zOmA?fCIE@xlW={J@Rb0|+;pS8&xhr)>HCZ(TQ=M6cK(#}tzv08NsBbxUTPMQJ)KsA z5n!do^hY!cd4CZd%gCdCkPcjTO$5Kgdz5bcmdpE;@t|F13Qm|DK~A2?=yutAS7uVO zv@}n42cffmVPtd+En?=qt2pfNUR$(KR~0|=E*12tml<$p%jVH5k}89y^0}_779LD; zAQF8ZaB-x_*00Y#dgp7EFCnW-(jGV45p@plk_!CeGI7acX9+hba^dI(;?mU5tp+CE zpXQkDxbhb~ne0DB8O>bH!SAxmz5$Zs(`s%K2^v?v8`M*W!w}BOrav|sB|uZTeKU=S zwYH0oU$)fDSs5-Umn?`j71a0xNp9QC&WQC%iTM=NZpqjV^pp{)3%R^l{(MevI`jze zYZCb0iScQK8@QSF=r%fTSHdfPn&aBA)p{M@I zN<@O8+u@HC^lY-YAlUWF2?)bY>(E>=yJC64X;Aw|9hP34EC)s@c{5 zuLN6saH1vPk1|(<`J_MXPJaRoZP_+yxUlfhbmAO5su&{BbT?&(Y$7t^v3sB^Xg>1X z6^#=QyCVeTQ@r3UHf8vro%Ofje9hdZ6?{k4BAWyySU+9B)>mf|+dW(W|4t)_yziTb zbf8&W&a>kRV-ULjzA!%L8)ss2FCDUvP(E=POCTF{hCwlCfgO^_dmEJ?1@Q5m zMH5)0FOPBLC1~7;7y(tT&1s1 zlK|?Y!;Kq4MA5V5e?513uaCXpzP|J8uD*V^WGay#k*^lsILH3Aju{CX8(z%kFxhC^ zwIme$F7$kSS4T2fWYCs*iH9^szGk;17D@*en4hZruXA_Rf%r57dm2(NUDje0F1wxj z<02f?-mcu>tk!WL$}RLcC2USno!{}$E5u!B~b8+{eih%JoiekR&AQ|ULhX5?1t6}iJ%B$ozJ9Bvcy=3r? zE08&_0kYi&w%77Sr2_XtVe_{5sMT2=g(xycRliYL;Gh9GZjhB=FW_U+lbb@Tu4Sm~ zd$Ha;jU>QQ$!Fs6`Bj|M!>WM$WA*&ELnDV^a~pH#NpC0cJpq1Jp}TX3gu+y&L2khD zjPc<|lv!{!d4B2v>_?nOAn`PIF3WPs>~-6-b9j*RBy!HsMA=yQ(30m{sg2c-Hu$b5px zLZBUp>&X?#QHM{;@Fa&yNHDl99h(q>4^Y`cdAA!ozqnLL3nG-w-V?i0=Tb0s{;n} z3;ok!%ue3)MJ)B?!Do4xn2#LJ$f6bJJTt0?8mU)ySqQG9r`je+3k*7cd7j_u7G2Ej z;sSzS$6{mV;=Y82y6C=eov||8r-P4 zzT=5G>w-Ah;kYsbAUk_m9znI_nKkc3QJ6qct$IV4m z2Q?n*(4*9>hN3kbQ;#w2sUg+GSQL%WhGf{ZIGt9`33YDQCFQ&A_W;J@>LO_}9N=(DWJ?aOp=E7{F@^la zUS?l<5Hf{>8X+C)GGRktNNIuROGA6ff{4wFEt3{)@tJ@z&riJkVR}`3a&>)w2Y8T8 zS^c`dJ)S&SPD3@0I(y=AB_o@xc^uAvJg^)gq;_rT0 z&e$8@d}F=Mf){;y`&~^0H-ECCGAVL~lSsXQLBB1HQxU-Abv!K#YE_O`uju+FX;c!v z_G)1a&?1pSjZEc=Zv(5|(a@aKa8WB_uowPQp9TRgyKS5m2oiIjEXgP?+JESRZE~Lp zJfnCWG_ufd_? zk4$IfKdc$IF3t&yxdmQj$!eSqV14wv6^u$@wHoe*Bsw%U;({V-qm)c zHTVa)f48~Rc9|29JfVwXL%qF}Lu5aB*F-$d$|8XcN5qDtQl%H>M=RPzCb@Ui%uo`> z$Ux;n?)3u6I{1KQ{Zk+arOYU(Un39r^oP|BDVl-cTRxiv-pswkLlEH(x^mo-WyU^q z!oe1go32^lw2pyJ$T^3S*1Em!j;MgcK)^XW;Zo4@j#D4cvc@WA#$=d2APF1Q=VVPe z&Q&n;$04iU&a>^EdDLPzVa;%7z1Ml9op;?#T&UHk9M=mpr}Nq=JbHnE&WgvDROn23 zCPRB_ZiTtmWn8a7+Z?Ft1Y0q2nnl4tLmT7rF^MkX{~kE@@uG=3y8gzH77cLMV4Cl>pd>Cv${DRB5NEQmSh3t>UH{>r{DY(myK4!rH#Solf)d zVmvtI(KXg5DiHr3Zw+>r{fAx&aj%Og>`n7tW9ff(3h`B-9&S4t^PHjF8sOPDS+(t^ z+_u{x{MWD(q_w#$wzG(cX^T*g$Hta!sNm}3E|5BH#|rUO?6e5yX0#?``rj-6yLpk{vJqf zD;9aMIv&8@)`zM+#NVI&H^%q(#YP6Jo5WD_j$r{+@JY*4dS=!HX(fu0j9rSp544z} z-nh=aMkB)*Maho7>w9@S>+wT$qz13VtG$h=KMU?fG=9ds4IB$i)ejTE7-#3To@m1T$>^6t#=Ki>1xAOfv%D;`B+f^ITL6*?48ZlmB@wv^YbZkX@fsqxR(1k ze5VakB|3M3qMTtpc<34sClmo%zZ~-QP4hwa^8Oseq;#;pa&qDXZNKA!Zl_N6r3dU; znmCwpLv>o6pTmsPl(9681(FBt2qd6j)>=#vHSM+R#QI*^NcpIeBk!x!Uu0H7KyBU`rE zQA0JRKB6tQJ|ei6(Zk>EmP19+{DuaqTk?9#Xv}}xFsDL5%(yeNw@)h_SO#>zsJD-F zr;*U}`Lvb6q3Odcb=-MUj9&luH1(D%+bqSxW@>NahrBP=d z<5sJ-?79uV0y5@~QGmWMHgmhfh6_*6m>#zD5t0L-F7Vadim22VmX~9aPm?OyJBCOZ zv*wwd`F-QLS2XD@E$OlP3<9uhXTspTkAY4K2L~n({Ti?{{{jomZ-@vZ1?0o3h94db zdnbsRE9UaW2whv5Lm9zarHa%eRlq_&xuFEZd*oN@8zJ(ta&|BgSG*y8t#|#55>0A* zp7f>y;V1U21^!#vg@te9u?|>zRv|Vj@Yb(^`_QqHUOca?jbU0qoBZu$K?R_d*Ym2b zX~v{Mb7z6aeCu4Swus6;406{N#$46+)V?j6xd3UBc^;8(NayNt-)bR9os|5Nk zjO6FV0NzFEIjr?-UM*;kDecN;2Zb^_lE7dqIzIP$eU8d$D-MyJ5U4fKnRq zGBxpo0brSMaO9b^9?vPJu&h7JXm31uJ#+~w+mOl;NYlHNf$6k8&hR_MHS*tUUo;3Q z{f?=w5zLtl$eWXtA$3xp3_`sjSY!DJ$Q2f?VB9D}C!eW}U0zPXR?}bdh5r8YAHes< zgfab7%kN{kvRkfJBB@J*$a9@{j1^@pK;oQVoKmn;o(;o_N4VCKBVqZyQ!`Q5B3(ra z9a^g`NQBKS%tv`X_Dn9nSo{fkj9B!G^>SD$Dh(u>Q<^}YWQ%J=Brn-k-1(5^(xYVw zIs(c1{TULQfuFf*GoJ(DiB3Sm)`=IxVO_C;7(PI@0El6ouhC4P>&`=z9i>CtKHjZi z8tSrO?DO#m02{x125}u#;G7_~fNH_)lbxE|)N2iXL3viXc1=dZFU%8k3w#QH)^q@9 zql}(P{d3}shkf8}yk_%qB7J(n=fe~Jqpv{LexKUHDpiLUn$Ar)@eYkp?`#Z-N^9U6 zfA(fLI6T>(4;?5J-3dgy|etzQOtu@(6b`ZWtsa$iK`T5w4RuV%nwrp zTPNsd_wd_ty|TT4k>LR&0Q~|$eX@&x9IQiJ&dvp$15LK3TE+IXEDO{QHCrT1AoFgA zUK}Rh*-#*}(}hRj{14QDHX?vAK1Qhl@{o{KNRabyTs4fr!1b|LP$?E;dP4&?v_h3*SEb zAkC$WK0zG}F%+PI1w%G9 z+HIJcJOSk{w>*LAmUqwG!s#5GQb|=4#8C2%uC#4&Y;+kAicf>@wlBcR$4gdph#}6L z&I4DW-~~M|_)0Ib;DYwd0PO!vikZBP4XeaHFVa={rHEW#jc^-04**!)A_Ow^S|FvpC=P z%E|;#SCcw8iTY+~HxirtFRopmHo)Vz`uyAeyg5^~74YC!whf^I9Y(MfhV^>j`zb9l zYis87m0Ay&Z>AORpCp|P8loYhAo!iDIHRWAYca9X#el0B+*DUvJ1GdHv8lbhCWNNc z>h)~-r8%snF7RGc-%*4)UIYMsC-95wx<@OO!|5m||Nrs-(EyU-f1V7DhwcfS9FIS( VUA(_`SqYc{hqa}H1=`Fb@js#MrvU%} literal 0 HcmV?d00001 diff --git a/index.html b/index.html index b75272f..6a7f204 100644 --- a/index.html +++ b/index.html @@ -88,6 +88,7 @@ + diff --git a/launch.coffee b/launch.coffee index 69592bd..6f23649 100644 --- a/launch.coffee +++ b/launch.coffee @@ -36,7 +36,7 @@ init = (controlType, quality, platform, godmode) -> u = bkcore.Utils.getURLParameter s = [ - ['controlType', ['KEYBOARD', 'TOUCH', 'LEAP MOTION CONTROLLER'], 0, 0, 'Controls: '] + ['controlType', ['KEYBOARD', 'TOUCH', 'LEAP MOTION CONTROLLER', 'GAMEPAD'], 0, 0, 'Controls: '] ['quality', ['LOW', 'MID', 'HIGH'], 2, 2, 'Quality: '] ['platform', ['DESKTOP', 'MOBILE'], 0, 0, 'Platform: '] ['godmode', ['OFF', 'ON'], 0, 1, 'Godmode: '] diff --git a/launch.js b/launch.js index 6b8c834..8e41b00 100644 --- a/launch.js +++ b/launch.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.6.3 +// Generated by CoffeeScript 1.4.0 (function() { var $, a, getWebGL, hasWebGL, init, s, u, _fn, _i, _len; @@ -46,7 +46,7 @@ u = bkcore.Utils.getURLParameter; - s = [['controlType', ['KEYBOARD', 'TOUCH', 'LEAP MOTION CONTROLLER'], 0, 0, 'Controls: '], ['quality', ['LOW', 'MID', 'HIGH'], 2, 2, 'Quality: '], ['platform', ['DESKTOP', 'MOBILE'], 0, 0, 'Platform: '], ['godmode', ['OFF', 'ON'], 0, 1, 'Godmode: ']]; + s = [['controlType', ['KEYBOARD', 'TOUCH', 'LEAP MOTION CONTROLLER', 'GAMEPAD'], 0, 0, 'Controls: '], ['quality', ['LOW', 'MID', 'HIGH'], 2, 2, 'Quality: '], ['platform', ['DESKTOP', 'MOBILE'], 0, 0, 'Platform: '], ['godmode', ['OFF', 'ON'], 0, 1, 'Godmode: ']]; _fn = function(a) { var e, f, _ref;