From df3062f86f983bb98f712084a5bc8a3f8196945e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 12 Jun 2017 23:21:41 +0200 Subject: [PATCH] Import boat code from Grieftest --- mods/ITEMS/mcl_boats/depends.txt | 1 + mods/ITEMS/mcl_boats/init.lua | 303 ++++++++++++++++++++++-- mods/ITEMS/mcl_boats/models/boat.b3d | Bin 0 -> 19225 bytes mods/ITEMS/mcl_boats/textures/boat.png | Bin 0 -> 3748 bytes mods/ITEMS/mcl_boats/textures/boat2.png | Bin 0 -> 3497 bytes mods/ITEMS/mcl_boats/textures/boat3.png | Bin 0 -> 2798 bytes mods/ITEMS/mcl_boats/textures/boat4.png | Bin 0 -> 3327 bytes mods/ITEMS/mcl_boats/textures/boat5.png | Bin 0 -> 3348 bytes mods/ITEMS/mcl_boats/textures/boat6.png | Bin 0 -> 3115 bytes 9 files changed, 282 insertions(+), 22 deletions(-) create mode 100644 mods/ITEMS/mcl_boats/models/boat.b3d create mode 100644 mods/ITEMS/mcl_boats/textures/boat.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat2.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat3.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat4.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat5.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat6.png diff --git a/mods/ITEMS/mcl_boats/depends.txt b/mods/ITEMS/mcl_boats/depends.txt index 315237e07..61f1a11db 100644 --- a/mods/ITEMS/mcl_boats/depends.txt +++ b/mods/ITEMS/mcl_boats/depends.txt @@ -1 +1,2 @@ mcl_core +mcl_player diff --git a/mods/ITEMS/mcl_boats/init.lua b/mods/ITEMS/mcl_boats/init.lua index a0535fc7d..58ea838a6 100644 --- a/mods/ITEMS/mcl_boats/init.lua +++ b/mods/ITEMS/mcl_boats/init.lua @@ -1,6 +1,266 @@ -- -- Helper functions -- + +local function is_water(pos) + local nn = minetest.get_node(pos).name + return minetest.get_item_group(nn, "water") ~= 0 +end + + +local function get_sign(i) + if i == 0 then + return 0 + else + return i / math.abs(i) + end +end + + +local function get_velocity(v, yaw, y) + local x = -math.sin(yaw) * v + local z = math.cos(yaw) * v + return {x = x, y = y, z = z} +end + + +local function get_v(v) + return math.sqrt(v.x ^ 2 + v.z ^ 2) +end + +-- +-- Boat entity +-- + +local boat = { + physical = true, + -- Warning: Do not change the position of the collisionbox top surface, + -- lowering it causes the boat to fall through the world if underwater + collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, + visual = "mesh", + mesh = "boat.b3d", + textures = {"boat.png"}, + visual_size = {x=3, y=3}, + rotate = -180, + animation = { + speed_normal = 25, speed_run = 50, + stand_start = 0, stand_end = 0, + walk_start = 0, walk_end = 40, + run_start = 0, run_end = 40, + }, + driver = nil, + v = 0, + last_v = 0, + removed = false +} + +--[[ +--################### +--################### BOAT +--################### + +mobs:register_mob("amc:81boat", { + type = "animal", + passive = true, + runaway = true, + stepheight = 1.2, + hp_min = 30, + hp_max = 60, + armor = 150, + collisionbox = {-0.35, -0.01, -0.35, 0.35, 2, 0.35}, + rotate = -180, + visual = "mesh", + mesh = "boat.b3d", + textures = {{"boat.png"},{"boat1.png"},{"boat2.png"},{"boat3.png"},{"boat4.png"},{"boat5.png"},{"boat6.png"},}, + visual_size = {x=3, y=3}, + walk_velocity = 0.6, + run_velocity = 2, + jump = true, + animation = { + speed_normal = 25, speed_run = 50, + stand_start = 0, stand_end = 0, + walk_start = 0, walk_end = 40, + run_start = 0, run_end = 40, + }, +}) +]] +function boat.on_rightclick(self, clicker) + if not clicker or not clicker:is_player() then + return + end + local name = clicker:get_player_name() + if self.driver and clicker == self.driver then + self.driver = nil + clicker:set_detach() + mcl_player.player_attached[name] = false + mcl_player.player_set_animation(clicker, "stand" , 30) + local pos = clicker:getpos() + pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} + minetest.after(0.1, function() + clicker:setpos(pos) + end) + elseif not self.driver then + local attach = clicker:get_attach() + if attach and attach:get_luaentity() then + local luaentity = attach:get_luaentity() + if luaentity.driver then + luaentity.driver = nil + end + clicker:set_detach() + end + self.driver = clicker + clicker:set_attach(self.object, "", + {x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0}) + mcl_player.player_attached[name] = true + minetest.after(0.2, function(clicker) + if clicker:is_player() then + mcl_player.player_set_animation(clicker, "sit" , 30) + end + end, clicker) + clicker:set_look_horizontal(self.object:getyaw()) + end +end + + +function boat.on_activate(self, staticdata, dtime_s) + self.object:set_armor_groups({immortal = 1}) + if staticdata then + self.v = tonumber(staticdata) + end + self.last_v = self.v +end + + +function boat.get_staticdata(self) + return tostring(self.v) +end + + +function boat.on_punch(self, puncher) + if not puncher or not puncher:is_player() or self.removed then + return + end + if self.driver and puncher == self.driver then + self.driver = nil + puncher:set_detach() + mcl_player.player_attached[puncher:get_player_name()] = false + end + if not self.driver then + self.removed = true + local inv = puncher:get_inventory() + if not (creative and creative.is_enabled_for + and creative.is_enabled_for(puncher:get_player_name())) + or not inv:contains_item("main", "mcl_boats:boat") then + local leftover = inv:add_item("main", "mcl_boats:boat") + -- if no room in inventory add a replacement boat to the world + if not leftover:is_empty() then + minetest.add_item(self.object:getpos(), leftover) + end + end + -- delay remove to ensure player is detached + minetest.after(0.1, function() + self.object:remove() + end) + end +end + + +function boat.on_step(self, dtime) + self.v = get_v(self.object:getvelocity()) * get_sign(self.v) + if self.driver then + local ctrl = self.driver:get_player_control() + local yaw = self.object:getyaw() + if ctrl.up then + self.v = self.v + 0.1 + elseif ctrl.down then + self.v = self.v - 0.1 + end + if ctrl.left then + if self.v < 0 then + self.object:setyaw(yaw - (1 + dtime) * 0.03) + else + self.object:setyaw(yaw + (1 + dtime) * 0.03) + end + elseif ctrl.right then + if self.v < 0 then + self.object:setyaw(yaw + (1 + dtime) * 0.03) + else + self.object:setyaw(yaw - (1 + dtime) * 0.03) + end + end + end + local velo = self.object:getvelocity() + if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then + self.object:setpos(self.object:getpos()) + return + end + local s = get_sign(self.v) + self.v = self.v - 0.02 * s + if s ~= get_sign(self.v) then + self.object:setvelocity({x = 0, y = 0, z = 0}) + self.v = 0 + return + end + if math.abs(self.v) > 5 then + self.v = 5 * get_sign(self.v) + end + + local p = self.object:getpos() + p.y = p.y - 0.5 + local new_velo + local new_acce = {x = 0, y = 0, z = 0} + if not is_water(p) then + local nodedef = minetest.registered_nodes[minetest.get_node(p).name] + if (not nodedef) or nodedef.walkable then + self.v = 0 + new_acce = {x = 0, y = 1, z = 0} + else + new_acce = {x = 0, y = -9.8, z = 0} + end + new_velo = get_velocity(self.v, self.object:getyaw(), + self.object:getvelocity().y) + self.object:setpos(self.object:getpos()) + else + p.y = p.y + 1 + if is_water(p) then + local y = self.object:getvelocity().y + if y >= 5 then + y = 5 + elseif y < 0 then + new_acce = {x = 0, y = 20, z = 0} + else + new_acce = {x = 0, y = 5, z = 0} + end + new_velo = get_velocity(self.v, self.object:getyaw(), y) + self.object:setpos(self.object:getpos()) + else + new_acce = {x = 0, y = 0, z = 0} + if math.abs(self.object:getvelocity().y) < 1 then + local pos = self.object:getpos() + pos.y = math.floor(pos.y) + 0.5 + self.object:setpos(pos) + new_velo = get_velocity(self.v, self.object:getyaw(), 0) + else + new_velo = get_velocity(self.v, self.object:getyaw(), + self.object:getvelocity().y) + self.object:setpos(self.object:getpos()) + end + end + end + self.object:setvelocity(new_velo) + self.object:setacceleration(new_acce) +end + + + + + + +--mc2code +--[[ +-- +-- Helper functions +-- local init = os.clock() local function is_water(pos) @@ -19,10 +279,13 @@ end -- local boat = { physical = true, - collisionbox = {-1,-0.5,-1, 1,0.5,1}, + --collisionbox = {-1,-0.5,-1, 1,0.5,1}, + collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, visual = "mesh", - mesh = "mcl_boats_base.x", - + --mesh = "mcl_boats_base.x", + mesh = "boats_boat.obj", + --textures = {"mcl_boats_texture.png"}, + textures = {"default_wood.png"}, _driver = nil, _v = 0, _stepcount = 0, @@ -87,7 +350,7 @@ function boat.on_step(self, dtime) local yaw = self.object:getyaw() - if ctrl.up and self._v<3 then + if ctrl.up and self._v<6 then --was3 self._v = self._v + 1 end @@ -132,21 +395,19 @@ function boat.on_step(self, dtime) end end +]] +local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" } +local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Acacia Boat", "Dark Oak Boat" } +local craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" } +local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" } -local woods = { "", "_spruce", "_birch", "_jungle", "_dark", "_acacia" } -local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Dark Oak Boat", "Acacia Boat" } -local craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:darkwood", "mcl_core:acaciawood" } -local images = { "oak", "spruce", "birch", "jungle", "dark_oak", "acacia" } +for b=1, #boat_ids do + local itemstring = "mcl_boats:"..boat_ids[b] + minetest.register_entity(itemstring, boat) -for w=1, #woods do - local textures = {"mcl_boats_texture.png"} - minetest.register_entity("mcl_boats:boat"..woods[w], boat) - - minetest.register_craftitem("mcl_boats:boat"..woods[w], { - description = names[w], - _doc_items_longdesc = "Boats are used to travel on the surface of water.", - _doc_items_usagehelp = "Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to collect it.", - inventory_image = "mcl_boats_"..images[w].."_boat.png", + minetest.register_craftitem(itemstring, { + description = names[b], + inventory_image = "mcl_boats_"..images[b].."_boat.png", liquids_pointable = true, groups = { boat = 1, transport = 1}, stack_max = 1, @@ -167,7 +428,7 @@ for w=1, #woods do return end pointed_thing.under.y = pointed_thing.under.y+0.5 - minetest.add_entity(pointed_thing.under, "mcl_boats:boat"..woods[w]) + minetest.add_entity(pointed_thing.under, itemstring) if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end @@ -175,9 +436,9 @@ for w=1, #woods do end, }) - local c = craftstuffs[w] + local c = craftstuffs[b] minetest.register_craft({ - output = "mcl_boats:boat"..woods[w], + output = itemstring, recipe = { {c, "", c}, {c, c, c}, @@ -191,5 +452,3 @@ minetest.register_craft({ burntime = 20, }) -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) diff --git a/mods/ITEMS/mcl_boats/models/boat.b3d b/mods/ITEMS/mcl_boats/models/boat.b3d new file mode 100644 index 0000000000000000000000000000000000000000..6a8cb3b9630dc427ee3f2126b26cbc90359365bd GIT binary patch literal 19225 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 Qc&Fk0E{pbB1ijz=KPQ*4e*gdg literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_boats/textures/boat.png b/mods/ITEMS/mcl_boats/textures/boat.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0436fe2c210b1107c1f0c860f9cde7545fa333 GIT binary patch literal 3748 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 JPDHLkV1mxjfII*I literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_boats/textures/boat5.png b/mods/ITEMS/mcl_boats/textures/boat5.png new file mode 100644 index 0000000000000000000000000000000000000000..d02a9a9cf01b6ab7e432ee2518dd3f3702315a3c GIT binary patch literal 3348 zcmV+v4eRoWP)qv{4&BdqJQL1x4J9V)){E8DCtb@b5P=c<*ol7u^u{+ddRmjQHd-iTBRqxY&;1vo|xi zJ)FZ4{f$EWA+#kUGVuopyT|bE!2;ggpT}O)i?9Vdiuot`>&s@ae>Qd>yl35Sfj{iu@E_Gy zO=uKs$R!`5x@88r$_ zcJTr7%LWv)CX_NJWLFGWNj*T00k)eSyhnZ? zpC)kp=%+IP2R{{<{z?Aq$ARaS@x&#-?a>@QJX*wu$8o$(!D%uBBpyoDhP~se;-%V4 z#1LM`9jSV&=_S_j$_&8O%QAz`4CESBY;|qG0HtLkid5Ah`li)F=goA^eHV$uEYeh^ z^(7Mu3lD@&tEoXXC45stt%{PFVmUZUX7HYMY-8V1N@iP*7=*vg-=#gJsYi>u!`dAqaDUNxXj%M|a(e_h=oiB1OR* zEQXR9yjOZ9^BInw-{AYeK~fl&ztc9V8%-wut^%_I>wl~TaH9N_ zK#eBd6PEzxyan&yE~7&0H`JqdsOo!Eshf2-wsntG?FLowzV1c01`j@0LFB*`<})AfGlOoudSaPNCCu;p8la%Tq}}2@D6wXMPQeR@bvO zbkbIg&@AiNrer>&>UX&b&Ga?)}F zu%7o%TmpP`wS-TuQ~2~UiI1*QT;WpHJ%W}tp;LF_F;)B~Rd=K1gswYSmdft5+$;-2 z>`;|&kWZyyN1b%thFjPq9+-koGsHpNi#?KC#1y%@4O!iW%c}%#2p`|BDhicBO;Iqj zf(n4Lt01sV$$Uo1qm(=hH7}?=!*6*_C6vOj{GB#FqXMOpRwdyRmjHa#D`m}m)sq2^ zX}?Y@Pw(2AQ3kduR|)M`iN2SMCM*$BMZ*9Z>GP(6tzcwXdcy_56=m-@{3%v>_Cg4R~;zi%&1r7Rv`VoM*DKrhCa<1jv1rfaB=VF1d+r^=BeG3Ehv?&!T?ui^Z4?OwO>uiYCl5B3d1)5#;;Der)CD= z7dXED@!Hhv@=_P1zV0VPVv`7msAqfbA`qL9{v8faNdFE-NRH9ocNZb@W1Bxd2~TiL z&IHMi`#;YN{Jmge3jU>O1d~&U%ui!3GzBe7Y>+lE1N~}BR#dFk@7ObV1{l6pKA!y6O&Mvb+n`DhDKHsLQ)*UkGKW@5FB3+4kepR=l)^ecU zc1r(m(pims3uF%`W@ON-wg!w*s@svNTanXkxVlad3&io^?aK2R;Ll0`e!At}e?}`m z_;3PnMdovIZIdL(XG~bj5q(mR&*TPg1oCd56h!gQ}4e$U%)%G@=Ku3{k!6j z#OP{{fv!!xyk=AVU0w16FH9{S^yW zzRVq;yuSK}&j7zwpg6JA-{$=jmjFDB)k+jt%_=iMfO>a;`nxYQj#zLKF^}Byxu;9t z4-q_pF@(q-n4g3@I#`w6Jx~39Zj$f(GAppJKStlA{vV+JA0z~pX9R1+1Zhf$V(t&0 z0e(vc;DmZ|8DP5?K))Zr7Oe+F#|7PnNPI@__N(i-AiJ=BX#&4PcE1?;c zY~cM9mjK69fsghBXdV;xeF!d2F$-|uWC+X^&1kn=Sl3-B<}IjXEh2MoXB}65zF9$RhAm5^W!;0Qn7#G*c|FLVAyN)w47=Ul(WB9+! z%*@Qp%*@Qpbe~>5IoEd&m#I(@9LIAo#xhTlaZXFvJcZ^3VPh1;5acr_aWzP%S#~~9Eo!Y9(y1f(fb(4@9JWT4+ z)`Fhi+((?^!I5cn@!{$U&we}q#=glWF_KqrmmQ$w1iD-2!P2iBQIm)L6?4b^A9Ke3 z7i1F#|KS~qM|3c-ZFmIBCO^o~CuZ!x-_@)865s(%A(8FYyOiUX9Kz=nPYsB7FMC$Qo9 z0AE{Qm0B^`e{EJLw&VmhJRjg|>&s`B>0t5%Vyn&S#P&!|V95tanYvoB;)pyclv54^ z%SL~)o@_J6-6J`HB_AMV>h{F9+974KDmG&f`fM}D-6J`HB_AMVP8O$!-Hcl8lv54^ zTdgPC?6I7{avhv9^?DtU(;r(ulA|Hzw1I(TgBJv0R*0384w05=c=KnIuw e00000000HvE`%ae?0pOX0000Fd^ZkEZri={LhD@kKL85i z%LgBQKZ-AJ_wn6*1(&Tjj_a z1)rSe@$qpMUta9sVU)&sYZHfZZe?p7AD(3Kc;ex*pTy_#+?#{6KC|qtz|XH?Kf8jo z6U6;6joV=g2Q>%xa>mtR8fS+oTpXluEqgAG(&%+vm7O1_kx49I)NpYpwhxCMj^vsA z8=r!Tw~9u7{Ym!q+!|=Vms|#E%Ki-eZU3epTHRhpdq0d)ZWT58@H0*T@z6VnuD+$H zifqEaiHIP&_7)wXwYXu1k2FKPKYWpG7b~oT}uVb&cib_eI zRSu!Nw}IWQRaAH7Jf1I*bD!*-*xK9JPc1*mz7Si`03b-ubpWse^!zBky(wu0IPJx8 z)QsV*8^?Jsp*SSpiQ}Rxd|xWUKq^2xru-#kqC08`FSci*KOH9UsZ@YZkFxkmD!|=1 zjT1TVK+f@Z*711e;RDfKca!>DR)`Z;fXoUi*;VX|^V5+4-Wy0J_fj~lICvDA72#%- zQrya!tQ^CpRHvy5FqU&3#P0nA4=2solbu877oX@%+R^bvVjctF_9%l#`H&vR8Fh|T z0A{VX8MF$Z8C#W-ort~*SF+xbEM^7Zns5S|y|ke$5qekodQmFC_M`$-g!d(TGqE6? zuQsXeyDkOK})NZWR_Su$9RG?Wz^Ajwj@)xCy=vw zE@|ps=_sDtEIh3Rm@Pqi?gHR=oIqzUjH_-!o!_oT&@D&M5sa%2YT`VW@^Q`4GGCJ* zsFp(7Uk5FhC0K2$0?M@P(=NBBLC}{ohJF-vasH_0qAFQmlaig441G^}|ERyI>vR@b z3ErE)cm-*b8_zxD>G;`_JPnh-E>oSAw-8x=^GVL!l;=-l{wlzkr$gBL$61B;(Y+0I zG#&1_0hVG#cRQp!hcouw^4>aEkp&q%?A@yKB+ENHA+&eHXi0GO1e7zd7+|et6zxV7 zhl4oA!??7BO>?X{nocrI^DorR%4UO!=Ng_809Iw5;;7l6o4Ww0m&5q*W*c0;xZ2UI zAJzo2l4jNpDh>{O2mMl5dClsEJJCsYkLoVEm58p?aqX2N)GNlapVgouf#v%lb)aky2@NPh5?D2%^oXL6F z+#*uRAd>L_>Xk4mg1R4O$t5&ntppRBGdyX^rg`o$+gU_c-kb&HRyi0Dbhh!tH2*@~ zbgyU7G5{ziJ$C`{$x#*`o#pj?{KK=HWwm5|R9~Zdb!U?C%<^swotE-y*KfPz#a63@ zR)uy~WNoEYmfu`NT>|T{?BGD`I@Jgo9S8NkgZsNJJlt&Ilj|KTp*pBp2`0<|#+wtS zdG0ZOwj@u(<^`jP#Kt=oP=;y#g*xsrM_JGkq~|UGPP=i`q%@z&%88v$;~+;=wsm0R zkf(IH5<_;>ZcrU=L&+RPZ@F0oP zfnF$C3DqpJ5^Tep@dRm;8*f=SI|CTD<4c4E7x9M!?msgFaPTv*7kB)~1oenssGC7P0%>lL~YLG!N34vaO~GZs5c^Lh@KUI zGr(t8JAb$&8$DZ+4byJ`#2*c~|I7@)8#qqzx|YLwQTVF&I(G`_F&j9xCqvI^^>Nx}O#!h=X`+m3KfLFtu2S~SuF*HZN&H#g^tFl&4 zDnrLbw3LIcNwTZntrFTf|4#+s`w=KNSGHx@EuD z8KAhK0l=An<)5XS7dMrCzP_>lhf(qMjzIgnUzXCYbAZkRs^>hwJ=B#%u7RLKp9{Yk zL8T@(Vwc}v!NEZi$HRYS2KciaWx+MqGr)U-yHgJjCmt_q6rEaxLm@A5$ZJ1ubgaKe zVRrG>t?|B8Y?L4|?Ao5#}MKLh-k6`(lJZvjVAf)B?6Sx*Fwu7kq%3g7WH z%LnZLJ$>KTyMR9XyXbl~NBcc>lu<{Uy7c{SNB8QS;8#L=H&E)bMTB@8NT+MdIJ@?6 zb?M>$%$x4%%p_(MolBYV1Zm2sGoE|Q_NB0vV(XvfD7#qVO3dFqz*z<(34k+M4@L>> zRX6ymrr)V|cEikcI#ItS?(Ij&YtLs-Z}eQw09pa~8rW(%oB?>_C$?d|`{%uXU4p9A ziJ(4?>1$-O9M)EFap7Tfkihl1huFk{ytbuNXM6YyY2&$v^mITNZGka8DE^rNuoYi~ zolAP|0)QEKaFNErtpvhl8oBLdb!@xoOoqT}7`={UdBZ`?51}rB(c=wZS7p2(5E}`Y zZUoJd-WJkM%eyauN4$!1G3X*-*s{q#4C3?70q@?4E4UZf+GPyT`_n%_$>*a+I$cMn_%on4;r{J;GN zA)g*(@!2o<>ZG8c?5YvRO)Ei|-0WuU%})2&d8D~sH{*nU2rqiptn9DO1Zy`_f%a6q zc8?96hQidFiS2#e^Z)h$xNK~qzY_-6(SB6FJtIBbjbN}F)<23e>dbc5o;I}Qp6Vp} zHJVQNuR5?ktizOU&zo%xTwlzxcD^W48U0G@vn$nVzqpU=CK5|wj;*i9^9 zM?jeu4QLM~Pf$l2+RoY&wB;VVkfGje(%}HlfKX(=tc2Au?FkpK;7_g4@ zdl-f+o&|>p-cSF`%c4sF7XnFQ*uK8YR&hrYSo9oV)B}hfpyoNiump%6pyoNiu*jnc zta%PFEb?dqYn}rbc{sqAeg=+-JRBei5KUmwbAVBCM-y0F53tr>Us{a6zkO$WMH5(D z53tssckA?laR*{7bM_B*5=~(A0NU`?V&M_)6x6kY0m~SEkA9rfxF^vBMh~D3-`r`p zQRj5{M7y{K=IBnCOZgK%3+frhhs7@hYKBp^l9{NhxC%n|_`1)s7t$0000G z5Ys=k9&8zWT+ji~0dDC4=m6*dxPce|I>0Od0000004Nf%L-<~GVnzS}002ovPDHLk FV1g#Z7?%J5 literal 0 HcmV?d00001