From 5b3c8892634fa39bbab96b9e953c235f388f50ef Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 14 Mar 2021 22:07:29 +0300 Subject: [PATCH] Filalux textures & models --- .../ru/betterend/blocks/basis/FurBlock.java | 2 +- .../java/ru/betterend/registry/EndBlocks.java | 1 + .../betterend/registry/FilaluxWingsBlock.java | 47 +++++++++ .../betterend/blockstates/filalux_wings.json | 10 ++ .../betterend/models/block/filalux_wings.json | 42 ++++++++ .../models/block/filalux_wings_bottom.json | 97 ++++++++++++++++++ .../models/block/filalux_wings_top.json | 77 ++++++++++++++ .../betterend/models/item/filalux_wings.json | 6 ++ .../textures/block/filalux_lantern.png | Bin 263 -> 526 bytes .../textures/block/filalux_wings.png | Bin 0 -> 234 bytes .../textures/block/filalux_wings_large.png | Bin 0 -> 242 bytes .../textures/block/filalux_wings_top.png | Bin 0 -> 462 bytes .../block/filalux_wings_top_bottom.png | Bin 0 -> 214 bytes .../textures/block/filalux_wings_top_side.png | Bin 0 -> 291 bytes .../textures/item/filalux_wings.aseprite | Bin 0 -> 701 bytes 15 files changed, 281 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/betterend/registry/FilaluxWingsBlock.java create mode 100644 src/main/resources/assets/betterend/blockstates/filalux_wings.json create mode 100644 src/main/resources/assets/betterend/models/block/filalux_wings.json create mode 100644 src/main/resources/assets/betterend/models/block/filalux_wings_bottom.json create mode 100644 src/main/resources/assets/betterend/models/block/filalux_wings_top.json create mode 100644 src/main/resources/assets/betterend/models/item/filalux_wings.json create mode 100644 src/main/resources/assets/betterend/textures/block/filalux_wings.png create mode 100644 src/main/resources/assets/betterend/textures/block/filalux_wings_large.png create mode 100644 src/main/resources/assets/betterend/textures/block/filalux_wings_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/filalux_wings_top_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/filalux_wings_top_side.png create mode 100644 src/main/resources/assets/betterend/textures/item/filalux_wings.aseprite diff --git a/src/main/java/ru/betterend/blocks/basis/FurBlock.java b/src/main/java/ru/betterend/blocks/basis/FurBlock.java index 4ccd3462..5c83224f 100644 --- a/src/main/java/ru/betterend/blocks/basis/FurBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/FurBlock.java @@ -64,7 +64,7 @@ public class FurBlock extends AttachedBlock implements IRenderTypeable { if (tool != null && tool.getItem().isIn(FabricToolTags.SHEARS) || EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } - else if (MHelper.RANDOM.nextInt(dropChance) == 0) { + else if (dropChance < 1 || MHelper.RANDOM.nextInt(dropChance) == 0) { return Lists.newArrayList(new ItemStack(drop)); } else { diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index b0a4cc23..37c254c3 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -337,6 +337,7 @@ public class EndBlocks { public static final Block JUNGLE_VINE = registerBlock("jungle_vine", new VineBlock()); public static final Block RUBINEA = registerBlock("rubinea", new VineBlock()); public static final Block FILALUX = registerBlock("filalux", new FilaluxBlock()); + public static final Block FILALUX_WINGS = registerBlock("filalux_wings", new FilaluxWingsBlock()); public static final Block FILALUX_LANTERN = registerBlock("filalux_lantern", new FilaluxLanternBlock()); // Mob-Related diff --git a/src/main/java/ru/betterend/registry/FilaluxWingsBlock.java b/src/main/java/ru/betterend/registry/FilaluxWingsBlock.java new file mode 100644 index 00000000..6ec82a17 --- /dev/null +++ b/src/main/java/ru/betterend/registry/FilaluxWingsBlock.java @@ -0,0 +1,47 @@ +package ru.betterend.registry; + +import java.util.EnumMap; + +import com.google.common.collect.Maps; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.block.ShapeContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import ru.betterend.blocks.basis.AttachedBlock; +import ru.betterend.client.render.ERenderLayer; +import ru.betterend.interfaces.IRenderTypeable; + +public class FilaluxWingsBlock extends AttachedBlock implements IRenderTypeable { + private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); + + public FilaluxWingsBlock() { + super(FabricBlockSettings.of(Material.PLANT).breakByTool(FabricToolTags.SHEARS).sounds(BlockSoundGroup.WET_GRASS).noCollision()); + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.CUTOUT; + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { + return BOUNDING_SHAPES.get(state.get(FACING)); + } + + static { + BOUNDING_SHAPES.put(Direction.UP, VoxelShapes.cuboid(0.0, 0.0, 0.0, 1.0, 0.5, 1.0)); + BOUNDING_SHAPES.put(Direction.DOWN, VoxelShapes.cuboid(0.0, 0.5, 0.0, 1.0, 1.0, 1.0)); + BOUNDING_SHAPES.put(Direction.NORTH, VoxelShapes.cuboid(0.0, 0.0, 0.5, 1.0, 1.0, 1.0)); + BOUNDING_SHAPES.put(Direction.SOUTH, VoxelShapes.cuboid(0.0, 0.0, 0.0, 1.0, 1.0, 0.5)); + BOUNDING_SHAPES.put(Direction.WEST, VoxelShapes.cuboid(0.5, 0.0, 0.0, 1.0, 1.0, 1.0)); + BOUNDING_SHAPES.put(Direction.EAST, VoxelShapes.cuboid(0.0, 0.0, 0.0, 0.5, 1.0, 1.0)); + } +} diff --git a/src/main/resources/assets/betterend/blockstates/filalux_wings.json b/src/main/resources/assets/betterend/blockstates/filalux_wings.json new file mode 100644 index 00000000..06920a33 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/filalux_wings.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "betterend:block/filalux_wings", "y": 180 }, + "facing=south": { "model": "betterend:block/filalux_wings" }, + "facing=east": { "model": "betterend:block/filalux_wings", "y": 270 }, + "facing=west": { "model": "betterend:block/filalux_wings", "y": 90 }, + "facing=up": { "model": "betterend:block/filalux_wings_top" }, + "facing=down": { "model": "betterend:block/filalux_wings_bottom", "x": 180 } + } +} diff --git a/src/main/resources/assets/betterend/models/block/filalux_wings.json b/src/main/resources/assets/betterend/models/block/filalux_wings.json new file mode 100644 index 00000000..3eedc4e4 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/filalux_wings.json @@ -0,0 +1,42 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/filalux_wings", + "texture": "betterend:block/filalux_wings", + "large": "betterend:block/filalux_wings_large" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, 8, 0 ], + "to": [ 16, 8.001, 8 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 6, 0 ], + "to": [ 16, 6.001, 8 ], + "rotation": { "origin": [ 0, 6, 0 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 16, 16, 8 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 10, 0 ], + "to": [ 16, 10.001, 16 ], + "rotation": { "origin": [ 0, 10, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#large" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#large" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/filalux_wings_bottom.json b/src/main/resources/assets/betterend/models/block/filalux_wings_bottom.json new file mode 100644 index 00000000..9d2b6fb3 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/filalux_wings_bottom.json @@ -0,0 +1,97 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/filalux_wings", + "texture": "betterend:block/filalux_wings" + }, + "elements": [ + { + "__comment": "PlaneY2", + "from": [ 9, 0, 0 ], + "to": [ 17, 0.001, 16 ], + "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY2", + "from": [ 13, 0, 0 ], + "to": [ 21, 0.001, 16 ], + "rotation": { "origin": [ 13, 0, 0 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY2", + "from": [ -1, -0.001, 0 ], + "to": [ 7, 0, 16 ], + "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "PlaneY2", + "from": [ -5, -0.001, 0 ], + "to": [ 3, 0, 16 ], + "rotation": { "origin": [ 3, 0, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "PlaneY5", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 17 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY5", + "from": [ 0, 0, 13 ], + "to": [ 16, 0.001, 21 ], + "rotation": { "origin": [ 0, 0, 13 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 16, 16, 8 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY5", + "from": [ 0, -0.001, -1 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 16, 0 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY5", + "from": [ 0, -0.001, -5 ], + "to": [ 16, 0, 3 ], + "rotation": { "origin": [ 0, 0, 3 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 16, 16, 8 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/filalux_wings_top.json b/src/main/resources/assets/betterend/models/block/filalux_wings_top.json new file mode 100644 index 00000000..829f573a --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/filalux_wings_top.json @@ -0,0 +1,77 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/filalux_wings_large", + "texture": "betterend:block/filalux_wings_large", + "top": "betterend:block/filalux_wings_top", + "side": "betterend:block/filalux_wings_top_side" + }, + "elements": [ + { + "__comment": "PlaneY9", + "from": [ -8, 0.125, -8 ], + "to": [ 24, 0.126, 24 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" } + } + }, + { + "__comment": "PlaneY10", + "from": [ 10, 0, 0 ], + "to": [ 26, 0.001, 16 ], + "rotation": { "origin": [ 10, 0, 0 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY10", + "from": [ -10, -0.001, 0 ], + "to": [ 6, 0, 16 ], + "rotation": { "origin": [ 6, 0, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "PlaneY12", + "from": [ 0, 0, 10 ], + "to": [ 16, 0.001, 26 ], + "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY12", + "from": [ 0, -0.001, -10 ], + "to": [ 16, 0, 6 ], + "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" } + } + }, + { + "__comment": "Box14", + "from": [ -0.5, -16, -0.5 ], + "to": [ 16.5, 0, 16.5 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/filalux_wings.json b/src/main/resources/assets/betterend/models/item/filalux_wings.json new file mode 100644 index 00000000..a0fa8b85 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/filalux_wings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/filalux_wings" + } +} diff --git a/src/main/resources/assets/betterend/textures/block/filalux_lantern.png b/src/main/resources/assets/betterend/textures/block/filalux_lantern.png index 824b97f5aa0033e83684a4c700628c1dff0f790d..6382a934d1491d21483e210b2d0dd1abe113e4b6 100644 GIT binary patch delta 511 zcmVn)jt%a;WT+cOWMa>y-T&@yv2GgWD zUoa;c#LdkjHo1yr<`(GnC6k$X^WK~Pz5l(v5A`<>07^#yNPpql^HY+xaRBP)m&_IX z`d9-XCtLvXQm|BdCqOkEF<0=T{TfH>DiPfevP18wm}`GBaRObh_fD@p10xPsD(9L6-u1;5`C-|zzl#4 zz*1?P`$yw#XA{uu28|5>@a5~xj`LIdus;S8>TM0S>H1%gG`$(q5PrM30W}SGTbhj% zAfYjn&SyLC^fK=|wMt)x{V{ndIPJaPNykwOzJ0!8sdzMgyJ+8R5re^$YB)+5Sv&0C zUbBCDZILaNrW%e22Gd8>QnTY62i6`)X2Dd{NP4u>y7b-X{sOq5<}?I*@znqT002ovPDHLkV1n#? B>ka?_ delta 246 zcmeBUX=j=sSHU)zrFVT+sp7tyIarx-~8Zz$Vta_K-GLDL4Lsu|B*qs*KHA?OrfWX zV~E7m-2Om5W)bheZir^K(r)+dIqOw-evJ m{@%li!b6&N)_*m{_Whc`I{W_C^4UP!89ZJ6T-G@yGywn<)^OMW diff --git a/src/main/resources/assets/betterend/textures/block/filalux_wings.png b/src/main/resources/assets/betterend/textures/block/filalux_wings.png new file mode 100644 index 0000000000000000000000000000000000000000..580e1ab275d4bdc4dce7c8023308e77f1beb9570 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~#Q>iWS0J6R z>Tc`V|2v-ipK4^X%+_I>r_X_i`28^%r!z}#mN&LUdW!%RahC-71vC7IgW9s%t029e zE{-7*Q>XSi3LQ4!VRF?`dGgA9Jl4?1woqttPy+AW?b26Z*7>O*$4o3VNw30t`8i0^~y-RAQazyHKoC(NXz T87co0XcvR0tDnm{r-UW|wLw`) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/filalux_wings_large.png b/src/main/resources/assets/betterend/textures/block/filalux_wings_large.png new file mode 100644 index 0000000000000000000000000000000000000000..98489441a58109d6425b555446d2f2088abf6da7 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~xd5LKS0Fvr z$YhzV!!}Q!0}=73GfQrkHzusQ+j{o@jwk;UBUgU_s^BUK@(X784+C|bB4I$$98VX= z5Q(Wv{T%sN3^_J6Z2kBDaP!%e&EF3mVR123(sEtHs-@jCIbz-IPZ2L>b{}3T=Ux0m zV~n|;`mgB?Nh@h&ORbj{NhNVdXeA4M^jjGv%jsJb9?HyoVPRY&$t}xwf|=A fqt>nV-z53#C722(-SAcc+RNbS>gTe~DWM4fxA9^! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/filalux_wings_top.png b/src/main/resources/assets/betterend/textures/block/filalux_wings_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba4a1ab7e54bb6c6ca3cdd0c381b1c30464e3f8 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|6a#!hT!D1L zs=KXc|L=J6f2xtmGFyjjo<0X6;`hg7oX#w{S>D(Z=`8|O#9b2P7tHV<4rtlDeYv^B7sJW|n#yQ1Re`3Mzhr!Jmtt%rM6cz0wR-6x6 zE%ff$37^o<+k;+lPhXSPxODL@FO8Q+E-*Q5zL{8+Vxr7zR_c&Z!Pyaz(_%YG+gl^b zpRI-E{|vK#5_$4ve5#rH#mie9*g}I|uTs3F8W6JDFm>^y8<}%h6~8et6?xeGIFl4n zb9Sk@({;y*78=Vm_jbADC<%s7yu9q>mSdGZvu<#%+vRDuUdE7>bmdLO)qBM-eu2o`D4b6>uEc?mOVctr)z$BL1rYg z+1G?9t*6^wzMS`)f7^XIzWctl)fUxf^>5nGlehoFW1W5Vz!hLHGkCiCxvXw4a-g*?_}|^OENT2$~Kj@~xmTTX(;&&2awH;-FO{%4#a$S4%SZ)O9ulfl!~&t;uc GLK6Uct4B`& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/filalux_wings_top_side.png b/src/main/resources/assets/betterend/textures/block/filalux_wings_top_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e42dbde743fa1ddb2b14b1ba23990bdd1bfa480f GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~tpJ}8S0J75 zZCf4c))DWYu+5bD9{GV!Mvdq?Do2So#i1__68K*N#Zk9Lh)taIURLxfs1<&7pMs|Nh+zvU?^?TgdQ6Fm2ac7dGZiMxTEK zZa)#j)Mw;VySlQ?*yYY%4qZhj78RW`v-P!$ycnVn?#a+eo5dX9&zcePFiJk6C2-m` zmg|uoyGz4ckNs-h%l+=!O1?8Uzf^=Bzp%J|$9?zvtW_<)a%SCQGM_fDFMj>yL$SL~ Z^G~*Cof!I_{{+xs44$rjF6*2Ung9a=b}Ik? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/item/filalux_wings.aseprite b/src/main/resources/assets/betterend/textures/item/filalux_wings.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..ecf307bf919b3576d354f9abfea3127029a7674d GIT binary patch literal 701 zcmb`E-%FEG7{{M&jR^~@8#7_;5F@$>IxaCJhZcB~1H+4jbkW9a;u!vTSyB@!Ec#&= zdJ(9tAn1n|X%`U%#=?lgFfT?#tiTcs3PLc;s70sGR-u1D&&&Dnyw8F2{hasB*hSvm zu*rHJB{mUhWvvvm!mzl%GW~yDfczhe&SI*QW6M}BRg7E}@|u2=Qhz7jRXfGjh-^_+ zuwh#*jMY@afzWRFwtFkgU5&wo$CqIKb2S`!zaPdQYPjoS2W)KL0h=3r&|g~v>*|tF zhx_2cjyV`j8+d4D9!|gc2@NHZ9={JyA3qD*<8jy$YKA>~`{9`14|4~i@Kx^w92nXM z`#ZIXbAdI5@2+UL1UEn*cf_$q8DC^EMH5E^u|o|nq%cCK;9?9GD3DJ$$;6ULAZbK- z3rWfW{}l@2l3?W6VM|rs<;AH46^9sp%AYC~w;a734c9xz+l+C|d74!D)3!