From 900b12a6a6f213f3bfd955df6ff88466adcb93a4 Mon Sep 17 00:00:00 2001 From: kotofyt Date: Mon, 15 Jun 2026 16:11:55 +0300 Subject: [PATCH] controllers done i guess --- engine/openxr.cpp | 103 +++++++++++++++++++++++++++++--- funnyassets/meshes/hand.fmesh_c | Bin 0 -> 400896 bytes funnyassets/models/hand.fmdl | 5 ++ game/client/assetmgr.cpp | 11 ++-- game/client/entitysystem.cpp | 7 +++ game/client/entitysystem.h | 3 + game/client/game.cpp | 2 +- game/client/milmoba/player.cpp | 74 +++++++++++++++++++---- game/client/milmoba/player.h | 25 ++++++-- game/client/worldrender.cpp | 7 --- game/server/assetmgr.cpp | 7 +-- game/server/milmoba/player.cpp | 5 +- game/server/milmoba/player.h | 4 +- public/ixr.h | 1 + 14 files changed, 206 insertions(+), 48 deletions(-) create mode 100644 funnyassets/meshes/hand.fmesh_c create mode 100644 funnyassets/models/hand.fmdl diff --git a/engine/openxr.cpp b/engine/openxr.cpp index 30b84aa..feb3ffb 100644 --- a/engine/openxr.cpp +++ b/engine/openxr.cpp @@ -51,6 +51,7 @@ struct OpenXRAction XrAction m_action; XrActionType m_eType; XrSpace m_space; + EXRInputType_t m_eUserInputType; }; class COpenXRController: public IXRController @@ -68,7 +69,7 @@ public: EXRControllerType_t m_type; EXRControllerSide_t m_side; CUtlVector m_actions; - XrActionSet m_actionSet; + XrActionSet m_actionSet = XR_NULL_HANDLE; XRInputCallbackFn m_callback = NULL; }; @@ -97,9 +98,9 @@ public: XrSession m_session; XrSpace m_space; - CUtlVector m_eyeSwapchains; - CUtlVector m_projviews; - CUtlVector m_views; + CUtlVector m_eyeSwapchains = {}; + CUtlVector m_projviews = {}; + CUtlVector m_views = {}; float m_fPredictedTime; COpenXRController *m_pLeftHand; @@ -177,7 +178,11 @@ void COpenXRController::Frame() XrActionStateBoolean b = {}; b.type = XR_TYPE_ACTION_STATE_BOOLEAN; xrGetActionStateBoolean(m_pHeadset->m_session, &gi, &b); - V_printf("%s %b\n", a.m_szName.GetString(), b.currentState); + EXRInputValue_t v; + v.type = k_EXRValue_Bool; + v.b.value = b.currentState; + if (m_callback) + m_callback( this, a.m_eUserInputType, NULL, k_EXRInputAction_Value, v ); break; } case XR_ACTION_TYPE_FLOAT_INPUT: @@ -188,7 +193,11 @@ void COpenXRController::Frame() XrActionStateFloat f32 = {}; f32.type = XR_TYPE_ACTION_STATE_FLOAT; xrGetActionStateFloat(m_pHeadset->m_session, &gi, &f32); - V_printf("%s %f\n", a.m_szName.GetString(), f32.currentState); + EXRInputValue_t v; + v.type = k_EXRValue_Float; + v.f32.value = f32.currentState; + if (m_callback) + m_callback( this, a.m_eUserInputType, NULL, k_EXRInputAction_Value, v ); break; } case XR_ACTION_TYPE_POSE_INPUT: @@ -208,8 +217,9 @@ void COpenXRController::Frame() EXRInputValue_t v; v.type = k_EXRValue_Pose; v.pose.pos = {s.pose.position.x, s.pose.position.y, s.pose.position.z}; + v.pose.rot = {s.pose.orientation.x, s.pose.orientation.y, s.pose.orientation.z, s.pose.orientation.w}; if (m_callback) - m_callback( this, k_EXRInput_Grip, NULL, k_EXRInputAction_Pose, v ); + m_callback( this, a.m_eUserInputType, NULL, k_EXRInputAction_Pose, v ); } break; } @@ -247,6 +257,82 @@ void COpenXRController::ConfigureActionSets( const char *szDevice, const char *s { IJSONValue *pInput = (*pInputs)[i]; CUtlString szInputName = (*pInput)["name"]->GetStringValue(); + EXRInputType_t eInputType = k_EXRInput_FromString; + if (szInputName == "trackpad") + eInputType = k_EXRInput_Trackpad; + if (szInputName == "thumbstick") + eInputType = k_EXRInput_Thumbstick; + if (szInputName == "joystick") + eInputType = k_EXRInput_Joystick; + if (szInputName == "trigger") + eInputType = k_EXRInput_Trigger; + if (szInputName == "throttle") + eInputType = k_EXRInput_Throttle; + if (szInputName == "trackball") + eInputType = k_EXRInput_Trackball; + if (szInputName == "pedal") + eInputType = k_EXRInput_Pedal; + if (szInputName == "system") + eInputType = k_EXRInput_System; + if (szInputName == "dpad_up") + eInputType = k_EXRInput_Dpad_Up; + if (szInputName == "dpad_down") + eInputType = k_EXRInput_Dpad_Down; + if (szInputName == "dpad_left") + eInputType = k_EXRInput_Dpad_Left; + if (szInputName == "dpad_right") + eInputType = k_EXRInput_Dpad_Right; + if (szInputName == "diamond_up") + eInputType = k_EXRInput_Diamond_Up; + if (szInputName == "diamond_down") + eInputType = k_EXRInput_Diamond_Down; + if (szInputName == "diamond_left") + eInputType = k_EXRInput_Diamond_Left; + if (szInputName == "diamond_right") + eInputType = k_EXRInput_Diamond_Right; + if (szInputName == "a") + eInputType = k_EXRInput_A; + if (szInputName == "b") + eInputType = k_EXRInput_B; + if (szInputName == "x") + eInputType = k_EXRInput_X; + if (szInputName == "y") + eInputType = k_EXRInput_Y; + if (szInputName == "start") + eInputType = k_EXRInput_Start; + if (szInputName == "home") + eInputType = k_EXRInput_Home; + if (szInputName == "end") + eInputType = k_EXRInput_End; + if (szInputName == "select") + eInputType = k_EXRInput_Select; + if (szInputName == "volume_up") + eInputType = k_EXRInput_Volume_Up; + if (szInputName == "volume_down") + eInputType = k_EXRInput_Volume_Down; + if (szInputName == "mute_mic") + eInputType = k_EXRInput_Mute_Mic; + if (szInputName == "play_pause") + eInputType = k_EXRInput_Play_Pause; + if (szInputName == "menu") + eInputType = k_EXRInput_Menu; + if (szInputName == "view") + eInputType = k_EXRInput_View; + if (szInputName == "back") + eInputType = k_EXRInput_Back; + if (szInputName == "thumbrest") + eInputType = k_EXRInput_ThumbRest; + if (szInputName == "shoulder") + eInputType = k_EXRInput_Shoulder; + if (szInputName == "squeeze") + eInputType = k_EXRInput_Squeeze; + if (szInputName == "wheel") + eInputType = k_EXRInput_Wheel; + if (szInputName == "grip") + eInputType = k_EXRInput_Grip; + if (szInputName == "aim") + eInputType = k_EXRInput_Aim; + IJSONValue *pActions = (*pInput)["actions"]; for (uint32_t y = 0; y < pActions->GetArray()->GetCount(); y++ ) @@ -284,6 +370,7 @@ void COpenXRController::ConfigureActionSets( const char *szDevice, const char *s action.m_szName = szName; action.m_action = a; action.m_eType = eType; + action.m_eUserInputType = eInputType; if (eType == XR_ACTION_TYPE_POSE_INPUT) { XrActionSpaceCreateInfo asci = {}; @@ -666,7 +753,7 @@ formatPicked: if (!V_strcmp(c, "/user/hand/right")) { m_pRightHand = new COpenXRController; - m_pRightHand->m_side = k_EXRController_Left; + m_pRightHand->m_side = k_EXRController_Right; m_pRightHand->m_pHeadset = this; for ( auto &p: s_interactionProfiles ) if (s == p.m_szName) diff --git a/funnyassets/meshes/hand.fmesh_c b/funnyassets/meshes/hand.fmesh_c new file mode 100644 index 0000000000000000000000000000000000000000..24bb162e2373286c2522df7c44ba3925bfa48208 GIT binary patch literal 400896 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ྸkR;mO%8LEz)=WBme+rk>>b~7_ z#*|R~iU`Dq^iX_|9pdXf4`f4T9;es6=*z}8yN&xgWN}J$mt@E4B4oKuO9{k>^cNm` zvL?S(@xc|g?4kozxXqAl-0#n$WLAeR6gDv^Cs2N%_7&wrdT9L*`h9?YU(CNvWtYtx zfe+>#VTuQ~$E5XSZsOUKvcj5^sB`3a3gSb0X#E@V5BhyKT^YhIOtHt|npuq2${%#y zs`1=H+?MbcNg*ZDhJyHz9*PgLLwsod4)Gy9^!@?m2WnqYKBR}<|Df>!jjv@vb66)I z1H5a7HT!5u4&L-Ro!g_+hU^(~jMCmvNFY9>ht|I#|DgKzY+X28)#?-dYpDh6p}r4) z@Xz2Qz&Smj{{29HU}UOn5X|>-$@xme&`Lxu9Bns;{AR-R?}B^JJTBz^*MQ zeEJ5G@U&W@+Y{k)*9;|3E4oUjMC`;-Qxjx!?#PhQ(Ut__LwbiU-RP7>G+q*^Bbol8 zt2AhLA@;ZzF3a30LxvkPLH`2qRmr=PeX#$D*JR{DLutQGsW@ptY0=VI5?~=gQG-uCE=$hx9cm_a(EPrC9G~6WXY?x%ADa?Re7q^)mY9S!8N*))vYS z)V`v8NPo<$GaZ-h!1q}tI;*F-^uA*uUT2yh8}5A;X|%JoojtKTZgzA89_yPxUTGLh z``+`E9y}5$`?e|+-RrZJ{64LPlWq^g0Y-~SRm+Z2b>qR(%F<1;iDse5mbaT;*2Kn7 z$Kg@tj*=ESJ*4xE221DJ^a$Gm$>^R;7T`zk}wyWv~Oo5(M8?5&a5`+4Pro1!AhxAZf+`ohII{I{_=-Q=&gO^pxkQ;tSC+XTk`GMM3ln?1Wc6G)5 z4JPBfVkMee*h_kY?>`yePRL#?Dnq^9^le`}^~X-06R}3|A+oKVv6Sn*MLI2X1QmKO z8mY|RLY^+3z@I6ffU|#>5w6HY+N5K+^rX~UR`xCo?RVWuwtINsG1|V^OQn}2=ZK}W z$|zjgjGiOA*s>6*Uo;^QAJV(NnupgX&%hUIttIwj&80_q|IXZ9PGJLre)(&H{vD_t zj7O!9!;uejiR6T_v_<@K>1?;nvb#e<(6bx-`2FaBz1#ZW2Ulz)g%%dlkhta2`_+ZA zYR9AK!QoCIAJRkdL3W7W+{yvlPo9oP?opzDE$b}}=l!>-Ix8y=JdIL*nAk#mNPjNU z9T)7Jg%dX_(LRoSjl}EkJkA8<1wU!MJ*tJ6?I( zS2lT~p7h7*t~l4yPED7RZ*cSC;Ha*+0BP6qKI zeXH>iSnJGa96B>tvSg#CbeVI8bc^dY)ZK6`I$=6Q2Kfh#KPZ0?AJRkdL3W4_&3V1uy0M*WP_O=$zL)s>PORWE-^}hvzuq zlnpm1?|Eu+y;H?bbSkn1G8#RC828nKdyA$)b|Ldm2PU$DS$^R)~mwTz}*X*U_~R@JNzq)0xg@P&qjs=p!`7X3wA~MjnQZE{!jeVe})`9i@xDa)c%zl4js9* z3je;{7I)<5KV669;raah;uqx)M7mKT!LM@*(|&muv8bo@%%w zKmW;o9f#fd{*&)I66tL?Kq}RYsFf~b@tv3IIGvv#zwVriuf;5vj+uYnF2ipAVb@$+*JL>YGBNdLg!GRQw@{6YDH_>dlo z53)miD8CRN((8_yg&o@eqJ{bY;=pKmen+?*qBM4$CZ<+46qFyReMR|@zGjXa*3JJ) zkKo^rx~Xo)NBRDPyN;qRUpPz3Vh2&C?k#Y_voCZlzdq9QTQgUg5a;&K;=wFjP{jsU5 z3ijmJw`!*5;KB!<(yCwWD1FB;(rHo(xi^0RHj4R3Z|2vR!ad_~pNF1OzmPDh)ij30 zr8fcjkRFN;vP1lk(*yAOeQ)Vpetl#0iWp4s{-4s{LcMT2L#B>+~~z{a;$1g?}_F!pHW6Qf6M^#I$J=ndX{FKlXn}N9?&q;y3QX zXV$&J@n5s4F6}}|#L*=3>TNdN^+N@HV63^Mjpi1t7WoEm*3G3Z2Nsi&314LpAJX4W zo=H#pRYH66>;E-coAE%d5SKICsEnBm894fr4Dzpf=T*9=Mm2rQ&6m6$%#ZJ{8q&{c zdDLx>Aae5fR+2#7q)X3Tqw{7DkvOZw;_g2+q@fG;P;-wF@;g-tj33fN@j-Touk`vR z-ScG?ZLHdaraEuJ_PqbKMmwoZ0cB*erws-1A$`w`9C}`hv-Ii`CHg^+Xl%jf_i@Y) zYI#Z-xwoVz1?2~7Ur|1!FYhypUZlj(yZH70QDz(Qo=Jsx|ID4#jBRD4xls?Qd}1VS z+s_;y_nAuv{Hl`AkFC}pKpC_a8PTCVx@xciyDjUBrxvfIgMuE(=f}Sc@{yAN*P<(D zoY45Y>+qDRJ@J|gv2>!{9r^sw@A?$f;b@_3?8Gbt@gcqA?J!Jr?u?&r451^7Ps#bO z`-P$#Pu+;p<{6-WFZ)GeryL5OjtQa{-2Ec=e_V$>D7tz+HPv_$x|0`*r&ZfxvMGtq zA66^p2jmY&J#00o>8B5Zd`J()2iYOML&v3<(H)4#+wP(z`)lz#etw%15KpDd7-z@2 zoCWg(>6h!Qz%882aJF{_eN*=uKFsq=cU_=H4^Sbpw}lAG4-}uGd`Q1}PawXX+#ZkZ zv5|g8j?3R~@3d@-+%rQ+p2kKLsyhY;RBGTa&!T9Z7f0|7e*V9;NmFXY=P2@UYdq>( z<%@^C)WXAL(R4}gBlrkEzgLd+qv*;F=6Iai?8$mmRgZOX6~=^UM83pULvV{IwORXk|Z~)3gP?$!?%EE*{1?{QS5w&4e=T z6-iQMiRkx@$=C}?pntk4 zz3?>`3(O>B(rF&GcqYI9cYS4a5!1xJa79W5QhU)JpYk-r^JeX!n{}wgl=)z(Wt;S( zGwZwx_id^G`H&up53)o2Fa1@p?@Uu{$p2#By8i_$E$uB0ZnLSVx7F~%cUvpK{6Ko; z32ONJ!?w6z&Q|*S<;yrFxVLo3>{fQlRC7}Dl0{H{p!gK!L;8UKW9`f1YTUm6BZNxk zDMV!|WKNxDpS_>R6xTe4Ov!K!SI8_Hm8p_urBKQcP3oNIs6?sAm3byELL$XA_1h;O z_rGs%uh;qY?|Qx8d#%=Uo@cMM*IK)KBQ~Z-U3SaUiw>Tj%--|(_Vvm3!u$V2Va;Ad(?6FKv!mbQRnD%s{j_U@t8BqrJ@N zc|M7{yPvwvZN~<*I7TnttYV%^-m;9XONA4iy2-So@*zLMBm0mX@%LejuDQ{Y-T0A6 z&2&Gp>*vn0O+iBiqx-tDTcdal5bzJeXUrc8XcplvZ*Q74_b-1QY4r!|(G z{3L?>gVxuSAK}}4oI!P4KBp)0_S2@b&#=@@>8xTz;s~&B6qA44b6{ec_`Xk%Q^`F$fzfjq|hwPkt0rU^TkKEsecKXnawV88Rb(r&i z);r9KV*4sLHhz@h9#9}5{~-G`^i;rx5D+Rl-48`_LL(y~!C=JUa#`2HtMJL;_Kl^e>)qzjNA;VsYi$AZQ^!I>Ae2}%uk~H>t$mdHg1VNQ>?L2eJIIiyZHA#x2aXe;zPws z#VyQ_@W?(SNBn0UwVBHdV>YPyMAaYJAK90+7UIK=>52tb?itP36-tO7;fvd}V+nTM znEy&gmC=un%$n~HO$v@GSmv^fG|xf_`3J49DL=x$yVQrd6EimC^E%Zqt4g+v?|;2U z>{296w#l#yE0oarlwJSvtTM1YE03O|y1b@<+3@(&MtgcjMEoOVdEE<=tb74;jp@i7 z68=(6jml@2dHmb4X{anA=z&tVEC=!gAeBX3XQCkBd?i zJ1VwhyxUMHxtY&p%k>Aah!kJd^yQT-jmLM}&s%2s#{p#a(5!r?MvhbJxX9sGesjTirAt`Um14ZD6LCjM;!|3sln$FW2OMzP`&Ay0*Hc zys$PCo{u8?WSa5=JUahG^#Q29z@@DRD>`q+jLLOXeXDQQ2eROd2Mug6 zjMXilO7H4-6Ss|d%Vr;4t=!f`NfK7JCWs&5i`;h7cw)s&dHmaZxS`l%{9D$*?!3a+ zHjr#SP0uEE6$joF*Wengx>s)4j>=Wj)yP znSZcip8uSi+)1?H`=j`4zDhdBizLJbk`Bwev4n&f%xv*Q`cm6W+|T8{TTUu%D^tmk zX2#^72Thq_++?=w^my9rRu6F{?|<1GlBm2FkV+N~GJ*UEZ+fdaYw0?QUE}%BS&1FR z#=QSVx87c*iG>&W_Yl?(^*^Bg31mOQBm0mX@uU6~#E2T!3RoqLJJeE&bdV2ScXY&uE5Vhs5aey!&W)-{H4$(#;}u&GA z{ZRh{>YqUT2#@STa>S2*--sXK(eEGm2d%FuKf-S!Xx{T9Py+66~vG5rw$Kh1#VwyU!MOf8yn6{d4EmxGZ!Iyb&|AYsSMV?q4hQ8 zM|f1@5@!~Z5cWVUOb?~^5)xk%qDBB11i~qADwXRB`-aYEl(d9c?a^FB!G0Tux zMk^$<>PbRL%wQVxFrBvK^PR44^JQ1RMltuYb3)0*3(|@)mIAUL;gNkvj`&f32jWNg zBRLCb)ISAO;`#sLP9d!5T{=5BJw_;UO_rQiSPVz^-RARehC+AK_8|H_{KC|NV;p{;&BGh#%pReMpY@f64!^`1g1D z|1Ug>zmb2?`kL}1Jc@5n{{!kjq7FM)tGH3jh4+6gacEpKA11BBn#B0EBdf(D1o0#M zq$jJ{{MDmb6z@Ok)US#7jGs>oah)%$QneucUhp#r(7%P^e<$M20uGK~(|CW|%7s7Y zyR52=A!0}q(&)kn$dB;IJ|su{D8G#O5gz3?k$=$on(`w&%73E%7}Q@gEpQeKm_LFQ z@&2z54GlzJem=FKZo1-OS$$&DKZ_uKgfFQc$&_n`vX;F6>#lzjF)nbuXg=OjX%ebM za$9E+q#yeIA^#zMgh%!vIpRnDMf?bl&bN?%(E6J4BRo3)Lg&Nd8f&qG?FX^Gy#FV! zi@xZy#6sMg-Ama*t1h`%CySV!Y{lwtw_@jb|JTJc`r=I!TX8~Wf8~tnb%;^JEQ0tE z9-Xfv{ZM}s>aRll2#@STa>S4N+Ymp(2TU|)xg~^+ADR zK*9++yPdx1tL@94W`X)35EqnXQnETd;`xiofgh%!v zIpRnCTZkXw8z=|Tp}AdI0Pp|myGl>Yt31nkY;%&WH8CX%wkZhm4_aSSeuPK$Z<7ux zXq3I2&E@k!E>{?elX?B;q_R*&^}XFh*D*jUZ;(a3EG^iS6GS!ts-F1rwt@I1@n2by zWnEI?n)5bEq_+8$r2ywkcL^A65>aA`vp6xBE*V~r3Tc>U+T`wB(*C_kdOzZdE^H9nWd#&uxhtLLglx_@Ney#FytzD&rS(oMD{JYRZb z9Z2)XwPn?Q`&5xBAK8B1|9Gv`UWjKMWaCQmAwR++`;Z**qy8qukMMOa456zAc4H>I z|L*HKl)=*`|9`ODz)jNIh zI^X|X|EGu2+v$$bXi|=Z_!0i<2y=G3vz(3N{a@X-G!gar_jiU~2c<>OU17)K90}=% z`kUHRSJQxLgIF5x|4NyoFM9I*om=Dn%6Giq;IoMN5gyrx_9_PDv49Xd6d_2>ORQ&;@VzuZ_oNqAkS4iWt`rKp{=*q6g2m_6_Rnqc=c z{!NQIshBpSM96f`!Sl}n9?f4z`l0>~)L(`85gz@2kR0)&{x-yq@OM6rWV4cnvbVhd z@2|gq<{$PBje&#<1 z$_J34ay^ndJYGWl2#@BEBmGeRAN3C*euPK%Avxklzi-5k@aXrC{Daollpo>I`yJ(f zQT|yyzxo`XkKL8mf9Cyf{&`-`IYQkUlFu#!Vf{10qxxf{AIkr$&yQ-WKScZpkL*Ko z#E;IueurN@U;h6(|5D>?n=g+1gVz85!C#wxsQw+rr>d)IRBSPdW%Bu$3*&$GKW6M* zsnj2&Ad#i*rJ(0mXvjo6wm^HLywjs@;u;4-QG1)OvR%npQkB;Q#=i(}l6sAjK*pRK zwUE+`JBT;u8;WN8TPjU@d6P#sgCwLM>VJH(>@qdlK8`h^b*P@cxj2vO-={oUX_TBt zw)W~}jrb8B*@xta-+JL=`XFRNjsD};nTu!Nn2N*F)0A!Y=aT4uds!oXgtvb9gf3k+ zmd)k<{c~h@@iXVQ6OJptol7MHLro;)AGp4T{7ApBLV`a`d@5# zSlQxe9tqQK2k*B+cw`@vBmN)WR?Na|evSVAU;Bt}Zmke^=|?Mb&*hOx+8wPCKf)V~ zux1}BX0v$i-;Wo}#K)X}U{0X&#rd;jN2AUX@()^HQ+|XmA11KMV-r~de|~mtF%o;- zULm$W#_X`c;|DX6V``PB=72@89y9KuNob+PJ4>9;u=}{Q2+cw2y7$ z`rp$H5}f#b2M1c=`Su8p?1OTkpHD9vmbmo;RsViZAKc4yM>&dB`H_NoNUn5C94H`u zgwMP#vJdmBXejsZqU`~^zR^)U?|wj-SEiD-*iEhq0=i5X_z*@{|(IlNAumAr`BPQ^dHd?{QDSJ#kNNlO_}imQ)w!#f)51{DnZ8|`77`&L{ZRe$QvJHDw9h@-nD2jv zzu&{2a{c#q3=sZmlqU^+N8x;Xgh%!vIpPm!@Scv_d5h|E{f!d#u!{YL;+um9g=4O{ zlI26WfcOzUaauXGUVM*^<^FZu>CYZ>{-IMMg;TDQR5Y!=g#3fn*OVXOH)g+~iTmEs zr~LUDm3WlR^fMGMobnP_{#NO1dbou8U(kGCDbAL)SkRGqEImluZn@6d@bBYaV-Cse zx-^lN7vcHO2p>6XBxBY3%zd;ky`7Q59Qgacht){oi`+*t*A9g9hf)2}zy3Dt;k!Pp z-?+o{(!Nh@&7Bouzt3hQmu2Jm#t4t>LvqAlT+fO{_V3Lsxc>QTKe2J69Yw7j z4>Jx12Bqs*HgS_7bLajI*1OI&^Y^EY_fc7Jsh&jYWfJ5cw7#bN2w(bG z&Vt_QGB^JG5Fq!>~*8AVoKN2j2_{K(|hL>LVkot_8~dq_uuf4T4oy6=${u}#V&6! z6btn;WgFVLTi01tNDx25&sII714cAqI^4fq5{g+9FGJBGb%=2MeI4o5txSUagVxuS zAK}M2meNgC-)JBH{K#4+Gh_b#k56(HzTbC~4$lf9=zbK|qllhJ)M1Nx{X^#i`Ro9n z|NPCyUsx9{DHq)3^KB>mL*EuPVkuWlRoA6_)}Q}>dTzH8T3pLi7AIbi5I@4B?-$Y! z)ju@7^N@z0?!=aN8=-o?QyG9!Z+1aAt-XCr=ha{~-Lx75`FuKV6o@{rmE9J~QU;w+Yu3*6h_~<&Oau z;r<8t5803QR|t>vNAqvdeAB*V0@JH*&8#0!Q%!DFz&!c)CCu1KMr>{=!`I{aw+N5o z7o;Dmzc@e8irq5q#U40rR(VgYWaIh%VO5=L89U4U(jQ*H^IZ`h*@xtazu|csHtA9C z8vV6aRkGE5|MoCbUy;^QmEJG2P(u6&f5~|`+gH+-$+&;#Z7X1H`TjO3g36k{yRE$E zctJw(FY+JK5Ah>B(jVo=(fq&WU$4-lR(5Rp;y z!lV2*(htpFw7+?cKDT15JO4f|&ovb9@biV?I=z%}CB7uM!G1Vj5#f=2NRId)Uw=;1 zZEaXLu79*i2k{HfZ+A6!RbF4@O~%g&B#0m3r3!xcTc5Et{`J@GE`H9Y5iHu>B~e~>S-qS;`#HzB|*wY_Gd}nvMvPi zBRtA~BmGeQ_wn5R%<|B9wuQ$>Urda|E&P1pbI--fYJYF?yco|{M0jK$k|X}^Q+R%R z>_oPe>mS_3NbJM&+vY~|l?5BT$wh+$1o0#MqY2h5B6W6+e`CGP#3%gypMPS%vbWP& zGOVHtLHX+A$6FY`GD%uB%Zea= zgh%;xq#w#}q5K8nM|fl(k|TbU-$48bFKaBaEiNAYmK-NH=EB&nEK z5#%4VzNY*LkIpwxejLsJ*!D(?t^M|bI`jR{2W1#5aRkTo=ZaJpbubu7@aTL4<;PKf=Y-*uy*n&2SDqiv-`GU7;qh0)2HzEL$7++v>A3$F;Zgn@>4*A1 z(f1$mBRsMX$q_%=A0d8(Pfi`gPJW_n8~3j+@4r}P=O_lA|EgHMRGa)cC5s^cp!GH7 zM|gC;f%4<1|21*kYkKZ$f2PIr!yoSO{;;p6Vp67#@@Qf`^1f~sLHr1h^4~~5)PIcP zKg5sl$UY=T{3t#~{0Ofr-ljHf`ms9Pzw#q`;>kY^MXAxzjE81=EwPahUbUdJ=GJB^Z(Dl=3&+*=iUkH{yr}ueuPK)Z=@fpZ$uW8hf0W6;Tx3IOo_>8~bdaN~2#ydO^8uI=ZUcAOC=Qr#u9peq4hQ8M|jj< zi|Th#{tn$=f%p;LV^F_42ru+zx&eu`>BFbNAy}3hszq&?^`2A*r@g8RL z-9Y@*FgHe~Q-E zlpowSNl9$~zXsy;zhi{@IquT>bq5Hl4?^(+nlFO*5gy(DjOwG% z`kL}1JnFAN^(kooism;UeuPK&AEWvlw7#bN2#@Z!M)eaY|Az95h#%q6{eCDuLF;SE zkMJnILFe}<|Buc$5I@4B`{hu4g4WlRAK_7agU*l9{sMj95kJDC`wdWhg4WlRAK_7a zgU&C}{sMj95kJCzh`mK!&OM^D`Tfu5t3r7%wt;BAHd^pWKP~x0SrZhWp!GH7M|c$9 zpz||yK8Whe5I@4B`KBm7LF;SEkMJnILFYH5xS?eCfm7`Tl=afS&k@ z&%bPc@09GATN@JoQ6eZlLF;SEkMJnILFWf3zlidCh#%q6{67?*p!GH7M|c$9p!_w; zFQWV&;zxKiUk$}4Xnjrj5gx@i=zJ8-H_Z(9pp`?1vD`^!^1gQ6#I0lAve9m9l-A>v zB=z5xaQ+X%qxm~XKQ#YzsA)GEx|*`JJ6p;ZzV9l!9?M|U9(pQcqLswZrzxE8itxxj zBuD&dvyExM(V;B%nHD|V+e~~kEQ7h51S;(uE)j#)*4Bt0;rn%Vr*AfnWLvYf=$`Fn z;%e?+I%&Uh`jSh87Pp1-k9c;j z6tQ-Xq&s#1b?RD7or>zKszx4Wn@`2CIUO4bcAtGD`!#`*%5ezwXr-cwHx1=oR_kt{tj^8#S^3W8iqHci_>38+! zJlgx>E&9(N%~fK-VfIZ&!P4U0gzmFFC6jtV(!Jotbit2oI+H*D70vgtAz2x$;M_qW za`8E7$b^rOAK{UGNRIf?{auJ3;nDqL$UkU(P5BWX-T#K}2g{g0mX=i3Wubij`$5}c zwxUitbGhp)I8JLUIr&MXIJr5!Fj9+kH4=!_o}aOqCu`QWZ!w%|Bmpe{~YOu-v1GKlc^W^PR;pz`*T+LY@?xq z<^5|exIMn5oU|ZELi`Ai>_c+IkLLFyeuPK&41dI);rGLK)Hf5~evD$XyuFq5)g@xm`I0sA4_aSSeuQ^-JR;AY&e((C zx^%!LGcmS*Aj=umL1~m$zkMPJoBuD%xzm5129_81Of6)4x@*_Mt-$41_ zBDbA1o>(zc{`~bGZYcKP_YXC&JFoDy4J4aS`I6T;d+6(RW=!`*G>vf86U+GhNA((K z%94zY$i&G?g7^_0<#&;O=>3oGk3#$ikL*Ko#E;?|#EbrYwzF6)0&#Fdx4%R?bmu@%gz||_KAIg8C z`=gNk2#@STa>S4J?}#7aNA7P!JAG)z+RQnuI{f-0`>c1E6~*>dZfyK0!#$utLjFPP zYs!!C8@1}umM5CBFL@Un9(l?vrx}#-eTM9J}h?E5k=2sg~YbWTp7|2{r(b^hvh#?`m*nvTdE4gj-pPZ zKz3pLV&Qb#2(rr5RYLp-kL*Ko#NWKde0fy;zU<7RQ7W6+M&g?u``CzW5kk4nLE@ z?K-r|ps%>7`*vo3+*QFg6%wPw?J|^~NBLdLU3xTFKZRb6Y$W%6>&?{9|Ilr7NPGEF zX`AvC%>N_2y_POrR-RA$erv5VGmT{G=ks~Jjl^xvIBC4c1_|kh^1oddYE$RnQ#8|F zizW>6WJ@pjF#pDsI6pWe&42GGAbx~L_8~dqfA{=v`ST|qY?&`RmHEz6}wX9Fc ztdD1;jf!~!;z#(*^f&V0B`4{5zgS{YvV*Cg{}HR#kVgk2rE+<=68Q(MuPHymXR_YlXJSic5gh%^Jq@V8A z)AHu+^_U{1P*umKl7&q5XOH|H$iDI(!gafN>Ex;Xa-9+*Hn%iYb-s~-sFrv6(u>#+ zF(#e99hDG2!Xx{T9Py+53*tw3wEsf>LF;SEkML;!i}L>{zbjwSLVj(tHJcPOpPCHq zA&xTfV2>-46t5qs$nm`9F#nJ6w(pzB7u@T^BKL>T31d2n4+p!lOP}-=T^ojzwfo%( z(htQSX#a}%5gyrxU(Nqf@K@|bi! z(Hwq%(f99NY_L4r`ZOIhdO6L#AIwsh{lyZ`Sdl%`4ogE{cY^!~kL*Ko#EhHLF;SEkMJn|L;K@3TVv%z-MX-VgcEdjJAKht+m}7f47a`9?q#ug^?ShNtvGK3zQojHHQI=B^AD9eqCA*(erTae-kRRcZeMpY@QGA2=5gx@q z$UkU(P5BWX#h==`$7#%;GwE5sukzcI4aM0N8LVuDo~&W({UmkKZYj2{Kke~!29;iF z(O>6ZhPj6nZpRJ~ubDp5q8s~YugyEC?Zi>^d0|&^o>w$mu-+}h`A{aAsiP|)euPgu zn?R>s+(FB>j-bEl^9`~mr+?~4I&Od)l?!&XLHBOr)R+UTMXp>pIy8&Kr+rr<`w<@5hvbO=^TDn3-CJM! zZKpp~tu_;zUiN20lZ}L+lmhZ%mAwq{BfM6ty>x|&KoX@w+4TPocl&YyBZV ztLWsXAQ?A}AwR++`;Z**&*J)T9=Ml|NcN*n2ED|a_7-9SJ*hagy^v_1>|l-fe+R!R z){l;k@T2dC_O9`-YCycAsYfA6D(Pg6{Dan4%QfY%4S$tCKWTdVX~b?nn)O#7@iu>c zeAA*8R=$NK#-*M0@-x9~;^`$c-&BttY;7cFS@?-JucQeR?|PB;1N|k-*}K@axvOaC ztVT3T(OIn1$y4kV-Pk%yzU(~WaqQa z65>brxm>>=Cw!^*%yHCal9`yw_3L`?m2k;6m2{742KCcjx}8}L|C2f}eJW2k5*zPd zFZNucR5(X^k{3@yr0gZz**(YIw4m8|`fI+~y}-W}ZOf8|yq&%$QV2Jaal*{|fe2bL}i? z+dmCN&-)SLfRmBrRQWLCGS*Z&F)W(J+K#5HE_9-E?AwUnE{2F7_RJt27uJ#i4c6Ak zOHG$h-y<_<^N*csC! zkm{=wNca7dlt@4H`$PUi{J(>*%|11MZF0n~me=Or-{D7iYeQ!mG0%^NJ9Vk?Z{O!0 z#N|^cDLi-7>UaE8n|*5iH04KlowogGDA#{#&t^5xPkVNX^#3r4n9M01V#A-W%i|N} zOWK>zE_;DN0Kvc1R*Co#UM=6Gby`j{=FnN`RZPwAkdjZV z!|tUH+OtH7^h3Wt# z!xH%it*@4A%Ktlfwf^@1dwwn#780%h{Waz9kASG{stbJo({*?PTfz4ibaIjK(#A&$ zF5O-8eqa3Lmb9F||38#SO#S{(2wOy2?OZE4H(XL9?4YyZQI+#6vxz z;@`L1u0>4!eOq7|O%7bKm6n#Zt@(X_TK8VK%)c)qpI%|=?~B`$6C|SJWGVBYIpkMA zKL}r&ed_mLZF0n~mJirpD5(8wFyW{EVGU1^;If(0;W&NS@9-nMf1f3)FwQ?|)5#kD zR_*j4d6z<^ZU=K@zvG|U>{IKfDSvJFD*pVm_js(D&i6k@-vqF!{Q1ckT#w}aohkXJ zbQ02>wzDU5_o(do{`ie?9J{%9y?9_il;V1XxAaIJEM2tU#m1c4uL|V*|Kov2S#k$Y zF{A9gb(yP=^ycaTX*QS7-t$W3$oK!Nll<5;F29kpQs#a%TWa;@n-cLOd@HVB-64-v zd3=8!RUN=m_N*6+CI%|f?6ak5p4CdEANu_v{~>;aNA@8(;z#~P{0Q&B{p+0cMHR&N z|7$kwuJNz#Sr6I6nFZ3zWrGFeAGE%v{0QHgKR<02l&e~ZS=l@8C3^!{>`J=|#_wz3=>% z@&G75c&3Wv`I*1(`?LMKEW~n`E*YkYS<*X$`cS`@%6Y8Gaz9lG&u>-Ck7XH;XNm^T z>M1Vm@|4<750#cl^Vrv$PgR3>e(BeI>F;%Vrdy57mJ9;wKz@Wr_8~dqU(5AB6Z%0F z$@3e(=5O2TJ+PYLSs>Z-=M(Y&4xYqSsO)(D$INnXjejG?C0KpgR3L>-vl5Vh(E4h* zru?ZBHmp# zf1r=_>g55c`TS=z=~=L9u$K<~)&E{rT3@)~>@68w4wCX0J)_IJy-_*8A48io^LJhn|C&!?u-;4-v+BHb>Uo6{={IXs6SlG< zP}NhXC4FPdf8Tum@1a-C1oGHJTJ$nR(iz)?m5zF;8t`cn{WafvZ;G32jXYaAo}~rt zM|fl(k|Ta&uKx-B&#GIAe*eusk8ROj7Ph`X`Z#{DfcO#q9rthj>aQyIy?+1ohlY=9 zC9?}Ikc@Zq7Lb3?`kL}1e7gk+^tGPWxgehZAK!f!i=UOjhD|b*tvte?f7_mdIzHTJ zzm>$y$)(OeuGQ?1&$kLCQM;#0Qe|hN-e0baA@Ys8uTWRlr#1WIlP%)N;+P!ejd_!a zdjFPqvavk(dkH-tyI-?E9JhfH{SFNz$EUFb@guxiZojmzWT7agJ5?8I_(xifBh_>G z{D~odLjBbGw+T2c*H!&ZS3Rhz(O;)5mgH1=oV8fHv_^k@yCiu-=_Nfg>QfE>8f}r> z8+I}6MRYRcSL;_B{&(!F?f-}PBYFH5Taqk~TU?0IkH5+2^@DlV7 z!aH#Ouob7thu!7$POFgf{DbV*lpo>M``^4vtyH1Y9?*ZJ zvo-N;-2F3x#jD*?amFs9-k)3F=%u2q9?+IAQ`l|3|1YnzOyQflONxx#PjdPGZ`rB- zD*w`lG}|JDrSSdzg85pqNy)nWAz{|373u!Xx{T9Pvkj z=O6JSy!M=3Y*5=2x!c9hw723DJIl|1&d*SuE$(sHGMDF3kbltnn(`z3kY(GM)5&Cc z?zk#ydgv1~J+NLJs2i=&54@HdyQ`2~<@@9D>4Q`z@9t59tH~^u?~f~ny~#Kf<|9>{ zJwSXE^O(2JUJ_GU_TT*zbM}RhipiOzX}~DfIb%0z@%Rn(FDYixeQm`e*;+;S zDUGE+A~GRA!mHzt{18i($;7+#!~SHpg2x{>n&>L*7VMN({v8DM8^_Q8yxfxHEpk56 z@M)jeVt)SD=*14jfKkDg714#{t?wwd!0(LwT+j!q)8P{n%xuM@YyA}Wnok{Q6jBKJ z5gyrxwv0((+7#{Daollpo>KczoM)u$8KF%56G$elmN{<6Ga*>WsNP zye0p#U{as&kB456t3H|B{qKH^Qu}W*>FG}CdguXCAaBC9X?v3!(Qp2{|6}{b!GitY zy3$;ebHr=%GwS@=gUoLAk^Z@)m>uQwufj*z2yU)Tr4g-FkRRcL=RKo}Hp5hF^&kH? z|775ddV+X+drA5uLB7myP}pV4wokAX62d)y5TLQ@zHNQ#uP=S)EL&(HH7`yeV?!=XrHuf%Pwj04KI4tXR5Lw zTPdI7afz*R4rSf+{e|EYWy;l?G9f?0Bm0mX@xQ+AMZfqTle@Xb%C|lL$h5fr7Pt2a zq4l4qUhuyJ{e$r9y!`2>gk$oC_EGX*^B+ERZKdqIcgNrk6$KLV53)~FeuUTVcbv*X zj>*@~3zau~@sX`>rC?366|(iE+brYP6-p>Si1MEXeE&1Rurwp;Y>B+_hkO>r_dmN& z?^Ja6yr$GsUV!`vAIkS%PV)|Cyqk4To=~rV?cw)-=_nT}9A@57E(pB<^OGq5I-7sr z2b^xENciza{-GqF?c(3}l!u{;uw_Ncq7uxH@W?(SNBkT4{-<8OWAb;W?#chi{>Z+p zwGgv!B`7X$>YWzrUdVH}wfhI*%lQ7#_|q}DZJld!qaPocHQygbZ4FhhZC6va`4>va zKWKeT`4N5+-~VoT5ikEJT#^s7s$|Rf{&!REc7@Hpb(Zllg%UcS3ghvoYg|iNl+z9Q zdXM&f{OFox2qaN($stqw?8h9{-kT?Kta^`dFF%J_qt6 zJUV|u`VHdo&yza|a*yxX@|SBWnK6%lnw7*V!gjT`eD75#)#dSBcSVAHy>_~M`tnMa z#^bvwMtw5wNn_KF6ckE`AK{UGNRIf`@oO$SE{_?PDYx2FS(E=+Z@EU;R9T+Z#w{QE z2jS;%e*M2U2^B@xPyLlEoA4T?Q%8&5q{1ep&sPk8~)fcGc zr8JXlo2y0pR^P12AAY(|OLWKOd6aGZSZV{nJML zkwNkciOI7L)^=R~#(KM`7eC+mb-zP5qk$P`xZGLM+8Wu9@W?(SNBpS21MwrgM^QYj zGinFze&^hO^MPO6d04Mp%X8cI%?R=jT3=Isgg-eUo<@C~PSx@6)X(ij(J7tHH;9w9 z*cePkO!Owr`Tj`9cri8R`Omq@okR=1Kl(I1Qem*fmz13jBpzI@((|Qr=V#ED+GgT@ zF3(vQqiAtOLFBECNh0rGSaHmo*7ZuK&2IG&SMvUsC3h1Pe*A1??{E{ykMQdLn@M#R zQe&R~oR!#7Y|Q&_HjheB1kCj%F~_lfsQ&@=Um*Jt9@&TFh#&Q@Aby08x9@&TFh#&R8Abx~b%a8rDi_+>0 zYVy`hbm#G(^Q!`d!cIX7(o6{Q&+n|S2|v^8qf5>Ce}{E_Xd#~w;^FqQ|HSdw39@_P zMB=<`s-WIq<_9dMtIAX8?5jWfU%anvAxl>UlTW1uHT4y>@guxiUa@Qx?aS*Qu5|s` ze={<9CaJF4K&BV`0@+_1{&(!F?f-}LL%(mdKEk8-pPIim|NPGS zwY^^uKhh7q-%)*z`uSNt+JqGF=YK)Jt2OcG0NZ0^@xeLLhz_d+b^k&_+jT9Y}v zKJM_3EY&)`|94#(R?{DmxxrrMyf#(p>1hS)-w+P@g>_c+IkAB~X zAK}sOANdEZuPHymqxUbW4@%?x15?~GRqFWvc3~Kc;{5~7ZOYS^zDt%OpHMP@_b&|C zdrqaz^FO5x!)y8@HqL#Q-pxBj>Jvc-;zxK?UxoBT{ST=B0`Vg}vJc4-Kk8pW{0Kjj z_t%_Vr&7)5`Mubu7@Tk7C;O25_S29U8!2T6& z(Ec=QZ0pNpdE*2x`9A5C?p|{5<63Gm`kJaiN)~OlJcvcU+QUQ_OX1r0G)e12Zz2rY zO(Py&R<$b4q+8vBS)Eal%)uf~rs$I{xySb=h#%qKSozYendNdTfAf)Pw@*pACZrWIw_q`;Z**qy7%WkMPB>;^|DM0+k8R{}*=( zVMXuKS;f-rGTHO9(vn3M1o;Q8uPHymqxv^=KC9ke)pow8j&GuQ{HUJ)@GE}&aUz#= zSQo0?5X+Q^AK}&O*VbQ-^h4)=>h;ll31ok5cx2!2$Pqt^Uu*NvFZ*kYpKFW1k$-;2 zK27-%zP9{_`urR9526017Ta4Qi-p+scJM=exvCI!4lz zr-g9=Kl|GdKf>2$pE^FQO^))%9-3tTU@ zU2;^>C$0hcY@9`qe(3jy{D=4v9@&TFh#&bE@gqDs-$MRD>ubu7@aX&toezhP>&K+D z&U6Rw|HQsh30eXnOi)%{-=&*+OcO>D(ds|dxthC1X@ zyDWnE5gwhdBmGc+6Y8%*{0NWiLvqBA`r8mc!oN(P$JP$*N~3uHUuV`t)aCUr0Uh@$ zPJL`ZM)$~q^$%!$P5BWX)%R>FUQUyi&!B^N{M)6qp}23TFEiRI3a9vdyN##a$lXti zsKeM!bmiG<8naVRjJNP+CZ@}TdtP11#k%RlqQ_1emEMs$Y5$-j9QDNQF=5R3>p!wh z%}hyLTLnS<2tQ$fFTJpMI$g`--?ul~i~1WPSX9Fhna$ZyLT`CM{l4B^K&LD^BX=6D z%~m)2#2V*&vih6W3!&E@rA=FrPuh3(rfE)R)$mkb)p?-n9|M8-R z2S@&!FJ<%oN9U_?a-;6a^2n5rY(Kx>d0B%o!qb~hmdOJPAV0!G`@sJX@uU7Gv_8Uz zn;oY|9(SVOdH>!06MABXfr7mq5GmWzMTgvP!Tk^XgVxuSAK}sbebgU=`fJqRx69v5 zXaw*7QoYj`uk-!Sl9VHg#W$V_&m3|j#EaO$)@Bf*);%EM4&s1;0x%V5vt5cSAmB+tR zxA&w=c>mV~yPxrI-kQtlU#7kgoYv*Q`R53a=C33DP=5#NuR{C?kL*Ko#E<&h5I@4d z=lKUc|L!z~_y7I%_s{%;`HAC-(zhi-+R_|2A0Dl*DL=xa`SD{M?ZAt8Q*SIcXgzmD`n`F}NkZT&-tAK`z;zS{nO zh#&pF(fSCFe*bFz+Wdpo*OVXO(fb|ce^LHfeZFDM=VRaJ^`CkFn}444HkX|JCqS?} zH4N52BfNV3+Uk#yerkDb`G58LsD7}v{64}X`+i4Wn|^9MI{&K8Kfi;oZN512&+pi$ zDL=y3R{xIT(`&qcaG2bk%J_WDh4DZ8A5VuST6_CQq^_=^^yzDRw&<8UUGQKk?ewUd zxW>UyEYaDK(X*qHNji_c+I@A1`zWt#@lW?X;& zuYJTfw^oSn^;;<7RD~p@eMf7=kMJ&>UpHtM@0}h`KVC2sA9H@~v$~4wE=p2Yud{^w zgVxuSAK?qQ{!x>b(J=n}?Al@^_PV`7JoQ3b(R6_q*%TfE=aZoM?g3RU?Dda_D)s*- ze$0Nhxp;+`*wfa!AU<1)Uh)IZ|3`TLPcH22``xNwuK#d(9GiQ6g;-rArQ2@ymZB1a zC8Qs!e-7gMpTAzFQa?XEo%XS9T>n>p?X_;{Q6M#HfalvIJhBhT5&x7a%lUl14=VNV z_w>QNOm~!{xI4O`?Cy>N>F)S}0^&#b(VSn)>Z!__`*+dy0AAndC^|eXv0me!EiqQD zME*hRYs!!C^SS;NclXsiKmT~fvQ}LG%Qo3ohDP4fDeVwApC8S4zxALiv)6sDvghB& zxFUb{%A~8fSI8W)(;-U=ebE5&BmB6#U0Kqo0M!fr{W|{kC{uOrDz3YmlW{g>hcqoZ zLPGkX`scs7{zG#?zm3LBHPCcjxojW=|-bZ;$ZEJ|su{`z#Ha!;{Jy z{f!d#u!{YL;^BBL*@f8!lFJRbfcO!98|Po&=FV90t8-Cy(kj7mJpX8IY5s+7aB>0{ia;Wxu;-v71De@63tgTA=1w;O^; zaqv6ZcFT3vhJPO|j_%6HS!p2U{*C89Bm7?e{(nBKkLvRJ`}B533UlD^f9-F9R;RY^ zlD5oXsa_c+Iub8@= z_5YD1-@*0IU;BxT8|^3tU$~s%UY0v}+QmYG_!0gpe}C#v*;nJ=V7=>XGk<^DRyk(8 zn$|=rZ;(llf6)4x@*}(**T3zefvO_@{N(?e%(T_t$Cq`jJ2%)R^>+@0{V8a^?!lt2 zEMv|tGO2qh9eAaf^=Q*otjLSXFl?Eh=kL!b0d{$C$<$5#EFr}>7b>`aUuF{IAGE%v{0KjezyIqb%4(h;S<7T*%-{dIf~(AKnU{2Pc?d!Gqtv5K zm}_Z}Vm7aT=zJib9Vj;t1HO(HEazNT8k*%ul>dKte62{D@IiiE%4hxg|Hr>!u`J;8 zWo5g(3lic-c=Y{3`l0%V8T|P%sEU<8==wzdc-u#IlRrO0d)}9QdQp%%Won^>_z@o2 zhvbO=F8}@Jy2r_jx&B%)AK6R(`*rXbtq4~RO+BAf2>pZbLHzx8`EeV?3GUyQkMo%^ zf4_Cx*jFJdDpd9wauM!-kpGbVXn%$9NPjf{7R@((%)c*}ClAW_l6PA^xm5x4)cUVY{2tx5gx@aNIz76agOgF{+g2@H}SkE_nunG#`FEd(NWnM`5|>Ib#w82 zSA<9QAvxk7#P@F%7ZT*ATz{=qm25TNzd5(iR@Ao`Z8h#%pR{wP0==Kp=+`Ex~Ycj`9(EVYU5Ca&Z8 zbF;$4jOp15GIz5HLHr1h^4~~5G=EXW&lkqZXHoV3YI&}qc!!@ad>Wf-J!b80qHMMw z&R0ZuWFL|v{?)cDt5 zx4Za_=l{2V+oQa7qzY|txrYB2H z+Sm}pkMJn}jr2qFS5W=}@gqF456KZf%5NZkgrCIo|2j{yYW!QcE{rL8{=cVrPubzn zWXbwABgj8!eNFih9-VKX{5b0G)Z+2i(|+BkI{%-)v59EI<1d#H6&V-LHy~sd?*D~& zke^5Tq5e1dT3=Isgh%HaC_j$+U&YfrKNes_)%pJqcX)r;S5q;kqO~G2pdpE_pG6Qq!lV2* z(hv0?qxcW;BRsMX$q_$_j}bq@C;mUu-ZLzUqce6_pkh=*rci&67qG;vQ&$c)7bLGeNT8_Gv|G{1rB<7ofm5%u?Z zbHauyYJIrL{W{`7_4f%qs?)emdM0>0%;kuW^r-%g>_h8Y(fUQiM|$KRYDavuz7g?} zo~ZA)X3@4(r^dIWk(u~VeZRfFG*h3x=$!>x67#aZh2asRr%b-S)T6hhPR{zs%o^>1V!+W&^uFCsqDBmYo4;-mGAh>!H& zzb#=k-CXE*HNIA->WWMq-)=ioUB74MLt*gtJdWan`Ztu1^k{wqt)E8qQ*?g_;v@Yo z_5P8+kB8IkNyDl3o{QL6y?UZe=3bZ~L z=_}fAO-kWfo0}M--hXjx{U7?q8G540wd3gj^S|_O2p`#p_CKQaqo{s_&QC>r zr1w|PUoF3SKd0lu!8F`Ak+oINU;SRSRd(0jXVkkrt8z5Ii265_kMwAM9j#wP^$Ys} zb=e`a&pFrB`^^OVSmyoRT-?*3sb*7PF@NvVNkDw0H&*%2`aH>LukL^9Ym~rRs{FXj zP|ZT^8Gi6|6^_<7p#BZzBRyJwgVxWX{285}g!o7wrQZJ=X&gs(sOK*={9MXH)%$-Z znEC398r0$XVG2R@Yt+A?e56O`55x6aV0|09-yZRizF1pV-Cqz%{@nh8rmiVv)714} ztIl>3{QfZI6C7lM>ZhoGL-|NwqmO$3VZJt};(kZFCyeqXnhpw-%vi%qx-kf`V=&NMdvp_KDZwl-G7YM=b-)#xHC?DxjeuL)kQT-pyZy-L>SB$U!U-#3Y`~>xHC?Dx7+LP^) zX+Y>Y`eTWQ7_R0ozgNAZA3d~$gy-3Mq4{GtzK|v|pX`n~4(k1>=9f;eJ@vD{%LN`V)g##+>aaC zr*GzBo!`PV_Zpq#=X72Kl z2F*{Q^{t4H^xM_*FW)X~L9eOf|1pVm#HZ@{mve1Agku5qh+n%Lg65Y{|Az9B9_2S^ z{s7e%QGE~bksh7@hw>BDzoC4jNBIq^U!(dWs_!8_(xda$P=12?H&^E(@hA-}I-R{hY-W{mWQ+aEjO0+#J&NO+$G857MLacaVMP{L`#c2k6MNA@t>n zUUbSECoy=Rj+vhsmi=|FOiD*v!1G;^9{Gpb5kIB(0UACrnx>_%qdVPQ#k<{g%%w+v z-HpN$(qymTh4@I{PmQlhofsMsw~ofHaupY-@pZQ8pvx#KAp!bE@O&iHzoC4jNBd8_ z&xX^id)sn^uGQ)G5j&Vga4MVS5--H2#B=}UF?^6s0)1q>CFl5)D)eLToov~W9W1c( zME!|XG2HLZBwpvQczP}GZBEA_eW=~sI7VZ)Gl#V{nvP@hc+u6z65=EM#gtI$ne-{A zz0i+3vRGDkS2BAwcZN_pRGoXjS12L-e%KwP<3Dc7Nn2O06^nPWZ^n9-wtux|Qimx1 z^hq*zC_O;U-CpP1QJ?>J_2XHW)9Ujd=&IQs%En>=Ntsn%?+NvU|HXu`?|{YF-Vn;;oNyg7`=e?^gr%q4Vw0`TEFzq(}atcEm^b8z4T?>%UB+ z5r-BMfA#(c?~KbV#50ohyEsdDbkT~he58l>-=Y2u(>Leo2dn4*JI*X(&jQQX5??`RxAV5t|8g$e z|Bm!%|2eV`z5g>iAEfC8AM|DF`Sxfca4(xdg4=zbP-zek$qS~}s!D%w=N|MX|9lj!EXm9?v4uQ9(MlW|?m z;r%a2Z}Mgl^*9kiYpeIKE`8!8K6@O?>c6!Sj_2o)o~zB_{Uhl9kFbmTY1KX<)J47D z^VD%CvBULj_Pk%1*W5+w*+qW!ARpO zVtSlSP`^JNMpqZS55@4TXNd&ahsL+BRQqfEEYDf3=6Cm6tz~X&%Gl;XmYRMWin)D= zyMXvekNiXJh>z;qh>!HBzK-I9`Ztu1^k{wq)qnlf`)$fSeQCw>=ibv=Y^mNqRP=X| z=Jz)1$sit0D(<)8EnCpBmhWj=a2@fbdjHY2o*E%3r!kq4BoV|%dQ{&<_M!Jbx<3l> zkskSn+7Tb+H;9k)ht&I_UM)GM4Hm!BvsXW|aP@vD9yeMTRvy_o^ji@@@j?9?%13%s z|4+^fr}dxvQg5~X^C3VzyJ|%$^Y9K3&aT)Fa2|fQv|6qM69n?OQYSsE@O&4cz#ExXv;G9<2 z-R(5lpY>fr_T6+DsMhzV)8?OVXiGv{i1pWoGnW%aB&qH;vfp?VH*eXQzDfeov$++mh+_FYe;w1(Vr&myN=< zhK0naNed0)BYpi9BdOP-SbA$|0_}UuP1KWBEMi%Vu;g$d8F9f&gW`kwH_j)&D&!w+O~1XSwgD8NzJ!`9IgJsvN04|B>6GS(5tvZ@u=9 z5OG81DL?l~h>!HBzKrZ!{tGRo12@MJ~y2C z4V+5M{|M%xZ^m%MM|w~7{pZtre@>$M{_D_V8>@K#9lI@%(4*npt?ELK;)D7(l#ldi z{t4B8qnov(i~h;bn!T>UzIc9Oy*&-v+JXY>|c$2zVip$ zUp$HR@R5Xe59;x6%d!dLBR#6`BK!Wbd#3f;aYAc%p*Fk!=@Uy81lCE~FLVz0OY`LN zIl@}K*4mDj1%H#8%uc$<(t8TbqS|f2&c8N~cyWp#KGGxqP&?vJO{+>fG>Oj1GJ8vl zYwTlH@3&>g%fAas$8bK%Vl9jh((4>G)cyR#oWLz*^upvLY;)}y?15E=aH(1hw?7<9 zP<)VohVqdf)&J4>XzIYFbkp^H+D+PZ+HD`-v%s10%xK_5^0BC$m%Z@;K3Q#72HDXM zwfAT}dzpz9?S9Mq5^=N%DXX=UBR)ePc7F5?yDq4f#kBR#4w zBm2>OQ>AU@I~|4=*P+kgA4wcaq3 zPTl*Gdf3~DSDJNa!c#p@sa+N`u@*+FossV{~cdjixuyGY< z9S9>RKB#{~`ACoEx6tNPh*+5q_c4Odls+q)}0{x(D&VJs3l#${e8|-$9#I_d@L(^ z;KS^*%7uE1kMJY=T0uV2BmYo4;-mZq@sS?oKPWz^e?$35kMd9S|3Lq*it*j^zP7Yt z{9oPJOsp9HztwIL9)&oQPWMm3`Cp{J`Dq#*KcEGjtFAxUv8Il=-y@PaIQk2>BAm$C zYS{$Yhu&|WuRPU;hPI-fq19Pm4|DbWF2bHPUnczQs3FgOI}Z6skNiXJh>!9c#7BCR z|DgDw{te|LJ<2~(evI;Ke|7xdVA4_Py*mCUiwY|9gXzsDlAm`kOKbACbHqpb-~NoC zm!d{U#cKV3cvvBur`B(s%@TwShh9nxf)tMIL-mdH3%>NG&V#R{bF_aP$*;^0j1Mm- z4M&zpv5PlAKGGxqP&?wI{08xn9_2qMKB#{~`ACoQPn7@Enp21VHSu@4oaSn87ut*U zW5d|p<4uTu|6WqFYa3qB^1Qasi9{NDe=yy+&0TCbejbYqye}kfJ40+6&6E%y=~4X~ z*>}->jW%vwG+jGsvNm^VYq9mMwQPLr-DJY5dZen2mUkT3O#6KJ7P=>860Nhao!Hez zy)W=xIJx|M1Bp1-P(Xa7NB*I9#P7OGljDDGFCC^UqQmBN5t~M8S$kV6vg_mkV&s-i z5FhEU58tir+;0O-f4zkczN+q@9X^7Uj4l>F>GH`PpQ-|i59;4gKGLK74~_rajEv}# z410ObmzdzSnJ#8;L z9jZbb?C8rD7yi!1#ukvi#?vKlw>c8xBR%pDwIhCzvrZc%y2-gK`U%@j=CF$Y_u;h> zWaxr4jnE;LBR=QpG0_=B9XI;*rT?!>c`zlF1ahOs2` zH2%A7VXeJ5@|3p!=(;Sk>s(&NkuIdbM_?)x4xYt zL-$O|5gMQ74wmL@#EWyx{<;%8(D|V7V99xDci3ry_(+fZL+yzFKqv*sJfv+GwUs#U|G=JAi(-BIjw7V-ji#RO0ls~AOPc7^p3d6V zTsthVo>Pe^RR2cy`Om6CAJ^Hb<-!o&#rh*__9%wkT`7={1vP|Y zW|@4#^XuAVO?&Dz@~hCcSwpd+eP&coa<|->v|qM`BR+WLLv)$OH<5z^so>?T{(vl!P(xdt}8o$O5 z9jcW{FdgFkn6|C&C{B6Wm8Hyy6K37oKu)X-C8&SIM|$-8q52f^AN7y;NRNI$^nOL} zXFH=p?b|91~^cb?4$B%495FhDL{TSJYzK_X+lC^!}+RA-y z>u7Y;6jqUcb*^!M=xK(u=kq{<_(+fZL+yx<@&m+2dXzt)_@Mp`P&)U65gReAq4;`yTjud?xX|v{c#^+(A3=PiNA+W5AA0|N$v%`bw)#-Iht^>1 zb|bNA9}m{A$2wsr>q~}?K1>iF>5+e^9r00qfcQv{@&^NNKVUlb&h(H2VO_-sD6y>L-m30d;ZprO*P3mwatf@pVd{4 zufOX?kps~Il1<|S9PyDJ`G?vOALR##kMt;iK=DES8_Gv|l)oifZJ@=$>GIE7t+m&O zsdvM_)3Mp>0)z&4;z?ZiT0Sf%n7ZuSEH94iqW!gh#47!f#$jACS=&E~>qdvtz1j$Q zfK{3HQHhf{F=9JwI(eR8?3_b7<(YECM|vS<6W!D~T27z$RQv0E8~@>e+F$!)hIrf%Y&Rs4WpzV%u*+OZ=dYGC^zXF4*5}^}xGt35(2*{U zsz5%{BmYo4;y+n6lSYqNEFYgS?BD&N1FRnkHtBh!_j-2?;v>CruTWb4e3@)McksXa zXT$EN2;DS=BsFWl7m5$+-%vi%JM7*}9S(-bX}|mYd%jSY(GkM)uZ1Mf(#z|WYhO09 zcfR~#XMpyZxsBNFj<4ACaiM0y$OvNXnaX9a4s7mDS+?IBti5d7Lab%eL)_jtQxhE! zK{~fh<=5K6{MlGfT8y*fh>!FIj{RBt2Zv=Rzwg>t z%vDTL?Q?tSCKxk4nXIve_6_LMf*G0VCdP6LFBBitzoC4jA9TMz z3kcpVrw#L=r{}j3udC0`nqJ)npCQHMw`xti9^8s#RTkfoPX$iZZfRsAp7vNLddJlx zCZ7Yz=h^G{_*+42kzc9&V5G11wBA;%+9F((YxWc#g@uv515)|3Ps>^TDSCOW`$z4b z%+})N=HX(;pK(I_`=`i;p7p?bDSMj83--4?evchZ+Svk)F z+E-TXH>R0?K`#4ehE|(xBbp=yidNJ1YhIoSCy%bD@_EKHS#D&O+%Ng7_SgL&tNj}Y zE4=mO`3XD7M|$KRYDfHp!kO&H%fm8bKL4H%9QT)l@FK66On7DMh4@IHo4X9Kw z+56B5-P=~i*Q)VWVdtX)GR>-)7m5$+-%vi%M|6o|M)9&-zoriz8_}ln`5AV!FS+sY z80p-shS%|yNlZ7vNEx)dK-+khxfp&sO*DF)K_YH`6>3~;%5(GM*_j{j%VVN**@%E8mZB50l6P{T0(rJ?{joL z8*;ju(!Q?+T@+&>F6p~fESac~o^y@J8Hb({vJd_LQ2Y=d>5+e^9r00o5g+Lf>|Mvk zKDaBd|2Bwjo^DqeUnOWKv8uI@JY16A6~zbjZzvz>ZF1JLQI6G=3j0U2s#p2^Y%e@b zTCA#05^mq@Qg$(s71VC59NLqvwTu187OT%!>B&80QI5Z4zHTzlDo$c|{;s3Moj9l+ zKf7k7{`rBUM3b1TsXuriKNXtH_CBnu)Ng4{i!5r0A8faYuOf;`rqf{E%pDyi#7Fv+ zz3Z9V#>UFtccyeq_D5F1PyKR^_}5%3xwalIA^Xt(55*7hkskSn+7Tbc7x9rkTaE7? zHNF+k&#(CQFD@Z=5k1w@!<%+S@j?9?%Ku;W8&v!K{_pwef3%P+X0cM|7o$A?oDjlH zv%4sYI{tC$d4SDP#~0VEmJ2T&*YRs#WB9e=XjV3_opMBd|G#~}S;hPR$BAB~WM&lK zFnJRHy>m31dPF zTwnA}LVTpZ{?{nBQr!;fr;g9leuRI&)S^ormR)R{|kfGR>pVFpdpfHX(2!7(Mdq@LH!%bM|z{xqgc&yt)+JpXG#AIscqC*zA2%rU>;PDz1i%nJXGr=?q7GaJ8L||C(~z1tN#k-tA5+e zjoY}eStDJQc53}+uj?K*yJHV=|Ke%V{E;F2=HN}d$4ni=iSvmE}ryAelxq>solXKN36Di!saKW-w_WB`<*6@&% zDZKOYLv(eVi=rF;UR&2<9jmFHzZczSfV6V#Y2Iz?7YXr^{?BTQ=;TBPB|)wK|2p6M z^0=g?x%{ zCjs%1o}NEQABVJ3{73oxd%j}RkOk7niG}>@B6k7B2la0#AL)O;wm?1C&q+y9>;FD3 zF>L=B9eeeDo|Lepkaud{N?@1bS^c4{l%eHmG~mbO%JFg5t7vjZ4(7hi8k69%1ZG;_ zUU7BZMT3LySB{T|*4j=)J1bsP(2LBoU(23)J1Bu0bu?LXyK;PZu5Sl&`;#N@@3)g6 zKGKId#xV2HHp-om`{|mT{7U|?Iqsx%{5ozNKMmS9r!T5HGyc`XS$J^YEiQpdN`lahq%8wcv;{)I3;NFUmLHETc6K}mN#M{ihOWhYerN@vP^Y+pWtpUof{Uz-W$G+`prdXDrrBAnCVcpgH@2rd3 zN%CYf-w*kZ^vFNd4*B5uM||}B@9|s2g4WelI#0ex-SwZ?DRurQ&-u)$ zU7a1eoGU3IC_bovL-|PG@yJAW!`W0>^rD11Zu`U>lLN)iKM(6aU0mpObY%&Nw$QTQ zMz|=KqBH)z|L}MJ2~w-G5j;*xCOz*QHZ;>8+-7v zfpTV9E=_n)%C>v<5bF)JmnQnv;8PM6$Vd9mV_LF-+Z>eAmq+Q_q!Vn8ntzx~nIgSg z63z!+Oo8@gzUap0n$=WtCKS`nBR{d<)cL<9WUW5@OnNqM9VmOwtzBmYo4;s*sZX1m1ia`Rf}=*_zy)wxU$vAKJ!exrfvWF{LtSyWQkoiO&L>DG0!NXvu2dC-GODSEb68vd$bkb zd5J?l()%tsPG810Qk?gn{P+CuTXzQQ!&2As2bU6|eXozap#%Kh%5iTC=+5mQ*|LY` zV#pdlLH4)S+dL{FQ-;XYr2A930HErNWcNB*I9#2>OhiZ;%_ zD_<|XPF+nuu`BW^R{L}};j3#c{k1;DFg{2>a`S4MalWdO;&}Pr`*Tv96E!2AHR0+I zl%V(^{|x0LeL?&R>Nu#rvMW)d7GpEm$)Ic&aVt@8JTHz9ez1<9{Iu`a0rbOcD`mR6 z{_WTOS+^SoOU54~dAHk1d}!@4^!WPf$^hpd!sY5k>}1`Y%r|WZ~ESCNs;&d4+U;A`P9K$B}(syt`75s#Z#9Q4j5}`@xR-{-v>KvYy+V zisn^z^rlhYjFgCjUCFQW8T=D}6B=|k;<*=O$VYnQA8JSZZm&nugoN9&@y?~1U*`k2 zXu4VWv}=t1W?2D@57N7|@~0NsJMw^@&eE^*ljmHpl_rx1Uh=tOj^cy-Gn9|?8@I;L z@*(%-YEp(&>#=(NpQWBP=S7I$=f29u8w~? z&ubvPk_x1E8TpWp^iQj+D_gvpDc`l%$bss`EcULiXj*D4Jx(r>>a5R)^+{BJ%}r~_ ze(Y$dm^`Sf&hHhm81?%epJFYQ-^`PyU&nl;NB*I9#Lwu~m@OawQ?`h{P6nQN&%Q45 z5Vxjg>({JYYud#Rv6o zC?DzXOWoL+X2wcmIhJ(q`hodZjDKxo^iJ*jc=g*yuEd0Ri)%@r2;7onH8^K<$mX`1|mqje@l({lK!>>ruk0SpJrNBe_pMuAEwmkLQWnx<B@oak~MqPh2rS0F9^~(&q9c0WZQ=YQ1 zKU|-I{71hZ@*nAuf2bYt(esP=NdKxwEK3{JNU74Kk#=F7kCpKq*^!dLt7=NqhM(Xl zKB#{~`ACn}pONR^=ojgjyjRVCyKk@-M_e)&mzAXmL1i&y+Wt85&aVnft-D!vv52SR zW;=_&oi`T?y<>!*Z?nnr1I@@rc7Yx!OO$_lC(@f{&f-e-eqnw0IN?DfJxQ9|h#)@F zFI`+j3xfB_75VS4`-|F-*dplX$CLR-qM?279ICRUwu!R2IzObjLa_Q) zNL-|5URjqf(l6DcR?eK{;Ak(AZu9FA6d%;Tp?suIotaE)zfYHUtNHJU&rL;fdN#8XQ-sMD zNo3uqNRrpIFAMvbFaN35KPQ}MA$q9eBdgBWG+$drlf8S^ld4Vovms-T$PIqR(UC*BEvhBpYP4>$t9O7xcYc0jO>i(A|dtHRAeLB*{%K`F{KFzfQ zTkNOESJe9Fn4`@_6LtTMcgG^lChutSVH>s&?SDY~Cy@V0kNiXJh>!NKAU@JRaI$3| z^LEO^d&g0q9WG+?F&^SiFBjq7R2^x!*pZ<4p#BZzBYpd>E!g8+oqR>Df7ajKOw3XD zKm8ebNpponldQD$q@XmC<+|UME9S?FbS=a)>ik~m!v^F?(hAajVk~KYWes~5P$1h$ z>!?Yi|Li}}beM$J?5t4-^uLz%0%TFw9H4@==xiH_Vj=s-|>Q2&PVk^Z;0(^+%(i}EXVe%IH} zMy#Xme`@e1M{_bhiUbW$CaKOzEGE!M8K$m(=sD~^`(JK39w$8DhoB$Zn5;aqo_QBl zQSWs0-a@N6>)6Knk7S#*F?8&u|LlLs4M-z?XBUv+yYmFZ zNBY{Qy`m87EHGKxO53O%U`zMh9NRRwO?TC;5--wU& z=>L!6gZej=kM!vMj@IYow@6@RUT#W|`utCBd#N)2Ol+D;eCmbq;~OUmH*Y1e*$3^E z*xw@Q;*^J#`%@yf=8y)v>+;{)b%N`QkRGi+LiVBc?Z5g@QTIpuvj4t?Li)Ma<-Ct~ zSHws9U+w?x_xWGj|C@ck_MiN>{T+yp^uOBkt3^@Y|Jy$jS+jtAZLwC$x;0op@%dl- z|NqNJ_M!D(Xnl6QCWic%K}N$XB=(_PLabwM<9o!UvMc>izy zmRVUJ7}}{HiCMdsmv6W)AU@Kg^;O6|w7wnfpFn)1NB*I9#7F;c#7BDc|3~pb{Ts?h zdh~ur>)%`tjb`Vjc2Qoc<3GK7TIK$eGYz*$9?y>Pz1O@*db`=onF~tA_&<2=rpo;h zJv_XnRo_qWPjkA$^>0Xz)}JB!(EbOse**E59{Gpb5g+}(5g+N%{~yH%^=~L2>CyWa ztq+>E%7Q)a&{`R)=Kt4AHnDVd|3D4>D(Sva1~L198>E*&uVS1+#m7N zHbh#ko-h7sGa-nN^k{t*vJdTlK>H^UAL)^Qs2%aq{uRVW`gM;rY*=c0#aylby&SNa zIjZ|>IvTH%W^_HygJx>r`Zv_Sp?suA>pLBH+EKf|>MD;v$+TwEW6Y#SG;^P%cr7nZ z;7`uRlKOXTsNT4ll0A6CzxP*VPM)ey7?I7-9d;*|s*BX^WizEHJcX_Z-N35$*~)s3 zb(SKAoZ=(5xD&)j`qNW;(z1FMiepR;4S9TweOZyl!efu>C#;RiJHWRz|Z+<>_qI^}f>3H-%g` zpp$_7M|$KRYDavuzXS1+zASz*9s0F}a!sxOm$pb{7hh$w&kwz%9qY4rzd0TR#Rv6o zC?Dz3`ZqK`i{|%!-fEYFG&sDDHG zNRR5DXnzdaU(=Wevc$6=G5FhD(exJgkb6?9= z>i(~r33bK2>(%*-x&B>ASS?cA=rlq0q5mI>AL1iD@(;BmK8i2mBR!hmLh(WU8_Gv| zH2;O>hdYE@v)NZ}$QAp43hd0ps2S?|V5dN@qc3Zb+^XvHJ+>`-JLaC8tM30gn_(ti zb?71f^r`E$@K`O2A)m}Aw*CLNwoQCTkQ2&PVksht@30v<&Ba$}AuN)O>*T`Co?-tEW z6YmOrqSleJ^Q*~%mW*aOXUaCiul{>~?a28$q4PdV5`FU&G5l^WU;Rn~G*j)7Vh|6yZRpWHRMr7_{&C zn6}jKia(eL zX3g?+KWmpjKGGxqP&?wI{ac8S^pmc~(~$REuGs(OIj@db@Zl7*35*sJ`&yC-EA<4$ z2la0#AL-Hhw@}mXw7AAG*+D%YCGea=d!}N}KK0qO(sKv);Z@cpMc&53tVSbvU_@Mp`fJ}?%$Qu)%{;Nugt_N>iFkkEnD3n_osr%&^(U#Nbjxf#WpVZN6uCEe>pF&E1Id_ z--~~A>H3$|6Jhmlc^uh?_BXwXw`MDSZ^-5M>uNK{nTg@*_%3X5s?Ox)Q{k(K`ACoa zL+yx<&UZ(Aq(|r9qxhiy4do*}I)5LXk9=!#1PdzuDZ8ute@4vtPyJ=m2E8z~-vvQT zPbM&}z|Px ztv^Qgq5A)?`Jex`{t)qz9{Gpb5&u{Ff1CgMU-|z{kIolI@j?9?%13&%{vG9~nbWGU zprlQ5#rc?1_Wx)9V^M6Jpl_)oTb?!LI-@%3dV;NTexvHN#a(A{;dpB??qq=Ax<8w| zFR+98FVc6iH(^?SLf%;vqs_8!CSILnEk64EoA7Q>IJt8*g(LgW{>NEL9aj56vRvg) zA6m!EO`NFOKfp3Tm>f|=mioDSAwJS0|4=*PXHIOy=-kvw`+XL>iKkvTie^Qi*)XVz1;z!kJm&WS?IuNA{upkGE!wWW|pA zq7K1a+7Xe@kf7ET&%Ooiu@p!400TMlCLY%~f}f1myRli0G- zIbuv~u(Yg-!Y|MG0nh(O`hL%Sn6Fb?#dzUdZBOl9HsQ(~QLfTmD)kQMa>fRZ>_h9H zO)m{(f%SBmYo4;zzaX!ET(>C@WR_k8O!# zrhTT0?Jh5pCUh<24ZS-Eh>!Hzs2;5I)vk({8sBNF64mvMQ^li^b0z;i3it8;DWUkF z{te|L{lbC0nDJ!~rCfdf{|Vp2ELHo(Gj?ZbIDqf~f4KRVyNUH=-a#+^1wt~&nN zdoh7Mb#M|N1cym;gL3$(Yc(Ms>4%ydvnuBul|AbB>tNY#mSgKAnzZqerne5}qf^s3 zvJb6)zWBa6TXx=4DZk=Fd%lTf_f`9w&5Dptt}Wp9Hz_>d9_f*Ps2%ZBq>uD(rp8yb z-{wFpdzWM_2Iel2j@ByVUG8WF#7BBh|4($pJ5g3kB#_;VQRYGkbh zcRWiQFTcX9)bC@#kTU&(g?0G!i}?I!q`zf7gf*Jxsw}fSPOs}S*?9H+U)o$N83jgh zSEKdt{9&~I=)kLy%zH^~#j|M%EsX!f7T%a6MvkqbuM=~stN$5%zA@4x|4=*P=Z+c3 zs{d)MxU2RTE&9X;^_?nOnBCD;Wm~(}$}b^^kMuo-e#|(giLzXc?}j>8*fRC~+1~Pz zURh(xyHr;QiVy1FP(IRIt?12CtXe5S>hn|dnb(!6x!iJDQjuvBz`r0tnb>eIv+RWG~^?_p44LXo3>C~3l7uGgHN!t>igez zRyWBaXEkq8Ya>DSq4huYjOsGC6JO-R1JBaO@<;Z(wv%`y@Ttz>-OjFFc_omK^vFNd zj`#s{sd>}UVf=6_#P2#OEt-%vi%Zy5NUzKd+8v{auTO~Vt+UVZ=Tua)Too`v(oF{uRJ zk5cU!)pRvi=Bn!-Y?F&v@@sSPQLB1FS(k^>^qaZdIjssi<5^E>x~7Tt3NK>q)ZfSH zP%906c10>Zn$Hm*>CyKq3)qL&Kb+N8XPHT#<;+Ph$-R~D*;V!V8MU=c^J4T~-5hNR zM|`A5{-JinA606`Cj3z@r>pi?+3}t|QUAZbdwuoq0-JgrKU@OigY@g#nlP)2^%V;> zzEAEIF?;p>_C2vo-#8>+`qBO@9RHyBA^*|%3h9yk==@uBzUj^Rec8}jEflX;C1jXo zF$-6}FLxhg>*bbLq)mbN{9B|)`3tfSt-rY0dLX;_u$FTBK`4nF@qziM5+f19oV-?9?41~Oq2(z{Z;0DU<=go+umVj`rkYK(Y38o!Vw?o9ZZHX zeTa?HOO5ZumBp;FI=(H{U(nlDy&^?T%jYQnMe#%SAwJS0`%!%yo&Q(mizzG1-YU2M z8B4vlJBy3e`uUzuvxLwE*(7e713`SGNA+)HA3A^0w!R4~3&@l!zK^rdS&KK+`Gqj+ zvBJ3vQDkk+BzV3e(j)&+JK{e-)_|>PdP;7k+P~eQnfO($ZwHU4E`-}hlRo3t6U0aQ zWg9J7)1KSqj%s`pOkKopYW@G~*-k=n6&=xaav~@`sDDHGNRQ?>P<&y?G#@!b>YD*mm$|4r;B3c4TJMDxy$p!lHv4do*}n%_Y6adiHN#k)c5 z<1d)cSeKAb;tA_5}AI)0H4T(xdt}vJcg_Q2he&kskSn+7TbsHxM7` z4-D(c%0_prjPKsS&Fn+(sp8G56D6mh6Fi4>B`7|qe?$35kLEW}eH@+tao(~f)2sE# zit*1|X%l;?*3YLOS|}Au$GEMfH$i-)NA+)HA3A>p)h`eq>5+e^9r00p1M!jG;>Ty& z;AYFp_?9f*#3Z%;UyBZq+TG3Ijq?~m@j?9?%13%Mzk%xGXn$v!#*dNJWpapGA1?a6 zuIR1iUl~;cH0B*@lC7ig{$Hd=^>1V!+W(2Z|A>$D$UoGM_-K5D_(f>ntqkE7s^XpkESJa1_+^-`ZRDU1y zPMrkXFMkP3{>bHskMyYijqF3~ThaPO#7BDMA8JQ@w7wDXk-mv#JvLpqDx0eDEoo#X zK2+atlfSI?@{N5W7_0kVP<&AThVqdf&2OOkINIO#C~GjAwEL-Sq}GR9>*|WL)bHbC z&+eMHjUNi-8}a@}q(}92WFOl9hSo14KGGxqP&?wI^^J&+^!lEDEWUP`+(3=5)v3B7 zQ^&W>pSWxMtRD)d>3JN*2la0#AL-Hj23kLj>Zj=b5X49Nt)8~5R==IH(S>SMd(TB| ztlmH3TGLLjy`dwIitRaif1&;jrq+i}#!;UrRqImj!*M|Eh zvbO5^tJdQpr8lC?Q@2;;Xnqm(Zzvz>(fm4EzliD=N9Nz9=a#xFrt1A>f_*IW{%$T_ zt21AE-n)=b@$DoaKGJ8|-lHEP-IR*`PkoINSWA^ZF2ASL>xRPbZ>pl6pYi`*Uy1rR zl#ldi{S8__hw^81eiGs%{f`Tby_Kz$LF)NS4L_H%Q1$-bFzaSg4Ig73>7x)-zefEV z%13&1{xDj0Y2|+rK_P^mh(H^;6Wp zp?svTV)_sLe5k3iN4?+C?)Y(*^u=7{>&EKa+#7BB`|1nyhgZej=kM!t%YqWj>)!$Hk5%G~8-S3C;6V$(< ze56PD4Vu44^?x+Kf%r&|?w3RP3F_ZaKGLK72F)L%@df(6BR!H^Py9`z>bfXS>iy5TA2+g3-^@j$j~%4Tk52Hp>0SioC#Ziz`ACoQ z8#I50<_FRGGQ>xEbiOIdPf-7c@{u0pH)#F_%}=5At%#5G$B%rXP8Tl9732RgiFL%M z>iL(0-p30UZq+24-*bZU6V$(!H>d^MDxp#BZzBR$G*(EKPm-;|8FK+6^+%4deZ*LwDI7FYByW3D__u>4I= zvc5Eg=l>u*I)4Y*ht5A0Vm8rDoulRSc~7-d-Z+WD`*h5Ic&MQ<{Bv^zAYpPPL1ICNT`29`ACoUpM3G|N3ot?5OWw8jB|D zxy`9)-uLSO`eC+}GCi`3_G9mzY}t_=>~_Oo$@pU=?{+(hn~&*E|2ku*P^&Vn-P|}v zW4AMwHC1Xk@C-lx^Ra~ZNZ-%8H4PkKr?h|mTI0X9?CM{;bqnIo@?+BqBxIl2 zy=C;9rit>TR%@+Typw%1*0Z4#UhD6!Uc;MLPvL)7TSO-(Iw%S1^Z%}XJnM2=$1abX zC_oJcsp#BZzBR#tR4c!kma`S4MalWcjasK<3 z9;Iwf)ohmHoTwS`tO*~#j+43m1F6-3-do(F!_jYe$k(xVRY3G{q0qZ$Ie56PB zt0DW)`S$31eZ)t4*Fc)f;P%hi5_dj@NTxKDjk?e7mM#8q0wmff{ z9^QY4`Ztu1^yvOYG(W}~9i!6+HCNWE=kF)Q>|zD0%h-a2?e#+zt>GajQ~1>AEc)!W ziLy~W|KD+D5qlO`#-4Tfu8I5mne;F&7w&&YdbIx>*@xc$HZ8)a99mN;(iqx%O?d{F;}@{t~`zeM-5p!+>$ep^XP zog?I8_5RbJu}-3!_f}Tp#1?_%=}G6R=J5U(r0*Lto_1UpDqpXWN|!!y5}!SeWfuoM z7mf}-N$#JwfcKA}`#~X&t}JsVg*NgiFBJ^5Au;7`G?vO zAC2D;AL)&Ih0^lp%Vcx)e%R(_u438ybQX3$Md+p}B&k{Zy-<8m|Az9B{>iGDGehjBTVi?>|XHOpmh(>i6f?ox%FB)V2JWvpq)0%_#LLjHA;yMXvekNiXJh>z;qh>!HBzK-I9`Ztu1^k{wq z)qj^RE}{j&`{at}&%LL$*iyZJsQrj7f_{EHnSUgjJnoxM8`M81n`ac!wBS18OZEOE z=g+Bv`7kpwbeKdCAL&tj7ukp2|LFcG#7BDMA8JQ@l;0pe(oY#8Q#;_7`nm{s~Cjl;NPvbKK|m%l8b7yinYgPnf}?mOy; zgG_g_j7CHCe_2=%IaTI}kMz6lPN9SDXUU5Wb|sz#b;RTa8(DDBIiYZM zpXmN5yS*Ms6B2IA#ygj4Rz7;qsswCgEt+l?KJ6N#zgboQpHItYBWc*NWO+xnvv!(K zGjZjLST>UkBkTKw689(5c}9z2)N1}pIrrilZPPw3;(A>qTWHpbm^8^CeZTxAq30jz zgI(rQI)AmCp?{~X>EbMo*pbX`1zZC3gf>AY6{a_|;k+V_~7s3)sf znQ>F{PY5TC52a~Pd{F;}@{t~m|51HZclo=vexAKzM0x_ZcZ~N*(vwd{-cfD7R{2>=ijuYm7rO8mRq0DONfv3sJ@Ks3+)xIoqo|l`LkdM z&6yU=DxQzfAw7jXH;Z`G-+yYHmSk$@U$IkkZ!c=YPOoMc)#qPIa~6(%%I6WuiiG$` zkNiXJh`%-bg?5{>l~QAI0(o!GlSJ~5*^{kYv#&+5c zJ+`rm_urG$M?$YI8~E!>fgHsL^=~L2>CyZXs{a=0tJAnUm*wJR_vshUPptRL2`t6o zis1htPv2!uKG}Htt+xJz&$8#jTlDjtKiK}_No?q&jl$^~4t&e?EQ0t*kLtU~zT2%+ zwLQ`<%C@G@sV?CY>vd7XsP3g;963~cAOwS(j)&+JK_iK?xG#j-$J>yrhv{U+t0ioiR{I+JYhwzci=kbH1>Ws+D*DC zKU!$dw|#ui0%yjvpzY&G_beO9C}%%+aUM)9Z8GKQW3(F2US?uN`_0f9+dcD5Xj%6ea$o0N)Uu_k zSoFY$S-%@eLTjgy*X5Q3@sS?+huRTebK-C9>t~VjUe^n>v$>5}^?qA+;MRB&*k}}) z-!6|A8-#q}GhNRro`3HZ4TVD%*}UN*H-h*`U;nNR)f+ccvIlRV^=7BAtxscF z=H#jRgb~^N++lZu>_gvo6Ni4<{PoQh&9*dp<$Nrwc>bf#91+F^X7eT2EFmB1k$Ep<|%^gL+`iAZS>lPYxl}K-an+D zr_>cI#{Z{gwIy9GcMG>}9fy3RNB*I9#7FrJ;v+rEe^7i-|Az9B9_61XKSud=n>HP& z*>)pk<5;bREGnqX4|4BNa@x_7zq_@QBR5}5{w6f& zZp3ph$Q;>+>Km4G>eC&)jFheSGx;A!@+eakp#BZzBR$GLQT`Kr*o^wDUm}Mt+eti<9K@5qg|pcHYl&+;Ut<5THy`o42|e#K zMDFYHQv0yTQ*75^3EQDbB6rS25#P_lCB#R1RR2cy1v%@qL86bV%iq-=Ax(p0<~r4ppJ)XS;}t3x8*0V+%-M?q5JgXppbJ;e35N3+$DXGloS1*w~Rih%e?zjxR-ZGcZ7`SaP?bVrj;VzteF ztaZ;dB+WUQwD%GO6d%;Tp?suA`5zkpc|=vq>2k+eX?$xqZCyB-Rrv3}D??~>`y5{x z72y>yI$ercXs>iKJEGmSc{XdWKK}#t(L&c@dE9rOPC|U7NA+)H-_WUlZ; zp}h5a>F$LyWZEQ?ob*OUO5cl*Y0R|Z%JwXq6M|cMN1pNi7(slbNA+)H-`Jaf=a{az zAg@(#L_GTPJ)2eAiM{9_BMd6oB}sw##Z^mvIAEdYWI4@^K z|E9`cRz-Bi-EFKO%#)SAeIfjq9LXI@W8nM=^3PB{(xdtZ8vlLHu1;N-U6H3xACu#} z{{wqgEs7-t3S`)bHTv@OOulJ&J^Hxu4*6nCjhtbD^~8#Hn_Z)cd5f1q^vCTS@sS?Y zzma`W2exVVUc4ZCuici@#rh*__9%uepWl>ZJhRZaY~#H9lT%uY(q!4fYCulgW(~!P z_Um&6vMKFvq2b+w9PyDJ`G?vOAC2!2AL-Hf55))dZzvz>(fAvUkI?vP_V^raK=2@0 zZ*`QWE%y|UE%s*T%9F{4D&t7F;6xA~=~4X~*@wor$%B%$ed5~6eQxXMusL1Crjc6K zxyAvary0_o&jShKBR%pDwIlumoiBH4=qLx3eWmV&Zeqpz|K8@tB)aZFNn?{u5FhE! ztnt_Ou03ClX!I9tH_J(^`2M>!3n4ez6~XvN5<&4n{Ts?hdQ|^I-v{)4>D6s)&N~k$ z<(g$W4RZ`(N7d*5QolN+{jN-Y`Pz2@@sS?Yzma|D`#z_wiCi|?Q!#zGnMOxVVHMB+ z6B?9kAN`Lw7nR^$ikhm{JY zsc-bbee((8BR%pDwIe>tZxA2pQT~JCgZej=kMt=2MENnwum9?ISgSu=P3d)Va?WTA zr7}PGV}T3#^Nk~q$=<^eAL&v38`+2I8~48X5hI%_O4-U&Ipt?{mH9#FqekTCkN=Of z^A4&a`QAQ)5md~G7ziSWA{bGazSE;(!kiTYMi2vLF(4>P5ETUpDo9iiMa%)F@3a_D z#E7e|Ip>UuaeW7N<=w4cmCv{8@^ABe`kXmEbGuI`1LhI4mmxmVBmYo2;-m2m;v+p8 z|DgDw`gP?aJsN-h@bJ^LEgZ=2TRqiY8*C^VcxTt@@f9A$_^| zru*7o`(M@^`Ag6|3L!_wu3|p*dTI_;>&7#dchx>Bu$IOJCsUuhF2u|#o%HKs#1J3p zN7$rlzAo*>$A0Uj{dGRi(KHR&+jJZ0@~#H7?|i}*^1!<{x6Hn&{k6a6>Yg#gsNw{Y zQ)?L;I=h;tR%jQVbA)Jr?JroS=!M zZyjjvOVZ9HlS+CXE{KoxSxd%hoMv_A%>5hrwg311mjR^kd={A(anTvY2i31DAL-r3 z?bQS|?#`2=KagMNBN?>lNfu4qOKzNM?>x2Wr06X8^E9th+UM%}sW!JqO6zLg6T%KH zAX)V`vZ&45#TJ(q@M+0rO7%T&2xj^ViBp}8%sXVC*x$*AXPhwC8rEqp z&1mE*1!h^2cBi(Jw$y?lKGJWhbW!ZLd_H&EWutvV?W7phKHtcuWM%YrB3he6`yP@Ohy{TdnPcV1Tb{=FW9aQa$*Txe2j#Ef{LN#dLy78~Yw#6%W;gJHZ=13FCaD%U8 zzx=9j)ybDE)^23WcYhYc0s{Eq=$6`F_nRarjfmB)401Wj0`id_`G?98-zogNXqD#2 z?Z3Pye=Ts3g4Fw2zN~9WV$>hBE+Z_Q5g+Nly)mNUe=Ospo4qFv%+pp|;kC#--(1R>w#ai%en8oV_yQBmIp=jj6LqEWhf1iOpMGLt4-)K{ERz zpG>P!OU`I*FC+WV`-kF(_(+fZL*I8Tex_;yb{MIt+; z3R_JhJE8cX`gP?az2C&f)cAS~H&E>#+Pr3I`|0xO4B2E{N1hYKIu2e{hxQqt$g}?1 zsmk=!evJy!NAo19yBQ;9i|ez6`%PuUNBTzJ>QNt~BtA!a$3`9bL`(Qe@7-kg zIyYv}rmc+ZL+>AoAL1iD@(-0GK8i2m|1bLIYJBz7_VX*gE#5Kmhn*?Qu`TC>;)Cih zDc6;c^fT1<^R50n;{H$j$r`nX_6ZFyVFzb1ojl+{ic4_1O-7SpEKY;JZu9 z+a>6cOMVLL@IFXJe5ChX{inDoIFrY!{hwnOV(2i{zP~=2$$iHiXYu+sWMp5&y(+Zv zyfpq<{e8O@aGsX@zQtZ2OM=HGFuzGZWGT*wHffyBf2hANJ?@{QCBHAeo2HPcerZg< zM^(s2dgLD}NBnh*jp%gebY7^&*Lc9+_D43DOde0z&MG)QaYlTk&vW`J29DgxnaUru zcvoqB$C{QSZ>#4rgM>^M6dzQ-u6(4gRB%;1-E$Y$Q~N*LUPjWPYWrzO?c@&m`AlnR zDu|j4F?n7xzpeIRF;=7GsQ2YNoqqfog4TGe4 zjr7@}_VbuoY&6TfdPID(DuYL={r}nf*3)5X`Q^0M?3-sM8$Ij0jQB`@wMCNXIer_z ztM<@28CHL+>AoAL1iD@(-0GK8i2mBmIJRhs0TIqv{#9^GC*@j>r4b zFRr~D%h#y+nTt0g=!Vq}(%|r}Eb#R<*6mGsXx~%QK+&mOJkM0~TSep3X!hNa($hbU z*)`7ztbx}i=H6niSp8WdpRMMXe%&vbVbFz*GDv414wr*`q(}ata>O5&IaA!0k;H$7 z6cN9L;Z#uX$8=fWla0T$o7ErRK|p+@uYJ}@te+ImtSs(I0E+Dz*I>P3^`0ShSnDcnLz2Q^DFcH&*gDYW`pP z=X~(PM_}#r1K7$XF)Y7sJlncpE&sa1 zNn5?fdRkFEKTw<8n#FI=WG}XVkr5y18(qxQuDu<~6V?3xuk*?0I65(#xSeby{U{^* z+Op-Eyn5lh>LIRu>8ifp>ivIt?T^SsG%SeZQPY!4g#jfIyqCSxRHmhmIsBC&ao-)2{AM1GB zR>;mUq)$(7;{(&bY3BTOskDD=WYC)|r>X3wVI^|BVhvi$EtPwQ8;St|_e=Z7PmTwZ zKN>7%PbxZ+VP2JJ51$ln7VaoUyWA}8A5P6MBKH@0u(WA$1o4r6>TrF!;bI!MVztFk z?TJ#p`wm%{b!{8l`*Q@euU%XndUaqTS31-XXWsf$YX8dtapcca?buaOB2)dVQIqCd zc-=1@#l1a?OZkV^_97|mp36RJo(uVp^vFL{4*Bl-H0kOl{=V%1QM0R9p7=F@+CbXCvl19H0l({=H>VdG;uG5!;g!N$hW56_2fs=Z`k_5+{zj zOwXzL|J?a&k1ZgQb*R{4!Y1CfyQOG+VLwe% z`^U!~*J54`rn1Gy)H6QqV#K=rH}FX>yOiBO-6$_ZR@U8>LtHs2T0c)bB&_3Y`%*FD zK_N|cbd?7FwNuXUy&=B{r|W7pkD0T=@@9= zqq=Egxc3?!*sHG?H>{X?sq=qLuSDiF-`~>3ab*EHzj>8-esn1Jo7qdO)UcQecCJ$J z?$n$N3ysU{xdo7q^vFL{j`+OuD6#o~m3)45H}U$NPgHNdgH)$^RL;D2b}pM%6u|f( z{n<-`=x)23>+crCZ-s?)(=rFiy>7a^YR7fC(lt&{e2{;-@{xXhthw0AErQ#IHxxUJ z-%sDE5?ve55~E z-huSH8qA9$o0pw`p7`dhyx4sO8yg-8?OVCLis*Y`Dc64MDW)cWqDvkcOSQ&N67DCL zmlGP~lk-{Onqud9d~1c_W#=1vSDz`1oFu0?Zg_R_tJxlkI=WbZpc|rRiNL6kI8**#mgN(oq8T;$UZmE`&zf%%Xvq2{oAkm%@%l-V}s0s*_CZ!Os{a0 z_RRD7JoB-!^6PwwFs}+Z59%AUgg+I?M|$KRDo6Z5KBn54bTV%{&{X+#zH$7k4ZAzVoW9_t#4z<+t57$+fdFAL)^Qs2uStxQ`TbvR887Hu_56+z<5YJO`;Q z%gyl%80)fOKmkL1q`#OJD$dCZkzLNRi70?%qwMH!lyPtU63U%lz$Wv45-GJSj;@{u0RKOy^0 z)IF=_FCw`?(`w4oxgV*eI{xu8)aHz?Im+ej&;sUn?6LT=K@2|{UQ-!9{Ubf3j_Xz;O>UyUu`2`H|kskSn$`Swi-EuTb+RTdvRaZK#{aBj+N!}eITncO~5BhKl#s}#K zg}oD{_tWu6SDYZFV>}Q5<`5XADClIJy)mlGwS-IiLLLI<}a@XuOct*%wnC~ z+QIc1$baNdBmFn0YV^(IEqv$J{($EXW(x)mdiT9#u#AI?f`SxU}*uri!cN>te z88f|^b~&-%*irnaI{y82|5D4W)?~NeED{zP2JJh1Z;YsSa0HK4=Z9Qw*h!;Q`-PQcMAFy4UuEbzWDhb?Llc4yZ`gP?aeaEcXny3o{`6hMzJM?n{N%A~G z=c)5nKaMRVr^bhnkBKM6O@aQry_)~@*xy)kQ2R&qgPsYe+?Ep8@F zp4B`xu#+~Z<*~s{$pgFX#Ojj;Su$Xsczv=DkBQFL)Vyjd`KbF}PFJuZ7o_cEfteNL zBYo?h+r>quzPyc^{~Wcukz}auzu8>*vEbCopG;hd?L+$?(EbVJKhh)rP&wkG{VRx% z^bgKNiIx^#{PpTQP5%@dsnIA0si$m7URT&o^hPx$C_b=$9r?(<$QNOv!~U7vUd?~j z+SX9gs{5ZRWj_%%1Alvse@xzy}qa*I2!>lUAtXzez0`lSsD=VzkbRp!lHrb>$;{rRuN6^JXh~ zpgO-h(!GgPRo(xz?$bTt#N?&Kg+!C0y=L@k#aKRCUH{N+@ZbAi+|F_0c>7CEXlO-p z)wD4^&>)ukw#?M54E%flN&U=NrBoFCkXDzn$|0k@fE^o76ozeL{4B_8rF zVUWiG0r8Q(%RN*2!Y7iqP}e`4v;KSk&5O0$iQ%^(VO5knv=6OsNBbv`|45JgL*?N#O>O@ZT3;v~f5v2vAr0$iuvtU82`-Oo z(IFdB`R-O(n)xvgOZTVLmbVb`r9X2R-Tzu$4^{1duC8zYW&fIo z3B>QcKg(Hc)d}&D9{GpL5x->r$?x`eAU@KY|HHq2bH8TfKl?}G2ks`7lik<>e@6ku z2i31DAL-HhFSI_Ud(16yMcxiRQ0@P8J(F0v|74It)_(j)&+IpU-D8}X4Iz5ggasD54f zNRPhnX#LyGK3hfC*i_y{?f>Q2$CvIu*&f}EUA+>^QqMY*xK3KpWNSLlQ~Un`KATJT zN0fWkjQKB0W_n^Lxc&|4(fTuFAKL$b_D>)_(j)&+IpU-D8}X4Iz5ggasD54fNRPh1 zXnoL|C5B>fy%>H+9sge|*h~}E{R4YyJ28_6acptENQ{Sf5rH^UAL)^Qs2uUp{uRVW`o+#mM0dLc-a^g)z3vl7 zo2vV3I!<pSfVUu)AY`thKe&SJ#|d#Isn7#*3c$d8+? zVOFzN6I)k9rMu+{o*4B+^XvYtb{>t{x2xM(h`NfR_RPoHH%TiwIr&htG%%Ky>zP2) zmo;On%(t=Zb}b3wBmL-!OdA~-z)!7q5|=;OL%%GIrxRvBlY6vW$-FtLUk75wu3W#N0aVV<|z+grXT=w6h0?@arSLkqiD|^uo79dTp!7PN(f- zhE|RO@*nAuf2bVs(f$s^NBTM$3EIJxLU@Ln|1WI3k)D5Zgzlf*jETLrvbFvW1jPr{ zuPYzv(fT(uKa1w~I{h>LeXgGW@N4`y=THK9l3Xp13zlNHIM)cr?|TUVDJs`C>AgX@tc-9v?EBXZ#WEj0cg7G_G{ zRE^`_>i#yLiGQE(65^3X-27k2qmMX1KGGxqP&wkG{4(MrJ<4yQ_@MfA>{ zXn#$6<1b=Ft8o5A-T(EzvauAV&QG#7^lOT4i(S&fO80+VkEkxC zNBK%;SSz7x9etuH<^CyZ;vJdTVLi?)_AL)^Qs2uUp{x-x%`YIO=iM3h=@yY7`KXY1LGE&#S z2>F7Lwp@>FsBjdne?ax?%13&%zNgEs8ZJA^_u^sd_}8MInY6A;7)^QFp9CJ9N;bb* zPE5MIVqH!R<_-tOmEFI4)w>R{oOeN(opgu<_=n3b>xT1~U1P-Vld4L~Qa01vs*eQg z!jHn|yljH_NN+q;Aw9PB;pf%y@2fu=NYxg`QzAGLe>;CN=*&uJUyQe});Mn*?|gf@ zIJ;&sHOvp9$Hs>VEmm2`RnMLx)TM^DPv|5b$h^fn*FG^jPtMhN$}=JD;2&i!ZbpAftAA|PS1ek9YpR``i zMRos|_DwbEvfBTtc(bA~tj;~*TkGQt@sVD?(qXZCogm&t-T&3huewxC{r&wpua2<1 z=Plt-zvB$qhxRu)OS$$TKZFvEPLNB*I5#7F15 zBR>i(ahGycxM{P?3H`J>BZp{dkMzhtRF3#)e;eW> z{nHkA#OrIrcr$hX->i#&=O30`C?~A!b5HPdIS$WH> zI+lm2`@b3o{+<7<^w$EiY0#KaT7}`G2&32=S2~`3K9v{wwr;BRCyKc<$qEB+4rCGs}HH`KTrL0{&^L9Mh>;9&*UTZ;reH!N9&J~eJKBr z)(;{+(j)&+IpU-FFT_WBbUrzX52{~RKGLK0?`V8_YsfG$=Ibc_{$ykA#Eif9KXy6W zg&0jqCW)C1SnZGV#Lf=mc(s5!+QxU9Npr`VNjWQ=NXG%Gq)~_k9RDJHSo(M|J$wqU zw(*emkYz*Z%6K!$b#5J!cEFRQ?ulW@KD7TaWwD?5=H+PaZc5+e^9P!1CVdB>IxY z_npY~)c8*8VIzH3`I`n&i#^Z#|cY*Y8i`71j3hd}%}J!`r4( zuTGDJ+Bx&dhjJU?{aomNr(E+p;$5Rfd{aSlt(nJ5i^Fw^2$#2A`?u)pwYJbGHR?^F>Go(K!cP3$-_miCG z^_)@tNT0R&g=nAZR~p|BC+wuVDu3ImHpHa*HZtz7CJe;~)vqfb=?BfZC%SbE)t?Z4w)k&Qk*jTz}}gy-|4^WAHVI;Rl?RW0qgKaLqhs~%);raGRkNiXBh~MhP2F>_;QQTRzzsZiZv}l8w z^txkbHvY(7=2$@#5FhC~-`}k1V;;rZs__j7ji7f`e(#m-Sc{1}*r9Lb8Hx|8UspcT zb5pMQ+v`MAe&XqM#dPkUGbGWYVvb&|c<1t3e7-T#BmYo2;@3X5U#vAMoI9%a z=g%vq{d!H37KA*_9yBr7Svguj5FhDpT}Txhb&2NYYJ6j>UZzXb?`QFQx(*Q*;+Qt8 zc=yFFV!LyN)YimW3S1H)cc1k@9^3CInReYj+qA#jgOYSKjv)#+Bbq?eOkdO4pKU9wR#wTsW z2eHd|o@)Q8xKH%#LNlrA>r*c0=XmF==utorAL+}_t}OPL8p2)G_*(2Jq}7AXq$=dnfBK-nNe#?+mB0~{nS$Z{@339T>isu9-|#L5_CVxpm)bK zXY@jNqPqUUJUX97zcrRti=obyHD6?*&M~&dOHaIDyNWLu`c`|H<i4bo&82e4*JOE2^OLaugW`w$NBt|LNA{!hZ_)Xtk$H(?xPC0(yVyV(T=xtOQh#3p zR!)_R_8gSs=i&2jksgg-kbP+VMc}!8;+GTQ+&0ok2^sp4_E-B4MKy0`ue-d|`Asf9 z-xcYRf2bVs^+s?}S*!MMRr~d3ex$S2{@eKPwR0R6WjbHYE?|g{^gZTgibHZXmd1CS z{~20e?cb)Ho-Y^G-!C7Xc!HtvFNz!O(owuSrNoXdX)c0_M!6^+m;_MUb`}dJE;Au>3L?-pX&U=pzpPbVc0Ap zy^4hADerQz^k{wq<;T(afBT-@7FW3};=U>8G|z+V zq?T&_Jgj_ca@c$uDe|x&h>!Fr|BdWJ>%Uv1UluLbF5^z>_~@%u6Uk4VUx;2_jwA*y zAY1eB`HD!7{6po4A8dY4v>6r1JE``^S~QVbsrl_;T%VkBnos%~MH9qFdcTP;#2?i>f%r&|{6po4kMbLckM!F7FmYS`B<`)o zH{Came(W(ximU6u90nw^beB#9#Rt`|Dp5+e^9Pv?p1M!jm&4(SDlj9?KrW)UZ z`J1V%=KtSswPmJv6PQsnB`7|qeqH%UkLEW}ejM%Z+-r47biW>2n*YyVR9)(PgdBg98~&-4@GccYNf{J)X9|6;1! zBq_J@G@;+}BH>P-qXfkV)vqfb>CyZK%8#S{uinlc;#<>&yoZ_}e*dSsKkQpm>DBnj z!kfpRg=XJ4L42e~`EO(&+zx(&m-MSF^RMv}>A~ z$;Hn%_YAakT&OSg-D4E#G;3lA0ejy)57qBm z+9NBW&-v>@MYrP&#Rt`|Dm!_$|k6&xJ3JpTf z3wJl*{f|hG^54ilwEqpQUqpPQNB*I5#7FBJ5g+LvjJzby%?;&y)cGBg!__6K_HS3` zYlMiM7Xn6_~`zTdixoacUSMMLW-OGaPJGq^-+hNJj_Y2jpD0+U>&i!ZwEq#U zA4T~ibbc!0BfWczxnlKaiG21h8*R|YNZMLGe>KCP3mavS&ORJ2$I$#Ds$W+=(xdrx zw0;rgFDx@#X&M$p@~P_mW`gBf+WCjEl(CXByFvR{>fjCn;v;=rs-W>VjO6BdjkUcD zBB-s(ues5IX;){mv2J<{t#3f}>&i!ZwEhOIpF`tkbbb=zBmEk?7_n~u4SbS%{!*RK zg)~sT|F=eqH%UkIo-P>$lMO4c%{#_()&L__C&Y=OCVSPZT$X z7ShS;`mfB;^*P_y)MHgdEkXHHRKKo#q)&LZNt5Bbn!Bs_J6i19M>l*imii4SkekLV zW5X92%dX`gP?aJsRJj z`D4_-K)>&ZkM!t%12jHC_3O$zdj92|pGCsrxw%4z(Tt$+394ULKGLJ{4Vphd z`9+l9Lwux1=l`Mc394ULKGLJ{4a#4m{36QlAwJTh^VQJ!1l6xAAL-Hf2F;J6^G(Gk zb;P?T2XVf`N$cp=Oj_Fe6@AmBE2*87LaJ4&3(x;SdUXB{vJahqI>IJZ^L1%2KK5HL z?ZkK1Qo#0XdNfT#_BP!{y1c6a&v!+7iYkBRo^y|-ir52I3%j~4tYJ692>`9Ke?j@EHCh&YDRKKo#q(}Qt z+&u4V-F7eM9kXw0lZU3z8UY*W0N@r5(_eweR@X=SYwcA40 zoW!t37c;eMZ-??kwfz^>T1Pt`&8Bl4otRDBPBxN$gnXn&{-JWjNB4IjKGLK6$54Dw z{krmz9^LD_Icso6y*y+oHghERtjo1A+g&6(qiPQ{ zR&S-JR=lDoXC0TlP6n`*OJZ0xkDugY_dvc`J^#O{cRqdY`-=J{K0cB^{hNILSuWiF zj`V2%IkFFZ{|iS{*8Z^Y<7d?K?UhdXbdgyOJvO=J)hcItVYAwJS0|4=#Nqx1U_ zAL-Hk11LVIeqH%UkJewJ`&rQa9!E4CH2R6Ie1dxa>Cd&+Qj5+BG*@&Z%e2YlxyBgY z|AO>6%TJO~T|4tU_5Rg`PpzfrPu5b~kyD9vQVgkhzdF2s1l|Af**ZxR5!{QPRqyva zyw6%{ckKvm*QP5m7?Vl@x7LJwq(}ata>Pgdcf?2ftR-VLPP005=KhT|s%9s>`jAN9 ze;Ggu&u5W&5f`0Nd{F(m@{vAxP<>6?`67R+-hZo|Z70<@8$kz}`;xRX$)u8=hYRYT zp!-!DM08|v2Uqi=v_CY%jWiNWZJWyg0JCxZG$T z^-zC*65pJa7rU=uW5Xi}vJdrdo7f#;qH{REl~P3RHeW+qgsS%cplrv`eXP$&djav0 z9{GpL5g+BZ5g+MMejUXJ)vqfb>EZmw^e$pX{3JeJT_4dk)=V0z-hcF|N=xFsXc{q@ z98R9rE+_UIJBt5Q+n;?mGs#xHf2d_vYqHyK76}UtBi(D9)tEf?H8(=~a&tBRbE1uzv|@V-U326wLGvht938t#odCHleET?pM_Jca z>{F^r{fttnYolV9fV}FY+7N{yKGKh@wnL7rGMsOJY^*q*swzd#-bCjF)F+e8;sx=` z5ojOEf1>-NkpD=J{6po4kNWS3kMssT&#~*4Ui|iwhDz#-5A<`@RJ!(-tsFImyJU_$ z!%%!s{krmzevpr;b|#(7+YU5U{2zUwdUH0>_*WZ*KbkqqSE`(X?Q>+&9U*N;Prmj0 zOYP+T4JH4jYw0k(XwvV32{C*d~5yw+6Fysq^Rr=8l#>&bAH4!a@YEr zjM_ia51n02Q!BI!&pAT06>XYHLsO#Znhx`czZ63jH~1{qJ zOF74a=#y3JNx1>FNNi_c*0*@I{MV08yw}no?S^S~(z!2->Ag?!WS-4TQvP~A>if<(M%^jqWfJxM%PYAj2C5D((GY}9T>F>N*MK;^J@Zf%WnqGTa zNI7H~6_x~(lX@G8Yu;rS6dzQ-u6(3N{eP4nU65z5;?0tqG>ts{h*78fJfb zKht-3;Zppyu~N8a1+QS*UmKDXMmMPKKmDE~%QV@|nB5&2@sS?omyvyM8x2=B+AZgg zj{HStcm~i>A1BcTJKC|)+YYe<<}+NbI(Jig9bCrEPA}8C9$!HlpY@}MEUnqjfW2&x z??V~!kskSn$`N1rW}#eY=f|HURZx;{Y^K(K1<^y-BIS!4BUtTbs~F-VedQ13lrYC- z{FwUvYv-CoOTK?{c#xd+J&O4b31%ohsD54fNRQ^9Q2w{x$b;HBD@OC#bb2f7`!35uT$$&edkNwrJ<9JQ z`-uB@t=*3y{2C1wvm=UW_wz3FNwy8ij=e5t?AS}{KeANF+)2Fs41du=K2H<73G~>o z2EwA+?u-`iAc&9j$Ujt$`0kH8EB2;y`PDl8#VM~cXy-=~b?+G|r%aDw5AUvk@j-gG zHYUoMcMExTf+U`skVWIFOrdMG#L6+-HZZriV1nX<{L__>^eF$2`bTTh`)DiGo5(9V zSSd-LK2Trpb(EEFK_Zl^@<6k_%q@5|`*w5)XF;ZlWA|!ONx4V!xkT?w-%cBRQW@eS zJ?dW~`*QrFw8>}3^6C@YDvw%!q&s(q($0Up7HFL~x%*dzweDxCC9MW<=M%Py@Am3a zNqI`gUgXibOD_8Hdl=#)J@OBgBR=ZiAwJTh{w0bJs$W+=(xd)2>K~#0m6Jtec9AdP zPYm8_-c+`cp7xnbhq(BX$gUA2V3sjKe56PDWn>@f-_{?kuN7GbZfo~kQ`go`%74(G z-fugLoOu&NtlSL<;v+rs50xW+?vjPt?>#hp&-Y$pa=*q>$@f3JuOB%)e>(B&J%S)U z(wo$|#q?{qaz*|AH+^d+m3;rxnoT3UdXFa8j29CWA5_1te56P7Tj=)z{k}{OZ?0&X zF6YP8_TR-Qik7thTy^ck-B+26erP}tAL(sf4VCVeD|n(h|5bB(3{7~pmbUX~%)VXS z&O%(Q39=9UzTdqxL^*YCDK~4aCtg0gmX@^t;|9|O+ zW#n}EaG_C~O^}cD$Ujt$_-K5C_(+e&KPWz^eqH%UkH(*9e2m7|o4y>>o}Dw7pHTb% zWZtRL@j+vjBDhHsdwM&IAwJUU6>id=c|MvRD^JszYW_CNt3u9$`o=8bPlX}- zP<~@`{!8uECqCSOHCHZXohTh2Oqpsfw6<-<>UTd3`ACoaL*!M|zb1M)q0dpU`fLao`mv+bWA}Y^9M;L+I%KQ`Nh2 ztCFehW7)dyN3^_oQ(keDfwCvBgVgNdLaKjY1DUnNlK5Ai%n%>xk$XINFg{4XYG5DjfthxETlolOx+*>Td1Uz0;}BvZXX~R!wGE^&q=z@=8X0q(}Mh7dQ7RMq%@Klls*)D_m@7 zN&MRc{FIX;a#{SzAm_x{8OrCKvw01#G;QsaUUdHHMfBLWa_sK*95&qel#J>}e56Ou z&$4!=($>yf-G9(fNj988Ti#ehlPhs~$>?-;W94ABu}PF-X+4#v9cfuse!A9jIaiKl zDFG`Osvq%@9zDMo2mF-9`@Olcylt6%C;C0kIreTjn{Ymk^|BeGM6H?2GY^|6x9_f_ zV+ID(KaOsY6J|s(q3bGWKjI_%(ep$71JwRd{fLkB==q`k>rVqa<@U55oF~MKHAZ}< z7gpI(%>_&HXMa0p5R^uq*BhodE*rrkH$;f5C!Z-Tf5dAFg|ntIx0r1N@sS?o?~#22 ztlboQpH|%IL7q5S{~JwgYejwMB?&urd9dwM)H|p@Mkt%t_u^UdcJZdy3A$g~jJD{u z!G%?t!CI>2h>!HhKU9wRb3)UVK1;{(m8}BA(=XT21l7N>Zf#`8ppDFG|4JAiq`x-S zUm5bno4fV(6sO!tqNi3mQs)_q<(YP|Y{Ar(aQ+ARrz;=nQT_(?Uv~_6sqMag7_ZQ| zi_$FPBYm#FipFnYLdPpUvdib=OkNPH9Y4AU4;^&;gDuFMPFBLp^M@JYBR%pDl_NgtpCUfeqy8(352{~RKGLJ{1M1(Q{$Z7eQCel4 zJukAz)x`TbN_*yarp~kD$>-#0#Ay3n0r8O@_gwT8LbVKS0fy`(Ze{=acdo^ zWPI>cTuh!`2xV&qHz$aX^vFL{j`(PNgZM~~#y==NsD54fNRP&!Xnc*v&ry$?D+>;K z@(}8*jHtm&#|OrB-niVD-jD@m$qez49_8+Hf{&Dr4_*xK zE2O(wvbCMFVg3c_k$le^7i-{krmz9*sYjEZEI^uQT8`e)LiF)W4xa zhKT!C>$_a9p39b`>$5wpGWZjJLw}q2KmLWbf6zQ6S$kTzcu(E;v+rs50xYS z7S;Z1Z%nz1Q4g`iem%Va(aNefYr<36yGi8<;v;>D|9-cP_~(nQ%J}JX2C#q{+n9gL zX99{3s$W+=()+3HC#hjYo^Z{o%>Lj>(MMLD%VpPdzYG7jTu<-c<^Pwjr}uCFOZ=Ou zJX7|a-S!V(Pcyw@S5{66WqzZ)2;w7s$@5Kren(lDo>0bj+%w)~>!~e_*eoN+zW*Cv zJ-vUokCOH^wf|4$@xg;-e0g3A)^T(&3o-MDe56PIp>o78@vpGw9>uYB@vr!5hAgVW zrVj4RYGiCHZU4WE57L)B-}OeRO7ZOnWqi+L9awUL#8MJB6BHlhpRRnQFKK@U@8gu2 zAO0+}-??dJp~s?;Z1AL=q?!M2?sL6?=GI$1uBS&!{zqJ!-;wM~^%f#M_p=p!GPvWM zaI$NAxw3Mz@RRa+zciOT?~|;=zY|M|;!>o~hYo44>ba&|rB(8fKHcSZgHJKUNBWZI zYrVXtQoFuE8GnHuhywC(!KJT0`&`&k1qDTG^3dr#}Ax zO`3JEY<|v}88_Gmvv##PGv9@ALO5|e55aF|Cu-A zl_=>=nf;Et3k0!;9ZRaekD>Piybs-Z}vV-9D{i5uda=i5W{JZZH`o5KXUpwuvSK`-Hr={kr z_Is)~F~5IuT;{_WilEBo@hVwrEGS*lFO|s$4kHezl#sj zm&AX^jAf+Ri^^sExknw@vFUm)Ir|Tne*b?LALO5|e55aF-+n_D5#zJ^W%f6#B?>qG zYUuKG*cmc!>u!FfLzcMJOskCi;3ihTWhI8Jug)@3#*;eVH?gCSGq|BgfoRYnudIB) z_RZ`-mD=R(-O+5`_6#0tG+Fcvey!MlbrpkO*A#Df4rVsxlZ2mBGZ^9{y;byX?t84i zSS#&m8NcoI7@^@cBa(DbhW733lf+l|HK1O#AC}o)J}8yB_pe93m{E3XXcC_szDAsw zZ@?c|b`#URYKewd0@$2pRfVZ8TOc3lk$T5er+`E>+j-+$x# zxBdTaA6?b_=!6|+v~9PyW&F=?doZC*Cb?j~6Y`NB`G?98Kj_&OUd$}$ljzz?N$$EN zhY`Qqn^oSEMyh#xxgb8$m-H_lc~qr&wnk-qpLy$-^9p75yKHl3Z$EA)0mGKas2uT2`gbS4>(NcM)+pCf`->s3TZ>)WB{Q$IapZpB zRmeyBlKv%8?uyT^uPo&UtNb;>T(;eNH4&?{D9z9OE0IbhatAxe{Au|AJ+a zY|w#F;&e7lM*br`@(-0GJ{sR3KGLJ{ABqpEUspcTqw#0S@5Ar%LnYtW-{rqb-futa z_e!miq@YQEbA@?hNsfzU2FoclVa!dg5RipT_idaq~`MX(tvlWFN}! zh4$UTedic*2fJNL-@!A*aovY$hTAq}o;|j(fh&7LKGGxqP&wlNdw%cl@4uejzvuT5 zAL&b;@2~mKU;Ka1f1>!H`gP?a{lDj5f7$=<`Q3l}uc!W%{LjCi-`wCZp54%aU)tM1 zZGV54&rYyqM?39j8AiGCs_-ywx}^hu->0djq`ah$@~)RNYd`uR%iVj%8S#<6Wc>HL z`B`M&Zqb{!Jl2(OI{r!f%l;#GE3ta3vsqmI)AA1wZ@#g1Z=PkduFU@VS@l@I)>`%? zbdw9>BR%pDl_S1)EpI+y3*}BD1J%Ay$zOmt*1rNC>4Y{{Nz%mTb@O26&b6 zyL&h?pAFmCrVi!=#Rt`2Qm!liclwh2$M5FH|8Mz!=STmqeR_KT_P?ausC6|SF#qH~ z&qq%axl*6~9Jid+zZ6dX7yj?`CC~SF^Rvjl{~KRDy??h4WzQ6TqICm4aKWWA`*)>g z$x#V&*{q&hO54wWpYMPD|6laK^A9~g#2@4|g>OE8Mrl&F5-n~1>in01AjwkDQ*8KKEJEK#D87+ztfkrzu(P|4++!f zlPrprx6`*N{McE#ZeeHI{-HT(wUG$^SF>4WtyX;WYJFb8@3@k%x~jCi;uik+Rjv?~ zFf|jB#osJx=X=^x~}TE>SOQGy5zp zGafOK4-8IH^g?ecd0EY+D${(AuIYY4s4aiV*<*VW@{u0-hsqIu;Ez%K&b4&yAMByx zXlo%wo31~4;o3*Rwev&y=ap<2AEfUy&z=`H8=(Dm>bP<(<0g%Ey}@I4S(8SlH)W5? z`xuH3@=sSj(hD8+xZOp?MR^%pw!d_Gy9uP)tn+e{fyoTLAL#uoDZi2Bq*y(x`_K1* zYa$NLmVFK!m8WDJFa7@i?)^jhlJEcT=4X+8==-*Kvll1cU6jA#P0Q@}Idn9q`=R}^ z-Gsc-@8|EnFaL}Fch3j;kNBI-z4+M|bI5|oCjZ#4Cwkc|&iOp}i}RVdf>Qf`SO5Q_ zpF3zhiMeL>&-_RuG5q;R+5J^@mj=)COTYgpKEJEK#D87+ztfkr@88Xjqw#-Q<7ggu z-G(lxeqDJ!qK~LlvlUa+z1Me!hmx7+ljKTWqWOc97WBlO^1Qyao7m0ALOjq<2li*Ee#A$5^!%>Y z3gZptm{Ondjd(;*Pw`-6L(%rhc=n)5c`~wHJVXAY`Vk-L(ep#?3$^c(^4af)itl*s zlJ`p!{c4ri{!bsd{m}1QlY z?IV&~ZTFYj|GWB;K0Pvw*Sv64>^xJCehF?Pj-Pl~49ZHDJ6{?=Y?|yS{eGhO{H}go z`ACoE4^cVdmrqpt553A!mno-9<{#DepCP_I^;rHiJ(3u`SVj;Z>CyZlvJb`gRI(TM zSX!C34ZW_~U()^`i3bX1$j4f)CeFPh2;w6>@(-0G{(~$pZuEy0{n2SdS$@MOGETNp z@8?SV(3v1U(w|NW<4wFw>GY5#W&Fl(DzOJcGfCGtJA&ea>erQz^#7ed)KmZdJHPzj z^8Y)(_+S3t<^T5IA}EaincIR|ot>!pHGdkv!H^w(c!aE+ct${cq(}3I$iDx^_iy|E z-9C!1dh(I;o#?`$issk+tm}}VHa~cE z>N449S{_Ljg9OA!`lr$w-ae)seSWNlvU=$VF?n%U(d1nNw(npL$(%G;K=DEK>&i!Z zG=GT75&zri2tLxnk=9xiUpD_}?>mZZj^0T|?+ndGe56P7hsZt@U#msS`K(QyX;6*S zviaFrv?inJTB66Q3y6>O$Ujt$_^5x6_(+fX|0q7FeqH%UkH&8?EuUyVzR}S0HZL@l z!d;|@@gwQ@nAx3{94jCxwjZ5GHeR8$OcUwzReLm@2T*B4laciNhTG0Va|_6*ze2N< z3!{{b!JX)-gM-A+^V&(1{V5%0&@^Xgwn8EkjS1o-eR|`nO09VvX}UN`Y+m3f-Tcs< zo^NHDW4u61*0rlgkbQ0i50sdll-iMInqTJwKDgT4#VECa_#Eh*)6xB#(rmdija%Pd z{B?dvM*U$qeeN73>joM?KGGxqP&wj@mCAABI2&3cIjQXYkgvC!=7brf5z8yn2;w9C zim96wn`^do)J*l)l0Lm=3hb;l0_B##>0sw#x}BNBo5?HY%IX)TGV{XT{us^`wq>n$fFwQe2jIo<(Gb zt&orO7b{j(wqK}EziYIje7&9&(Z-Qx@4DjRxx}3uoVb%9`%rub#prRe)QDyq-7Gsl z!KqI(m--WzkjYL-kdO4pKU9wRje=h(CdH@4on95_uk+!~CN~i7F0m$^hGi4PNBX3l zLCTQpU&Kda?~0cV%a_Kt$yq-ktBNhTQ~fYO@j>g!gx=GxDMW|J+wYcv#&>On%<|F4&P`)+XYL)jO~%ajqiEnK>ayNz=s6Q zopN>Qt!=MqzwOp^>W79xrB3~YaL0Vox+FOUl7N00RpYPlGNrK6>0C_~) zQ;?7JgVM%ph5ARCRb68`^kp8kyk<>zIPDZ3EI2D~TX~ce4S1$}JX(XXLbI~^m!7X6 zxcvE`V?v_>;!rqM*(d#_eH34VI?movYTps}U?IlXOK$ow5899T$bR(v9%PSX)^(aH zi(h>$JOA%)TzwK&eW&cwCyA+wADpBH7{KpoSk3x``Omqgls+7hZwX- zBwK<% ze_vwye^Gww^%Fhq>e40SE0vx<8g2oS3fZ8Vq1U#e`|WfT9>MXF(JZ6f=SWQBg4m5LBjXst3%Nb6j)8w7QCl z$~QCa@U{Ey;qe?e$G@)6ukP)tx>H@!+-LWUim8tPhLgN9`j%(xdCA%+KchqRjuw{A;!=f4?^9Bl!52b9u80 zR`i;s;rtFm{VNA2KVia;snUQECkf&sy=Kow9S>c~9m`qL?$vBG#_=81>#}fp&0pH! zPRD-vef=;0l=;DISN=ZNt&_t8eMa%;BmO^s*6VOt<(nEKg&#i&`ACoALw3YR;~Vjj z9*uw0KdAlu@{u0pFXj9)uiusPS2=&oc4hu)w(=Z5cF|Q9-^yZ2R~$&XKS){$V4A@wC%26 z@~>I1j34Pye8`UYZTpm!t8046`|X$J)}P$xK1zD>VFN1>Ig=nh(%)$FC%0MEU(Ruf z5R0yvOO5NtLl<47%&zNL{N;JD{x@nrzkH-e^*fdID~(TQjL&D3=NBmJXZj7dmg_bM zQ7h|v+POdFNsUIynX4*_E_-T;Q$E>?V;Aj}=I!GwapMyK@sWPtizhrPXpFq?@+RVG z<4)@bFwuF$J?UBeQ5Ix$#Za>kM3V!M=TG^(wy_-%(I6>O8vI`-Tsp#DMa=a-N4 zXX0(;bz_Fg?|+P7o;D|__qDI0Pw08c`EokjxHwQc-ymGQbonANa>!71P@E?{((FNtjao$gn?FvyEp0q_59I#8!Nr z?ykc?diBRNx}k13`SHFYqq=zv@sa-ej6n4`VVxM(D~oM+8%?{p%%qPtZXgBvQr2pD z1L$A$p=r8SGpdMh?j-BX=aU>-*_o_<5hnSM+so$BR9*QOoy7f3vUME_cBAL|%%B?v zb|l_81z3vhHpoYM6d$r9e*EUYbx*g4iaGO~`0)$#=|`_{>Qtd2v8C4}Y5D=!KS=LF zVp-1?aU#k5t}BxrP91F*(tW$Sk+0i7OWRs)WvG8peEH=g{l0#~)!i;6i6PYv>+bYk zM!iceq`nWwk~t@;vh~sm7SuU~c!U(Dj)^6B_P&qQf8ipUpt2(4T7FS!*KyYE>|EXT zLEpspU+eINA3xHPZx>P7=9|#;&kw35?b4Wb?S5T)OgVbsl>>k7YO68YZ+A%$3X{s@ zS=%F!kMt{UY!T+Zx1(cLD z{?fkMDGd3C@|#;gc|LS+vbfl~9S?YNgx2znq<>GWNSYQ^Nri4mkdO2zK4eFHG`|ra z=~4be{e#-iFCXbqeh(OJAwDa$Ma={+*1F0kQ~l<9K?3=7vaoQ#Dw(xP8>6t0^0cfO>~oIhW$YDMZg$-?a&`x)XRy>I3X z^=ef!(W&oO!F;~VsE7{aUUqHLY}N+o->%c2nU_sdwTI;@ojLy(?wTbGy?aw@b1aR0 zxL!bKVf9cw;mh(|{~fcdkZJQ8sycUKkdO2zK4eFH<@(N?|CQ@I#7BDN`q#`?u76Sg zp!W02M|$P@+w8w`eLu5ys(PlT9#5asSume}w>L73^qdf@5}L1JMV)4mXHm{PrA||w z**pd#X3twP>Q`P-z$RZ)td}?)8j1{C>5_T>q`!o)C^oRRy2;W31=S zLAnNy`|CoUEy(r%#;V)G`|PLMd&iGLKGLK3kR9>S{6>7FNBIx+4{ATZe56PDH)7W& z_4f1UxLf2VojL!{9&bkyUzSlhZ(?l53Kxs4fx=4FadxuDTEqKii@D>)G@Wae@|qR(BB|%y zM4@zTCRA;d2Kh*j;zM@CSI%#9epAkG#7BB%{xkEH`49CEYCpexq*vx&v;WHct~}q% zoZpq__da@EoLd^|*T>DU%>Dke$i$kYYL27p=Nv7&>pxxBUH-sZ3vY7sr~j)*!hZY7 zQkm{)4Dpfv{t8w7{~Kqm zN%obAf_G2GLgtj_16DoZ54RTQqX+A0p@_wF*vOs2fNg8rZ0T_l@{u0JhwO-t<~QOa zJ<5Nme^C4Rw`6TSVJdy{}GWt-&04kjD^$9Nj=E3FJ;M&vKv{MD^+;| zQdtg4v*&TgTWgHx8&BQ-2XP9mO43Ui&JYFXeTb}i>sq9>9Xzu>uP4C8}e3yno;iZQd;v+pezZChWZM=)y zRc|KuOInt@|GDwZOJSAJl$+`ACoQZ>+ba+`Ud$dC}ZxfXL?cZ6N?*u<-dedOxzM)T%{51Q=K^=3kp zr-r#WCo#lFdadE!qf%WTIkJ0Ko~?>B@%!ieA@yFhp4}@tm!a{E#xHCi%pasj*AL|f zbbc9XAMueMT|aa_+!}`{UehT+PB>COcl~+FCPYe;Vpx3ed^mm(ANh~2UrpORyjk5* z^2Y3{x&Cb~Doe8lZD+SbdoeWrQ2U6F^yvC2pWm3@KU6;dX<9jvPmOL#FAra=JN2ru z;e7W;;`C>ggrNrxkyk~UutBBT@m(!i(}aoF+40+9G`q=Ts(qEC z`Ak~DL^?98g+}@O2>GY{e#-c6it(TF`zhu3S1U%UsK-v%U%n4Re56P5Av@wLzfW5+ za-G5dwZDA-hWJRY&I;FA6nCZR-z1^7<`50baMuL53{wpYkjc{pB^l};)P8>XNUwZ; zms;sE{aAgIM)~}1=%GJ^$U!0vuq+^cvTm#y?mU+c*d45;GtUr*{c}~f<6e-CeN}X7 z*-Y}eLp{yYxNw?OqL%7qy>t>WI7@Pz6fQM-Cx<>+VrS1r0wNU=%0=45cS5wjcMZWjyktN z4w_dk%cy%$tnjYr1`_H$jmiB!5;x~Y)W7>2-Qj69G?zRU(ZaI7P&|ACxx9ZCL-8X$ ziVxWlU)jI^^?VlbkzP5z9-nTkY1VuyRgQnuKdAlu@{wLSzyIs|Sed?3>#rXb)2{W< z)gH2z8pp@P!ja@eu{LZ)KYu14d8LjSxmQeIo~`g=}-7_s}EI@oV6Em2}FEmv411OHBBGqi(+D9c#&!Vw!ql9i!O zs5_l{#g3)g{i{jDkubK=eVBmaM|u<=vLn9o`P6^Ce}?!-kKRv0{e#-iFCXdA`x!|u zny9B5>JN?UlpwybGQ4s(Y8Y*3r6Qz}KU0lfOe~7-B8l#A#PB&<@g;je>$UiU&h#ur zZatbWRSRXLQ$>l{o_#8cm(#>;E-z@M$!+OM$(dwTIecXMwN!%mNIxd%lxlrDE{4tA zD<+;zqc1CVr1w^Zl84tmNo^)9f&MN1u|YWfXG!{ajwJH21vQ_F4x%#(t`%Ax87L6( z1Sz@PK{tMJar*U@Eb5*V*6di)mWuDU3Twl*2?33cLO#-?_>dj((f6TfIYR(}a~aw>Kwd%KSzKGLK2!;pVy{j+!9Ds|CE4%GK$ ziY~plwPsD96|~0J`eZ=snxxvdZE$^r^e8@LNBoj=4ybMHN>Od{8C?OlkJRY@y%j!W z**h2EO6Q#n@sWP@s8IEc^~I^e2U{MU>A=N&W^GW=*I|A^EPd>!fYc|LKlt<17w+feKCeq!eW^)&1IOrR4V zuh3RA)bIEfP@bI4^3mDx*7WpOe{m9TpxHLOKebODrd?7@N4}S+L=Ye8pPUWU-ThRL zMyuk)IbJn2V_iDaN?VqvI^SMLdR)i;q5BWCens&kJ&F(65g)B@5g+MMeGt??sQvu% zksj3tLF+%X{>-s+QfC+1E;fx05Kn8?P|qU$sC9*9WaaL$EG4csL42fd;aOFk*?WVS z5IsaZvuzE1vXRmc9~O{HnK2~nL^-&AN9+H$2{Gz4*8^gUPGiIqcVcKtz<9bpu?<<$ zcMEHqS&g9hksif|?1+!nmxzz_XnlkF2eqGHKGLK04_Y5j{d7}`x2{HiEKCwp8`@~f zR`;Rv0-mb|1UDx`+Z`f9Ui8+v^{7hUK1>nADwfv-UTsJD?9VFocnxWCD~TXJ(xde+ z@(=y~p!|jSNRQ$}cEm^d4e^m4)yF~ogWAt8AL-Hk4O$w7%^eb6K6RGgBO8SpWZcbJVncc5D_*A|Hy< z{HL)D@sS?IhwO-t_SX;}>CyfU>L1j8e)&j`_J5Smr_AS%E1!QUzn?OmFK9gfPx*b< zn7!-yB0od@VGm#KUvB}e)bJxsUUptc7~Y8d*m~fX=U@NDNBRJNiT6EUoo2W-;O9@d zQm3omX~LPM!YIS}fY;it{N?+z|ME}yeag@8d#R}Wer-m^GTv8rOXSCA@@IeTrKQ4N z(L?WQlDJMCh3(B#As^{ce8`UY1w7Mv`}r5dT_ra173*tgN`?7qM!Ibz4Qg8pQ|HcN zh>!HQ?N9KQ&x_H3K{I)CxA(NM^(f7>@qT2)lMdwUgm8xX2eqGHKGH|qzuq))8+p}MvkN*6AU-^7g`TVp0-x=z#H$8rN{u^1WpuDeV zOWN$kOPyzt8T56xoz%l-uF!8>DtVS(74nh3VtXgK;4%%Z`i8R+o7U4YQ4Q$I{?%1I z_naYzj#gJ8|IqwK{fGESkK#ji#7F&$_(+Vy!Nt}2{JT~)7X!Go`bw4kd(@+yfSKGG}qcg@#dx&N%J?`A$fL0R8TS--r zEkw_#{nCILTiEIOLy4|Bk&lJdj(mFIJs*GJ0pIT0V}|9BtBU+?!d^&p|0|q!H#mhTGtKrpF7hT?RJY^lhu;zw_(h^#`a(8 z`~4Rm>6P`L8l2La-d|JJr$YYy`}{KF7*U?@_^9!~lX|(1F1uCQ5qmn(Qo@U8O~=)7QIg7v^h>2 zkyN`Q@7@_aJo`DVLz?lhj^tyZ4DhWJR2;zM@CNAnx;kzP6fjk^nmzhCkn>L1j8 ze)&kR%309S2Rq50(7W_7hgJYadVNU+M)Z?iPheh0^%dR^8A^f z`$>>zIUw-HNR3uY5*ml6V08{qlA==|QN^B2gMO8qVVm{L!^CAy1|yu7$} zN;~G`TUkinlL+}pkK#ji#IN{lrX1pbSe*a7sa*3*J8@WMY0={IMd{GzFll?CbcXmy zPZ~wa77M$G$6~9=%V)WXiIaAE19w`}yS~ee}2W^6B@kq|}Py z@;|@tVpETW(x850B&t8byuJ^V@7>t0yUHH(pX;As@xqOdLVLHzQqHwh*3Myp+^u+| zj;9nb=uLm3&+&Oez5X{O+jK*HoafW!sT04cllD}SsYO?McyutWx%j>6!)k%OuA2<` zNdM$qH`#ynJ@wFnC1txG)#$CvBh|ADaSwJBmL<~zVeC=(PE#*jSc;KmImH@N25#KQ%&QJOlYoU zsDDuV`Q;=1!&O8+QFf7NZSQ0lKN}3=r;euk+~>lvik@siy#%H@m&s?oUnd5-eB-l+ z)zuu!>8JNsg_ESoEm?~e6Pa6&Y~IPbndq8+KGz;_brRX%wmoxoo5vzDYs#6Wi;5R) z|K@#;J87m@o}*v6rvce`vOjxpG79pM-n&i(`DybdV&~bma>rV=G#LkG>Emj(BJLRe_nF%+RVC6ZXjQ--9wjs@~FxGX$JqJ_c{^# z%6BB+Vo8vX^e8@LM|@@eYV1-&v%2zfy)u6xKGG}4x0$cZKd66D`}yS~y>k4U{a22E zW&KC<{-m;g3P;#&=|cX|KZ`UQR-KIGV^4^oGq zjj(@^-cdc4ug&NyI&5?21uM;?#`;g&3)Ur#mOhlMLJq+C@hHCh@{u0ZKSp-Mf0;0! z*DJA6^tBkn&GkP&w{J?EXZcDALJC8Cq(}9Sk$6P!Vnfc21>rnro_Vdd}dgc3rX8)D%52E^~ z?<$nzv$J-Q$zJDlcRu|v)!zxbnJJ759x2`YOV2tFdaBz~DM8&f>uhfQ{KGLJ>r~G|1*QZqe{-XF%`-qS9 z==v$^hnnkWD(jEV|Jsr7n%s~lHOR=VKODdAiC`J{!Y(XM$qY=$--%}P>9Po%0~F~;@c)g@&H|yZpx(cnxj=0 z(WWgkggSMigr|4X7~&&6svnH}YqfR{KO3LM9Urvds?;BJ@q-Xr;H)dLnjaxJ|CPu} zzTU&dLW_CwdndlQrIlvqhXu6dT9FLyQB%nLGl?NS(xdp09r2a(+nj%u^BeJzUOE5G zd}aPa{e#-iFCXcZ`Pb~fGQTV9hnn-hvi_*k&6WIJ)tB6DeRF>NUMd~<$3j}Kpc5(Z zBT=|g#BhE|sxR-Jb%U$3EAegg0^Qs+f-YE}CM;fBRLE#~oFP8aqx!*Ue53J;+DCk( zN7oPK2NXYQAMueMT|ZQRGs+{GU-h?=-)7F|yEm88=vGdm+21K~2q;S4O-o?MbbI-< z{W*N%S|48KLwU`UiQ}k!YflnX&rsv~(k6!ZNRR68BL8|XDk%Ha$l~wDY~ynJS-Nbx z8*TBpI%&9u2tn6VS%Z-`dF#}R{A=7aKIwiIJ^XYGjd2=H;x5DrYc_0Vh>!FrK4eFH zG`6PQZYwMbtYv;%Pl0Q)Yp!W02M|x%cGS?qg=0{Y&G;GdO9zV}PZdW^=fBxes zeLiP8y+pGF*JTA<%ZTZ$^~!_1U#6X0zU&JAenVl+=&ac^Yf(+o=*}vEv^@;#qar=3 zzl+8<8o#K0#7BB`{ZM{D@uT(;AL-HcL)Qnz@7S-b{O2xb*=bB7FIO_1uC$*`n@P)r z5j#?)CU!>|;v@YYn}+hB#RcWUvybwKst4(ky94Rd*J(nOHb{F)f1Dxz(EL!=*WK{t zB0aNr302l7Mtr14@gY0nE9)a)d$*mA4p~Z-^_LMJ>GwZvAcq;=QC?ea2lp7Xh58f; zr6t<^p|y(|%jWgm#!&yD_Vdd}`tRp_<;%rw%`fU96c(FOJ`#ih5o*J?q$fKKk1;)BX968VgBs<~M0(uSM*_{VP2A+7MChx`$7C zeVF=P{6C_ZFIeC6}kZHLy=LSt5Fl+RxgAL%<4G4y}rKGC|WKBa2N^mtzhL z^$%)4zkH-u?oXThU%9`H^7E{6CFN-AxxDbG4ZL~cDQY_+Q5?}jLnaJ9?;5w@AhU?R z$Lsf=$M<-Q;mP*TXrGrs^#1f2#8wrm+H_?T%>PJ_){n?PH2&>QT;QqiPv~MN_2MnA zKBl_|M^LA!(@0S4ZEd2knIS&Xqxg^=@zMSP;v+rU|3LkN+RrZ^>CycG+J98;f13CI zmHV?prb)c*Y&&wpvORZK-!c6@bY3}vlph`|ZFb+n5FhE4&u`89!^-E&$UoG-XnY|) z(xdp09r4lpMtr1K{{ETsr}Fn7^$%)4zkH-uu5Zl#E7v#5_gBpC_bK0hvFHn6^)Sn??>@H%Rce;J+%aTi0W@vNIZ?U(t5zviBBeK5w}B`=kV?Fsb@ES7vRO1p5c+ zcm5qKSNEODI}fsyH}CKh_s3_d!-^Sx`@LpM$=y!>>;1|9?H?3he)&lM>-(EO{Zqcb ziQ-4szxlXD@`no5T2kwacGxrPz9#S>FW%7~&&+xaS6W+Qbraqq=*! zXRkoR{OYUrcB#cicx+%^p&c3W4~>7;eWd*C&!+O)(yI*qmodx_PjUQyS<2CDWtOi7 zK|a!>_>dj(|M&ZQ3k&7<`-qS9lfo9ssZ|@vmlEx``TM5{aV|{X<{;ZyGEGALgWAt8 zAL(OyZIDBX+sU?r8|3=$_Q;LJ3wv3&t0|IleEiq_F}lCDc661k_qfYBZHMy*mWyc6 zhzNS-%}%LsoxSYCwe}40kzU#VJ=sF~h0UkR@rnFH`x|qdtmX1<{pIvn2R^n_BrRNa z8GX7YMRJZ!VRMJnV2F?OC_ZFId}V!xk{(0phPY+aC-l7Jd^w$MTpTDNKGG}eL-g6< zPyNVJs;pmu`Ukb2Up~?+=eK$Nqs$M=@$p~hm!b2UI(5Ip6aMg*eS6)~ZAk8ETK|{u zy(OKPnachgQ2?G_hV;t*j~zDG#8-|_wo#p0QCVqN$0d{|f zmU&yBln@{3QGCdb_?dSSdC5hSWrs?o)h8#U7`~s4q)mf!q|GbRSnTlyu85EH`(8ZZ zQ9)zmeU~?pUIWUQu8;GGd(yM`qb$h!q!#rLYCpexq*u=GcC*`?{8#3O^!``nD}UI? z7M@d0-|rZI<2EjfVxz0hXVwi4Oa1-M$#rK`kqbVUmus&(+L5`oIlw|EeKy&rG^s7m zesG@|zm7510IE2%2CH9FVr6sP&5%PaWpI3ZF z|MRjVzR~`mqoaJbc`xzj*Ga+RXPfhhtWr7)toKFu9X`?zeOOKQneCa&&mlG0c|fMBdBtb+FTZ@GpBPhKcHd`O`x`D%usGoBDmLhRDD&0rGWq|j-NHg?|6l(s zER^vZ?IT`V%5!&|{O9^ur~`D4?61F8uu)q^665tje5Aj$^jHfB!o^EG(4c!)Twos;Jz*$+=wqIlqoc2jVuePF3gp79Z*JiVs~sclqiMem=%-Z#gHT5s*pS;>P z#-Cq4((}rD_=)E~%=1@$@55T=TE8p{DLdHYe+#=|>H%9T%I5u_iCOCn=T>TjDxPzh zsee{YQa^fMBiBCXdM);~OPEl^|FFsasC#)n(Z815r*{iO8?xHxFK4znrmhsW;s`U2 zf5b=n)+4R>{K9s*{LH$s>_Ww-TGjjz=$|qF7hF0+{lK?&uK&$4)0%Y*ULmXtI%UfL z>X^zr<(W$^-+jldW{bXyQuNRa$TyB3q|YlpjnMH{n5UACC|7xhnG@fqXKFCXc{t+(+Laiwzo zZ?|O~v+40w%E}sL@;|Tnf##>tzP){OK7d!H7N$R0?NYNg3oDQ={Vg3d%`e19`rD7| z@a5ZVa`{rhSeCPVp>#iMHbMRw`!}!rXteteZ^LI=*U062`^-&popenax&7F0@sU2S z_|Wx3{u%A7BUY1jcWVFRzlFGXwp-GT8Ld?G@EMc;dA0vL`slw_l54|i=JK;XJ23|f zXO(>&t*L)e|K!!aG5-AWk$z~?NOJ94#a#c34~=Dg{hqlF`4M9Bzv5j<3<|r)&GlPs zFT}8R%UY7S6`f4^BWvSHadP9gx%Ri;?OE9MS>(-_#U^`3%oH)RiH+RgYkNa|^s-{p z@io{`e`m5kYP)HEAwJSC{WwDOI#w)~Unp=LvupZB@ZU5R`e)4lktNQF%Z_}^^?$?z z$7Y$%;Uv34j4A(LZ7^GOZ&D$bzqXa!tW~*|Yu#gGy0cbKGNs4{xJHV*Ze^9(`fJO*GGKvrSd=XtGf7yr4t)4E>n2^ z>40f|AwJS)x9=pXs+7s)4{pDn4ZXKjs1h)fApcN)Gup*U1H~mRtL5_d_9&F(oMS5;O^)W4{I@@n50e}4H${~|D1%qo!e&-$N=M?==IgVk!26&?DR{Ljmd z{4?5z*8U;Ry`ukz?gb3t6BP+05W@3IaB}U z6+h}L!Z!J^hq zoiy(1QSw^z(6s-PSNp%C7j12*JpKRomnKA4W_EK@$j6BnP5URPfAVVI7=M2GNWXGm zaoXc%hurH^s{cw>CSxJ7zqQWf|Nq;A4gV)tRN8;_@26cEztLW1U}YK^w1Mn4?0s5T z_=?##E3)%0I+A&)h|2i;g7`=u*0>C<+hH{^*H>TPas^xP$5P^Mf7%uK_iO+D^j|qX zjP@a+_SB(md@jFW?4JiXKSS;dHmcv@BYj@+q3ehIGuj)stVFfejsAJQNyQ|Gh{n;S zkCV6=7fk!pdA0vL`g%>u(Mo}JbNMYIDzOhI4iU%Kddb+osDJWm-xz;>`AGj|U`cxZ zd$nBu58he9x|N6^A3HBM`Ja~^`De6SUn@Y1Hrc_A=MOD3oR3ucwjEn}eIq$>+=Cgf z58@-eU+=%g$KPX3eB=2`EG&vePZ>kz)hfr3f2e7)re@CC!{hzUaQU9R$^UFv2yzW1Z{^zwnWW0WP?JpVaC44Mo z^5;`-u7AtBI9=?;-y0=*`bR z&3xtaPviJO{e$AqFCXd6&v(uKE1&NkdQnv#x@sD|-Mg3^n(09wbf2WpIp@iWR@p-` zhb|S`%quACuFt2^DQmgd(q43=%_#lMgsGV@*T;p#iEuzP#)RiZB&Z23_lk_uO z{F!r)IN~n+3HeBm;zM@Ce|PFKcko(3w>YTeBN?k{_o^ZKAw&AG{YhgF{ZczQ%cXA>?=n(`;A={p)5|TW6o{MLUnH zFZbbgn#V3G{lu4^L|b=1yZ8FBHlzA3-SWGg>9?(h=U)pdYy9V`_20XClOZp6vx*PO zNhp4#NAV#$;)hQ8s=Ix$9kt4=CBL~)Nz>3vqraOpk~mJ>#+tR%NQjU0WM4I2G0mO! z^=d8OYg9=yE4ZJ&Z~H1_dUzb$AJv7S{z2{Mmyh(Jm%DMR={=}bsE6GBnYCu&*+Bie zQ*(sp9cQsYbvLjB6Sni70ipEmtb2TaiJA2C%KG}QwKq!{RtreEu~Fpu&BffM#w^+~ z=_Ie-KZdq!SXsYqZLq3VctcXnaDK;!xB#9qJcNdBzsUdSx`w`aSYChPf}N^R-`eC> z1ua2*q|dyvjGv4Sr_0Vi<6{iprpH}%(VsfLPwIPN9yvW}HT3VQ)o>o{7eHriIm&x4 z(9*v)S?eb)DNp7t9IrYQq9ey@wc&$?OroJ*&+_;zEnS*WN*}P#itHIR+_h|N8S;@H z#fR*O|FVb;zkOmRtvUS)pFBgNf#ZwoXMFfu*m1U#_Daum*gr^5z1wlmiVNuVPuF?U zr8V^05*vN1Y5P)3?ygL7E;54p2gR3PKGN?hKZBPNBWdHWulcSzL3F*3lipvtcDKTIlHM;^c>gGh$4yvG2Ty7)KRz{= zen0K6Cl0}E>yFhVOu8Zs?YxsmU0gwb9BVAUo;jD+u^O%SzBQfE3o)d3=q(BHkv=AT z3m?9A6`gg(US4-|IJH{RSHCi&Kg&G6gH%2k2K}45b_Gx9x18=M-(Fs|a4o&oWtx7# z*6A$qjyK^+<5_&c1pYNClGbdikvG_^r5+Pz>IZ!t$NKgfM6UWyWhj26NAV#$;$QRD z@-P}f-DWmJe57~ZrsJ7^ETz#K8puh*gQ+JUr*F1# zEL(75J+V4?PeT2J+RrZ^>8o5h%x~9RPFroZli%$dMx}ZK^vz!PVD0AZCf64(6#5rw zpc@fCls>dCDxY~_sp&Aag1(a1V6rcL0&DRlkW|#o*B#n3fj*k^n!lL)h_=~WTrVDJ zOXl2lVQF_Zkl@hUy1VrP=!GIxg2jM52Y@i4|t{059#}7W%MQ24JRQpO0!1cYY6He z)P8>XNWb$@w$4AZ7oB*_LSCFzP*Y=xy*^-P2yq$Z&2|R*kz(sc@~e}B>BPnTjIH*qq1Bd3@|x+V@~TIr~jP&BI=^^rHg(q~2dDv$1Qm?EYXM zK6};(>e#xsJmzQt&GGMZ^fhh^Qt0CfEbz6&5FhDJY!ByCmrtjkoA!}UZ~Bw&Jv~p~ z=wUI|s$HPA+yfcA+4NqA$45)qYUkj z1oe^mimMScszyOM;;j$8^R~TSHLg5sS7Hs!P}`eNNyai>u$sB?wl@|G2T zv}z-@-g#YZHm7ndac$9=p!E;xKja_cBR%qe4@=<#UXG%@#cs08&|CCfLYTg9|aa!f{sB=@h?VsA(0@+(YiWAcgM!Yk@wxdOh~awh+nqdk=FQzn?Fi7DBswcb1pk zI!xVW&)3gg+KPpovmkp0?_!9L^l1Jf|Iq#(TK^(G(xdp09r4lq0pcTlr2Tq+^+_ll zvc*$A-zAmC>qGQeA3L+24PFbEMkc`gkNOY!hkjp>9{G><2XDN!)ZHWAG^lZ9xsSh% z=KSs2`cCBo$kAFc>}z!^^6kzVT}h`NbnC_Pa)C)@H6D?5_0L~SCHuWru{mBv3F0F? z+W$lTq5BWCenotwNAV#$;-mE~;v>D|=;yjA&pXn}U2No_Z)G$!=Qq%c9~O`*I~KEu z_SpjJAJl$+`ADDN{avK5Q?V`|bVfz9I#-vcgjLd5sN3nE7YQVbtm9d$|UdOz@^kiuLirUXFAL-+22XRuOBb_?Eo&3el zTGMIPB)wJbCBmX=Q<>YSIEMD`(ETsEzejweSC_WqLrO=`M!t7>(MoG+rAejrA65_4 z&Usswj1@RR>nGHHe)&j$cS?6&M6;a6ulv9QYX#9=!)xfpvwupDCe0%I`b878e}sO2 z(fR`Mksdw&MC(h`et!8#kM4ia{sr2fLC-f3AL-A&pgd?!e|o<34c@};Azg6ER=@5? zAaS2;$vWgj6ZHFm+RrZ^>8o6+!+pX#(-u=d^VgLvHE-rr*T)7fBri{Uva^?b3A%qq z`4#0i#7FvuUDk8oSZ})ZbXQpzn?uW%ny262dcAgGniX??!Wmj$qW1I4M|yPsgYM5z zent5W@sZxnFNjBXSWOF(QgWjsezb6~tG>BMV|IDWdh)qYdwBng+RrZ^>Cy8ibbo;E zkI?fa#7Fwhi^Diy6;9()z2q;RTKcKeT)m^CH(T-Hv2emrUlH9Oq4x93M|!mXi`K6w zzoPtx_(<>3uR0$XPigl9R`UMOWi-`>H`Z%{7L)lM!`X*J&jhqSM(yX9kMwALeZO~_ ztX~t)k1yA&ElhvGqS*W}YcQxTx%Xj!G`bg;qhfk;)%I~Fd!OEu#VJoRShH`oLcJrk zwX=M=9NJ+FZ{X}^svlzf2B22y3>N&Vm(csYpDW@ceHA%f_Ab7Mw|x_u%TFAd!p^w3 zlEbrKxEl2ny^>TjE)CyG8J||7y_$iKe+EUQ){;7q9@g2p^+YU3o-L;8d-$3Da;?L{) zBR=vUUBB0!X|nrakqgg4#Gn30s?W_zVV4@D3y;**SU^WEKdbyr=b^1*vU|VZrH;9g z!TjfJRZWd3BH0-1$@d8twiPnj4d0)rR~E@&Y1Qipv&t5h5FhF1C#1`n3nO^H5^g5` z%yJFYwS1GArkE``XqwzGtqni6a3%M6(L!`swM5-+`eC-J=q6#rmTF}2R4!Zm@m6O!Ma`3=G@^~w ze)Vj_`04E%u1aWMT6ku#mk1uL8`NMhZ_!yTPU>+}ZFTK5YkNE0wP2CK0^%e6{u}9X z`_WrV#+@g^%sQggU$7uEX44m z8SMPME=R<+wM_ZPu}O%oX?-t~zEAI~>Y%Tu*@bPsD*N4Dru>r^-#GsB(i`Vr`URbC z)WkI=e!0CT)UH#Kn7_4$u;7`RDf`!$KMjAsj2|@rQTvFG^v3q{x_&4>qxez#h>!H> z`l0cO#-DNge!Q?(9k#taKRUFdIO@HXxaIh1_M_uTZOL<uF{6c!;{444DU43ZO zQogIXyVxu0?FotktNC%gIa5q4d~v3DKB7jA}g6<*~?BL>=-@=spzqxKOW z>5cy9b^VOv^Tv)2qN;n)Kl!7L__Rg}i*ElwT9i=Ulz%$Rw-7gPtZlMiDNFwA2hV;hyo7eS2`5(oP+DCk(NBPsZzEV|K zB{mv#HuwIkb-85bG{02{B7(Yo11nF7n*IL9k`k$BHc>QAL&J&v)Bqsj-8NEdRc1i3^V`t{zeFd(c zQU9U#e`oyU<-c+Lnb-A0^B2XB{6~DGN7v86aQ`@>*J|7&8XrpR{ZYv%lJp_BR-X#Y`dME!QlyNlxX z`eNkG1MJM+x~#j)9Rc+(>Oa&z;v+q}erSH7_)+_akM!vJDfgGm-`6VluZ(*0{#&i% zUWWVQP_=UZ&DefGlQz7@%W8bvi1wnxw|VL+Ij32-zD`2VX{7|jM|$J+d+QL!Z;u(y z?cZy}&+i+n6Ri%hLB&gxgjdhu_%Ze$+JDH)|KAxudFj#hGtS?<_D@j!==vc((xdD5 Ef6Nh$!2kdN literal 0 HcmV?d00001 diff --git a/funnyassets/models/hand.fmdl b/funnyassets/models/hand.fmdl new file mode 100644 index 0000000..44095d4 --- /dev/null +++ b/funnyassets/models/hand.fmdl @@ -0,0 +1,5 @@ +{ + "Mesh": "game/core/meshes/hand.fmesh_c", + "Material": "game/core/materials/cube.fmat", + "Physics": "game/core/physics/sphere.fpx" +} diff --git a/game/client/assetmgr.cpp b/game/client/assetmgr.cpp index a2369fb..c2b3d05 100644 --- a/game/client/assetmgr.cpp +++ b/game/client/assetmgr.cpp @@ -40,9 +40,9 @@ public: return u; } } - for ( auto &m: m_objects) + for ( uint32_t u = 1; u < nCount; u++ ) { - if (m.m_pObject == NULL) + if (m_objects[u].m_pObject == NULL) break; uFoundIndex++; } @@ -57,6 +57,8 @@ public: { if (uIndex >= nCount) return 0; + if (uIndex == 0) + return 0; return m_objects[uIndex].m_pObject; } void UnrefObject( uint32_t uIndex ) @@ -135,6 +137,7 @@ FunnyMesh_t *CAssetManager::GetMeshByIndex( uint32_t uIndex ) uint32_t CAssetManager::LoadModel( const char *szName ) { + V_printf("LOADING %s\n", szName); bool bHasBeenCreated = false; HFunnyModel hModel = m_models.GetOrCreateObject(szName, &bHasBeenCreated); if (!bHasBeenCreated) @@ -170,7 +173,6 @@ uint32_t CAssetManager::LoadModel( const char *szName ) IJSONValue *pMesh = pMainObject->GetValue("Mesh"); IJSONValue *pMaterial = pMainObject->GetValue("Material"); IJSONValue *pPhysics = pMainObject->GetValue("Physics"); - V_printf("%s\n", pMaterial->GetStringValue()); if (pMesh) pModel->m_hMesh = LoadMesh(pMesh->GetStringValue()); if (pMaterial) @@ -294,7 +296,7 @@ void CAssetManager::UnrefMaterial( uint32_t uIndex ) HFunnyMesh CAssetManager::LoadMesh( const char *szName ) { - + V_printf("LOADING %s\n", szName); bool bHasBeenCreated = false; HFunnyMesh hAsset = m_meshes.GetOrCreateObject(szName, &bHasBeenCreated); if (!bHasBeenCreated) @@ -308,6 +310,7 @@ HFunnyMesh CAssetManager::LoadMesh( const char *szName ) m_meshes.UnrefObject(hAsset); return 0; } + V_printf("V_LOADING %s %llu\n", szName, filesystem->Size(hMesh)); IVertexBuffer *pVertexBuffer = g_pRenderContext->CreateVertexBuffer(filesystem->Size(hMesh)); pVertexBuffer->Lock(); diff --git a/game/client/entitysystem.cpp b/game/client/entitysystem.cpp index a7f16a9..159819e 100644 --- a/game/client/entitysystem.cpp +++ b/game/client/entitysystem.cpp @@ -325,6 +325,13 @@ C_BaseEntity **CEntitySystem::GetEntities() return m_pEntities; }; +C_BaseEntity *CEntitySystem::GetEntityByIndex( int idx ) +{ + if (idx < 0 || idx >= MAX_EDICTS) + return NULL; + return m_pEntities[idx]; +} + C_BaseEntity *UTIL_GetLocalPlayer() { return s_pLocalEntity; diff --git a/game/client/entitysystem.h b/game/client/entitysystem.h index a6da98b..ef6a910 100644 --- a/game/client/entitysystem.h +++ b/game/client/entitysystem.h @@ -14,6 +14,7 @@ class IEntityFactory; class C_BaseEntity; #define MAX_EDICTS 8192 +#define EDICT_INDEX_UNDEFINED (-1U) class CEntitySystem { @@ -35,6 +36,8 @@ public: virtual void NetSendThink( INetworkBase *pBase ); virtual C_BaseEntity **GetEntities(); + + virtual C_BaseEntity *GetEntityByIndex( int idx ); private: C_BaseEntity *m_pEntities[MAX_EDICTS]; int m_nEntityCount; diff --git a/game/client/game.cpp b/game/client/game.cpp index ac48fb9..3fa23cb 100644 --- a/game/client/game.cpp +++ b/game/client/game.cpp @@ -108,6 +108,7 @@ void CFunnyGameBridge::Init() for ( uint32_t i = 0; i < pHeadSet->GetControllerCount(); i++ ) { pHeadSet->GetController(i)->SetInputCallback(XRInputCallback); + V_printf("callback set on %p\n", pHeadSet->GetController(i)); } } @@ -161,7 +162,6 @@ void CFunnyGameBridge::Frame( float fDelta ) if (pHeadSet) { XRRenderSurface_t s = pHeadSet->GetSurface(0); g_pWorldRenderer->SetCameraPosition(s.m_vPosition); - V_printf("%f\n", s.m_vPosition.y); g_pWorldRenderer->SetCameraRotation(s.m_vRotation); } diff --git a/game/client/milmoba/player.cpp b/game/client/milmoba/player.cpp index a0e67f7..8d653e9 100644 --- a/game/client/milmoba/player.cpp +++ b/game/client/milmoba/player.cpp @@ -26,10 +26,9 @@ void C_MOBAPlayer::Think( float fDelta ) if (pPlayerEntity == this) { } - m_pLeftHand = (C_MOBAPlayerHandController*)EntitySystem()->GetEntities()[m_leftHandId]; - m_pRightHand = (C_MOBAPlayerHandController*)EntitySystem()->GetEntities()[m_rightHandId]; + m_pLeftHand = (C_MOBAPlayerHandController*)EntitySystem()->GetEntityByIndex(m_leftHandId); + m_pRightHand = (C_MOBAPlayerHandController*)EntitySystem()->GetEntityByIndex(m_rightHandId); BaseClass::Think(fDelta); - V_printf("device: %p %p\n", m_pLeftHand, m_pRightHand ); }; LINK_ENTITY_TO_CLASS(player, C_MOBAPlayer) @@ -161,6 +160,14 @@ void Game_OnGameAxisDiff( EInputDeviceType eDevice, EInputAxis eAxis, float fVal void C_MOBAPlayerHandController::Precache() { + + m_hNormal = g_pAssetManager->LoadModel("game/core/models/hand.fmdl"); + m_pNormalModel = g_pAssetManager->GetModelByIndex(m_hNormal); + m_hSqueezed = g_pAssetManager->LoadModel("game/core/models/sphere.fmdl"); + m_pSqueezedModel = g_pAssetManager->GetModelByIndex(m_hSqueezed); + m_pModel = m_pNormalModel; + m_pMesh = g_pAssetManager->GetMeshByIndex(m_pModel->m_hMesh)->m_pMesh; + m_pInstance = g_pWorldRenderer->CreateInstance(m_pMesh); } @@ -172,10 +179,45 @@ void C_MOBAPlayerHandController::Spawn() void C_MOBAPlayerHandController::Think( float fDelta ) { - V_printf("controller: %p %f %f %f\n", this, m_vDesiredHandPosition.x, m_vDesiredHandPosition.y, m_vDesiredHandPosition.z ); - SetAbsOrigin(m_vDesiredHandPosition); - BaseClass::Think(fDelta); -}; + if (m_fSqueeze != m_fPreviousSqueeze) + { + if (m_fSqueeze > 0.5 && m_fPreviousSqueeze > 0.5) + goto draw; + if (m_fSqueeze <= 0.5 && m_fPreviousSqueeze <= 0.5) + goto draw; + + if (m_pInstance) + g_pWorldRenderer->DestroyMeshInstance(m_pMesh, m_pInstance); + + if (m_fSqueeze > 0.5) + m_pModel = m_pSqueezedModel; + else + m_pModel = m_pNormalModel; + m_pMesh = g_pAssetManager->GetMeshByIndex(m_pModel->m_hMesh)->m_pMesh; + m_pInstance = g_pWorldRenderer->CreateInstance(m_pMesh); + } + +draw: + if (m_pInstance) + { + CBaseMaterial *pMat = g_pAssetManager->GetMaterialByIndex(m_pModel->m_hMaterial)->m_pLayout; + m_pInstance->SetPosition(m_vDesiredHandPosition); + m_pInstance->SetRotation(m_vDesiredHandRotation); + m_pInstance->SetScale({0.025, 0.025, 0.025}); + m_pInstance->SetMaterial(pMat); + + } + + m_fPreviousSqueeze = m_fSqueeze; +} +C_MOBAPlayerHandController::~C_MOBAPlayerHandController() +{ + if (m_pInstance) + g_pWorldRenderer->DestroyMeshInstance(m_pMesh, m_pInstance); + g_pAssetManager->UnrefModel(m_hNormal); + g_pAssetManager->UnrefModel(m_hSqueezed); + +} LINK_ENTITY_TO_CLASS(player_hand_controller, C_MOBAPlayerHandController) @@ -208,11 +250,19 @@ void XRInputCallback( IXRController *pController, EXRInputType_t eType, const ch if (pCon == NULL) return; - switch (action) - { - case k_EXRInputAction_Pose: - pCon->m_vDesiredHandPosition = value.pose.pos; - V_printf("callback: %p %f %f %f\n", pCon, pCon->m_vDesiredHandPosition.x, pCon->m_vDesiredHandPosition.y, pCon->m_vDesiredHandPosition.z ); + switch (eType) { + case k_EXRInput_Grip: + if (action == k_EXRInputAction_Pose) + { + pCon->m_vDesiredHandPosition = value.pose.pos; + pCon->m_vDesiredHandRotation = value.pose.rot; + } + break; + case k_EXRInput_Squeeze: + if (action == k_EXRInputAction_Value) + { + pCon->m_fSqueeze = value.f32.value; + } break; default: break; diff --git a/game/client/milmoba/player.h b/game/client/milmoba/player.h index 710e92e..0cb2384 100644 --- a/game/client/milmoba/player.h +++ b/game/client/milmoba/player.h @@ -3,19 +3,32 @@ #define MILMOBA_PLAYER_H #include "basemodelentity.h" -class C_MOBAPlayerHandController: public C_BaseModelEntity +class C_MOBAPlayerHandController: public C_BaseEntity { public: - DECLARE_CLASS(C_MOBAPlayerHandController, C_BaseModelEntity); + DECLARE_CLASS(C_MOBAPlayerHandController, C_BaseEntity); DECLARE_DATADESC(); DECLARE_CLIENTCLASS(); virtual void Precache ( void ) override; virtual void Spawn( void ) override; void Think( float fDelta ); + virtual ~C_MOBAPlayerHandController() override; Vector m_vDesiredHandPosition = {}; Quat m_vDesiredHandRotation = {}; + float m_fPreviousSqueeze = 0; + float m_fSqueeze = 0; + + HFunnyModel m_hNormal = NULL; + FunnyModel_t *m_pNormalModel = NULL; + HFunnyModel m_hSqueezed = NULL; + FunnyModel_t *m_pSqueezedModel = NULL; + + FunnyModel_t *m_pModel = NULL; + IMesh *m_pMesh = NULL; + IMeshInstance *m_pInstance = NULL; + }; class C_MOBAPlayer: public C_BaseModelEntity @@ -45,10 +58,10 @@ public: Vector m_vLocalMovementVector; Vector vCameraPos; - C_MOBAPlayerHandController *m_pLeftHand; - int m_leftHandId = 0; - C_MOBAPlayerHandController *m_pRightHand; - int m_rightHandId = 0; + C_MOBAPlayerHandController *m_pLeftHand = NULL; + int m_leftHandId = EDICT_INDEX_UNDEFINED; + C_MOBAPlayerHandController *m_pRightHand = NULL; + int m_rightHandId = EDICT_INDEX_UNDEFINED; }; diff --git a/game/client/worldrender.cpp b/game/client/worldrender.cpp index 0eb3813..8ecdd37 100644 --- a/game/client/worldrender.cpp +++ b/game/client/worldrender.cpp @@ -105,13 +105,6 @@ void CFunnyMeshInstance::Frame() v[2] = m_vScale.z; glm_scale_make(m, v); glm_mat4_mul(m_data.m_matTranslation, m, m_data.m_matTranslation); - - /* - V_printf("AAAAA %f %f %f %f\n", m_data.m_matTranslation[0][0], m_data.m_matTranslation[0][1], m_data.m_matTranslation[0][2], m_data.m_matTranslation[0][3]); - V_printf("AAAAA %f %f %f %f\n", m_data.m_matTranslation[1][0], m_data.m_matTranslation[1][1], m_data.m_matTranslation[1][2], m_data.m_matTranslation[1][3]); - V_printf("AAAAA %f %f %f %f\n", m_data.m_matTranslation[2][0], m_data.m_matTranslation[2][1], m_data.m_matTranslation[2][2], m_data.m_matTranslation[2][3]); - V_printf("AAAAA %f %f %f %f\n", m_data.m_matTranslation[3][0], m_data.m_matTranslation[3][1], m_data.m_matTranslation[3][2], m_data.m_matTranslation[3][3]); - */ } void CFunnyMeshInstance::SetMaterial( CBaseMaterial *pMaterial ) diff --git a/game/server/assetmgr.cpp b/game/server/assetmgr.cpp index 8a79117..a7a4612 100644 --- a/game/server/assetmgr.cpp +++ b/game/server/assetmgr.cpp @@ -39,9 +39,9 @@ public: return u; } } - for ( auto &m: m_objects) + for ( uint32_t u = 1; u < nCount; u++ ) { - if (m.m_pObject == NULL) + if (m_objects[u].m_pObject == NULL) break; uFoundIndex++; } @@ -179,9 +179,6 @@ void CAssetManager::UnrefMaterial( uint32_t uIndex ) HFunnyMesh CAssetManager::LoadMesh( const char *szName ) { - - - bool bHasBeenCreated = false; HFunnyMesh hAsset = m_meshes.GetOrCreateObject(szName, &bHasBeenCreated); if (!bHasBeenCreated) diff --git a/game/server/milmoba/player.cpp b/game/server/milmoba/player.cpp index c728529..749d83c 100644 --- a/game/server/milmoba/player.cpp +++ b/game/server/milmoba/player.cpp @@ -6,8 +6,6 @@ CMOBAPlayer::CMOBAPlayer() { m_hCuboid = g_pPhysics->CreateCube({1,1,1}); - m_pLeftHand = EntitySystem()->CreateByClassname("player_hand_controller", &m_leftHandId); - m_pRightHand = EntitySystem()->CreateByClassname("player_hand_controller", &m_rightHandId); } CMOBAPlayer::~CMOBAPlayer() @@ -22,6 +20,8 @@ void CMOBAPlayer::Spawn() SetAbsOrigin({0,-11.5, 0}); SetThink(Think); + m_pLeftHand = EntitySystem()->CreateByClassname("player_hand_controller", &m_leftHandId); + m_pRightHand = EntitySystem()->CreateByClassname("player_hand_controller", &m_rightHandId); m_pLeftHand->Spawn(); m_pRightHand->Spawn(); }; @@ -71,7 +71,6 @@ CMOBAPlayerHandController::CMOBAPlayerHandController() void CMOBAPlayerHandController::Spawn() { CBaseEntity::Spawn(); - SetModel("game/core/models/sphere.fmdl"); SetScale(0.03); SetThink(Think); } diff --git a/game/server/milmoba/player.h b/game/server/milmoba/player.h index 0d0cec8..b1fc12f 100644 --- a/game/server/milmoba/player.h +++ b/game/server/milmoba/player.h @@ -27,10 +27,10 @@ private: int m_rightHandId; }; -class CMOBAPlayerHandController: public CBaseModelEntity +class CMOBAPlayerHandController: public CBaseEntity { public: - DECLARE_CLASS(CMOBAPlayerHandController, CBaseModelEntity); + DECLARE_CLASS(CMOBAPlayerHandController, CBaseEntity); DECLARE_DATADESC(); DECLARE_SERVERCLASS() CMOBAPlayerHandController(); diff --git a/public/ixr.h b/public/ixr.h index 90ae9a0..539733c 100644 --- a/public/ixr.h +++ b/public/ixr.h @@ -35,6 +35,7 @@ enum EXRInputType_t k_EXRInput_Thumbstick, k_EXRInput_Joystick, k_EXRInput_Trigger, + k_EXRInput_Throttle , k_EXRInput_Trackball, k_EXRInput_Pedal, k_EXRInput_System,