From 82ca24804932ed2c934d12264e8f48f4af2f6ad9 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 17 Apr 2021 16:58:31 +0200 Subject: [PATCH] functional RBMK rods, boiler GUI work --- src/main/java/com/hbm/blocks/ModBlocks.java | 8 +- .../hbm/blocks/machine/rbmk/RBMKConsole.java | 70 ++++++++++++- .../com/hbm/inventory/gui/GUIRBMKBoiler.java | 30 +++++- .../com/hbm/inventory/gui/GUIRBMKControl.java | 51 +++++++++- .../hbm/render/item/ItemRenderLibrary.java | 12 +++ .../render/tileentity/RenderRBMKConsole.java | 2 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 24 ++++- .../machine/rbmk/TileEntityRBMKControl.java | 96 +++++++++++++++++- .../textures/blocks/block_tritium_side.png | Bin 0 -> 217 bytes .../hbm/textures/blocks/block_tritium_top.png | Bin 0 -> 156 bytes .../hbm/textures/blocks/rbmk/rbmk_console.png | Bin 0 -> 157 bytes .../textures/gui/reactors/gui_rbmk_boiler.png | Bin 6001 -> 6072 bytes .../gui/reactors/gui_rbmk_control.png | Bin 3877 -> 3876 bytes .../fuselages/mp_f_15_kerosene_australium.png | Bin 0 -> 17069 bytes .../warheads/mp_w_15_nuclear_australium.png | Bin 0 -> 7360 bytes 15 files changed, 278 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_tritium_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_tritium_top.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_console.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_parts/fuselages/mp_f_15_kerosene_australium.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_parts/warheads/mp_w_15_nuclear_australium.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f90f8bda9..8b9cb1342 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -171,6 +171,7 @@ public class ModBlocks { public static Block block_fallout; public static Block block_lanthanium; public static Block block_actinium; + public static Block block_tritium; public static Block block_australium; public static Block block_weidanium; @@ -852,6 +853,7 @@ public class ModBlocks { public static final int guiID_rbmk_rod = 113; public static final int guiID_rbmk_boiler = 114; public static final int guiID_rbmk_control = 115; + public static final int guiID_rbmk_console = 116; public static Block book_guide; @@ -1102,6 +1104,7 @@ public class ModBlocks { block_fallout = new BlockHazardFalling().addRadiation(ItemHazard.fo * ItemHazard.block).toBlock().setStepSound(Block.soundTypeGravel).setBlockName("block_fallout").setCreativeTab(MainRegistry.blockTab).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":ash"); block_lanthanium = new BlockGeneric(Material.iron).setBlockName("block_lanthanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lanthanium"); block_actinium = new BlockGeneric(Material.iron).setBlockName("block_actinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_actinium"); + block_tritium = new BlockRotatablePillar(Material.glass, RefStrings.MODID + ":block_tritium_top").setBlockName("block_tritium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(3.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_tritium_side"); block_australium = new BlockGeneric(Material.iron).setBlockName("block_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_australium"); block_weidanium = new BlockGeneric(Material.iron).setBlockName("block_weidanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_weidanium"); @@ -1461,8 +1464,8 @@ public class ModBlocks { fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); fusion_core = new FusionCore(Material.iron).setBlockName("fusion_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_core_side"); plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma"); - iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(6000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); - plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(6000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); + iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); + plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); @@ -1890,6 +1893,7 @@ public class ModBlocks { GameRegistry.registerBlock(block_verticium, ItemOreBlock.class, block_verticium.getUnlocalizedName()); GameRegistry.registerBlock(block_lanthanium, block_lanthanium.getUnlocalizedName()); GameRegistry.registerBlock(block_actinium, block_actinium.getUnlocalizedName()); + GameRegistry.registerBlock(block_tritium, block_tritium.getUnlocalizedName()); //Bottlecap Blocks GameRegistry.registerBlock(block_cap_nuka, block_cap_nuka.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKConsole.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKConsole.java index 3521c9f9d..737b8d143 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKConsole.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKConsole.java @@ -1,22 +1,33 @@ package com.hbm.blocks.machine.rbmk; +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockMachineBase; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachinePlasmaHeater; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class RBMKConsole extends BlockMachineBase { +public class RBMKConsole extends BlockDummyable { public RBMKConsole() { - super(Material.iron, 0); - this.rotatable = true; + super(Material.iron); } @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityRBMKConsole(); + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityRBMKConsole(); + + return null; } @Override @@ -33,4 +44,53 @@ public class RBMKConsole extends BlockMachineBase { public boolean renderAsNormalBlock() { return false; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + + } else if(!player.isSneaking()) { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityRBMKConsole entity = (TileEntityRBMKConsole) world.getTileEntity(pos[0], pos[1], pos[2]); + if(entity != null) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_rbmk_console, world, pos[0], pos[1], pos[2]); + } + return true; + + } else { + return false; + } + } + + @Override + public int[] getDimensions() { + return new int[] {3, 0, 0, 0, 2, 2}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y, z + dir.offsetZ * o, new int[] {0, 0, 0, 1, 2, 2}, this, dir); + } + + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 0, 1, 2, 2}, x, y, z, dir)) + return false; + + return super.checkRequirement(world, x, y, z, dir, o); + } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java index c84d89a53..d1a362621 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java @@ -4,30 +4,47 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerRBMKBoiler; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUIRBMKBoiler extends GuiContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_boiler.png"); - private TileEntityRBMKBoiler rod; + private TileEntityRBMKBoiler boiler; public GUIRBMKBoiler(InventoryPlayer invPlayer, TileEntityRBMKBoiler tedf) { super(new ContainerRBMKBoiler(invPlayer, tedf)); - rod = tedf; + boiler = tedf; this.xSize = 176; this.ySize = 186; } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 33 <= x && guiLeft + 33 + 20 > x && guiTop + 21 < y && guiTop + 21 + 64 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("compression", true); //we only need to send on bit, so boolean it is + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, boiler.xCoord, boiler.yCoord, boiler.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.rod.hasCustomInventoryName() ? this.rod.getInventoryName() : I18n.format(this.rod.getInventoryName()); + String name = this.boiler.hasCustomInventoryName() ? this.boiler.getInventoryName() : I18n.format(this.boiler.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); @@ -38,5 +55,12 @@ public class GUIRBMKBoiler extends GuiContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + switch(boiler.steam.getTankType()) { + case STEAM: drawTexturedModalRect(guiLeft + 36, guiTop + 24, 194, 0, 14, 58); break; + case HOTSTEAM: drawTexturedModalRect(guiLeft + 36, guiTop + 24, 208, 0, 14, 58); break; + case SUPERHOTSTEAM: drawTexturedModalRect(guiLeft + 36, guiTop + 24, 222, 0, 14, 58); break; + case ULTRAHOTSTEAM: drawTexturedModalRect(guiLeft + 36, guiTop + 24, 236, 0, 14, 58); break; + } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java index dbf67d440..fa08a5984 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java @@ -2,18 +2,21 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; -import com.hbm.inventory.container.ContainerRBMKBoiler; import com.hbm.inventory.container.ContainerRBMKControl; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControl; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -public class GUIRBMKControl extends GuiContainer { +public class GUIRBMKControl extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_control.png"); private TileEntityRBMKControl rod; @@ -26,6 +29,39 @@ public class GUIRBMKControl extends GuiContainer { this.ySize = 186; } + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 71, guiTop + 29, 16, 56, mouseX, mouseY, new String[]{ (int)(rod.level * 100) + "%" } ); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + for(int k = 0; k < 5; k++) { + + //manual rod control + if(guiLeft + 118 <= x && guiLeft + 118 + 30 > x && guiTop + 26 + k * 11 < y && guiTop + 26 + 10 + k * 11 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("level", 1.0D - (k * 0.25D)); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rod.xCoord, rod.yCoord, rod.zCoord)); + } + + //color groups + if(guiLeft + 28 <= x && guiLeft + 28 + 12 > x && guiTop + 26 + k * 11 < y && guiTop + 26 + 10 + k * 11 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("color", k); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rod.xCoord, rod.yCoord, rod.zCoord)); + } + } + } + @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.rod.hasCustomInventoryName() ? this.rod.getInventoryName() : I18n.format(this.rod.getInventoryName()); @@ -39,5 +75,16 @@ public class GUIRBMKControl extends GuiContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int height = (int)(56 * (1D - rod.level)); + + if(height > 0) + drawTexturedModalRect(guiLeft + 75, guiTop + 29, 176, 56 - height, 8, height); + + if(rod.color != null) { + int color = rod.color.ordinal(); + + drawTexturedModalRect(guiLeft + 28, guiTop + 26 + color * 11, 184, color * 10, 12, 10); + } } } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 037564181..3e9accf8a 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -926,6 +926,18 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.fel_tex); ResourceManager.fel.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.rbmk_console), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.rbmk_console_tex); + ResourceManager.rbmk_console.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKConsole.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKConsole.java index 321008663..51b0a92f8 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKConsole.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKConsole.java @@ -22,7 +22,7 @@ public class RenderRBMKConsole extends TileEntitySpecialRenderer { GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_LIGHTING); - switch(te.getBlockMetadata()) { + switch(te.getBlockMetadata() - BlockDummyable.offset) { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index acef36a3a..0307d72a9 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -31,6 +31,17 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public String getName() { return "container.rbmkBoiler"; } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + feed.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + steam.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + } + + super.updateEntity(); + } @Override public void fillFluidInit(FluidType type) { @@ -138,6 +149,17 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I @Override public void receiveControl(NBTTagCompound data) { - //TODO: compression toggles + + if(data.hasKey("compression")) { + + switch(steam.getTankType()) { + case STEAM: steam.setTankType(FluidType.HOTSTEAM); steam.setFill(steam.getFill() / 10); break; + case HOTSTEAM: steam.setTankType(FluidType.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); break; + case SUPERHOTSTEAM: steam.setTankType(FluidType.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); break; + case ULTRAHOTSTEAM: steam.setTankType(FluidType.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); break; + } + + this.markDirty(); + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 0c12b85d3..259542a10 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,6 +1,17 @@ package com.hbm.tileentity.machine.rbmk; -public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { +import com.hbm.interfaces.IControlReceiver; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; + +public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements IControlReceiver { + + public double level; + public static final double speed = 0.00277D; // it takes around 18 seconds for the thing to fully extend + public double targetLevel; + public RBMKColor color; public TileEntityRBMKControl() { super(0); @@ -11,4 +22,87 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { return "container.rbmkControl"; } + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(level < targetLevel) { + + level += speed; + + if(level > targetLevel) + level = targetLevel; + } + + if(level > targetLevel) { + + level -= speed; + + if(level < targetLevel) + level = targetLevel; + } + } + + super.updateEntity(); + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("level")) { + this.targetLevel = data.getDouble("level"); + } + + if(data.hasKey("color")) { + int c = Math.abs(data.getInteger("color")) % RBMKColor.values().length; //to stop naughty kids from sending packets that crash the server + + RBMKColor newCol = RBMKColor.values()[c]; + + if(newCol == this.color) { + this.color = null; + } else { + this.color = newCol; + } + } + + this.markDirty(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.level = nbt.getDouble("level"); + this.targetLevel = nbt.getDouble("targetLevel"); + + if(nbt.hasKey("color")) + this.color = RBMKColor.values()[nbt.getInteger("color")]; + else + this.color = null; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setDouble("level", this.level); + nbt.setDouble("targetLevel", this.targetLevel); + + if(color != null) + nbt.setInteger("color", color.ordinal()); + } + + public static enum RBMKColor { + RED, + YELLOW, + GREEN, + BLUE, + PURPLE + } } diff --git a/src/main/resources/assets/hbm/textures/blocks/block_tritium_side.png b/src/main/resources/assets/hbm/textures/blocks/block_tritium_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d5fe399f23f3588d93bace5bdb2639acc9dfef GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf7U>YXnmc7;!+P8Adj1J_7_T&IDq6bk2)MsbU4Y}H z;?k5=U8^P)ySaR@xb*XoN*cpbr^>^r8LgZ97+zlr$kMKoIdkS%CHE;|o4)mjed5|Z z&+Pj=h3j$Y?Dsvpw_muQ5c{q1`p2^S>~Y7BFI;?mzva_;rfvKGALD;)dZ|`Hi%}Km OHU>{uKbLh*2~7Z*WLJ;? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_tritium_top.png b/src/main/resources/assets/hbm/textures/blocks/block_tritium_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6b5aebb809679d0e0703c1171982e43340d121fd GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfb1Ho(!2ImnkSf^oTz@L${Nu6sc989ZJ6T-G@yGywo^ C4>3>x literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_boiler.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_boiler.png index c9a0c0e2661c2bfbab6628212c88aed0fe2ca613..95cd24ea42b952d3166f351030b8cd72ea8ec59d 100644 GIT binary patch literal 6072 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 literal 6001 zcmd5=XIN9+mflH_gkA(ekRqTWh#(y`Bp@JyASI}D5Gm3Hk!lDcB2rWo=@3B#LsP00 zB{q;|D284?q=O(3LJQ3C&Ye4Rf86JpxxeQ8IA@)6_Ote0YrSi&ckdVzLaYD) zjtlxaW&pq-5e87q(8I>Bzy*3R`DC=Rz z(A9P|7zkZoh&UU@(&C1>9~}(?xw*Ogt*MHsaWsFW*7&$Msf-aH?;qv;o>Yel@^wpUGi|5XdYn)=5?1JbX9qkpGuadGdZaVkDecbH*n3x!s zFir`IapvhLqjc5rjo%Zs$&EHK!Dc7W8VQdcA;9g0zKHFmhS7oBqNAT@X537B2VQ49 zl};*`Wd)F8cd6q+;EfVx$Hh8`LF*ORLw9l!Ln28%_j7RHaXkoe_apdF5TlcG0({9E z^l1WEIk`APP?wdJB`%gfxv{s%ql?TiDBV+u$*gwp1i1hgPZ^5Gd@bhd|-xFX2t2C*ozysBVryK0Lhzm+ci(W3=jR%!K1oSla zBS2+^LN9E?nN!qzq+a70LxuOxr-C?Gg$y&{v}FSx{VG4d_`JQneL2R=+I&^bH6?~`hU#YzV|!iImglpF$umiz%VY$X@^)@zW(X7L-J}^N1CYyLM6}S>*2V@Z zJ$}t2wMmo<=5TUh>4$-itty|{H8M?C-45shJk!Ne7<9V+SXNB>aaA2J<>s0 zhS)(~XO<2eBf}PkYW9nTEyGG|>!#}Q;xD&aMlCxkM9GOq428@nJ3C?BbKe*598$y7 zMWkmByXn7gKYKa9R`{^K+K2vRK>iE-^*!@Ux*0|uHaE6Kn@`!B8|90K?KIIFM&C3F z9)qUqubER1O9$|)aToaI_f!R#ICEwyh-lD*$XW@uebwslP1F<LmZjBfB(MkLf=~~Ej3LPfU$2+Bws9gT)PHGa*3|( z>_&^>-+5ZQy1IU)kJbjX_D;hIO`@S~=9^Y?nBbL{(_87Ap(O$hY!RPqkR9xf?czET z0E|0J`n9IbUGFb*o|&1!DyCLc-AKD16}7Lez5NB0t8N+Esv`n)f7;O5D$Z``S*oYT8Aokk`W z{3MbV6&I#VJEd&Y+KM#(m1NL|oB`t)7E{PTcyBPrg;&IcI`#?`A=$+W!>QMatB?4I(n$c}&M ztHazUksfzfJ5rPJY$THQDLBD}31+lEWg9o9Adr(d?mn7q)e`?e1Nm1(q?s3<2NQ=50? zdp0`*Q$EyT@m9rKwoMILn+LC3+Iemy@-W3sf6`>zrYaZvPF+zccxW}lA~>jG@o0aLBE|KKp~NAS%yYXu(nihb0fk6{!d(K1zY(r% z^qK2Y_SY%Qt~+(B9dP67lruuu;f*W^z&a1QW-9_1=rdJe?3 zBxs(BtVPUVwuMFIx^wt?*kXqkYK#mk79AbT#7E>G<(+$De*0HuXU~v$qC9ifro+)Yx#U z`HbjjX3K|q4!z@nUi&?(+_s_m__%e_cWuV>=W1{pg<{PyY}e3y$c8I}n??QoF_c$o7}^oq)2 zm+##$4Qbu8K>1U#bv03%Rde&_{xv%NT%y!G`(S_njp8~ap*2}vGWFuMkdWHBBjmQW zIH$n9p&I{$WDw0MA~V2DEW%$%B+j44S$u_f0b(?&_ayAU*7WHc1R!p>t*tGT`F|>$ z_ZOH08uR7F(Ql28kGz`Z$4YnL_B}LNF3zu3 z@5#P+^u_#XKHZOt)uZ1705d0?dH>(hsXLo#vA(%3ZtjJ*dFT7Fa#uVu{M9-O7#EG! zn8MAz$~P#jHmEUU&z3tH*T_{t;T=$TS}fH%(y9CtNP(XbVq?pX%#OR;UP2OAxukB1UPx%vI4ff6O?;EygcN z0T8RgfL7S*?30}ErQlt$mXW8%`Gq}VdYXWk3C9LC-CUS4oSC$juY5jFMaDlkLAahqgP=HfUotsVw6%|r`v)n)%}kd2LFii zk3=r=qw!;E`~jVWPvJkld||@VBSydUg<|}N&-ZPDfn(ram{P|aH5L;Z_THjJBjy%x zW6BQ$E)z2E#V~Hwp?-c{2Dh&+=pIs@axm!$WgdaHfK@h8IV5#Zi6z;36mK>;jsT|JTB?(%j((78JK3|jU6hg}tw z@grh{U<}^G8z!DjfsEn!)P}+hJlNXm1(A`?_Ql>GylAx*A>ZC*gM8YMKSDZpYXGOj_T|fBfIb4 zsNcJ2GW1K0uBwrQWKrM>6KeAk>fl&~@fjY?%Zav6y~tdO-$sIr(vL<{V*|U4?c#L* zHotX^4YPRZ>cy^u3rhH3^Y-Sr5?*G&w*tGaco51!2L}fL_10q{p`o2r>OSHdV`5$1 zpjDdiy+LK7H3KS3e^{(^HKO_)K&AH=tiSM^2y}mA8r&|*MA~=2TuL4$RBXBl0NoHw zAqtFAoB*^CVO39ZBt_FYAf$M$$o;wSfKa^O;K|I7k(`qmZ;*t)!oa$h;}k+6_&t+v zEAp|v6nq-tz(pK_a%_ERbSXu5dP1Y-TCRJNUtS*q%UFf=ZK9n{i4n>}!sH25UxO(M zdi1XFZ@=4bxj=jy61>~{<1VlDg;|zKEJXbWCIrkR?cks%qxR0*_O-Q&%7K#$VSsv< zV9g+rB(f>dWt@a$z}GK|y&6n;?{-}iRL_S`A&7bpuY)(Ei)(Y$;bR+lD5_m4|0>MH zM)xGxXs6h`DLGmA&rR{7Tkohh402nYJL3?7r~nNH<5OsQPHrv&YB?=P^)qKY z?tCr{#%PX>+@XK+5_8cc7|_yTQgLBG2f~iyG@4H0*#wHI><$soF>5@zk&e|%Z20j*6vP( zrg9O4j+DWOPlS@V#^&TTb?rgx4~J%iA5e9HO9+9C1KaA8Xt9A>VF(YXv*I&H#KzqtJr^?r})KUtkwCSaKh-$f>sF3ZUxpi>8Fu_3IE_} zSz0q}^YzN>jNZlDj?)NVtHeV+KV&KsAkr&7R6p%qKZOAQvUBfqsU96-<`W8o`b^NN zl_3EDN*gwAe4cyR2!U)F+G@!|)>{x<&Sj*gzD*>s9$wywBWGf7S?QgYJNMlA z<>V(;ZA;^W9<=@3pKOZrwN3ecw!1p*hToLKib|AX1z2$w5fZo^s(ly&vaGwiTbDMt z3PT-+mm&(z9~E&&L(YRr)3$}7Ccz?*er=^o#VrkM)i#a2#UCL8>4M$cD*|lDc7% z_qFDx?M#PqGb@NPjQNymrBb`KE-rqLb2tb!adWbT{}K)H5vpf2pqI4`$NMmH8!4lc z&e-&aHb8;HYdF5!mqHO;Tj2WfoC{)bTHVU}>y4%J9Xc=v<@PRHDve9uV3ppjOkU0;KM1+*WZNi;m@k8U+vk5XxZ#y%t0GHSJ!-%UQHEW2u&)|h<5CI^K! z2oX$0`oy!`4*dFFrzNOHyK|t-LSq(Yub*0~IYo6fHyrUVg=mHNJwlFqM}XjPpku(^ zesGI8qlhgJfxC!HGa+PAZaL6a!x$0rJGVTb^lsXTGU$lw*iwx^m7IHS6g2_yz&W*iWKRr5>i(hR;P9c1S5e^fNqV2>t*sM4qtWV&kxQ~nKqO827QOuxu%Ir}O7DEF<MEqM_ZfI|XM5cRCtO#X9$fT8 zD2T-b3Gw+8gN=>)ra#uS$hTEAH95h|;$m^i;Rgl%eF*V~rPL? zY=o@fp+jH#`UL5p85<*%JM>|JAk5D;nhWvc$B$Tk&;GJ~PEJlkT=a=h%+A2d*7y-% z8g~kCe-%Xh+k!%F6bKT JlxREL{SW`kG$a53 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control.png index 59759fa54fda0ebea1445a7c60aac50abbec276a..e67d3accdfe3c5ad1a58fef44d78a006016e209f 100644 GIT binary patch literal 3876 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 literal 3877 zcmcgvc{r3^8-Hfdh&Pi`y)SCokwQ_HUNfi&38NHaSJ|2&%V3O=RFW-wS(7FE=(S~J zsT5g;qQ)`|i5c5i#u!7)_f+q9z5jmS_s4gx^SjP-o$H))-{-!6_x+qZ!tA2K7BOit z006cao3iTO{jW_KUdR;!Fwxb^gS=(hC3*?HP`m!Iyag*l@y z>=m}PmSc6FNw03xjVrc^|2pw#%j2zKare${jR}5m;G6C2^3#rh%7KiGj3*iX_~AL& zomU~lyrJFW!4nyQ3}#Z!-~d!VY;0q!rcvM%B-mIVXbfq@4ZkW(Q}>*jCJ$xVPiKdG z*Y?e;%6OPTnrlz^q>dVFZ*SK}iEjPU+j|MK*}pgSU}wkqiV8!^w7^3j`Ny58ncBq` z&o6F~5_Vr7R#Dx~JP=)iW^U&ahMJjx9>&I|cVVpMBns7a-Q$9YKu8PakfJB30a_KI zfWvVRFSOMmp|1)JzYLGhg-Zh7rH4QAg;bzAWuG%sDkX8ZOlJ=n;!A~`gn{!6-wn?} zb+m&ppxA3S#n~i&y0KXlD3^u+<-h-pt6$Y2_95%s+~VJs=ssP4c$~%tu9R)e0i63M z#JxtELLD#FwM5IPM^$B1|4F3b82h$VUtGBN`Vin9O-0-+mX3*S&@{crM>acAWIbhZy1Q4(C=& zX;1~fB_t%owObz90q&nI%K7XbC{WrNX$QlC`>d=!W}gW^VL>vpV)@=8*`L2sR0|jz z8^^V2FEnqD>%!gB(=~{ZH81{*&NiFRRNNUkK&LNJ8)C)^Y?M5lob)glOp#?VIH_ih zEGlTxRQP!a+XX^*^s5^R66)8_$p*V+aUQ;|bar;OBN29A;j`rJF%8Om>w!`64(e3j zTety^Y+YJ3gbQ-HTBB+-@OdANM)PBJ?@KbuyO0#yc1yN?b*ea`_v8aYeVICgsLI7l z+D<`q(5%J=G$$pZp#Nr(jZ(3hylYSprt^k{hldAcja_$WHa&aDgMFi-5EOr-;>nXm z^Or3pG!-Hahog-p$eAt&cM4t!G(-B^QBBNOS%IV^k!ojN5@aO?7^x8tCeX}j{VJ#+=+Owtr z65GT2{@NP>ynp}xm1_AxPs(gtk|OA8YYc`{)>vm72209HPoJ?Sd3YFucZ{e+oMRs6 zWYrF}gf)B#e9}ET!zjh}P#Kyz97o2VmI>H2Xug)X!+zk>ksX(dFME~+2L}&f5-sGV z)R4$B@7fY{VXj_wxyM5#@$np${>>FT0X>;ww+WFR#Qxw~1mvY(qR}DEn4E=$Tb}!3 zPV?BzMvJVZMe_!-Jvs&0pan%spO69GyN4jTmHXFx(8krF$S(hhdpY2VX! z75$fTKDJ)q%TsKjzR1k9v}vtGIH9zsfG&L2vsMB~OG|TClLnc%K&9Xez#ti>1i87` zHT2({n)+O92UD{}7U5b-1~Z6mygyK^D!bUXmC-Xsf^80XJd<4Y8~X5l(7i8S9LHj@ zg;$RfA~fP(WxaDUpT%Q9bzty4^pkK;3Q-EAtR0!xA^tcub%5I^XdsbmW7p?6jp2Zb zH5v}YqL%v{t~*up-|e!WAR;~rP&vwmA)JU~j?E3$bghxmg$3xs^OTHO`%=rxrIy_B6nnOGewq^ET%+?Bj~Avc z;p|gqMx>wQHTiDn)Y`+gsv{VnYHwsKRHgx~=&$Gz`w+{XJW|N6c^Ol5=mnO|G0Df*m`B9x2bXG~rQOtCO1e5I%SmseYIOk`sv zjOW|3+n?1iC%78#yMPi0Lzavd$mYoNAbWAhhRH?qgMOR4XRAopP3)k=@2`V=zeC26 zKyzn{x-IgdZmbo#0%;t|QCte2kJ_ zU1zEld+rW75r@YP!bdFvHnWB! zQgSghxY@w05Yr7RcT2Zed8?}kHd!)DgRnCH!#u3#d(rx zJSfCVx-BI>(&Ryt2CCI<+?q&K8+s(G{nkwkUG;$t4ER7qHWsb}ca|`0naT?qxWU$B zIt=LHf6reQVm+tnW!gpP1=@?97HR(=l8Rx#AE zs@)tg`bLB~$rH~3D*S5PQMO!&TEr&`hBPifu^s_I(7F_8wZQD_E92QSvd# z*KN&?T3L)<5-=kcr2@tdEQ=paQZvhD%|4+r)oT$=U%xu-_dDk%lXHLzczuKUWHV4} zsY@Ma*l>z)%3EmwJ*#>mh4 zlSGom8syKlnToh}gUe(Z_oD$KZ&>M>>Iw1rz*ZA!L4GRxf-CCwhYyBxnu3$nX|Z!k z-Bw_Z{W9T_O_W+shQb^b%5Bm0n_cgq5DbBh8M0wa!xq#i(bU2vTq2b%u4;UH#@J7I zgc=5~i^>88ZeN2mYu?z1*{ya)C8|2E;gXQfzz?ep!1u=39RR2s{6zPcr;bCtdT{F@ zMCa?*-(ha{Jc*s7esIYnN*(Tc69wo;@-3*3evsq^LPu8j=Ragfrpfigy7o^hFAF{J z>7dN+*g8>fSQ))EP7-zi>C#LB%>6Kj|74*ZqLOOKPi~Z$V9ZwP7jzm6$PCB9We!;LjXhzq9xw1Aa{~MMl`d7L_?X;OmKu zE>9;EKz$>sSOutPY8Jxw1ne!HI5>DQD-@aj@|8q3Ym@%7cg_(}>T)f#g+R#l&7CZv<@(Ql4BjXf27lI!5s($ElVM}i|O5;K5gTgnSLXjw?OPsf&h_{ z!2bpjHcUlZyL7wU#b(@HLIJG*+j)0oWo6?}nbEuYBp(p|GBahy=tM?F#^-_;b7Kk| z&o;;C^d|5LeUh#LFJZvdDByp@?$81`4%Z>zhnN%g@YB#OAk0lCrX3BQj*jm6RcHLD zHU4Yhg`Z`1(85MH(~PfEkM;@&zCEz=u6Z=<--4Qf0UH}O6;}7gPIl=7PA#DUEW@h_7%^k zm9YpEZYB%}8`4Fn4=fsNb7_2oPFo_pUP z@4Q(v)3U05Rb5@HyJl*2th%Z^ItmF26ciNt7X=y3e`V2s9wdZ+?|6_k+rNU?Lss8I z%lVs!x4D}Yl%%EeS1YP7j^@@@npWnPzOIv2B2ZAUG`8CM9{MWELKe=B?B@TWVfS%# z`Ns_fB_i(QVs2q?McT^7R>9BBO3P1G+rrP@ zLeP>%T#QP@N9Z4bqm_p_m5-x?le>_QD9wN23jM49r<;R@>c2=l>_ut*ms0vF>QvIs zZdO#h?A&Y?oLpQ~e0=O&JiL5-T&z@|Ik`S_aQ?gb*tmFvc=?1r^Hcrri{_s+H_LBA znlf_#Th_mpD2yghqt#kyEiwxvzs*sm!P2Fe=t6OX8T9M=I-m{VeZ4`*W5w&GgS;96shQ99-<2{~6MM z6RN2E|C2g8{vT?04^6B8tMC6Ou)DUeixr2amAkX2o5jD0`$qd8Q7%H#ZdT?V&TiVy z&JO==MRglz4`+89XBR4IEj}tnJzFPBXK#0=|Dsn>5&Gif?qTj^Vf95ul;$4-yREII z5Vz!KNp3;@&w^51yj)zeQj*-9{BqLLpSgG>xp)M*rT?2(#@WKt(aOo=zj-bHFE981 z$on5xaCG@6S;orE*2~IL&du48>c568Wcxqs!udbq{cm2&|5+EV|B;vDpE4Z(nb`l= zME`f!KkxZZ_5Zl-zsCP@d@HAa-tP9#t)m!iRH2~6slUibYWu961^OFI#QDo%pF zAeE+O(v845swW_!C&F4%EqHL~k)UCbVd>&fBh%1GQ-#1%g{Q#D$VAYEgzVI=)<`$N ze}ieGE^0Q6LcpV?qqf7Hyh`i6+!Cs=Pqr>}KMms8dD#+gI4O6t7Xt^iT~Y-3qdXlx zSm~ofL0cko*6Lzegv@c6t!|-iE>rLCLiu)~GnKn?Uy<~wC#|tC?UUM{^`~C_Zb)5g{_TBIYw6 zM0^%AE=out0dVv#1g#sBj7|wf3RR+VGz4&qrbZ(Rra=8Kf;q_#6 zKONA2Fz`x-?H6&NFgTqG6@C3O=1K|1OL4Og%b^+C5aHpESjIVK7!uJ(=G-{%v8824 zsi0BCdu+gUe!(NVj=9WqpP4^%W{QwrcY9mpZgvCiVuTD+D#{#f!#h#Ud(u8EbgYMN z<^2`xExdTN7ueg~cC?`GpjC}(ArYi<6%=8&I3a^|o4PhUY@Vs&o&`4|CW=cu)dMxM zgQCw#?e_kRAg^1n%}1h>T~V2S%@pUsj;W>lDI+2Yn2-D<@;*$rC3i1CG3&CI{QmSP zWuU$Lj@&68^i9xf&o+y;3+of|e(BY-`AfSU87VABQ5N2T{$FqD3L!Cq9F{xLHxwTc z8dZh`+=4-fc`o?c)r4m}2J(^e%d@Qa`uX~$O!zt`aWojU7!Citi&`Xm2f)UUio3zC zhP5#REuYqPUhPnAh*pb8%ul*vR1eenq=g%7-4Q(!Dpd5I82cjoaEdv@bom~Lbpg>Y zW}Qc+j?X1pHci5k{#LzXz2(LG>r)~qz9~Tx6 zoOpHfqePc<(Q~GL*`E(gO-_7K4qyy>Li>d~Zgg(G*MI!^1*7PJhHzFm=2s);9_q_Z ziuqwk8Eh^Ro>RojWBty0fpSURX;$e{&QqlDCPo(~cG*#6r}37?(=9>hCNPkiAl^#d9jF5=U+RX!DoSLQh50^m>oqu%dOk2u+{w`8L<9wyeJ97bZ5wR3k=)gvc_S)WDH?Mm;i~e#T&c z6hAQ)Cl>~a;~Wh1M|)0Qzw^w}qIe9;O$l6>k1Lasm`gRFlFB&ypDV{C!LmDl#vr16zVYAV9) zTSoEk`3fRV9Vp14dR6JNah8Qc=B;;nj~^d%Waa6@#=3Ug$1dyrDBpIj#$Cp%^=EuA zkQ)!2%){%mcI%CWhdD8#po46c0k3;nhS*t1CDFU6iFRGg<64jKMZGe<*9M)c+SfI~ z_V9TYtSAF6CPP$T6@4fQQvJjIO|+%y!G>Y%ddkF) z{QAWT7^eW%4ft@23W)Dv06sK>^Hb{kO03TGO@g2)b$=}fx+oG7*~1Uc5{D9iZ2b_U z0a7wjjtI7yi~=0>Gd(Gf4|=>7PFIO|b@|Nm9+ms76mF;})w^+x9s}yHH0;k;n9MOH z#hs-mjZNyVp^DF!dLRIO0&NE z&^u*dgL`^Eqg{z;{2Cm*imfmpEH)5X_&}&0u%}N5sA9X3Qr>pktM)kF-?5RHRWhMDY+IiemsX&5x~$e1gkUIhvW9 z*Epl^Nt5n|iF?hLJv0{w(Zz6I*!iw;ArFf9@>YFmf=+ladTl%#r!PZE%WMu;F=wZ1 z#E6#Iy*`7WymAGZP}P@%g<9jKhZyy-H%2^OMl4n;Zk+EpI#-QIhBJ?>ZOWr;1bt36 z`Kg}sON`Bg`yxCc<|$?{t(yMmZbafe*Ft11gi;tjn6tQG>Taej%D;kCLgrZW$@{mK z^V1?+osvjoA8L{)j8o1}N8gOE>Y+e+RC&Ik@Akp>`A-dv!)_z{+r6p|c>x1j8=Pub zo5}%^P?v9Wh&l4m`A4;*#s+Cb)Xe?*wG24X%>A#XMxrcsJaAkltCffDjAGH|HY3gq z4#|D&;pS=YDx??SEzXm8<_lM{-eeiy@$qSq@L1P(cG|29zxxY^lC;K9q+%|a&&u+@ zBGBP{IZ3G>hg5_14kB8bc#%tof_)Dp#Gk(C#bENPS1wo-1kgL;MsQPzAIIvgwpD(+ zezTFZHoOZG{rRx(#pN@SnCa5XA_!0-W30#z$`Hwm#VCwk;f5<)ft<}zNQb3T&uhw_Fy+ZTo$CTgi{~D zT*W;Mh8X{q3%g8pvfQu@xQ0E|azKLHr_(3^Mk(o$>&^bmPw3LZlCE$)fEKtAi2;`a z8VY^h;zVehxE`k6*)U)fv1Aaa_2U|2dDH^lmpjBnl-(Lt@?CH@nwbJlC&D+7sAoT0 zf_W`e<;4tvyGOF#$_ks0d&rFxnp`|cL!`1>%#-n!M=Qw=AJVjclehQ#c za0#`?N|t%sb?qDOUcvP#Y3R@DX(%Y6q~bHRTz3+ffJ$(zbmbfLkTCJ|4n^yjtHbKx zub%)rVS_O($vSRosR7Ro!2*)=hW(DL4-e!4o?SnU8%f3z+tGSX&oB>alIs*34}GKH zGr^ZDYsZC!Q~o5#aTu0A#?NFo1s%TnSU~13HGTsg-dF^ms?Tn}F!tHvV~0r#M)4qm znQt5?KYY`yU(wtKx^wuH6_pd)_wonftj;Zo2txEmiUoCe67?W;kdVp5Gns29e9$qf zNYMVeB3-;@T@pwBcj=oFnVHTIZ4uYSmYBw%Ct1C^z?_xd>n7C(JYy#X**2=#0n3C{dG|sJrzPW$*M zi@17HJ57DxGnTTR%2x`M;q+pXT_u*y!y^-R;cKopGI7QfR<}qn?7wnvz{~hnqzhKK zMf~`CBdHLAX1r+NxP?d-lgDWmA0ZGDF&ythAEM{cz!=vvCU@E&1|qoY&Gb*jhh-Lr zN{X>^bt=hOg5^;Rx^7EOz4AK@$y6s?edMI%=6o%AH}zQG<&Oi#21ncEkzxb>g2aqT z^8hq#%zfWc52)w|SHE0D#C;)LbCRscCQakr2_b(wGqKV@#cAhZj84;5q!(&yMi$Z7 zRHG)bLgV6j|LyQJWy-nlYZgPyzF6h5WcP|ej z(WZk&{qy$d#b@M=Q|wD?rax97>%zKG5<}zZTO~U~0f*opTl0l)-EOkU9}NbPdL~KY zI0LZaEsBPm@5zSMl3brj=;YhwHyZ?}?#hH$SP5%#%R*VKHgx(mGzf2KOl_?HZoIfi z&|L<_;SMnHWd0cOnClW!(8f&-AGopBCs}*rD~Ww(+WR*D{k!rgX^CB?Vf16%_ni;~ zWu+fE3dQfV9hzJ$WU`}Ghj-5+mMS6(7GFksWGVZD7{D>0K zV%;$Ql+?H``%pC0L{w>^1{_lEX7iTvaGm6|z3Vd_lS^4mXZWAKf~zEw!xvFzFEG>S z75~UKC2(-pNYVrcK@?*2bt8@YFeXwtha!(uwb-u5`n5^t@Mea5P#Y409R^5lkO zFYcD(-|fz)MP7R4C&_5aDJy0qJiYX3XMcUZJ{ZSmENHacwN2tY9)~*IX1CGlGfhHV zomrJS2)|c;qap-SDf)+njlhA!lrlZU=&)DzSdw7Qs#m3xB1;HkF-p_t)s)_M$&O6W zK%m@yCZZqUUgq4RQPOdD4jmD8fqOyFhvZ`pghHizyT#;@@wv=*3Xr9}%e?Rj)Yekw z$#8XKhRs>n4w3^^y}LdSs8B20#IQHSI=uA|>_x`DU>IWP?;Z8702y18@x7bHd-eVr zcLprt$>Vp0ontq#Kajv_nS6Vp3DZ%jT#~^EiAlS7s_$rwNAn!;?tQZO2^%KGjgv_^ zTB(o(xhCUQpg1By%#5Q*QV*~j`qq9h{QBm3=Z*IL>uV9cM4cEu;LzY{cxfvHr)Y45 z#JDpv?npA``^mZ0wW5tc1|FT}#kf#m2gh2qVF8p~n9rDd@LW4De*_F6S~F8T4xO)* z_RM~u{udViQc2*QHdm_%I-bCF9zPLt-jsF5rFY|Rvuy@w;+0rKBP%O8$q;pH`Aovd zhkK&aiunbu%t82J99)*YuaYGbGRblY<_k1sGG4Ki+I=Yo6g}@-FGiH65LuD84N4d6 zS-Sv6e!NWrPo3ZX?)YitshqXzCtglL>9W>!p8YDo;8UVK2Y6xRy!?XFDKQEym?=$6 zPOD{TjY&1BDm&Y~rt{Q1GzIEUa$_VJgU4s|CCZH;>XOgfb1q#tdf7(#O|kEj zzRMp8PzDLhG{XZP2tGRAFc5%xrIy(ybKEvRQfNqo3|F>jx*Z%gYn|4pT@9jdlD-Fr zbva@|w65}FY+(>wpjXpk{4u?cuJlA0)TY&Yfb(oPHf-pcMls$yv`3#FR~)l?6?rkk z=Z_AEuDgzn?R|(3Mm973A9wP4PTmw*rMA-On`yc0%9q18sP-^HZcY4io8U+DE|q+{ zw-wW|{fP3Nq4V#!26l-ERh`(5FXOY%pfTf2rSw~kIO5(hByVj(7tJxEcNjU}T z*5cO;tqK~=mJ)ZaqFd*lS#nG_7)y-`ilieMN@ql5enn#Cglq7GZKE5siS+0c@y(pg zL3(`WED1E*$ai$agbR3tVSG_n+czmAJ*5ft#W3-g%>nEzN)VfuC@uj@vo8NPda(nC zMQ#&uv1vQn!<$KEk%{iE4IsmQSzCfAaF)o-K7uHvw)hN3uA#onoGH_+dZ@Va^H3Zt zcG}1dzD9oem>P2z^@zEy1pOer84oh`XMS>4;t3d|A9+czN?iGo+}kBbE_-W_ zC+EMbv$$2!q!&(;;Vnf|iJdG)gpTSA6(EXsYVxe6)8UM|x{A+2s>6h(LzBy5t zc{g)L+SIP0G8N8vvl|xOwYIt{5?zac%-7DAqV4~Tw0}~5o~nF z7KvP|xDWh@y)FWWOyYy*W70DYRZ=>QZI@a}GO@=83_C~7Dof?{7ZvZc2wfD3$Zn|DJ+C#%br`=AobI;0(CX;FM&J*A?#+*uW7q;PS4)BPesKc8`$IQB0%x4ryv^W*z* zoR-8RL;bQ_%NG@{8MqEiJphmEPr=s1SIVqWU5+^4&ot_+%7I-0Xd{}cvyO!M{4`3t z)3XAUrYpQotop+TP5J-BL)XjWY^Kzs@6n*Ur*hNe4k6^MuLl!71HEsB=m*nBM)k z4=dtY+uJMuELGbJPu$ERM_fxb9{X|bU*oH37h)FVvt-xREcli4#7<{TNPkFBXPDXi zD+#=#TndCEn48AK6yUlH%|yZwVwyuMS0yk9yh##O=HyavJfh-MV2Hh-7a1t(9+*Ry{xND!(~A3zzL{p(OdL zCN(09Q87*KR1Q-sH2tEePoML|&tKHktnCDxXS=RjkkQ~s>-S^t!M)h33l%~or`Xw0 z@E8QJ>5KS~LE7LyfhpREg8Ms6K1C@9JqemM_8ds4YG@V(@VNR?2?#N#QL{6-??8$& zD?r=$rY2=Qjx^&*lWofu?`>{{fr39hY-3}i9%9n4hn2w}@E**o}EH%@~(Ob^*alBe4XHck8l=diU+U!7ImZ5n5 z%@6ru$IEW`i~bmwWcZ$G3jYuPA=Ccd!d>TqvCZ@X_t(H3a*hvwfzu33yG|_}HH2Y_ zrWTwXU{1qp zy`591*Qy~eqWg;#I{ELBC!N^Y`F){J1IdN)(ggPb?}@ttR;+C)U@Jo8lxFWa92tA< zWf`W-fP`KOTD`}n!Z-c$?EQYdh2U2~O7Hnk$OW&p19+;ubMIOOZv*sMo#DSt0`Np% zR;|emZbjnDNll-15v}`99@~6F&7vMf$W8k`3G~m(gY4Nz$xS<4RedOWfT!*j9YssY z@~5nt-k!+EN}yT8@P@Wmg;pnWbpC*g>Z#9w22S;)7nE|l*lNw-#c)d4#)t0br!APb zA0LQMw%aIKeTS$n$#oRD_!JLjpEl6 zkJHBgl$&Kd1pQKt<>U2b|4~X^t@~U|zW!jS8cDhScj^l8syE8%xbLA@zmMV`@N6aU znzOw{_cDUx?F~`c=f>!0$JE%23=OAs5!?D~;(Z#anBeAM)^UGu8L8`%q#DS0B2$1A zm7TRY2whhzgExdqFfQ+DBIk6a1$v1PyuX&+?PrE`irs-5xQsDZDnviNdr>@Gi@58u zWBDe#Q$P(om8cD^o4kJUnSKgJcNY6_c6eoNd+{&=myDt8r3v(}oCe)=QFe6gW_LD- z!)>fQSsq_$*Jl~>{Y6JvBAe=jG}p*YxSYoyvH1o5!s)p#2ND1tx{_5GSdTrm$Q0^K z9X1=&GWEs-K$wXu4T_S=0kb{t&^M1I54AXez_*oMN~b>D0{_>y9n_8uWX#?bYOGm5 zGb`n?-Vjo;;Ka7*i3Km_3#4QUs^mJ~N3+wQMrg_=%xFeCT1%z=x2)ojx)Z(cLWK zCPcmS*4;GPdhd1X$#z0Kus30#b%FqX6yFlTRB9Hx;IM0vz-b(U+z0=Qpk63`3zi{l z9%UxILgPvtK%A18)}5`Af1-4oBI`Ck=2vGjkQNn|8!mbG^Y2qk&+a`vIGM)vl8=;% z5rtl5hZwV;e^6L%Z@Obp*z|qCCMb~75sl;i4R9MUDf`9VanNR#$l!N?^(e*NYVVm4 z8m?087BVY(>zwxr@dE@OHjc5j2Ji&dCnxHUuOE2qW!XJL+|G(QKSK;gjTrSIu)U&q z2yt1j^Ef!4MvE3d6`v0eUK{zS*8jz&d%*GPv-ahSu?M|69|<&0tL41JeD1YAn{76? z4`vL0ZAQ~=`BPjQ^`&RFajTj30keIZB}1*&=9o+ED0Ot=h__&V;I2iEeK!ODh2-sP zk8Pq@4&l3g)VU}xq5Gbf;)*?+K`;k>arBnKhbM=5=!rG+9~BtOCJT7;d zHVpd)1uNGN+yRRv%FYv)MIu_cG8h@7QmN`qoIku?4|Qvdjal0#ZcSdvf_)kf9(@us!V`Ne9QPL&!vC-HlPY7R2#o0bGHB-NhFq&hc^ zDDx+`qQbnv!CIB^=?ip3b*Cn^iz#%w<+izFb|XI9ufg>`k)RNfnvfo~kUB}T(QaAR z7j2b`6=CeO4B!IQcWqhO%LwN8k&H&6<>EKP(ce@$5MuxDA^I+!_hHEassvu9xmXCp z?=~1aqMsImRk@#P16lNZ6tHR*y0_l=xCda%VXH~m+UI1eQVd6t6(gE>akLp_Mx4^T z3>VY8tI=}d&+0x&nwyfl_tl#wt2VJ+U;|@iNp3jGgP8UVOUvl#wIS(sz%)A5Ki-qD zp}U!ppXdX?2O%dR8Zz2!C`d-OP3X$XA=e z&=XHKvi)m$XDZ+933)m1qGhL_WCz__kQrD^ER3Vhfh6 zS%T@8M(sv-k+%($V__u*Qx5&s1HDhl-3xnG%~Y;4n`i!Slzq5z5`9e{4fO=TBKa{Y+FC+h8} z7dDyX()z-H|0kt@K1ggcH;+AjSLWJlnz@k2ZLanphO6uCA?7UC6{9lH_&_!5qZi8fXqE}BYU4(L))^&6Q z9CHNA8fKB8qT7bGS@}}joZPKjC9{-MT)b|=e;cHa4j6>T1@@2uTtc7yl&t*rlV(xV z023mf;~x9V$f}+*C56$S>|keN*X8tty8|vcrMVDikzzH4e(|eoh^8pI#}w+_)tM_~ zd~{%`wY&99b#-O|j>jSz<*P7>+DsmE@2chn`;CMQ{%FFkWx25knJ|sl(1%TPo3k-O zqt`I%c3A;a3sBI>csY8iVKZ;Y%m|vg4q)~J!woy)KDz9cE5g(zS(ew7YUpoCZi$(x z)>kSJM&U*|ORNn&YqwB}@_=Z?UbH9?BfQXh_9-aK=&WrO^0QlPDAw8^5V%%ujvo3j zdJ3l>FRU`H82I1#Basgo;^bmM(RRB{8J5LWH5giwe~Lnx^?B^Sw1xw&f}LEb-CL|It9X?8OJ&~aMl?AM)`)b;fYPQ>{skt8uEQvsVr`#g{MUs7S}Mf zrl>heNrS*p&y4c^t50B~U4qF8B8pRmPidT?8sl(EE+vlkb73;IHq9yKADV$UkgvuB zBJ)*%$-iCFw#(2LTM{Kc3t(F75hrGnvC7mFlg*KWTRpi`c$+8V@|-_kSGr zR=hF4Gaj%iUx^WDWd-0W*^ptzap*V6|FmY}>@d^~lv32AtKwh%MdtG0DRH!XQt3m4 zpj6FtRf7=aC%lONtuO3{Nftoo87Ga`uwjlj6bW0gqvUUAst@akynPpiaVwfYVZf|A z6G5XMvSEOlr?xf+jE7E(gXy882}U|LOu2LJQWW;|cOzOfdw%wgECRG5_4o|C=`J3g zgn4*2%Y6a(jvB5$n&>t}S02^Lw|K-;OH~lDrVbT3Ix?WGv71DVB4rr@_~2M((}U%i zRE0E8%PG{3HeeOT$wGp7Qb812!wZCLa!1r@e`!jYP*sMvQU&~vlI3|S zzJOly5(EwWx_?>!#bam_Xh+)ie*w7c)idRGe4%BK$tcWemSLENFpJAyS7}vcYbE@b zHqBU8T6SdF&}zl54mv~BKz+lE-#~Y9Ey}PO?_XkeN^vJ&VH@ajm5%eEPDcbddb(xy z6b$2YUYO@{ogY;Mb&*uLL2I0!RB%?*OnJABX0%Da1>E0E53pYvUCHYqc6$`pCcixS z#J79?XhVjWWKGZNIch9c{!W4vTkB<*pUMeCn(fIN%dEa7QjBH!&OiinD&p-8Tq9BI z!QU$9cZ<_#ng!pTTsM62E3W%CdXLHt9sFM3LEJS)!~Lyia<;_Sbeh(chcG|oIHOs4 zOS$Gs!rxa33D{$nZ)!it1z-U0`|!Goj!c4sa4lv{h3Ag6A`Q+4oM0Ipod(3^I|SHU zr2T|_w)XazodBP7*O{Ny)tEGi3wg7MS$+u(=X#%)Aj7aHMC7n51F?sDT;gx_f8F~Z zhQIwMW_Vqjrg7YlFzm+> zoxFGtx6+OJmMjY{&1g%%>YKWb8UH2IJWV5@O`e>N^|KKug{EF^Q7v%)3xU^0vNXN) z@mqWbK$=z=sy`RHldt)Y>t22JR5^%agkV|fMihGaI8*YFS3vo5k1ifJTHh&LHejms z;kbRhZlU2Th*N?v?Vu*rkTDasE|6T@bZ!HDe-ij^AVye*U-3MA9VOqhS&dt;{*q6S zbe3fQ#0hCe)ouKi)^`;K(s|=G@t6nKY*B)ZAA^-@SOhQqqjvgXfIgIBAnUSY2#?mk zoFz8PVwdLF3I%0Q!1;M7xalFrBpi(IaldbmiS;J7CJs0L`?3TaxSc}S``$ut?<8{n zx)S(v>L@R3(_maAA$8L-Fa}?m%T!`i@PT^`sakN+KeORMs^;zoz$Y<0ybZ&c6|{vE_kJ?OQr4oYr99BHe?^JqoEhx{b!d|f3q8CM@JB58P_GZ1#gG`!ggL3Yy2fPP>o=hM zeDd&qlS{HQ+CI*(?jxDsGokILd>J6(pmFJW2r4Y zCF{1sy9l>>=3IIQ#h2v9=+M{Nm4U$0HlcFN_OBuoflkI?wVuGZRLd-Wa}iyJ5!r0cT2rWjj9YTCNwJ%83dk@GG4?Wch=b<_zi$e=wJV6lEe zOdQ*t7-O3!dm1n^NOU=`_#}W(uN~X=1Re)JuG#!?^&{)BH5L4uYORLQIqOS}7y|3} zS~qml?-!d^ek@hPAXtS*Rt@3lC0ZQRIPa1y)4C+ePRwy;ACP|pkp+=fNoFk0F2xfx%QSOD!TpkF9Pmm3>6J>})VK8J+zVGZ7v{S};2 zcV&o_7a2PgG<>6h(D4ZzINE|ax3pN*1Vte0?w5BtHgtz zD^`BNb$(eS!alH^>Q#HZ=h)aVAW1+`u~t0yO!=KF{0kRwI&0s6o+eq5LD2j))i+GP z+(nRoHdP0=7SDagR%Nk0brs?UCF5ekLT3;!;+$9#4eVCoGiwfxLU3Q!80AIGzlnMD z6vAU^I4Ej$G<-|0Jg9Ap6#bFB5me#(M~6zN_P}qEjMFHJbjkWy(fiks=O7ZSyK`5Q zih~f#0W-*3OUMe9q`{T;dV!JuUZOp0Q%G+av!x~|1JD^*kCXp1jML`r9`f%y(h++j zu6qgz`R<8Nx$lmz6$DA;*y$x^i>~@UU5rxx5D`lLTa^DI_aZZ|V3UFA+WXJpjDSAJ z{?LMXyCpb%HO{{Im~|;#8pm8q{v+7 zjev^1esj9mDsp)P*2jjw{5IRhm(7LEf?J5hpx{;we>hgtu5iq$ez#2&U?tm%w3gMg z2VF@-D7QaoEJ3Y$A>*B^% zT@E{jG{?iOGJl*-${RLkLa!gs=E%<3{SXhv#NA^=@V`h~bn9D&osUxomA8JipQRsD zOT=N^RL+M^UlC#ZI-M?eO)79T1C0p<-5waW5(YIS6wt&J(gNSS;?d1hJFs)uf?jCq zKNj^ISdH@NAPPGFc{O`5p+ZPHwqEvKmF;P|0VGz~H7>*2`|!?@d;C!EGI)<^I!sZ8 zVy(A170<{5JoOZY4r)t4pd?+6aniyM=S%$E`5kIM<0x9QJea=xZveK^eo;Tu-Q#77 zbh}wLQR!RWnT$uZ&@HA9aq!9ZPB-c?3F=RQdwOmzrv>PT^4pg!=abtNztDpMAp|vh zgv@3_2MxrKw%LsGUGsBE1OAwh=Lp8Jl`%@YozOVbLJk1Z^g~!4!H1)nT+i9ti{61W zhA>*Ug$aPSt?RG1m`b7b$Ko}VeBrndw-}+ZlW7;#Fc(Kbtc$6f0*fl{o>TGIe!zV` z&fJtFIUDpb@7q^8Me6oto9l-*KXY`9m8K|to*$hKzt;f9o;%OU`cfTwz1jdM_6QGe@Y_AK{Z5<1`P~VhrH#ep8{dA~z1*XP( zj`yYWWn85k%?)jn-1SG&wFK|s7E(#wj#Nen;F^a+RAam2xIO#*bgF5T7P(9AVBSy{ zCvXc%YwK_fr`sc~dg(WCKJoQj2iY9_q=6LA%$0bTN^L0 z;lJTJt}{}>a`AF^Qq%C${+fb$%=b(w2FZE>7sm2KKi$i?w=P4dvCD%(*D}C{v4?~f z>91WeHN00l@d9c64dfO5(k$3DV`4tXoT3te^&+5J8mQnY=KMVb>DqKg?&qO1#pTK=&NF((( zcPdQdQ$FFb9!HyQD>`%A*ohER;VJjnYE=X8U4RR-r+9?}A7vz2F%NyhjEZrd9$9$0 z&#A7#8gHeNTCx#ac7AQB7m&mqKidwy`4`a_9VXK}cc`oFZIEPgo`4ru@MX|L&+gSQ z=BFXQjeQEl_4W1EcA3ZY3X#ZqpuPB2C}z5KVo9f?zt^0*!~x7*gSaMVm~-HcYz1N8 zV^y)?xi5Z>ZJT3$?Lqf>KRDv<$q;0uIA6LPGcSmb>Z?C38fyLp1THFUFjrnYKn>BRY%@~|ML z)Q6tSUrT*au44ZbX`caa2aSFDh_lbPBP=VxsBj~;7+74aQ}xS<|&=^_GE91Z6E*N{^LS ztJl9&eez$7v_219(;S|!drBE$jg4DZXvdy z-(D0)z8j<5fAsV7)5}0jhL_>wD_tji1xDw6!~NF0Q8Us#Ro*b4JK$m>B4uJCqDG=4 zqFJ2$_aHS-(DLCwPhSk+V2{6vxUGXq@-Wfp$FHKC>z8r9|3V6a{gmSPg zfdb;=xOT~A_WRY73YE}XzSbGX%R@pG3sr&31_B;T>yr9bE_Y>1NDBySB;X?&Kf}Fs z+dr9ngo*+9e3caWe~_wVY51zgbVk+B9^nU$F`X(0PfTClP8~@JHy(IDwqE7=b-~x~ zG6m79x#sfEw>0VvfU$d*)mgB$jIe zEPB8=%-~8E(BJU%;I8)EUhU3c;{3-|KjL*f>8IOJ5Jiy4n-SdIfl&RS9*-CvSb9in zZ`i`7$Y)RMLY^X*qwiaN?;wqU?iR+oRVEzeZI;-v^(=FVik)C746j1gOm%h0VwUbj zDev=^Xi@NZQ|cp2N1K zu;q(W;*zIWBMsGQE)I<8U?0ydx5i|4#Q+v+@Gk{{AEG81FCMW|<@M+Rmf zvPt~+C{4?lq{I>5-v^f)9O0WUBNfQYKhdkW4Z^;}Mbx~@%Ph)P(0+^mDhZkyFn%j| z`&>v%;f{b-%py)k{Yqrty@PQbDgz$f`?wP*{3N!7IuD~uBO^fqJpHaFMm+2LEX_*l zY{KWE%whhxe{Y9O`7Az7e%j%HQtsR!`ZmJ)TzI)o%IcvsexP%Tmg&{#0EBscs)$Z3 z*7|qKE1vLKp@32xUItX#HL(1pmd35$4H_YPL9BZx{V}D-7AuThOD2Y0a0xfsKG<^^ z8hEuDw18UDufanW1X26Qku*cVa4h`1H?~wL-#2x+|C}k_<+?bG@R@3HI0Q7tn^K^o zo1ZM6^zx1?$~|yBZrawh^XWp%AHH?SDhN39th}%Ff=t(XO|mJkJP(o&1a&+6mX#81 zZS`a!5eX9E;NVcY@iuI?JyX{og$@7P9R3y=d}Zp{HxbgJT#)a-hwrKjX&?&~00dJ$ zzIF7j%=*7ge4=vEnUKzsknt9?E1O7o+%C8C^byRUp~TzYrcj_@Uo9n2KSQF z{!o)AmAxd(6*rGKq68!+6Y=2CYf&`FO%?%DpqcA&SfGTAntgiI&7kB|q-zJy0BiO_ zF8`uomm^4QCpqF$(~{w=+$!)8UHwy|5s`RMSb8#S`&ElGA;F5V743E8l6Ze+83GPX z)HbfoML##rk8SySd9ycGuN7p@1AY2p(%n=A^u`VUXnGHS?ApiNkl0LCRo74zZhM9l zg$*9I9+VsP3;V+`1WC(rAPp{Vtb#K3M6Si&*cVSAO`TO8Czg&Ue!luXVQQWnOi_y` z9IPH|pjMg0M@SYt-ndP+O%m#}S1b|!A#v9a#KTkZo(o+%P@;8+jlnJuJtvI+SzjV>UJzY}=xt#)(BuJP{nYboTEa+byx|%w`soRSXEXK*92r3j-%=b=pxJP2$tq?Nt?#L-Xpp` z(+2;f`VBHE)e&wLdDUAT-p)%> zGpB)UNMbs;V>Jk@%fi2JJ!-xDaj)BC9^SzHv0@FrFOX_?1sfj_9`-B^5v@r{G_~Jp z4KP9*9R8R-LxOrso*YKsNZ5xG1B)ofm_U6HzXuY3}pf>`Q& z-w7NK0e&Wt>&>HSBHe?Gl*=Hh--Nw!sU>h@J8?>h05dRja%6T;PGOS(7c*edVjTO< z-Uohm?$r|gao&}9ol#aaDt)4@3a_70gAIBzm2V3&DK%Edm(&F*tQmmtk&E(niJ!2! zOX0Ba0p_&hGiLbD!nlPvfBJ92)SNo^lp_+k?H~ z_l`6HO30Mt=d>-nsRcn;P9k}v&ox&6j2Bqy3sh`WjNm>-hJF^1hzCNhL)QK>Q%I@* z>e+f6NBc7&)?8HuqAF^*pw&AmiGTXuDZG(<)h0)yK6EAR67XhCP8%SOerK~z^$?#U8%Xx><~ApeabMdi24o=fm2{v zanJXentFRUgjX|ILaf73*cgAUFY!kvj7?YVQlW_828ma|l}^P6uAFZ5o2>ovRP1mg z*R=|UB3Bb7`{v5G+(<(1K-ATns^3dNP)t5;ofc!e&6&!Bv^|4$%gu!d=OTx7nyQ80 zoD%-jYevsWCxzBGWM%3Ld_-GB1j`B(#gWk^=)TUkOHeh5<83{ybtE>_Mk|>@jDEsC zCkSk_PoGBptT@n)6-Ea=m_K$WdejzQlYCBQiB-9J3y{wE0S3<(JmdtlipD{7-v+s= zeR=N{@(9laceM(iwFMwE+$%94_t9^HN24wYU(wK*YKfug(rVWaU}m2q2@_T*Xf8eD z1ytADn$NYXjG3j;7{cBlM)Tn0mo6Eugt_=)3&X+UT0hoF-uHYj2%Wt+!fxhp?zI*% z6-`**#0G~iu!YD=peQ|h-a~QrH@RsF5!S{x{GA2Ut~s3y7@zSP_GXHqcW=OP*jgra zR>@A_5i_<@2}K%^oqE|NW<<6NBWDAW<0TXX*VG! z42xvBKYFQc!pXjEV{*kB)rWt!K*5BL%>qlsFEblbl`8rvsPL^?56Eruq!`ZSvfe_( z0TT$*sfKguulk0T=2T_Tx`Zv!m6rcdmFw9zq=~;o$fVg+!dp%63U>n+FaV&J9OU*>8JXntHBTQ+@jF8 zR6-F%npUAA8JHTQ*;~q~Q#0qWQ4V3yO(e&^gBP;a)uLFVd#v<+yw7l>)ZKUOQhEWk zy7x4haoUOEM7{CKLoNEPnD=LV6GeD(4S6fs1@?k$^D$^M@LlcN8ptoS97OlLdy??O zMg8Dgir=srh$JC37K#4g-ix|SgQ#_r+oYNq3&GAD_OlKHTCkC7z-ne-XnMQDg6_tXeeEF)O#P;)#B&TOSCe z$ivEUG;zsG6O@fOO3NF)EJGpyh5HGPbl4Rn@+b(dQ*1qlao4WWRTyW^F`&2rxZr=}a zfBB1ElM%|1i&S6oD_X9KQ5!q<#Ztm&PA~KuKYOgG4r;z>Hq;(;2m;w8)DU1 z^*+O|j}!=V$)B2L6Hcx1JDOEow0~hEUYxeGS!=#JBuw;rm;2DA76q|3UIKwhL~P?q zbq6K|dg~$8NWf2~bN@x$ucln2Q))lHW91rJ1R_s8}_u~G&SAD(oDIN#G`FOGWyMJ+86(xiBue3N3y5;2A z$PH;OGA=ZwfLkKO6^Zask9rirD@ue9eBc8qHyDXeubYW)dI|Zqk4*X_)f!%X<+tGC zH+*!h22Ax3CuV)G4WBQ9>$&Hh1l`f+7Ry$x?Wvw{ld~O(@%p#JTVH?WWEBIyv<-KB zaDndQeBx2(R8i3Fa{41r4HNku`wYo%t~Ua1kN?qUZa%mP@EH$3Y>rFYVHt@e{5z78 zD(*S)jDwy4`&kjbOGLN{A2flnuWRPN^Yrrn1sDK3)2)T^9Tutp0000XEFbqcTU80LHM2H%lAWHNey?0Vbj9#Mm zBk%wHz2|&5@A-80wfBD3v#$HT*Lt3{o)7!luXMCjNC@c&0RRAr>NAMm-Dvsu!NZC$C|FD!Ec^uc?~COwnwyO+ zSP$~_-?8pyGA#Be6cP*qd3kvWc!>zOxY>b(Bqb&PY6uJS-y!(jeVkEHZ+>TY)_)Wr zFn4P=I1&YSaR&ZXgj%_Hpk!F?GX0+=Advr&b$0*vHr;I)$Qz0T2?+@PUD7{5P0jx| z6oL2;+8w0_```KgUxnQbe2_4Z9?adv!_E4xaJH;}Lm|ORZZIgy#m&IQ#p$12)UkI# zxwzZAAc0Ey;y|t!aAzAAFL&;L;WahEs?P2xsIxUp6(YlOryu}_+knL&qQXkb5D`g5 zVId(QWkt!SPn96bf)WZs5K(0XNyUG-5Ep9?1k4%r57*{@b4C9v_irm8kav+GFgLg- z%;u?^3j+ABC4=GrJr|+>s`qcM&415D_`h;NcgcYM7WV%r^gphh|7m=f z^If;Q-L>`eDKekC6D6t&Q84gc*fxU?A$}VMo+2antS=^wV2RAZSha)k*f zixAi-NFchm1kQ`N(qA-j%(o|3CQ2!$xKvV%AufJNmrESUp;r!kL)}anq<|JUmBMWA z1kRX@`p$mClwPa`&Z4)ke-Fyq?Rm9z(Pe+0Y0@6AL(nDMHs#UK3JP1=w0p-A-&v1Y zv7h3`_I(Xb!deyj|L?vD68+&^s?V(Vt26~^cFVX^pZk(@i^qrN3h=py%Cb9SM+rIxW4w53KRB^tqUz1$+!y2ubU+hG)Fp{Ki2P}V?19_(-*HZbUj?tQXn*)59L%TuxrJE<;Ta=UTrNBo$J`Gi@O3_T4Mc7DEeA zY1noW#h+ERR_`NJp~=tx&GWMei1-p*U65Bh%2rh0=P{j|yzDDS!=#ZlY>PmCSi#Ss zRo1=mA0w?$QnbEZCwqX_dVl@H9b=A*}kO8)du}c&+ zH4O28W_Yq|aj6^fo<^SJXp+d6E#=MVn|4Q}8q+aE~9dbTTmkpJO2?V-c{gOfUn2%Ae?}Q z`@DM0{<%B@-|J2EaA;j$Kv-^gMyQ#0-1P_26LZ6Pt-Rsh-biVsNy^2%wso$MXbHTq ziV>Y!?A0;bbv*FSrsR4x-||783}#f46w{bTTm**ak}u7n`#UAa=bgG}v8;3+9T>Bd zm`n~BQ{%1_x5UMomdg*t3UIlu4<~MO zFQ;oSZDW zRQ3R+eqm2#T0RVYnX!#6pJRr{va|@qTdEK% z5mh8g^~{0{@DX|`{A^c|Ex!ar);OF4Sfk}bZJ>m zBhxXZ!#!4oX=!#P17mE8ffDZ59QX@Ghwl;e)I0dtH1^P3v^=E_X+HAvCZ0910|a}s zwWXZLqk9|=;K7%+Y5#Uy8Gk|ahGxOuEYA`$nXlzG9rJLEbde+gFvN)y5=&0Tv*tEq zExlMA1ouVFDd4716{T<}E4wJ7j3Nt`Ddg3;44W&4CaSVs?-3ZLlGiuV?%1q21dUe~ z?Zl7sycfLK!XzAlce~aw_bqpPfXYq`F9=9kW<93Kfg=yq!Gat`0-0x%^J8n9xz9`M zFh_!w@N{#Od zVAC_1o|@W4kEMoB;ZQr5DgavwiU=Yh47Ho zHI0;J8X4oB?!vS3Bin80d_@EwLm_1H&B7trMo^cUp&*w-OoUuXNAdn4=X)KFA;U=y z-z<$%r!D0_rI2Agl?)s645UHScS3BnV;5ZAblFNxpzUG5NlLRjhrM1So4m;nCwA33 z$tOiKh4A+|K;f8Z3C>Ay3a%-Xm@2s@soeT%Ae8k;l_OY}##FR>!CgRj&1q#HB|N+U zoG^#o@3qNL=~aGLCcY#Tv=;Ac+d;RMTQED2{V=3TQdq>y)XKGwR`8weyOz!TKyZI! zCW}N{XVsHw3w&L+1f%nzsZ2O(n|P_a`(cJ>{DU34)WTqbH$D`wgt>S0hhjAyPJF#l zyU*EKk^H4~Me!c)eMW=I6})Np*m$DSA7>H}Zm*BYJgM^VfLjW$2$=m|a6CFQOSB1?KyCU$RT16*Du z9oNkf=YSg!nfIakgm25LQG19Wi?Yq?#$f^{0ybTV)zxhKW(K^p>`K!93msa>)AdPj zrB*M}(OsKeztb3GDXP|Ai{NgF&Om3|5{MfOX_+6hIBP0!-5&wupxPigfHjOr?X`WS zYLDWHJ0Rd81KB6;C4RP|$sd||yTlz(+!#QZm-K_L4+{&`OhVlFp4*F>`28*xeODP< zWEO{YjvmU58`XO9G4d@uf(&WI(9wCmgeu`iwlA2Gj@3P*bgV8TF%*$*L(-TT^6jrL zbuSHXDr6K?t!Hu*WQ@dCduC#p{1U(k6l%7+rh3$87OUpFSSrt5vq=#q8ON#z3hK^$ zP>_z#`AAMJu;R%Jj`K1Cisup;r=psyC&IrDId}6ZrEP|Pi;!_dbQFC2K_S}O>dHrY&f}@ zD5@V9E?#9p7%6Ns;r^{LJY!;Qt&q7+kHuoSP}l>nWyiLH@c;|w@FY&Mtl2a!I!u|Y zwjfM@YchX0Yz=odMF;5LsPl0U9nxK@QT;QvQOC8t_#qw*ttx)mc=b7+1Cdp1HDx}l z-uvft>OlU9&BvTGI1R@T9kX&e$?tOpZ*0~GM@NXcnQ`K8bP_wvZdU4UooYV(svT6R z@WurGj92OWg6#T{jHXc3K&dJzY#$y09AAnBWW!ibD~@8IcH(%{)w zu4mD3RGR&j%p^U{44-CNDuWR2xt3HLEq6e7FQ@V%tQFU(KEO@x98mro7HjUqA^f6< z$09%D^$eRvK+jaD@Pd(qRetvI{FgMxgn(q`CG3&_`!Dpi5%D@W!9743YwVDV)CI>r zGMZy1^-9-6SA;sD3_bNCaq`&>y_(esZjyK@)4ejT(4Y8d>Y_42j9BDi7bBr3p zvzc!#e&qp(QjR^?w?8;j#9^#;KeolW3h zL+@VBCyXMKm4(DEvo#rZq{K*8H)V4tYOA)3Wowc*S)a?wetv^6I{PTv*CLnVTgcPU zrdq!;rSb7JRD*JV;t(Qq`K9eT#Crs4p2ig}F1M?*x+?;%UoVm_HR5$86NI(to?YU( z*3+}c>_`U2GgTM%5Y7qeOn9@Y^M>FI1KBeUSqJFA^G4F0B7R=)d5FrsyG{kE^igrg z1&9Y}4_|>CGL$c;n!q*b^{(qLv*UG`_q4g!G1rI{t_;f#XQg+amq&&6nCi>+HL&*0 zNq|+;G5VlAi<8U%e_L?2HI^?4D*xT*_4IL>LD$sd8-`x>@z zp8})#+;GZdSMv)+{lt|9Cd1ku{0t3xRg|zmhVap6{J^JIuXaBfvj#3fALfovCDIB; zK`R}6{w()wW(WCbuD}BN{G}1b7mU{d$Dmuo@T1v^v;IKf=?atEZqFB7>1$quHEnML zx0qTGjG(?3-~8Q_N~cr(=dggDxKE$jBKSr3FrOL#kYGe)iivNy^)E)E_hI4Up7&`A zOY&@cNO~#p5usftlIiGSh9^a|-bQ{ONy29tcM)HH*6lU!%if%=PGB}ZX74Kc3>(Vr zXq23o)t_jYf4ce@W1`HS{#8i~1qb|;S$ffLY%;D$6&m45lmh%}Fq!wGgpj?xx}L!3 zqN1dmv1XX3?dlolTmpqIW`o4y#~q>av}`u1*XLw7rDznR05@n0S0_>UKT&B;X07`;gGa zxC+yB^7dNc-ihqlkFfGU*|hRgQn@Q6_+mY8GS2HJ=3W|WkVwyqqyhUN;}m8dC_s<4 z)3SCmIhL9QTsYPp{MCr>y+DDs<%h1GU}?1JL7DBF1L>Ogk#%zxP<+RUW7_L`7@EFv z;-p%R`z?M7!0-)QEPRfY7+*zydQ5zqFY|lUgzCoh3kywZb5znZ*%=}$Ce)b1A6mO% zGL6Z%FJ5wQN#0d$a@b2|$F^l$!_HPdGX;dcL=n>xmIC?Bk;@=C66nrDzT%t(vEr>`Zk#U$fFF-KPP;NhR>vF!YvX0f}twAYAv9CIPXEW2VoewC{A zp=jpeMl`LE9|31w_2{?{!UJ2E$X8H|tmbnoJWG02HQZ(*q-Rcj*^w^s)VWTeMKRd< zYX5OYU5|%IjG#IY<=AbGy5{T^dKp_8-Z5TGp57s?aKYre&fFMuy6hEW8%AK4>H5_7 z`gk^?{p`VI(9Jn!Pz;@Wxz}cK|G4;LmRgYSpxhVk&o*XT_N<*MWb%KupGpLQ+Bqom zx)(U?57tRsWRr zY8Xl>nm81{KR&|+0#w8%r68C5euUsn;82?-zVzGqjQZw-DPWD4P`sG0vD5Zlje7zi zlJ{?A>G27!bB|$HOXBLqO5OTMp2TK2E1{O{vWkC_s*^;M9e|(pq>WjlBUdx`!1(p` z$;BHN{aS?3OCJ&cy|GW1TEMZ3!iBd|9=RXzm1W+O#I0uqHNDYuxIzwELyTM3R%JKV zNV@Y|`p~D}{3`urulBnpcbA(cV?eFwc01^ zlePHTyECKPV2`$C0=`z!wAE_X>sDK_BhWtvB+nOic%EpE&rE1ghO}4XcI{RO;j&N_ z3Ng^%2aZL*>tWGfue1qRKCJg&O+T8mPG}TNtU3#v(p4!)vk080z3wCeeZ9?zddxEv z!W0bel+N=1(|=@FFS~KiOq)0dGSn=bd){l@b)=ctK=3^~G~e=I|uCm8d`jaZ(yk0xj zpg)i{pWYnZoGzuwp0(oHRKIAwe3|~$uD4>~a0K zu9HKa*4{4#ZBzGHazIC~&MlMATB{`~f6Crit6`lYcU}*+Hm*G*C=jYtmiH6_+C0*p z*mYm_Q20J`wa6r4(0iC@KL+5!8=+qN-LM+3J}Pr+=6f=4H~FdWF>n0&N(_h!7a1ds zqm=A@>)Jv{hAX{22441^J$LK1L9Tfa4_uysuva=--nE^?Y@}9Zrv@Z_h~vN!w0;q5kx94rYwXUTz-^@K#2@!C8QAVsQ{=caX&r z;hMYkvv)R#j7sYdX=h?Xq_5`^h9;t9Pii)Lw{EoPR-`z>Mer{+MzixCofNdCMadmE z*1WIs#{C{u`J`u#xw9Es@UlOIlGSI{K4*IKOK9VAVKnPE+1c6_Q&MBY zcY<`ig)1~+LLk4b?rOp_AJ_E=5F5veK+BOHGv5T6*Rn?%=iVF><4G8)EPCXw#z{A& zm8~X2Z_dWjZfSUmJ`{+leoXlZ&2018vUbBwYV}xL-T1b6+p*XIuMUiLY={znoR4G5 zbb9t{xJ^C5AVB0TJnUKPaEQC&_bGsX>+Q(iz-i)(q#H@}BA*0vQ&qBgLtaP2{SU-ag5~69>*3<2>lI+r<_S>AxI!^XcQti>U z3kpBOW*hOXFwLWOGW8>t#EBF|p~bcY7el*!Jd_CG#a=WN|CO~6SF8QQmxw<%X;>G% z)z+`LKD*}%Jw3>cpNEf{JvVGR8&4Qua9*#H9wN~rzfaqKEff`Qe^xuG_2%-0xo7Cg z4U>OyTD-tXOLb|F74t)0BBL{P_9c8G$}Y?GM2W>x?O^Lx<%0ci{a6m`VgYbx^l{@) zs;GPgu+;0o)ynj41Ju<4S&6KAp^NFu*Nt@dLa#QHZ|b^J&mY%fDocWyFTZ&BS|LU~ z9NPd9wW2sHycUbuh@|s=-&Ud+nn*T;e$=WE!1^uTHu!`(o>nW4gYbTyW%oUB((@t79z^(h7tu3I zEjy|e?dkpBWDZ|*MOZCwIvsGQJw1+=Eu84l4c4+*vQs^H_bGy$O}vKR%Ka95aHTEv z&P6NM?as%g<1iy~{11#viu+7aqq-`eINZJ`I?kS>Lz+;Z?7cFE> zmK>ru;T0Ngt|Fu%e;r$8JhUhIqU-n}aiVV5cO|Ra)WwB5biBXpp`Fz(c#@*juM`vX z9rJl?2Q1gj#T4XY!*wlmxlt#c&zSu4B216JmsH!^{Gc2DiS