From b68e7d3eac9c0e857cbe5d90a40126a55c4ae80a Mon Sep 17 00:00:00 2001 From: Sekwah Date: Wed, 23 Mar 2022 23:39:48 +0000 Subject: [PATCH] feat: add new substitution log model --- BLOCKBENCH.md | 19 ++++ models/SubstitutionLog.bbmodel | 1 + .../model/entity/SubstitutionLogModel.java | 94 ++++++++---------- .../model/item/model/AnbuMaskModel.java | 9 ++ .../model/item/model/HeadbandModel.java | 5 + .../model/jutsu/FireballJutsuModel.java | 8 +- .../client/model/jutsu/WaterBulletModel.java | 5 + .../client/renderer/NarutoRenderEvents.java | 33 ++---- .../client/renderer/NarutoRenderer.java | 12 +-- .../entity/SubstitutionLogRenderer.java | 10 +- .../FireballJutsuRenderer.java | 3 +- .../WaterBulletJutsuRenderer.java | 5 +- .../textures/entity/jutsu/substitution.png | Bin 49287 -> 0 bytes .../entity/jutsu/substitution_log.png | Bin 0 -> 570 bytes 14 files changed, 105 insertions(+), 99 deletions(-) create mode 100644 BLOCKBENCH.md create mode 100644 models/SubstitutionLog.bbmodel delete mode 100644 src/main/resources/assets/narutomod/textures/entity/jutsu/substitution.png create mode 100644 src/main/resources/assets/narutomod/textures/entity/jutsu/substitution_log.png diff --git a/BLOCKBENCH.md b/BLOCKBENCH.md new file mode 100644 index 00000000..9a4d3ae9 --- /dev/null +++ b/BLOCKBENCH.md @@ -0,0 +1,19 @@ +Blockbench Help +========= + +# Blockbench models +When saving the blockbench models you will have missing imports and package name. Make sure to re-add them. +```java +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +``` +Also use RenderType.entityCutoutNoCull for if you want the mob to render while your camera is inside the mob. + +It also better represets what youll see from blockbench a lot more especially for 0 thick cubes. \ No newline at end of file diff --git a/models/SubstitutionLog.bbmodel b/models/SubstitutionLog.bbmodel new file mode 100644 index 00000000..6d956e4e --- /dev/null +++ b/models/SubstitutionLog.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.0","creation_time":1648078165,"model_format":"modded_entity","box_uv":true},"name":"SubstitutionLogModel","geometry_name":"SubstitutionLogModel","modded_entity_version":"1.17","visible_box":[1,1,0],"variable_placeholders":"","resolution":{"width":32,"height":32},"elements":[{"name":"branch","rescale":false,"locked":false,"from":[-4.4,5.500000000000002,-0.5],"to":[-2.4000000000000004,6.500000000000002,0.5],"autouv":0,"color":0,"rotation":[-19.999999999999996,0,0],"origin":[-2.5,6.000000000000002,-5.551115123125783e-17],"uv_offset":[0,15],"faces":{"north":{"uv":[1,16,3,17],"texture":0},"east":{"uv":[0,16,1,17],"texture":0},"south":{"uv":[4,16,6,17],"texture":0},"west":{"uv":[3,16,4,17],"texture":0},"up":{"uv":[3,16,1,15],"texture":0},"down":{"uv":[5,15,3,16],"texture":0}},"uuid":"2a17638f-24ad-b9ca-f436-ae5a8af261b5"},{"name":"leaf","rescale":false,"locked":false,"from":[-5.61731656763491,6.423879532511287,0.15000000000000002],"to":[-3.6173165676349104,8.423879532511286,0.15000000000000002],"autouv":0,"color":3,"rotation":[0,0,-10],"origin":[-4.61731656763491,7.423879532511287,0.15000000000000002],"faces":{"north":{"uv":[0,0,2,2],"texture":0},"east":{"uv":[0,0,0,2],"texture":0},"south":{"uv":[2,0,4,2],"texture":0},"west":{"uv":[2,0,2,2],"texture":0},"up":{"uv":[2,0,0,0],"texture":0},"down":{"uv":[4,0,2,0],"texture":0}},"uuid":"971466d1-29dd-36ba-af7f-0cc581f9010d"},{"name":"log","rescale":false,"locked":false,"from":[-2.4999999999999996,0,-2.4999999999999996],"to":[2.5000000000000004,10,2.5000000000000004],"autouv":0,"color":6,"origin":[4.440892098500626e-16,5,-5.551115123125783e-17],"faces":{"north":{"uv":[5,5,10,15],"texture":0},"east":{"uv":[0,5,5,15],"texture":0},"south":{"uv":[15,5,20,15],"texture":0},"west":{"uv":[10,5,15,15],"texture":0},"up":{"uv":[10,5,5,0],"texture":0},"down":{"uv":[15,0,10,5],"texture":0}},"uuid":"69337f8d-eb96-480d-026c-2392c6c7b66b"}],"outliner":[{"name":"main","origin":[-2.6724388558783034,6.141293177503762,0.04999999999999988],"color":0,"uuid":"695fb92b-8e92-f0c8-c7f2-cc14a6fea135","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["69337f8d-eb96-480d-026c-2392c6c7b66b","2a17638f-24ad-b9ca-f436-ae5a8af261b5","971466d1-29dd-36ba-af7f-0cc581f9010d"]}],"textures":[{"path":"/home/sekwah/.projects/MC_1_18/Naruto-Mod/src/main/resources/assets/narutomod/textures/entity/jutsu/substitution_log.png","name":"substitution_log.png","folder":"block","namespace":"","id":"0","particle":false,"render_mode":"normal","visible":true,"mode":"bitmap","saved":true,"uuid":"6726496f-f6e9-e127-b4e2-16e7c5481388","relative_path":"../../src/main/resources/assets/narutomod/textures/entity/jutsu/substitution_log.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACGklEQVRYR+1VSytFURReJ3S93VyPxL0GhCivRMJEMdBVpkwYmkn5EQZK/gETZiZEUR5RyjOKXEm5pMRFHqWko2/nu+2Om5yD2dmTfe7ae+31rW99a12jbiLNNDLeZKvr1ZDPFWwpMX1pCRJ5ehPsWPzWbRNzh1Ef+trdjZpRrxmX+S7bvU/Rx3o7KszqogzxeDySmJQqqztn6l2r7U8AxEIMAA3lOZKXnyX3d68yvRJSTFhts2snv2fgOwA4S06Ml+XdK3UNAHTbvzFADRAc6o5FPVATf8LAUE+9eXzxIG11BXJx/RwlZH0/LM1VAfW7OOCT8Zk96W4vl8XtSynze8Xqg/s4HxhdslUWgwCCTUWycRCWbG+KCkoANw8vysYAOgDdB+d9nTXSPzxvHwCcSwt9KrAOAA8SFDLmAgNWH8cAxgZbzamFI0U3s0UgBEQg2rCHziOSlZmuymX14f2RyU17DAAAadUBsATMDExg1Zbmqt3qw/uOAEB8zMCfm6oCwIZvPRC6AazAbvWhgG0DwNBB3XUAu6FrpQXYbu8ev5SHTMXycQxAbzsqXs8SwTAHAEzvDGiHjMBudzhF2xCZQvWn4YhSOL/xKLvDKlLdB3ccA6Dq0dcEwK7AGdTPIcSBxTYkI42VAdWyjhhAEF18TjKJ9Z/yE5uBNqTq9drbFdNPgsW6Y2toOA3ynZ8LwGXAZcBlwGXAZcBl4AMUaIkwf64ZfAAAAABJRU5ErkJggg=="}]} \ No newline at end of file diff --git a/src/main/java/com/sekwah/narutomod/client/model/entity/SubstitutionLogModel.java b/src/main/java/com/sekwah/narutomod/client/model/entity/SubstitutionLogModel.java index 91c9080e..aaa88aa9 100644 --- a/src/main/java/com/sekwah/narutomod/client/model/entity/SubstitutionLogModel.java +++ b/src/main/java/com/sekwah/narutomod/client/model/entity/SubstitutionLogModel.java @@ -1,58 +1,48 @@ package com.sekwah.narutomod.client.model.entity; +// Made with Blockbench 4.0.3 +// Exported for Minecraft version 1.17 with Mojang mappings +// Paste this class into your mod and generate all required imports import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.Model; +import com.sekwah.narutomod.NarutoMod; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.CubeListBuilder; -import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.client.model.geom.builders.MeshDefinition; -import net.minecraft.client.model.geom.builders.PartDefinition; -import net.minecraft.client.renderer.RenderType; - -public class SubstitutionLogModel extends Model { - - private final ModelPart main; - - public SubstitutionLogModel(ModelPart modelPart) - { - super(RenderType::entitySolid); - this.main = modelPart.getChild("main"); - } - - - public static LayerDefinition createLayer() { - - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition main = partdefinition.addOrReplaceChild("main", - CubeListBuilder.create() - .mirror(true) - .texOffs(0, 0) - .addBox(-2F, 0F, -2F, 4, 8, 4) - , PartPose.offsetAndRotation(0F, 5F, 0F, (float) Math.PI, 0F, 0F)); - - main.addOrReplaceChild("Shape2", - CubeListBuilder.create() - .mirror(true) - .texOffs(16, 0) - .addBox(-0.2666667F, 2F, -1.866667F, 4, 1, 1) - , PartPose.offsetAndRotation(0F, 0F, 0F, 0.4461433F, 0F, 0F)); - - main.addOrReplaceChild("Shape3", - CubeListBuilder.create() - .mirror(true) - .texOffs(26, 0) - .addBox(2.066667F, 1.733333F, 0F, 2, 2, 0) - , PartPose.offsetAndRotation(0F, 0F, 0F, 0F, 0F, -0.3717861F)); - - return LayerDefinition.create(meshdefinition, 64, 64); - } - - @Override - public void renderToBuffer(PoseStack matrixStack, VertexConsumer vertexConsumer, int p_225598_3_, int p_225598_4_, float p_225598_5_, float p_225598_6_, float p_225598_7_, float p_225598_8_) { - this.main.render(matrixStack, vertexConsumer, p_225598_3_, p_225598_4_, p_225598_5_, p_225598_6_, p_225598_7_, p_225598_8_); - } -} +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; + +public class SubstitutionLogModel extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "substitution_log"), "main"); + private final ModelPart main; + + public SubstitutionLogModel(ModelPart root) { + this.main = root.getChild("main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition main = partdefinition.addOrReplaceChild("main", CubeListBuilder.create().texOffs(0, 0).addBox(-5.1724F, -3.8587F, -2.55F, 5.0F, 10.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(2.6724F, 17.8587F, 0.05F)); + + PartDefinition leaf_r1 = main.addOrReplaceChild("leaf_r1", CubeListBuilder.create().texOffs(0, 0).addBox(-1.0F, -1.0F, 0.0F, 2.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.9449F, -1.2826F, 0.1F, 0.0F, 0.0F, -0.1745F)); + + PartDefinition branch_r1 = main.addOrReplaceChild("branch_r1", CubeListBuilder.create().texOffs(0, 15).addBox(-0.1F, -0.5F, -0.5F, 2.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.1724F, 0.1413F, -0.05F, 0.3491F, 0.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 32, 32); + } + + @Override + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + main.render(poseStack, buffer, packedLight, packedOverlay); + } +} \ No newline at end of file diff --git a/src/main/java/com/sekwah/narutomod/client/model/item/model/AnbuMaskModel.java b/src/main/java/com/sekwah/narutomod/client/model/item/model/AnbuMaskModel.java index 0dae2897..34cafd2e 100644 --- a/src/main/java/com/sekwah/narutomod/client/model/item/model/AnbuMaskModel.java +++ b/src/main/java/com/sekwah/narutomod/client/model/item/model/AnbuMaskModel.java @@ -2,16 +2,25 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.sekwah.narutomod.NarutoMod; import com.sekwah.narutomod.util.ModelUtils; import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; public class AnbuMaskModel extends HumanoidModel { + public static final ModelLayerLocation LAYER_LOCATION_WITHOUT_EARS = + new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "anbu_mask_without_ears"), "main"); + + public static final ModelLayerLocation LAYER_LOCATION = + new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "anbu_mask"), "main"); + private final ModelPart head; public AnbuMaskModel(ModelPart modelPart) diff --git a/src/main/java/com/sekwah/narutomod/client/model/item/model/HeadbandModel.java b/src/main/java/com/sekwah/narutomod/client/model/item/model/HeadbandModel.java index ee081890..c3d75ce1 100644 --- a/src/main/java/com/sekwah/narutomod/client/model/item/model/HeadbandModel.java +++ b/src/main/java/com/sekwah/narutomod/client/model/item/model/HeadbandModel.java @@ -2,15 +2,20 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.sekwah.narutomod.NarutoMod; import com.sekwah.narutomod.util.ModelUtils; import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; public class HeadbandModel extends HumanoidModel { + public static final ModelLayerLocation LAYER_LOCATION = + new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "headband"), "main"); private final ModelPart head; public HeadbandModel(ModelPart modelPart) diff --git a/src/main/java/com/sekwah/narutomod/client/model/jutsu/FireballJutsuModel.java b/src/main/java/com/sekwah/narutomod/client/model/jutsu/FireballJutsuModel.java index 711c6042..5922f375 100644 --- a/src/main/java/com/sekwah/narutomod/client/model/jutsu/FireballJutsuModel.java +++ b/src/main/java/com/sekwah/narutomod/client/model/jutsu/FireballJutsuModel.java @@ -2,17 +2,19 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import com.sekwah.narutomod.util.ModelUtils; -import net.minecraft.client.model.HumanoidModel; +import com.sekwah.narutomod.NarutoMod; import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.client.renderer.RenderType; -import net.minecraft.world.entity.LivingEntity; +import net.minecraft.resources.ResourceLocation; public class FireballJutsuModel extends Model { + public static final ModelLayerLocation LAYER_LOCATION = + new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "fireball"), "main"); private final ModelPart main; public FireballJutsuModel(ModelPart modelPart) diff --git a/src/main/java/com/sekwah/narutomod/client/model/jutsu/WaterBulletModel.java b/src/main/java/com/sekwah/narutomod/client/model/jutsu/WaterBulletModel.java index 3ee8a3d1..006ab738 100644 --- a/src/main/java/com/sekwah/narutomod/client/model/jutsu/WaterBulletModel.java +++ b/src/main/java/com/sekwah/narutomod/client/model/jutsu/WaterBulletModel.java @@ -2,7 +2,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.sekwah.narutomod.NarutoMod; import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeListBuilder; @@ -10,9 +12,12 @@ import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; public class WaterBulletModel extends Model { + public static final ModelLayerLocation LAYER_LOCATION = + new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "water_bullet"), "main"); private final ModelPart main; public WaterBulletModel(ModelPart modelPart) diff --git a/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderEvents.java b/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderEvents.java index ba45a8ad..8069cd1c 100644 --- a/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderEvents.java +++ b/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderEvents.java @@ -11,12 +11,9 @@ import com.sekwah.narutomod.client.renderer.entity.jutsuprojectile.FireballJutsuRenderer; import com.sekwah.narutomod.client.renderer.entity.jutsuprojectile.WaterBulletJutsuRenderer; import com.sekwah.narutomod.entity.NarutoEntities; -import com.sekwah.narutomod.entity.SubstitutionLogEntity; -import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; -import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; @@ -32,24 +29,6 @@ public class NarutoRenderEvents { public static final BlockEntityWithoutLevelRenderer NARUTO_RENDERER = new NarutoRenderer(); - public static final ModelLayerLocation ANBU_MASK_LAYER = - new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "anbu_mask"), "main"); - - public static final ModelLayerLocation ANBU_MASK_WITHOUT_EARS_LAYER = - new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "anbu_mask_without_ears"), "main"); - - public static final ModelLayerLocation HEADBAND_LAYER = - new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "headband"), "main"); - - public static final ModelLayerLocation FIREBALL_LAYER = - new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "fireball"), "main"); - - public static final ModelLayerLocation WATER_BULLET_LAYER = - new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "water_bullet"), "main"); - - public static final ModelLayerLocation SUBSTITUTION_LOG_LAYER = - new ModelLayerLocation(new ResourceLocation(NarutoMod.MOD_ID, "substitution_log"), "main"); - @SubscribeEvent public static void entityRenderers(EntityRenderersEvent.RegisterRenderers event) { event.registerEntityRenderer(NarutoEntities.KUNAI.get(), KunaiRenderer::new); @@ -77,16 +56,16 @@ public static void reloadListener(RegisterClientReloadListenersEvent event) { @SubscribeEvent public static void layerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { - event.registerLayerDefinition(ANBU_MASK_LAYER, () -> AnbuMaskModel.createLayer(true)); - event.registerLayerDefinition(ANBU_MASK_WITHOUT_EARS_LAYER, () -> AnbuMaskModel.createLayer(false)); - event.registerLayerDefinition(HEADBAND_LAYER, HeadbandModel::createLayer); + event.registerLayerDefinition(AnbuMaskModel.LAYER_LOCATION, () -> AnbuMaskModel.createLayer(true)); + event.registerLayerDefinition(AnbuMaskModel.LAYER_LOCATION_WITHOUT_EARS, () -> AnbuMaskModel.createLayer(false)); + event.registerLayerDefinition(HeadbandModel.LAYER_LOCATION, HeadbandModel::createLayer); // Jutsu - event.registerLayerDefinition(FIREBALL_LAYER, FireballJutsuModel::createLayer); - event.registerLayerDefinition(WATER_BULLET_LAYER, WaterBulletModel::createLayer); + event.registerLayerDefinition(FireballJutsuModel.LAYER_LOCATION, FireballJutsuModel::createLayer); + event.registerLayerDefinition(WaterBulletModel.LAYER_LOCATION, WaterBulletModel::createLayer); // Entity - event.registerLayerDefinition(SUBSTITUTION_LOG_LAYER, SubstitutionLogModel::createLayer); + event.registerLayerDefinition(SubstitutionLogModel.LAYER_LOCATION, SubstitutionLogModel::createBodyLayer); } /* @SubscribeEvent diff --git a/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderer.java b/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderer.java index 0242ec3b..e1535f99 100644 --- a/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderer.java +++ b/src/main/java/com/sekwah/narutomod/client/renderer/NarutoRenderer.java @@ -21,19 +21,19 @@ public void onResourceManagerReload(ResourceManager resourceManager) { EntityModelSet modelSet = Minecraft.getInstance().getEntityModels(); ((NarutoArmorItem) NarutoItems.RED_ANBU_MASK.get()) - .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(NarutoRenderEvents.ANBU_MASK_LAYER))) + .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(AnbuMaskModel.LAYER_LOCATION))) .setArmorTexture("textures/models/armor/red_anbu_mask.png"); ((NarutoArmorItem) NarutoItems.BLUE_ANBU_MASK.get()) - .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(NarutoRenderEvents.ANBU_MASK_LAYER))) + .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(AnbuMaskModel.LAYER_LOCATION))) .setArmorTexture("textures/models/armor/blue_anbu_mask.png"); ((NarutoArmorItem) NarutoItems.GREEN_ANBU_MASK.get()) - .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(NarutoRenderEvents.ANBU_MASK_WITHOUT_EARS_LAYER))) + .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(AnbuMaskModel.LAYER_LOCATION_WITHOUT_EARS))) .setArmorTexture("textures/models/armor/green_anbu_mask.png"); ((NarutoArmorItem) NarutoItems.MIST_ANBU_MASK.get()) - .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(NarutoRenderEvents.ANBU_MASK_WITHOUT_EARS_LAYER))) + .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(AnbuMaskModel.LAYER_LOCATION_WITHOUT_EARS))) .setArmorTexture("textures/models/armor/mist_anbu_mask.png"); ((NarutoArmorItem) NarutoItems.YELLOW_ANBU_MASK.get()) - .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(NarutoRenderEvents.ANBU_MASK_WITHOUT_EARS_LAYER))) + .setArmorModel(new AnbuMaskModel(modelSet.bakeLayer(AnbuMaskModel.LAYER_LOCATION_WITHOUT_EARS))) .setArmorTexture("textures/models/armor/yellow_anbu_mask.png"); setHeadbandRenderer(modelSet, NarutoItems.HEADBAND_BLUE, "textures/models/armor/headband/headband_blue_blank.png"); @@ -67,7 +67,7 @@ public void onResourceManagerReload(ResourceManager resourceManager) { private void setHeadbandRenderer(EntityModelSet modelSet, RegistryObject item, String texture) { ((NarutoArmorItem) item.get()) - .setArmorModel(new HeadbandModel(modelSet.bakeLayer(NarutoRenderEvents.HEADBAND_LAYER))) + .setArmorModel(new HeadbandModel(modelSet.bakeLayer(HeadbandModel.LAYER_LOCATION))) .setArmorTexture(texture); } } diff --git a/src/main/java/com/sekwah/narutomod/client/renderer/entity/SubstitutionLogRenderer.java b/src/main/java/com/sekwah/narutomod/client/renderer/entity/SubstitutionLogRenderer.java index bde401bb..c3995fd9 100644 --- a/src/main/java/com/sekwah/narutomod/client/renderer/entity/SubstitutionLogRenderer.java +++ b/src/main/java/com/sekwah/narutomod/client/renderer/entity/SubstitutionLogRenderer.java @@ -18,21 +18,21 @@ public class SubstitutionLogRenderer extends EntityRenderer { - public static final ResourceLocation SUBSTITUTION_LOG = new ResourceLocation("narutomod", "textures/entity/jutsu/substitution.png"); - private static final RenderType RENDER_TYPE = RenderType.entitySolid(SUBSTITUTION_LOG); + public static final ResourceLocation SUBSTITUTION_LOG = new ResourceLocation("narutomod", "textures/entity/jutsu/substitution_log.png"); + private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(SUBSTITUTION_LOG); private final SubstitutionLogModel model; public SubstitutionLogRenderer(EntityRendererProvider.Context manager) { super(manager); - this.model = new SubstitutionLogModel(manager.bakeLayer(NarutoRenderEvents.SUBSTITUTION_LOG_LAYER)); + this.model = new SubstitutionLogModel(manager.bakeLayer(SubstitutionLogModel.LAYER_LOCATION)); } @Override public void render(SubstitutionLogEntity substitutionLogEntity, float p_114486_, float partial, PoseStack poseStack, MultiBufferSource multiBufferSource, int p_114490_) { VertexConsumer vertexconsumer = multiBufferSource.getBuffer(RENDER_TYPE); poseStack.pushPose(); - poseStack.translate(0,substitutionLogEntity.getBbHeight() * 2,0); - poseStack.scale(2,2,2); + poseStack.scale(-1.0F, -1.0F, 1.0F); + poseStack.translate(0.0D, (double)-1.501F, 0.0D); this.model.renderToBuffer(poseStack, vertexconsumer, p_114490_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); poseStack.popPose(); super.render(substitutionLogEntity, p_114486_, partial, poseStack, multiBufferSource, p_114490_); diff --git a/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/FireballJutsuRenderer.java b/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/FireballJutsuRenderer.java index a1359506..f0271c2b 100644 --- a/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/FireballJutsuRenderer.java +++ b/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/FireballJutsuRenderer.java @@ -4,7 +4,6 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; import com.sekwah.narutomod.client.model.jutsu.FireballJutsuModel; -import com.sekwah.narutomod.client.renderer.NarutoRenderEvents; import com.sekwah.narutomod.entity.jutsuprojectile.FireballJutsuEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -22,7 +21,7 @@ public class FireballJutsuRenderer extends EntityRenderer { public FireballJutsuRenderer(EntityRendererProvider.Context manager) { super(manager); - this.model = new FireballJutsuModel(manager.bakeLayer(NarutoRenderEvents.FIREBALL_LAYER)); + this.model = new FireballJutsuModel(manager.bakeLayer(FireballJutsuModel.LAYER_LOCATION)); } @Override diff --git a/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/WaterBulletJutsuRenderer.java b/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/WaterBulletJutsuRenderer.java index 2baaa635..f12c89a4 100644 --- a/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/WaterBulletJutsuRenderer.java +++ b/src/main/java/com/sekwah/narutomod/client/renderer/entity/jutsuprojectile/WaterBulletJutsuRenderer.java @@ -4,15 +4,12 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; import com.sekwah.narutomod.client.model.jutsu.WaterBulletModel; -import com.sekwah.narutomod.client.renderer.NarutoRenderEvents; -import com.sekwah.narutomod.entity.jutsuprojectile.FireballJutsuEntity; import com.sekwah.narutomod.entity.jutsuprojectile.WaterBulletJutsuEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -24,7 +21,7 @@ public class WaterBulletJutsuRenderer extends EntityRenderer_ni}GcmKJ2 zH{!;v$jpk$vaIZWq9f|pPq>_nC_D@{3>X*~yttTSFMa&(H zU2PpK9SH>$S?rtkS;4@*Uf4OPsJdmIFY&}+Gopg&F)<$UL3;Q?y7aaV%+UK_nvaGoRu}L4yFmvvasf4epy1F>xzF0{6GEPd^|&6N>zToDL4Ku zYht4F#}F}eY;c$FG0P_VSn+MF*6X^bv@6JJVua^y&Y2k=jimxZCH2WBdMl8%f^e(> zg7wr;zEVQJvlZB8$Kz59G9jenr`thpFL8_O4*nd5n*ZU|$MiHcY?~$h=Tt+;`wvWG z-K(>mLXX-(vk8&I+5oi5kHzv8M6l*3N@y=2v~n(`&oI-c8L{w+})J**)f0|Xdf~LpBCOwnbUd5&jB3kcfx^2BD?4w-b3@@JcJp5 zpST|s-G}j&bloLMUEXgnjTh|W?iE-pFRhElx2q+8!%K?KKbWDCKXkL7h}$=W{CaUX zPrO~r*K~a_y>NZncb|i7pQP~#v!CuAUh?S0QWl;BhSNB^L# zc5Y|E3MHbz^IZtLuSQj}tE(%RjV}gQ*8+ykXaAka!*luV)wyU1PllFr>-)IPXZ^D8 zq9>2kYrjp)+5e{rf2qv zqj5bSF1t6p=|ON`iwA)%>UFrJ5Y~H{+X6wWt!hfbT!U2>&)> zlyR;Wl{O1XP0E+_ErF&#Md<@@VV~hwP()|nzeKhEjSw+wO97FWt+9`PLh5h*zgj2@ znexEEIBKmel@$L*llQvox=1{Lj46gz*NAJC>9v-g)AZ5RM|QtADMj=*DycL@xS(82 zCI$gAiGdC7I`z0jC->8KOL;p^iU{~OLWO)X1{9X?p`vT$`(@?D#XqBnS!ai5zdO`q z0+tIB2Is!N6xdW^zTZ04ITd%CYA6!7VmiGS;dkl}#t!rNuGR(?>@y}6fG_Jd0$r5D$E&Ca;t7q2*g4>mK^?h?MJ2z9DoZqq#w66B{vxPnPw)67%$`YG* z1ipZ|ww>#e_m1G%i73+5K$-3EnK;#nc;0+el{?Qh)a)X&1L;Kpbm6@Ca(?hoHpP>l z&y*XTMNkUNzCppgJ9#vd;=1R$tKiMwOSE7xiWim-Jba|*7r*r6=8jjfawmPJ2 zmO%6{9Wq!A=o^^7o1&q5shth#GYSqCmiwOOt4dUGZvI+(599L*-`y4JknbImzG`h? zvhjn-P%)KfHxxrt_1>&^x-ewQ(v6FND(;M z%i{F5(AQcw*Dq7mF?)G-y)WHRJ*;K_^DImiiq(gypiexC;yD>p9->jT4(PSBq zUBU>Q{pywe8j+xkR8oRl;@$cxiMh*l^$5GyH|sGlOEo0Aa)HSWpRp@=Pkn8^%CV30 z?7|pi!iM`Q9TGSCqaI6uRdB=vfk1*~_j=bluH!4tm>$L35hHNzQjge6KSmc2FCjb* zHD~5XF=?KCOCzX0=3Na}yh;aoLBBRRSyNlafo+5NjmKym7TDR{4;0UUb-6BMJ#f#0UqciOk z2*~r*R#Yu+~V0lv$azW%2Dnv-HlZwP417QRI4sc=&;#D z#H=FCngBKuMIFSz|16$jF++=Q(=m9wxIjRlz76@4aM`@G|MaS^-HF>tr6li$eiXiVVCe-}7z4fs=FlX%GU9`UTl~iymogYGRSD5|0TV0P{abJoA~E1a{_jPj!@|6 zx7sc9iU39oZ=O+H(%PT!PFyEOkpSNk3K#eubrzqY{h`^R{nWBPkA=%f)6z|I;(UC~I5cwhs)$-8B{33-N z#8`F>aHa~tp6`~+Iv3G*_CbaWw&4%1QYS)7<{pv@bnIWlqKligb-ledGg3n54ceakg!=iPsL7qehL-i4RAs?-a3!4>5VFW^;IwCyRwD!Mo+9>X&T z;mcGMq!-JMP>zzHSUl_pYF1R-i zq$#f9oL8lcY-S%C%yexig6sVq*(MScd}$N@l%a^L*Mw(TmYAdv+Yq0iTo;Q}G8ns7 zqrm1XsKe*OCTpNdAwg419gjU-wN&;CQLbJ+X_GsWy1~GH)Q!u60RF~iOno{;R_g3= z7Fy0f)D;D17(zH1Ys9gRI9V>3X;Bb9bXtKjds$&U&-y~J$^BdPre5+7f6{!xtdSXv z+5A32035M!YFs+6k!JY^_2dB6yR#&Hb-*_Z?18c_PJGR~6VdL?_H>0u#QY?-o7=Bnu_OqL=Mww5>*#nd3>GShi@6 z+WoE>ki)BwBOBpn2`MMi&;i4Qh;Z|bfjTw=@-Ji{H29Hlby7Te`{6j2kBOX8`O#C? zGj6&j!FCwnuLyQ)KcDkmx=h8SJXtF+3NjB z=M9>tOg~;gDlbrlF7NWOE?CiOn@H4jwclUtmt$DM=)*-YWGoaqkGLC(H4>zjNGK5c z(Yt~k+;+h!OuR7LBY0$Y9ZQ|?bMyrZM(2I}W9ac!XL-Hg|Kzx=j>hi3?*1Scm@|!4 zn?2F}QSnO%&G!RlsjHXs{pgsHDqBFQ*EWDoEbIarLpw!<#C?W%n|gq4kFc19N=H%J z3mqj#IkG0;$))W{1S}4UEjlkLhm`0dBwyj&QAaPwA|Q*QSH_}OgT<&yoRyJ}H1La_ zJfLB^f5qU{edxhL!7+6qQ^Sny$6DNkG<~zh=JBp%-8;9TCrchn+Dv-Wj16HU;0qJ1 zK2l$JbB?K14Ot^Pibe&x21Fjuz5v&br5Z2N$>4d4sg_hZ&y?zgymX;8*_;dQ9L!Je z5#hDG(bZ}F4?lwHz;?LT+|H)-R&Fx78gx|%`|}_fq6gfELhRL?SPLUxKzSKiI~K}j zCHf}3NGAcMy?r+Jb^iG=)_MiB^;8gRO|T2Nt~cgndx%W${!C2Na@O&JGD`0BHy}Co z1M@<08|$J6$!}L?N}4&rpofwBW9riimbsl-LmE#JxD}siskeIM9?(DyBg!8lh`|c8 zv&htDAO9|q#t0xh>2U4pmY6ARQGTPdx5W^euYI&J$5TfX%#m!rRv*9CPGh*j5PtjTF9%P1ze+^ z=tOZXix)6z%nl2qniP_pH!XI5l&ctPv#lqXBvXM$vm6-WxQDVjBCs5wqn(CpZoY9X z!RmJeqiY%sR@H9?=_hTsE;eh{-EJ_-OmoOgXnY^8RkljvF&L&0TE70ASgN@5Qp8wA zPGn315tCBunwxs5?@m{AK{r&%X1auEFDM~wvawGm-)->5Eh|Hp4C9up7`Elw42D6e zsDLNfFA9oC+Me9x{(#4d4w*2mBLYXXl1P#!kI}fPw;v4rgo$zcJ0{v$sG$S%k15Q8 z`iw!IrT|0j-+u=rz{RME6zC7U7JXVN7ir3H>5r2#qV7C7sXP?llA^A(c01aTqn_Nz zk?vB*Uh6RLOBNd}3N6u*RFI$JTek>QF`o6a-Xo8MES^HujWcNWc{pW2MXU925X)rEI4~k1$d)}>=IeFH}K|?Y@PB3iG6LgtqhN`A(O0Tvd1lx~a z8nFv#b9RA7>)INL90mJIu2rH0W!hfK$Sbd{2WJwVDXY~$gahv$erU1>pX|5~#>P}y zp!!uxK<)lVUmBS^8+|`3Bc)c~HomXHY!I?peXXa2tiUVWR-{`Ky2Z2U4#)k+bZ!#U z9mL5jN~2P0t#8fbuNXJ{`A?KF^R7MmE43L+s+eDeXF;6ttG^^U_rjc71&4Q#P1Vb} z#I+%#ZxxaCWH&=A%)D<-=Xear%Wx>)-Ov--N3c7Mx@9R|iwn=D4ZH?Wp&I` zvhl8PVgrn}9XqQ|JWVPRktd2lh)jG^&OM(546hJ!XDE>ql*!Jcs|Rpvcla-Ko)#N5 zg!i#QgQQlGmaiNj-?3z|TWUZ!L7Y5V1?K${HyPuon1sBJ`-3kJbI!=>?WC)g0|d!1Mw(E8$`G zc2q&l|GEx~;C5IZ+M}H5)+QDg&c8-=+r!KydaeP*wVdYqU*lXKm~uYSo?K-yUCz{Y ze0bjlao$#&0Mqj+uhM$8o0kUK+(E?Sl|;gtHhria;nWq*@NJ_?43+E_ z$_P?k+syNtb}r<{AP`3f5`CkM@OlvBIjK`=Wi!w58aj{ptF=MRYpFMiI0kE#x9?oK zW`XC!5^#%dx$EgWsb)beGtzw4kNU%(?apMHESgG#iI3yxNtgPXwDOAeX%>==%|dL` z)6+izi&s@fjH4TV1&qG%(`u$T+mND~ETYS}U1+%0V)dmQ9(cI#%zN`%AwJo_LC+v; z&-sJbAdKTVJlaw^p8@JOrK`Q-o&FQKbuvH}3gUXu?;ZU+5ZTqWzi04vuxHCo3nDf{ z;Cll18-ZOBg5DuYycC)3mj=mr*oWlpok!&`CWrpdkT9NH>dW2j0d)fNh5$zYNihes zhii218M3+7EBM?4u~#?h7Z!6f2wL}aH5?Bn`t99<8rglim?`O}mD-*eMA&X=aX}OP zORL$Div%*FhK-4F*Cp2O1sxxB!Lr7phzlN>OzDNBWv&FLa)@@wt_&x*XGpBl_N~KJ zu7|E#eb5}S6Y-*FL`;IZ%DzdXTos!*ycZ0Q1*FO~MxO)yl0~uS_R#W{(o7o`Fa^9l z5PO;I6P&{q5_1e7PJKXjAY{~!^%kol{;D$6H#tHWuFC=XgmHDpTJzDeZR#2KP+yg) z12YzKmFUWh23Y^u61)1cG`&N^x%!JUg?Ma+C~Y&uN=E=^POOu(koT((LEl!|0|Pg7 z)lX4t5sb0XhRkYi{}=iL%S-JNR{13ASfXfyZ{%K)2hLdM}UfQZbfiw_k@qRR_uRb=5)*#+4Gnci82wHD5_~;foeGQ(51X{)8>l2aLt{Td(qFw2k!kXqvx^Z@jl1J z%|kpa^YGIVQy8rq&9)4CTXAn14=F7sV;suO`cBKz$7#T4wL*JE6F~Cw#(ry|Gb>$p zyzWlsZDnlVB|dL5E-&l90)>}Eu%fkzhRao)ZrMrp?7I9YPu18uOZ7hW`)7xPxsjI@-u)4TYbKls>k+yE3mo=GPFcrZKbh^TOuez|mNlk3D9>fi zOgPSc%J7gve3!M-!`}r|MY8xW9eLIOuuYpA0@l96&Sp)Yu?6nf1wTc*b62Bo>?2C- z20Yi;GJE4LBzP3Nu&k-`sSg`3?HeI1)GfDF>%C1;Wi#z0(T``P#?qyRYUQEG!*QX~ z=ZiYW+^ItFCV%H=nsBIy-(x-q#toCFvx%H|!4D7LZJY;Aa7V63;Z+?!)Dn%SYPI~R7%6fbl$_#zj=^) z!hckK%tOnu%PyPCL>l{3sKZ92@|fFb4#{<4$;m9KL{kC;h#RmJi^4LwJEcNwZ#fOO{38yjA>+ z6gq?_gi*B5r=3AVlo%vC;@J}L`WRH$>bP6CoAwDc7XAQWT=ELkh-d%knAo33A7`@* zZDG7QkYv(Dap~)N6su2(sC=q_pL*-R=R%8kZslF{nY$X*?WxXtYk`rG9v+G>MIo1jKoLfe#4%N4boo0voX;_Y~>zrZCV{4x2 zDWI@=f0pt}+jRY&48-ywd%wKmu40Yun^fZc(dPfD@nmYKE`&V28%1E&1YWTU+kmh* z@u*slnE$>#2Rbm-;P+CtI~P*tTG}$;dU(ash`=KIaWA{b3S#3y%GCa?u2@)uR3{K`rjby)ccpIvwLwd)G59V>3z9tz_j8 zhmPj!GNI8Duga;}lm-Nq8Ybq#*R=^w!Mmx$=FObNo#+L|dkH~~uT?rMc_#YTUag9p zyc&cjSX1fYpX^dJH4^J0WOOYWR9$q9M|;lp_FbnP*ciUB)}FG>pKwn6l^T(@6~Dj_ z6lqe0Ik^G1Gci^E`qZt?dUGAxymiBM)QYXPI<~h(!0&X+OcW@zidr37MqWY1! zG=$qJ3*;+!TJhP2JsTZ)3#QED3x%`w(h9aSl{Q>N_mqmlOm?)V64vwC`x$>sr{Ytowvfqol{bhJwECDf7_h3TJYa=u8A%7V6)ET8&KC1Gn5NT+uTq7YL6Rfy-sybL~-}+>RnmA*f$633Lf~L7Zg01Ht zV(|l3LjqBzua@8fXMk;0!y_qIG5fMAam(f7qoZqjSdmQD*GGWqo0ezYh=-v zK_s-SFV>(pKHOkJom9Ox2>~!VOlRa7L2BUIpdJGvt#Vkd5|4)gWc@?9=YpxVbm&X!9lo* zX@Hh(#D3H>El2j+|Akts^W^=V?tSf2ez(v3sMZt_k$oWHw3j#JQ;Pn z_SegQigZN{6)FoD3#RdB0WOEzrG-YPJNdG&I+=2>!^E6;xZ#7su}U|&zF){^0_IU( zJ)nKj$3^&pr(puo+LicLhu`_VGyPyNMP#(Ivc_55%x~uMZ+03ZU!xz(hNDAy4eb5d z48Cnnah%Ve$1OQ?y*4(r$o6=UFOT#4g6Qv6Wf%ZB_4EaX-9?T=J>NEA1K8O)f{(H? zAAp&?S67J}8+ojG{AP%dUHd4=D_3rRU^ec18lg!APMM|H%)tKi_7>I#Nl%?cg+RsP z@7=M%sIpK3BeUj9 z_Q;~*Yav1lw(f7PKwmR_+#W(;FnrYEDYk3l;Vs%_`ZerUzytSdMVGlj?>{OyL3sKY zmt8}!S#3gXrgUXa3?S#-dSdKUomd&nYZt>oU=E++)WV~brNu}p{^Of*KSE3`6dwnt zoi}EL&PhnwnO&);Ou>{s8?INV+iS4M&Tu&ryK5%P64%rz8?Na+%s!}Uoy>9wL}!&C z@Q-5FA$_1!=?`;MaQ{Ch%x~$p#r|hE$micstiCQE>PCEdiU-G}MK_9_jJd>uLXnX& zOP9ee-z6G43F+)dz4{TbF4{^)f&ax-wn*th-lV$UEG2N9 zn&lkRis_F1TTLchdk=S_avrfiJVagTxm`l!V}H`Bwv2GL;a;qwC5f8O0O7E+`2R(h zIzQ5niJ0}_DN%0Cd$uGUSmR9s`}G_!rBMDc%R*L|h(6T&LGILv^APjscPlo*w6L@> zL#Jb6b$kH?!4duM91utzc|xV4QImTMkMjSimBJgmo0^%G5$rsN?C1TP4K3n23NfD@ zc0*Bl%2Bbkn~ZMQto@;d^J?18r(L)nOpV=}dg5y^;!vqy62^W4YkA@zx`T3AvI+He!v2qr0H^DFy# zLan=&skK93gL-GmUx$vOc2`jIu$qW|o0jkAg@0I7H@8r&pPE!)2H@fQ0+sqK$(O>_ z1CEB@{Ln=wYhf}jLu^vm6!EfpMc%^yJiE_^Sd6>}P4w*}Br{S+YXiQ(cw4%|wLPat z!ShV7FtC+dDSvq(zrxNqi3K;}f+IAfI!O*oK7}Kuk6n?YRXIb4CuGdT-hld9v?f-Q z=uA!0T#n}?!~wCw&wEgwHmg&Uy$Mk^$moG=FrebM!unoP-7Y*+u?8AdY11MrZXfY-W`8{C+ldaa#uJ|@u1fG z{jjUHz5u}h!{W@RU!d=rGG16oA*~VqmCYctViFvaX_}gvJaZucA7l(a5K7wYn-#RouSilQa2wzlsxIr1xW3`y==RA7}Og>7GfxqfZ&v zEfiWc;^KP;?M6S>Scj+vf-miav9#LM<45ZjcQY3RE!_aaAU_TCk{z8AeCVDv(ZDx^ zJ>0M-zm}V(Q7u~9k#NMRvxj(V?Wn0y5(Ilc;}!9IC=_F0e63GqDHVz5WJ2JaZ$exW zN?r(sh$~>X{DnU$qQqd7gN#&d*84}`weY*Ij)3X*e)w#UT!g%Tj4q^Je;Nk#Xldv@ zi+W`A0;-p&kkK5#4&Z`_g8i)DHLn6;NcZ9q&mo~Fj16>|JAocVJrAoXiOQa)rA`-< z$>mRasn5nVT#?JfHcYgEUgZ@IgiMGIP{pNUv`3-knY>7H&>B+|d7Qw7qPvl&T3N$U zYko$4fuiWvY-P3oNp_!<^OIZ6^k}U2U_6VXDQa)FA^?^86jehaPF_ zB*->O zV1?74fC}ZGgjY@}Fpz)11i1rj)}&R#_w1!m2bsMTcYPGVN44<8#S(ei262I zBPJ5sSR(NvVN#+|X8E!zBig)ptEiM)B^8%xRM>;uW|@5n7r z&)HZC7I-$5+5{(lggIIOAx0G$D;T{{HHw9i!wR40XE145m1Fa=P@nQ1KOt z2}12#M?}eO#k{bx2Je(jU#N^{(T7`8Z*7_riP#+&m&0nWHffQ39V5Uin+<7`>J?7y zRUGQ69vJr;pX6VaPmgRzU`H;G#6d8^;Sesu3j1w~oXSUEBv>ozGfeG`RcPq2Y(>ut z__w4v&Q`C&&EEk$-I+E6*&25N_M@X$M zf$9R^lEV<3e+udfMZyF=F+`zy7Y28=k(8bG%t=+w>9*YMQHkXi^JlJA?Dys&NL=eB z!sd;1tASu0v;G_!RipS2p>*XjZHG_f{LYm$u}1G#T1f}lE47+oS4{@PX!h@Nu8Exj z3kN8+8j`mhQCk9=<&+8#|?G164PmlO5CFbK2t=s6b)Y}#{ptqc>E~w zqf^JhB=*hVDafjbWzBJ+;S$h`?JH2PR1vT|m!d__z5{MupTm!7gYV>Y2-HL50iDB-;vX zZ~Qr0a2!%Hh~ep2O498n&2p_S<)uQ~4YRj?xQBB+d|QWsOBURU6Cu$w?e6bg4(-zS zjjIeolfO2$-zVH(s8MY1D2o90S48`5X1m4L#x$^V4L>$u+TP$dg3*=TTJgW{qW(G2 zMyM@BUa~pBi1^l001+(mCe0gv2z`B;saZ84y}$5iL7>BbCdA0bqfYq@fT$bsFW0LY z4O*)F>w0YC(4Y_P(mYpr!I)6@Ihn))|B+>?K(t5Bt|cEQ|z;*xMveB^2|F z@J8*(#sDz_huA<{i!GaQ30R;x^Y)aD1&f}7-^1jB+LRE~`Y|-ZR zO9)86j+zmBkelG;S5qf=HpNs}vp^^~4v|LCTRlhHbvB)eFM5@a;nwP1SIP^?Wi~Qo z>e@y}g3k5zv;=AED9c`XTq0g6#4#+2r;)0S4hlmWWn=9&O?KavE9$E=&c&G|ll+IU zZ|b5u1v5B8u^l2|?gy%DKJdc zunpIPM(^n(Ff3(81hO6LSSpBJpzEfB26=1UI2Uz|Td6uh-E^O%NMd-p-|Mo^lUyDd zuaJ=iOFpgd%hIIFeU(Ockv$PN%jxw*s#y}C{e>-yNCD3Jzl)!K2!5~j-hC~3l0NW%B0>Y;aAuzG zPcPp9%eTt3BKEa^E8ssI=+Up@6jdO}*r@!ECjN^9@1ij^>=B)hHnZv)NXv9<@vj29{KJ9U1XKTD-(Lm%5B+P&%KPuwXKe`l>xBQ< z~WUO30%ZnHa<0dqbCSAU!X}xlTu(FhUkCps0 ze)A$S3u#7Kvyi2v)9u?E&7LCswgh^@1Ux(T?ebNWbMv*eU8Az2)8wpX?`#N3WO~7J z@2o5_VA2?P9In$TT3W{@-7V{8Pq#T6aJnbj*(VD@Zvz9!L};?!o9DQ$mBxg|7n!#C zN+T=mwpkgQQK*_8HzsH<+E6?ael91-$(R z|3fT%Cdx__iK;$&uG|fFo~GP*p__Vgb%CZJhs~#JiyBf^Ti%; zBPbUB752S$XFZYG2>oFSJsJcsNB%WF+396!y)SuwXv&xx+8}lS2{Tj<3nor^ncU+iV<@Gc0^JYzPp|=j0M*kvPT(N!1Amqt&k`7o zm2fP}W#cg53klM;?(U`L6Wta;P7>RXZO`($N3Qb6O>t1c;^)nM=G4YA-Qr(SqMND$dgopx~frF5}2&YF-U_R~HSp>ZbPA@88L#F{ZZD~d zIyBB2?&t}Qr6*5I(#%Kj77KLmd@Mre-LJEj~sNIy2>*I3|t zC@(F!E61kE%%lM+Z|qegHz&UW!5_PHF|V-=Yt1}n3;lw;<}hDl1X`n=!Vz4F}+6Q`E#yriZ#0V5L) zt&=Nt5<22(yneU)w`oU=l#k)U>PK+n5T(e0HRVNz z4U~7v?9~FF5V0f?+y>8~jf4oCpg|qsRi{PeGlo)UCdy339=t?uYP3FMmfd)E#SsVCxeGp(0&_ZeLq{#FLuYPg*lGvVj*bBVNyg*+MBHuFuk*Hh$u2=9V7 zFb{ROKPnV-EbZqZqeRqKY*TrpPN_?!dN59JcD)bgl!L8T)S#;62b*% z{N)Yp=-dr{()qK7@Ky0aTzRw&l_yiO?t@UPN5ewAjQ0S`G9|I$ok+_yV?!hRo<{(~ zn|ngR5T8J^B<|rU{WHKJ4v8kL4KOcFZDAUWX6tN_YodIcYg@&y|7>hg}EKqm}yDTfYh(8PmX^BYjNiAiB9c?2+qX~VOel$@>E#Vg-GW)-4V6<``FhTZ*lK{&0f+Ij)(Cs90_lc1}SN5+I5n9$jQ@Y6os5QFMci} z=eO+=Z(GwNJw9iuNnhw zj;Dt-BAfZ@#comU{A~>AlO(&k4>*#^Z7#m|hG_YV#%KgY_8`4?LH{?q(_} zvk0ppDH9)^{eYnLiyA8>3Nqsxp2K8XW>(l;0UY!)TE;w*04GYlaK-|!(+4g@f@ZaKX)kwrZh&jrA?;@{=o|e}*T~jc z@zQh(KlUg5rsa+Zbzm|6u**cg}qTYrKYrSZ$Zz zC@ugM+)LTrFh#2*{JSYQE3M0k|0VBhCYHfd$T8Bkz?40hI5;OFFw1nwuJfgG(%U7) z+o}?}2iW~mfPelAyRMyBMN1DUik@>>(q$KF=jX4413|mJ54)~6`|q!fcROJzhL7az z1ZKTYm=^|K8=5p39}^EJX>$9KA09HOxLR;EDeno4TLP{OeFp5gTv!+V7gvE!hGEKX z@w=&?0Kqg6B2=Z_b@Ah4$DL)5XfSL^T7NbV_s$R5a;Q(t563#ETBp@%CKb5rr~VH{ z^iMnc9Oy(S&@ra$BVvo-AB2z~ASLU?4Bk$&zh{haEE;$U$&9n?Rc&B(B%9;Q(4a1O ziVt42cwNj;)Gtq=`xS5Bf_UW8z(~Nkr@g>AK`hY8jszWpM`1MZ10s_TRz?k54_3wY7wp;%EsUg~DS{S2LlMsG-6|SDcRpcn)Wyl{+SwvBA zJA|&TKV!2a5EjO{c$k|h!OJR+Uaqo&4yaC4@Tum5`P-IYPyvw%{d{qp^d{b86BaE@k-R;)Ehm zgcqiC3MV=y4~paA7PP|1;i@j(pwRX*HmK#U+@r9?P%cIMNG z0Q69SupdXE7|yS81yNG0t4?_SO$`hTrs?mKD7{Sm&205mZU4VYYyJ1he=}OMqJOWm z!-*)0VT%({l0+BAp~j0Sh}pztxZYmCijAt*;H|qcWiOtF7Jf(02a9`ocEk+P|F7aE z-tGJOv3@xmOYn);L9QI*nX9eaU~oXsWrPq@tfX#612j z^R89BHeI)7`<&pCrD?9AyI7|`Eisk#LC^W@`|mkkq=s@?^%~K8VV4Cqjz_$tRw__99qx!)x%MPHMGXwxOX2`<` zS{?nY{E&Tiy@Uh0AL#g2&=M}MHPgILsEuxWfB|2VvYq>99HpO$m*bVS&j4b&kEws$ zpVZ@rUD}D(!|$UGb*%@?;XW0d_dXmO3A88GGOYy(!kEL`38J;jC7-vp^q1;4n=klUr6PnPuMqd_N9XPVx~`bghrO2L0*&;uvYNch{5kevAXl6XLAt zxEB)MDeY%)>0{f%D6QD{k#3rG`t$9zqLiB!f<5_lzOii|Rsu&}O7HL~nl?flt8UP7 z<{j*csTv_M$OYn9{8Zw>BIAUh5H<^r^urZcwfd{?^fU;PR0Y}U2YZOt3w z?Wr9#L+3N%J>#PL_$k44=5}m5VJh)(cBif#ztwQ&%h!AYP6w)>Oxv}!_Z3Wj>q+4C z-UjduzpCZ@nc7ahA*X!So*hh^A9(CmHPAl)4a+lA)a z|JHA6YC3=VwzC8cL>LY_-uQDzE1+|BYpH9>J8_d+Bf^_m&`?46nY6j=!r$B!BGw}}bg^!F>Lv1foS%uh3U{9U>l;HDPaX%@6{AmIbpx~BhB2Prv=l$~VZFGkDL)Oo{9^~lj@i2Z{O6b2 zhOQ~e=_~|S-xrzJYT!{va6f4q$;Gm&a;1y7dgt$C7{A6{P<}QtaWm;GL#^X9xAj?G zRT^168~XN=wOB|}XJj7Q`u;S&dEutpAIsLu=sne;VDgx_nSKB|!{qc9Tdh;GcD!u6 zG+tzIr-dy4=&uQd@3v&q{-n2>H^kA@dzW2%c%HHG?pi*+Ne`;H{2$bPcTkkUwkJtI z$s$2X0!ol1IWq(aN)iyspptXWVF;2WX8{>RKu~hdQDDde2n;#HkcT|Lq~+fC?z^?M zwN<;d@1O0Ons2J6zteqAe<#)H@7E+Ls>7=Xi8X{d(7ph#WU6L!pVciPZXiI~z0TuOm17MT^T5ns!jDnobuUk>*DX4!7K-tSB@Q=eX9%seLVcvidE;Bc-MF3@|=iY>-o5s|A8Ow%vN0a zk4M5DFm(V{!c%}r!Ssy<+uxoT-oSj1`WsUgd`1DQ+tsVTP7tq7uwh9z#*1kueC`67 zfYrKF*{*#Vs*%x<#`xT5cJ%7}P6c*;r%kT$@4Sj5Hhz)K9djK}jq6d-rL*gLUvi+& z<0tQR%yC7D%b1agG~-c;>y8vIH&C9UnePL%gl|qf4#gEX&QP;jm8&;(RI+^ACSTRt zu)TVjuf7GBWZ6AN&3^A1YEA>nQAp*x^a$_Kz#dqbU@cw%51hTKEu9blD9LTP7h&}< z^$8kj*OXvlnOXqsp^VFqq{%85R&1}FECRMHbJi{f21?&-g3B&EQHWj4(to+Dz%{>- z_-xaD;L4X}Rt*%`M?0_eevLh_J%zoC@7Wk2y-|jm_pS6F_ zpqK!2QA2HRYOqovEcri2{>~Sg<2rq}r|5Tqi9V66s{2I;G5|wDnoOl1EdqQnE{R!3 zZC9{VG3!x};?+rX*SY>Dy%3+95=^0a3qqe%TU?uKFG!l_Mh~*5dVvxN0?gSQvD9NH z5RESYV2{Ksgh2>I2;$nWg~^=HAHK5&dKgJ8G{h?LV;Sr#?Cf|pdTD6Y`H@ONN)#5W)YvP-O!zS8RiS)#HPPvU#L-~!&cJgtZa-?Aj3h0G{0* zeJnuw7)^cSnFw35$_ZiiIbG9g%8h=N2NQq6Zv-o2;PH|A>u)W6aV;?t{4-<^yBrkR zRLk=xWhGJzBMB^ATka0d2vi&Zv3n6#?R|y%9Vc(jRCp#C4s|(J#p{)`yg$lC3CzIS zyx+*W?vtvbyG~@{X4*73v4yqg8s%qF6kD&%YQ>fu%5Czp&ulfm9uNfN2~_dSb(jPu zX0I}}dYmjPU1(MsLEV3btnZq%F$O02$F&z$o{jlGxo>%IFhHTJWaXmmB4tJT@3AlZ zb6HI&STd`eI$+2%z@RG~saE;z{P6sJ^hZBoEYA1v+ox+?&kOHRjG+GxU{k~X`vO=- zZqi7m7;5*Y^5g?To!3YOoG3f2TCEEY|TPWz}Y_Q z;*m<*qxL{KHwRc*z`-HQw&SXIOTB9#a}I_7z2BHBf9uOcWIh0hK?LsdO`)$(HxV6v zQLUu{B(J18nD>NVVL%*bG3_mM)@9~ubkIxx{qOed0@|uf7XhdQ$Zsro^&c^J$ngUy zq^G9!$T9f5yV&O-wyym7nCDOVkG|%N4284gT7D zcYOVwWTAGL3HpxZw=G}(X)qLXJ4#cI0=~DI#qI&~+QUXM`>v&W?|ly$1KtNu@^3^4 zOvsgngvq@3@M)Eo8)gL{X!P^YH_4EZ)yG)4AYF4mW>@Bx{qlIL7?XhxX4>d(oRh_< zm^{5>F(j(|LT4dP@w`AQoByPVpXVs0#oQWbH4W=PX}I#3nD+Bsl`uKB!MDh)t_*LJCP_N~7U$G&?$~`RblRjpD zo+f|R{cBS1ukp&=<_%{!YuP|!neB`5-)AiPrU6YTlbd=~h3#2cYV#5v5ARb{V8emN z`|TMN<~~fn7{HBvFIO>@b{;j(ean0g=9e59^bOx=uY4+OfTqos*&cYY`OUQ7-+sy5 za!3F6@0siR-xsn}g(Tf|z2~gw!Mt&Cga4|Bh_7UuM= zOoye|s@i5J%EI4ZD$V~(Hy`wM#@u`h_kQa5RiF2_I<@B_69&dSmm(VK!fdot$%`O_ zeKPb7Bn95vU@7nNo#j}*z05{F7OvERriWc?m7nNX`#@RlCz%nIRt+?@URBvzs#V>N zfMAc0?K|=iUjmP_E=Co83WN48UIWi1qQG`_XTE2{R-;qiP~VZki{=P@#@C1~1DJby z#EC@3@eCC9x=@ZNk0-0}RDSy~ox&~qf>EbGfBk$=)e>Wz^&6FUW;*bDbpJN7y^leE zfV%u}HLr=lY;@{I;9BYkyE_aKwt`6yl}XtuN)GDgB@AA`gH#PdGO~`LzK_d<$_}K@ zYyxByz)2~qUu+K#E%tzSxMMfBB_nkH6X-<96b974QFkU=l~?y!KYQkq$zNC&^ppXc zVR9j6afEDHzzUn`qb){`58;d#zp;)hX4tA7pcxig`yaGd9I&B@d~#9i`CdVL*F0JF zqL{KJ7i=hKy=*++w$*sdC`jf~P|Lr+JV;p_<9PcYoFJ+JmzA^F00GC`C8*q%Ob!Gq zn=qadtd&2u-9{fa9(e=8eT3>wRMV9-EQBh~?OcbUr% z1QB`cdc)X!n`NfnIbMwOXER@ze)lNK=ycg;&|X8rXXNw`lfF`iSVptI0~DU}R33o* zui%00Iyb$%NxbHH?kY?IhW$t%iB|sEU$)fiP~qUC!R8G-?YB3;!z9uWm*<;y`a~~7ZRDCVJtgO zu)wCiuY}^buAK#B7``0Gn5rNb~!$%VWhzBlKXwRXUOK zraFIIu+Fwt((S!@hH68IT(*hDUH@h+?It}0)8l*^;eYwUc3?N`4!cRGIklYqOBZGTj{3)Qds&$O@bR<@fBm=vzs*y|B~i3jOr zdw3~34y(gneV2!fB<>^$by7ryT@Yp239^9avyrRrH{42=r!z*l4a)s@iI#hIedVyf zt}2?ZfXADZi$dL$0%=$N_AeD@@zM+Pxq{j|c)P=@Q}+c~=ZCWXLF(sc*FODa)~MJ; zQ}kDl!7q6txDEMW7TLty(?Em$=G$e#DI}60Pg-`lY5UBNap8d44Jqv^FL#@pKKONy z@SW*&BASO;sV0q3_60n9s4VDfm+HwIChcaW;ca{avztsBzeGX)x@>sEcM3@h<@|}7 zUmIi{==W%MFb4M$IK0X2GsOif-TXeB5)3))GEv}1X;N#GUVa&DA_B4~U{X33)-xsUnzPHg$*=bUQ(}b-hV6ZK;qA^Vm zqg}8`#AU$1gk!lmQ~d)r~`b%+4DK9s-c~gmO;>7 z_=h(=b)`*urgbdH0IQFYm0B%+d;ETr1{dU=Uno-#ek#LJhU(fERxk6XR{GUUFF;0p_-sZNR(`2pUf`Pc|FTY0;X<6Le2hZ6Qu5_Lck761bhQP9mf7`||ueVZ7%( zCf}o0sKaG`#mN;rmoQfX4yti(bj@wVSKy2Kk=H`!=}O)$NIqu#}&Gj&(9z8bToG9 z_nQ{-LtdMrb*`WxHI6_Oq5m%kyG0Y$!IdcFmB0QrMR%q7?_1CZQEVZ|Exwg#n-=NV zavbg20FWwToEfP^4=I7k8(NNi=ZA=Zm8krY13AE7bsxyKltLrsJXl$(X>i=4%!QFB za1!H<{Udu=b>6kV8~=jpgcLAIX+X|zXPZmeCtyu!8# zqA>pmQI8{?&`n>gLz^xtZxU^#A}gV-r;T6oKpzaC2wve4?M*;gM+&Z4R_8raN#xtG zYv^&vm`Qb^qc)ZpX>enIsA@?QGQhn_%+$vx10whR+0Ktn5_TUA&Y;)?0Xcnsd!P6| zdtZ}U?(!sU(r5jQtJb5owHMo5DVhiu`qdGmCvDIiH;i?Rw}7ZmLekGGBoqaRmV5H- zZg!O+Gv8UVIO8PueE~pq=_x;{Ge3rt)_XFUhe7g<6pNO1eUOeyn&^_7_qS{Q8v`^% zZI*XNOnxylQIFYoOhS=}G2_g=^3O5W3|UAgo3tlHbm5ew_}5zOeX#Wvq9q1YQFf+_ z=4zVT`!lk>a{oPM)q42K_#I=x!Do?WBn$i_(CSBpwGh!tDw@aT)aVMb1H4we%xX=- z%YWzoxl#`WgktgAFyyQ0dosCy;Mc$k6Ap+h3TT5(Gzp5rA}B5qp49=zZ(-bzRd=^{ z=X-t!2O2{o$A!!4vR%ac9WZomNQ3jPabKHluPb=7a+fdUX4M4T0hNwGMAl$GI061; zHUH)0{*h0dAl9h@C+CqDDLo<7*z&86I`Gu0J=F(SjVu4pa^9}L{;b-Yy2l=>p9ckF ziQza?6i9Ko?H_z#KHBX;>im8aCi0CXEZdKKSs9i^YW^$QNy$-YE;a9$xgj!j{} z3Qkz6*SB{@%@E&%UTq4;`smW)NETih0V|7j)4)GRa@XB zM+~l43H+0utk4cJsCcRd;$N?|U=gfcb!-j2N#9B7SWLQFL!WqQtbNlH%Xj~vggqK{ zV6;Kk3um&A>@8K_B>^*nB-p(pwWBJG86qbQ7K^?#Wjit$8C@~kJ})1}ptPksg*fFq z4>#pQyi^&+QBtjCsNb-_?Pc$#8KgKM zf69|351lf!2o;{_H}iqfrX2rXTK4mu0$nUiEo8|p_n6#PP&d^O=r<%{}(gXW*Fmx(saNC~EY2NSF6xM4yc4EW(kr zGNKU(g|KzGtBHTW(c2r8LoFlAg8t4pLf^!^$+!aZ-Vxs0+H8Ib{9d1GlJfNw9y$Lz z8=EiCw0{m9!|rw`dcaLx{X;D4;}2Kg<%3~4^FW|)t1$rjLMe{ncQZy?5utr|pV_FC z4fA>8jer@2Bd-^>o+j2`+!pA$BhbN8UNeFI``#NH;^zK+scXUls)FKU-W2ZIu`MGf zUj{hqBjASAHH0DU`TW9`X5N@nddFv8Zo3%!Z8yk{hi7Zkl5F7jahV-PVHWtRIU=Y$ zlD)%Z5eeKw<-&cK7+ZnHvJma~LvG*kyLa9qq!+sopD;DFIXB`^ciO&efM9zYdgUJj zRmil;yh8*pVRL1fb6}9lq-i5Cas!og1GX%`4_iIm|F(%r0ynRMoh+-s-lM3~jCHB= z>&~WYl%Xu$ryckAeYeE_94^n>6Obf&ayd5S5!l$)$sCCKI}&?k-X%9!|*Fp(BmF~ImZ9gnPmRM6P1NZ{(xSdx* zXpb=8adUMiuG;A1{7l(9691of5qO>Y?EmKD2gEh6s+Q&rXLh-R_x1m`w*9z6z5ai1 zcNNi`Sm%S6l=sa3r;2C{K^jtzng?I9>M*_dmYSPy_;j zIXG~96S*2u%bcZwe7I+!r=P#8ihLe{X^a&mGZ3pk#*&V`jc@jgA?kuxdRG~*pcIo_iZb@jJ(-dc~R z07V9G<%R{{couyzuz!z*p;FKm-s&gHEZA5`bBut;x6zxz-WZFG99#7a12bq1D0@uV zi22OYY51Ji^`pPi=g=QbmE@ zGmVJ1XQh}Ug5}cer$DW>d@#oAT};0H4)#zw7^Ly$y86)Yhy(m?_$@*h{ceT5>SDE& z$rf9A@`ifkWBh zq<5TRs<=+4(mz>TSavBRrn8F4-vv-}VuAeoZ&$s-E#n~PX9#mi zTe7S`NsemYI*#^5sgdl1Sns4uo7tS(R^3R1)NF?akFx>z;&HNpc_DL2U%+$3>#UCB zVxj!P<18oFLJY*1q0t7==_qn#(7pub+hs35uec9*FL0P;X^w4TMX*u^KK34M7_Qg< zIe-3Sz6ndM@NE*Ef>pJaQw_!d`mv9JSD0jm(e8 zznzqx&Illjr$^G+SL_Xt?VRfpxs0t7$}h9TKw6ljFG5ni`7TengCn|PMr0cGuLav| z=^MAuQm~H$ZX2Iq^`e1!*TM*{q>Kol<0-2%r}Hpqeh^zIlz+}Y7-BNZ9jv-K-ufwN z(olIxqY4H^&m((s+BMh1IJkQMHbTXb|L-OU2j|WR&92)= ze0UV4L*!0Hx^TXTt-|fJH#XvXf8nuw59h{QWCVa`^R3_4#^xByRb9~^E?0dYZN|)r(UwxgBy@o5J^E<-*KE>pt z`#e=ywUKIR!KAkZl|9x4O-w-dq?XE%kZ==j{z6g9h*&Y++1uv+?w)XGau5@NxAymI zc&VhD>GfZiH$KK0W+At3PKs!6b@vZ= zo%LfDO=}A~-7GT#&DlsXln9ed2u>tPJ+rvD-abPZcwK9GMo|a4K6`Y2P*R%it+|E> zOiDzG4nF5s{HZncg@oQwivGT1u2y%ubC~2D1qz1uqQpB)zduN*G;032^dy`rEVqoQ z*-T~qBQ%v8Lh@Tz`MH{bBX9TaQoRjM~m`%7oH+lQ6Rg;s*d%iy0IS_FGFXNWHZ{mXlLKn?7@Xuvx=h1t^j&gv@-64$y2RKC? zjcn*L#lmyn2;&(00F`%sgkh8ypPx~MRXM)BlE_tVN_IZGzVD!*oqakDyj&vbzmaYR7|z`d8g6 zAb~L_NEbQNIgq^NpT74r>v|LZ%JGz@ci$INppRAV?F|*aSSsyFPsvD?@H^1&j(jtW zYVmxSRQNC!Wcs;|n0$9AKaoe8FqnwIvw~iQa+67ii&_13#WCWi;d1Whfzk&pf+Qoi z7#{Vc+tOVt!*~`m={J3aiEvBe7{6zEC9fu-O)C_XpdZwRAMBybPY+8ECMo5eMw5^p zF4fM@!b%6sp_1dD;Q@-O5YTrWS(*VC8_F%m&#(5c%B`gz$dsb5X+Qo&$?-O9`~c-T z48R?uUn=ICxN%)>JnLe@X^jSdPg%Sgbwi7gx{N#?asQBRIFNR8|JDc6aJ5T6&+m7s z<`R!gaP`Q4(-{g8EkEs9!>X+@djE<&-9L!VN+PjYE1@Mlfy4kC3_3F||lLdz3^4=F8 z024N>wxJLAVV-1ta><)Ngs&UnD@$S~KPPQ7O0!6HH4^3$ewW@*RRHLkxJVN?e3$vf zmDocR1Bt`Us{THJZe;0C8{pNFif2y=0v#Mf!mZOSRol8eXh*;|EEAir=J**N%3h49 z*DoC(5ckV38!UrsG#}z4Uv7sc<8LC5cDLGJj++uLocRHh&ntZ(?yFkHKS<=*2?od_ zKF6;qDreo#F6Pb%Z{_fxQwa9j1}Gx;NsJDixq1y=yRC-})trT%k~9Z(2xal?qSs7? zny#K6t#BthElD)ZdO6YGW9*SP=2z?pErin(WLTd@#wA4P>aAXc4MaH0S$%ySwuf=T zT%2)gk$sG^>ieN8-10mjs-3-z8?f6Bd3F!ilZA2hKE8#hEOqUX5hGYpmz~d%&0X~^ z--Pu;3>(a*qKCM5{rT)KK1iA{v-tkR*65(bw5DYC<1omV$6t6E%6GRcUbslBh44OS~_)wT#p~uz{p1OOd=8mJU`~!HovB!QzjPL<_*A~5?rA33S*E;b<`O6 z3mfktEEqdt9Ly%B*e;Ay<=$bO4tyv+?0PcN?_yPYU9{VDvYrtr?{WF|s~qKkW3O+# zBebKlfP}r7!qJe<#y{oZtTGspGpO)uOtDw8*ISdadT~YMt!#@0!C$A;>^mfasUAVe@H(%K1D*To^=DOZw z&3r~|b9Ui;^TSiV94n58>n~&*pZ9eS+Zd(FbeX3{%r$+m5X&oF9SpK#Y92kfCp=dm z7y4P~>EpMpl(+6!s5lV~B(aVJJwuM-)$;6gXj93SRc!cz`an{86jqm^RC0DjV4tX; z%8jeLmz*T8(Z5PKRrxs%8_R^(1TJy@BqKzvqL!xXUR}%hr$wcMd3*C3VaV8OpRko! zd#UYQuBw1urfj;H3YKbo@uYKv+MBe`=H8qXll*X*u39!f{@FbIOSM?l<)HXWkd|kdKUQK;mZn zF2U*3Q!KHd$_sbrY(D8Uve#z`k8s4v0Qf7+8`_6lMjmAIR@UGLkRcVqVLGzy?E6!< zlf~FfkN!EeOiGrKo{xuM@M6Jku^jyXB@S;vMst-gHjd%dp)qk>i}LC4Kqc;!yZg!E zoVXi97@#>~Fn&e7oG=;D|D1fVC zpV33Qutp2IsLSj+Zs)?!V7cyB!tBhwg{18koMf=qm|mu#3U7+BIHjIpKHUTtO6$$4 z&vmtsa~4m}jP7F%$f(RSd$? zNX0!i%_&T+opd+!^z@bvMlexR;M#S-ZL5pt{PfSWa?vi{r|HTOekd-$Zz<|V+iv}X zhDbV=MAeZf0RYy!w6Y3>)Zj9PFr7zk}nl1FUe!_X^rl-4|+;D z>oWi5QYFGx8?X8=sJegV@qJ0ftrdX0f~|YU7+vu7b7Yhx?RK;MFrvIK%lSGAJ2X9aD<%ny#PV+{!YkM2CPx)yOF`GL_8Oz?5z?Rlf{PO= zn^*?+-g2O;U5k*RL)bOA{dJJw?3}$YwE|brO^FYsjbJ}Mb@42jmU?JRjz;%b*^>qS z{DZ#-fGLl8vp?>Ndf(02U1`rS{7#|I2?FpoHp1e_s`?N{Q=1|7FoZ!2+P+$ot4 zyg9_VKHp=!(U(@lD@b*E8lZCE2Tdfb3;PkLnTr@XBjF8tYeV|}a`yX`V|WT@u2$>C zr_pqQf@jKF87;pbsNpL>?N^XGB(mY&d@KU*c61b8Nv0K+PT9^J8XTRhJvTCjSDJ?A zFMOOXF4`1L)~;~yD5V&gJpFa;%_g}yt2h_n7BN~r>*G{h;Ur5EL7Bu%Gt_+dA`{p@ zpJu63)C(US`E!bj1nR6D5f%XALH%ZeYckYy#>tgxbUA`$<2*b_MH29D4);q?j|6Pd z6gkS>9uG0yA#bDTf4V5HntZP`wKbs$EGUakwS7{!X|#y%qnmHQ$q*I&AW+4++F203 zf*T)5g17A3NrbO~osmvv5-;U=mIA~0-C8bO|CxB1PZE|0a#_BLJwM{0x?S+@mlyR^ z+I^%nQ{(*Yltn^~K4R0_<`mvC;6<7`F7x({G4>*{T0SBPo_sU7gxzH-XrmR$QxB?4 zV*fx+7fkmt-;qjJYXke8Gb`k^K5MVznE`HSm_~fAG4%4)R{|~djGp3qh|vQ5O+wPb zZ;(C&dRe+Y$9D7~TqEQom)UmJ3ag@n&o0-b%^CQTrLe2z!nEmJar<6ys)Dx~Lbssk zI~CzL9?p#I0pjcN6HS(5l2RG*Xj1LCCaJ-rVH1S2nD>#-RpK&OS~zj1L3R*z?8~%Q z;v4V6yo;>DUf(8V5fl{(yQyQwHGdQ}7Dtqp1)lTcc#%}H72uz{c;!3+P_G>%SlORe ze;QR1t2>vi9#+0z_xL+=1@jDfByVUj!(^rQ;Dg$4moHoFFh0>EcNs>iG_!0g{8ID% z^J3~NMDFnK7!OnlPWM)?NS+!!8Iy#^*8DV~`e8!okYDSO0^^0$un^e-m324&uX0@I za{fy#8QZ*rt%&Pv&X}LW$75oJd(qE({-}-$&dxSD2Ok%hJ5;(HO?CX$L%$?d3c!s6 zA88my38TLa>PK9C)|58Cw}COI2{E*+?nn&9{fK*qrG&4lcF&t_9Y!Yj<=jyVs*Zja z4&aTMhj~QE9xo+E83v0fDN-7UEwmre1u&oMR>wRe85$BTVvrWS^}G~#`yLi-7G60kM88WRj`r4uXrPb z4hPlnMuOe4^LZGgle)6WQYFypJd0s@6`!fK!<7jUBk$Y)GFHd)ZPjMW!yF5m(XjES z0AgW(MWMdrz@Sd-J<+<7=IG!NIln-6u8&={i<99W3jp^*6DKe_Y0u9}MxA=fuS71w ziy+~C&IYfcQK70wRX>$>pG;jG3O?L_m`c3(&=IOLi;fqze`Ck6#0$oT-frH;K2dMY z(Tzd$_nrKp>FXW58q~)9a61T#9IkDPN|IqcPcWebHEa3KUo?K~Te@!iVH}#+?H6mR z>*bS!J7sSC=4kn&DHrZA^Pq9|Tjk881MKlr!7n*0h4%{V64wxUhyH{w5qdbu8mxo< z3bkjN}c(_ zAB6tI0s+R2wEuk~z#dEHSG_#BBt0OcdneD|ak!Tok7w7l#UV#O?BHoLU-c8u&527K z2`(3% zT(s%;M=W(XZVi_?Lx*M7GW)GZdV4LD$>DQ{3p{@vJWu-E;y*VNuRfRIco#7HllH#O<1TV^ z#ph->SRWkI%W;bJ`$+g#qh#&JiCVe)mumPzW0D( zfC{4fLbUtNrHvfgFL5}q6BscINwq#RCg%EBVYMT_D#sb{0Q89PGgO1JysEBz5s&U5 zy75vhAt`JKd0o(Qj`d{X$t`XP%LMk^>Ym9DYpSKMo9|Kp@{01Li^mkD8n z$sTJ8$!&4NGu}H035|*->rA$!djUVUpTAy-QrLG~8l|Js-Ev|T_P&)^TL|-~UOfO% zTYwDu_d2*E6h0|UUG80K->`ZFbbbE#qexV*X3S+atFSJHioN%d3|d6kKWRyf?KjQ$ zDP8pbB*(zfMv3CdPpd9Uh*tHD1r;Tns9Zp8JEGf*tC0&_1$G}sazSy}j#vcQ4)j=Unr zB&wsC=*ds7^WgkRk4u# zg4eU<6SQZ<8|N!5ue#hj%y?Glt(EU*oMl>+@$r4nj`&HkP;L2(F}H3P7HWRoRjhIG z@T+@`U$QW`e>8l;paS&&Ff@Q#NBG8k?RMvmc4sUPSO7|C&zkNd%`;EE`jQY` zl2%+P60~oZBh3~X??5hmO&w1(gGe{TTV+hUWI>}YT*uYRb`z{_NY$SFT=~rP z>b5Gf>W(KD)a%iwn($4O1sBduSUdUSlPBL&>5orDxy2r;30z%{8jT4?H$Sb>(cOu6 zWZ`ugnME3^byN@z$DWXVs$_is>56vNb@GsIqu=3-+Nvw zgMr0LSq-@zqe|s?mLEEf=U)y-`Y?+!{pt0S*@`$fl{CU@TE<$gBcT&p!Ga4f#n_pwkCfJzNB6B%OR`3aHRmzKr`y+vg4g%oU#rU28C(NdaXrNLa(yS& zgwJc}+h~zfZfvJa(8V}9Qrwn;@IrQ5u@`>Dk}M~cpW%*yYRQ!{2FayY#79etv^uK^ z+ORGP&G!UUH<5wrc9;3)GNUR$npgueCYh}UjqWHgTFUoXP_?U3=r=wcGa2gPvato$ zb=GZA3-Uw-!t5?j87yp5pnLtCsqJfmD^1@WvBbg&LXWCfmuIIK3Z4PTgkou1=*sFA>8I+U;0A5ypV8)B6YmE=_ z17Q*+mj`=Rww~`c02G>H!Mvn+7I`^oPgyce!yV_#30AH_PF~}movJ*)$4NP}2|+hS zn?B)Mo0<`uo{^5^E^P(+eO%RWZHd$Q3v_zxt1g~!xOYeBxHuNa{3GuSiv`B%6W4UN zU^L*g>mY*g=$srPoW}HdIo@3S$KsXL31#HSO2nT(=B?hI<&YeA#TJPdJqf#Zp{joI zEY(JsJMNrC@gg)sjso>qY`Z00c2jf>GntfvO>WBK=<@A|w8y=aa)90z*GP%Q%7_d_z|TxS-TR5WlT;K{)+>OSjb`9` zu@~WbTQbqP^NZHm2`_oSvzE<~Db$b5b+*HNh|BA^ ztC1+BRTSl*+J#~t5VIhFv+L{;f802q)vF|rbjh<$1-=B)z5h)0)5zf0T(7Hj1@Esf zoWJALI9t0AA7CD6!SRiSU785?oUyy-Q&%tZ$ucFiQESpFFx6O*X~M2ADATXDN$p&o zOl;98z}|qx>9em6bq^^O<9cwozdHq;=UT;K9qWg(I+hTB_8)xO^vfhODZj6p3SR#( z%s?bN&yG+%0=8p_PD@AqA*W%Jm-#_()Qgv{@;|~D%ofvP&AC3jrJx#iKPu~u@M)~D zwrRrMgZLbC=4dO(DuyDN<0F>C-L~LLX>Zscw3kwn&VoQmC0O^29nl&x-N`@4bgiKW zVZQGeezUstIm@}-qviCZ@DUA>u*v|L}w~ zSz3BFMCJRH`mwP1gk#R5%u#O{Vz;XXtKr1$-54IFQsCp9BI0b)1l@It6oh6#%RmyW zOPqn*1!pRh_}31>)$~&*Wqfi~CIjp+^p5JCS|cIy*tFNvoI20dk#ED^K_;6Twd~S zC zadC+1cLi%^Exyam8?1xT#gcf|RHuvdtqb693)|bKD!-{<+UTZ?C$yAI0&7}ZSM)e5 z22#skIO?;Yol)~rer%-s6~&Vgl+sasy0Aw_iRmqLq+ykoTXzTYW?$BvF43S-XgXyl zXVu=4kFrT5baupNw7sQ@sunxmk#$fb7vsaS3Kb*Irx*Hr4Qw<4nhYExQX|W%F3q?Q z?<4-pSB9}qB8Ef_T^=#!^b}m-HxsFNI5_;EqW{4Z zDG`%P;;%3~utoQx#(?rZRY4tfZ0N5k%Gb$LR9_JUX_5jhCEnqmxG%$u>zwGN4oE%M z+sRv=O4JgIc6YzI%#jPh+SiAD3rn6j|N2@c*)i{kytk1oX1-|C{D&UYFUKTqm#B8u zlRUIS^%Y(7I&JqRR}>CUY!;hxVN0Ew%WRZ_Mee$(N;Qe`O~?G>=ToB$ajAV%fEBFB zhX#W3a^E~Cvqj*%cmX5h!xl=mi{+PPMn{CFmGWse!C#9Thp@2zx5^Gx&Vvg+QgEF? zW~P`f0{GO5hgN5miSOt|UclOmtC}yOjKp!4fFBMl`Pgmx^zw9@Jn@ExEP%SjQ z;o)Qehb0^73osY&>LhRp+vIpxGZWPORh-eol3kuzB_Up@nF|L$Q&8&kX=YBAXbF4@vi zoZkYx+<${&oR4_7e|Y~eK^XO(FSvSP2@7~GLLae~+1V_>_=U_4msN{2b^mQIIc2enESA>@lJxAwRK}MYL80ze=!{Qb&?wBl1PY#$^wqdR>Eg#1?Gp*54 zXQVJ!aYeSOWJ-CUB{Xbwwj6xt4|bNN3x8DXG5V~W+=jY@v1N@D;~sr#U~1te=#Ytk zc8)EbMq68)2sY9%p}x88?jm5ph%!OJi)9t|lvN|ch%h&rBKJp6%(9j|6Yt_XUX$ME zFE|(r2y5gcm|nHpod20>QHY+;w((3S?HJ)LjaZTE!U!8d7^gGnh^1jt>~_i;<I z&WLc_8cI2H?6QH;5BDgx2Hc0##Tzp8#FJ4fUuwq>URV;fbVxn%TlD=LR5S+it;l+g zwzku?t=^uy#obxjvFeh9)uTo;evka|0SR~ekiD|aPOyW?$pNru!h5lH`9`lClWmnY zx$uWuD0?G*PiG`tK=p=jo1)66zXk1*Q3>hvpd>|pah-Mmv{fHv=m?8MlGz+sTGlnb zb#=pk7i#n|BGZ7YP>uzRm9OyHG!%*XaH665a~|ZDK^!;qdGjNDGpE1WiP^NsL^9kG zDI|8jp-&DZ)fBVgZT)iAK7zxUOIJh{NeEJ!m^~G_wwHN@a3QFL7qDOZp|U3G$kYNv zVVx8vzaP|E{DSl}?K0Hsczx?}j`h(RQL-34{qQ~7Z+8;45kjWVd5FP>eVGtt1o z&i67+oaetO5q*x{7qy||LXm3DZq3eX+2eO58W~RbO_Wj>@65=Sh&=G`Q=`{Tk=X*h z49ZD@0U4=~vT)C@+i#jNq0_cMV+Kj@ zg{<0}=mu~`(YNOi4XDz9*sFX}vVs@niU9^8ZY))vknaEx*0F9y0RdJ27!260}ck6OA757(s^t5jA99NWFUv^Cby= z_4jduCQ-~f?X{teg@nxWAZ8qD35&z*Sht67&jq6*H;+FXV7i^0S0lcreX#+EfY9x2 zQXOZbVH9Z=h12OiPmxJXNX<2AN05};*etM?g?xiC!D9Ai-P2(%(cRbVnM!nFFeCN{ zO`Cri85D}-{Y1|>vsMb!h~xmV+);W*PX6JQ;zDffca!m6>r8Eh^S9 z;fyeu$`$bYqwqt2zdc@7r3X9NpKAHP?-M)O%tE(&t~tp+PxY8Sh31b#jy4Z$y?H6e z+nbtmeE9@uFII&Yi*H&_kF=_fHVnCPEy*Gh|8BTmYEr#AN%0(h{NrO2JBs~fpe0$) zVE4)M2Jcq}N{YDD#m1oudt=68ZM<_yFr*)vgvrCqlb-pM-8O zGS3hLFD$#;cZgja5q0Sn2xxM~N!bLVi#_lak0PZ^HtPl$r6%!bVO6yWk;FZDd>VAC@-{_u>D&(7T z(A~DAJ-`AI*!zeMUG6U)yD8RsA9!o1=qecSL2rJbZs~oOyRHW zYbQ>bZj@E?Z+k3WuUF5fiP!O9{mx}xNcb08HjYzeua>w|e-2t=CteX{yAhg5A&GWs zaAwa!>&H$GleZnBtx@AeTDNfjF%<^E%OpZjP!}inF zgFc$OgL^#h3mNEo(x}_wABn9H@4(17Jtf>(7y?e;y)#MI%{B4u!x`g#9hW6}E$UaC zxMbjfULa#nXLZry33!{@w~$V~alc2M(srY^XXTx8JTFl%ZqE()08m#PxM!{lEPb_H zEL%^YTkLHf@TbzUDz&6;l&F~F6?r>BET_G=$h98L$eRwv)%2tz4z=PP{a*~KYi*1s zRLJmkOAq2dV?V>b$lRvJ6);1)LYOhJBEbuh^q?cVAJya1Rj4y3w>vDN`sb;J)5f&Y zUX?n4&(t*t1QR*v+&>%cD9AHV=PlODWK#BPbapq2bp6$3wxvkdz_*3-iRBkopEDHM zS%X)w)^cFakIr@lE!cfkVM}uu^G=q8x8!+yLk7b}bIfWuM1RjeI$BZMhJ?*1*t@rxH4CO1P~Lkz;E%7lOj%8rV7z+UdPE)F)3%VG~pk zRbd8th!8>_2BOxN4ivVs_M9B@eVgB%jIU=ddx^;~!3DH>zWR47nz zK^ChLVq1$qRuBvc$Ra9;A|OEoH6|g(tR#Vi#RU}*%ce!PD!73P7QAo;ffx`fs4RgB zR6syLR&lAQF(Bj~l%m(U(>v!w=iU$JWG3_G%>yag_ znb1xphig?cuGH1r#&{vqNnBuWjyU$TEMKxiGH^F+u(%k;HdAvc2&2;v+zUQvGUBhJ z-!vdFwiCS@lKcD|6EQH9x?)3$^Ytv2u~mH3_A{;Fj+`F7fER_4c;q^E;CFeqhoY1I z0erf7;4xo6$W9HJoPf_CB0D^lw3gP@>8xM5VcAjost})Cr+#Hnv?rmhW01!tZ)2LBLLThLsrPP*)Z%F))@z2_GN0YR0J! zAvwDSt0z<*^GRA{k$g0qFcIfqI``aAUZwSM1~I|h=AY_?K3`cbV-Zne*2q}A=yYv`p5_huxjr6mk1$D3RO=iNi9^xQh^-r6DhMk%R!V86ldbvmh1_G84u-nEK8Z5h^c zMPW+6z2DGJJN(XchY)M7yxg!~F0C7`dDC*C((U=WrMoUkN#7sU4s9?k zXsdJ3{Sc)7v`#X}d9x=);1pI7PK%X0)>W30%{5#M>d};DA|CNuJ@k+SJ|3?*r1F zwCv~ofg-gv$K4l^VT!GAN&5ATT8nV^Iwq#1b2jZsz56QYp<+qdo12)C`b+mFiq-GR z$3X>*;@1@Zh93tXHSvdmEpb`-zOE096 zwi*O69%#U(3CVCVo5c~}#YDu1zIb3feHw*;e?WvxBEo)pLb#8cJKT}Wr@<|eXmbjB z4H~`%gT&x0tgNie;8-*UjY4Bl7_2$Q3Xj9$(P;S0fw0v8Mg%@J0Po@CJTo2eiip@J z6!P#Wlt?5(if~9SpN_(;UAuO=4Hjz-5axmqj*u)i=LlAQZ1QIxCz^o5XYhm!E(bo{ zm%Nu7BqSmb(-X}eGuOrD%}&G-%(w$AqQqn#3WG$WW;+9g1i%U2kxwHFxqL4!mu36$ z%AFZ}nuyD13gC{OmT(ME1w1UQE#M>uhsqTR2&gaXJ}u-^OPUi|NV5e*S(u}7=2%NF zEE;ct!DFm_Kdb);eNpblr7{9S{!=*)kH*cEe+JEz6HwD`K6CZqMoeGk7w7+*Ln>uf zAuou}`f#VH6cmj`W79Z70iY4{?;5ETd;pivCJSvDY%-mO;&JE%)TfhwxxSC929g4V z6g8XDKbJmxcmI~bC+~kt`;SebNkGYkbV0g682|-C>4J2DG5`vO(go=PWdIZmr3=yp z$^a-BN*AOHlmSpMlrBgYC#pIKp6l9L+OHafieIJ zhSCM;0%ZUc45bUw1H$Q!BDy&U7!qrf}wOl zxlZ{6#SRz()hIRgT?_idx(Ht9oHE-zrkQCgPWY}y@1~U zPpRi>k(V9Ll%E~u{2p939`VfEwJ|vBs|(0w%K}BBle~f5yaoDGD*AM_lNKkfd3uYC zj2+yIvRceLo^PBG zE)wTeC`^m>j2iw}={Wkl{;{?8gq+piKD1I>_m%E=fnWL9sR*eV?4qhp+ReE3FzlU2 zk0gfW&B7g+*L)kBvc=y5|GNFQ$+2u`bci=9UyLN}a zTwzl2u4ZY+rm<4|yzt49L#q|F+Dg>9_~k1sOo>&#%vcPo?F_l-`N_^CYCvA~Mq{0d zVNI*Z8Xw{~DWm6de)cw(rp(%x0lhfbovRudgFPV`FV&ea2%S%X$_q%A_P)}0SEZSk+;4Y@B>=`MXzF<$KU_r!!SX$gcb~3eV~Zen_QH$pLI}bA z2St9lW7Tyuwg|HSO8)rXBRd(ZBfl+n7jkhyXW;YU+t1K55F5KInd76~$wkX!zq(GV zGgOJw^Co*cWdJtICa+$fad@yzt=^_$8$>my=S>a|wt4>YZKA#6qG>Hw^mIgq{D1;KlwUtokrkbT zbD7ANi~<)e4+u}ayi%r~r|XSW_p(?}6a0Q8HUNY=m0UI*)sZ|AXW*+F&~y82ZJ26b z(0mdy$49#pxVc)b&XBG*TF9?<7IMMD@^hM!l9G~=lJZ~i2R1VBl#_;m+5i9m07*qo IM6N<$f)>vQL;wH) literal 0 HcmV?d00001