diff --git a/changelog b/changelog index b99450d57..3c15d7b6d 100644 --- a/changelog +++ b/changelog @@ -1,16 +1,6 @@ ## Changed -* To address certain balancing concerns, the RF to HE conversion rate is now 2:5. The HE to RF rate however is still 5:1 - * Because of this, using chains of converters as batteries becomes exponentially lossy with size, therefore the input decay has been removed - * Input decay can still be configured if desired - * No input decay also means that converters are no longer infinite energy sinks -* Power converter recipes have been updated -* Soldering stations will no longer work if the recipe requires no input fluid while fluid is present - * While this does complicate using the soldering station manually, as switching from milgrade to standard ICs requires emptying the solderer with a siphon, it does make automating easier, since soldering stations will no longer treat incomplete milgrade circuits as ICs -* Cement is now edible -* Derricks have been remodeled, the port configuration has changed so existing derricks need to be replaced -* Derricks no longer spawn oil spills -* Metal deco blocks are now crafted in batches of 4, as well as recycled in batches of 4. Each block is therefore still worth 25% of an ingot, but recycling your own deco blocks is no longer lossy +* Changed the multi fluid ID recipe, they now use analog circuits instead of silicon based ones, no longer requiring plastic to make ## Fixed -* Fixed some machines not sending fluid gauge syncs properly -* Fixed refinery GUI crashing when invalid input is used \ No newline at end of file +* Fixed pumpjack gauges not syncing properly +* Fixed some concrete variants not being revertable into uncolored concrete \ No newline at end of file diff --git a/src/main/java/api/hbm/energymk2/IBatteryItem.java b/src/main/java/api/hbm/energymk2/IBatteryItem.java index 19202cfa1..d0d5931b7 100644 --- a/src/main/java/api/hbm/energymk2/IBatteryItem.java +++ b/src/main/java/api/hbm/energymk2/IBatteryItem.java @@ -10,7 +10,7 @@ public interface IBatteryItem { public void setCharge(ItemStack stack, long i); public void dischargeBattery(ItemStack stack, long i); public long getCharge(ItemStack stack); - public long getMaxCharge(); + public long getMaxCharge(ItemStack stack); public long getChargeRate(); public long getDischargeRate(); diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORInfo.java b/src/main/java/api/hbm/redstoneoverradio/IRORInfo.java new file mode 100644 index 000000000..cfd18cb81 --- /dev/null +++ b/src/main/java/api/hbm/redstoneoverradio/IRORInfo.java @@ -0,0 +1,9 @@ +package api.hbm.redstoneoverradio; + +public interface IRORInfo { + + public static String PREFIX_VALUE = "VAL:"; + public static String PREFIX_FUNCTION = "FUN:"; + + public String[] getFunctionInfo(); +} diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java new file mode 100644 index 000000000..821fc8598 --- /dev/null +++ b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java @@ -0,0 +1,31 @@ +package api.hbm.redstoneoverradio; + +public interface IRORInteractive extends IRORInfo { + + public static String NAME_SEPARATOR = "!"; + public static String PARAM_SEPARATOR = ":"; + + public static String EX_NULL = "Exception: Null Command"; + public static String EX_NAME = "Exception: Multiple Name Separators"; + + public Object runRORFunction(String name, String[] params); + + /** Extracts the command name from a full command string */ + public static String getCommand(String input) { + if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL); + String[] parts = input.split(NAME_SEPARATOR); + if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME); + return parts[0]; + } + + /** Extracts the param list from a full command string */ + public static String[] getParams(String input) { + if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL); + String[] parts = input.split(NAME_SEPARATOR); + if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME); + if(parts.length == 1) return new String[0]; + String paramList = parts[1]; + String[] params = paramList.split(PARAM_SEPARATOR); + return params; + } +} diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java b/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java new file mode 100644 index 000000000..26e615c6b --- /dev/null +++ b/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java @@ -0,0 +1,6 @@ +package api.hbm.redstoneoverradio; + +public interface IRORValueProvider extends IRORInfo { + + public Object provideRORValue(String name); +} diff --git a/src/main/java/api/hbm/redstoneoverradio/RORFunctionException.java b/src/main/java/api/hbm/redstoneoverradio/RORFunctionException.java new file mode 100644 index 000000000..5a6a53d3d --- /dev/null +++ b/src/main/java/api/hbm/redstoneoverradio/RORFunctionException.java @@ -0,0 +1,8 @@ +package api.hbm.redstoneoverradio; + +public class RORFunctionException extends RuntimeException { + + public RORFunctionException(String message) { + super(message); + } +} diff --git a/src/main/java/api/hbm/redstoneoverradio/package-info.java b/src/main/java/api/hbm/redstoneoverradio/package-info.java new file mode 100644 index 000000000..ef1d4eaad --- /dev/null +++ b/src/main/java/api/hbm/redstoneoverradio/package-info.java @@ -0,0 +1,22 @@ +/** + * @author hbm + * + */ +package api.hbm.redstoneoverradio; + +/* + + __ __ __ _______ ________ __ __ __ __ ______ __ + /_/| /_/\ /_/| /______/\ /_______/| /_/| /_/| /_/|_____ /_/| /_____/| /_/| +| || | \\ | || | ___ \\ | ______|/ | ||| || | |/_____| || |___ || | || +| || | \ \\ | || | | \ \\ | ||___ | |/| |/ | ______ || /__| || | ||__ +| || | |\ \\| || | | \ || | |/__/| \ // | |/_____| || | ___|/ | |/_/| +| || | ||\ \| || | | | || | ____|/ > { + + private final String name; + + ReadOnlyFileSystem(String name) { + this.name = name; + } + + @Override + @Optional.Method(modid = "OpenComputers") + public li.cil.oc.api.fs.FileSystem call() throws Exception { + return asReadOnly(fromClass(MainRegistry.class, RefStrings.MODID, "disks/" + FloppyDisk.sanitizeName(name))); + } + } + + // Floppy disk class. + public static class FloppyDisk { + // Specifies the callable ReadOnlyFileSystem to allow OC to access the floppy. + public final ReadOnlyFileSystem fs; + // Specifies the color of the floppy disk (0-16 colors defined by OC). + public final Byte color; + // Set after loading the disk; allows for adding a recipe to the item. + public ItemStack item; + + FloppyDisk(String name, int color) { + this.fs = new ReadOnlyFileSystem(FloppyDisk.sanitizeName(name)); + this.color = (byte) color; + } + + // Disk names will be sanitized before the FileSystem is created. + // This only affects the location/directory, not the display name. + // (Prevents filesystems from breaking/crashing due to having file separators, wildcards, etc. + public static String sanitizeName(String input) { + return input.toLowerCase().replaceAll("\\W", ""); + } + } + + /** + * Simple enum for mapping OC color ordinals to a nicer format for adding new disks. + */ + public enum OCColors { + BLACK, //0x444444 + RED, //0xB3312C + GREEN, //0x339911 + BROWN, //0x51301A + BLUE, //0x6666FF + PURPLE, //0x7B2FBE + CYAN, //0x66FFFF + LIGHTGRAY, //0xABABAB + GRAY, //0x666666 + PINK, //0xD88198 + LIME, //0x66FF66 + YELLOW, //0xFFFF66 + LIGHTBLUE, //0xAAAAFF + MAGENTA, //0xC354CD + ORANGE, //0xEB8844 + WHITE //0xF0F0F0 + } + + // Where all disks are stored with their name and `FloppyDisk` class. + public static HashMap disks = new HashMap<>(); + + /** + * Called in the FML PostLoad stage, after the OC API loads. + *
+ * Loads various parts of OC compatibility. + */ + public static void init() { + if(Loader.isModLoaded("OpenComputers")) { + /* + For anyone wanting to add their own floppy disks, + read the README found in assets.hbm.disks. + */ + + // Idea/Code by instantnootles + disks.put("PWRangler", new FloppyDisk("PWRangler", OCColors.CYAN.ordinal())); + + // begin registering disks + Logger logger = LogManager.getLogger("HBM"); + logger.info("Loading OpenComputers disks..."); + if(disks.size() == 0) { + logger.info("No disks registered; see com.hbm.handler.CompatHandler.disks"); + return; + } + disks.forEach((s, disk) -> { + + // Test if the disk path even exists. + FileSystem fs = fromClass(MainRegistry.class, RefStrings.MODID, "disks/" + disk.fs.name); + + if (fs == null) { // Disk path does NOT exist, and it should not be loaded. + + logger.error("Error loading disk: " + s + " at /assets/" + RefStrings.MODID + "/disks/" + disk.fs.name); + logger.error("This is likely due to the path to the disk being non-existent."); + + } else { // Disk path DOES exist, and it should be loaded. + + disk.item = Items.registerFloppy(s, disk.color, disk.fs); // The big part, actually registering the floppies! + logger.info("Registered disk: " + s + " at /assets/" + RefStrings.MODID + "/disks/" + disk.fs.name); + + } + }); + logger.info("OpenComputers disks registered."); + + // OC disk recipes! + List floppyDisks = new RecipesCommon.OreDictStack("oc:floppy").toStacks(); + + if(floppyDisks.size() > 0) { //check that floppy disks even exist in oredict. + + // Recipes must be initialized here, since if they were initialized in `CraftingManager` then the disk item would not be created yet. + addShapelessAuto(disks.get("PWRangler").item, new Object[] {"oc:floppy", new ItemStack(ModBlocks.pwr_casing)}); + + logger.info("OpenComputers disk recipe added for PWRangler."); + } else { + logger.info("OpenComputers floppy disk oredict not found, recipes cannot be loaded!"); + } + + // boom, OC disks loaded + logger.info("OpenComputers disks loaded."); + } + } + + // Null component name, default to this if broken to avoid NullPointerExceptions. + public static final String nullComponent = "ntm_null"; + /** * This is an interface made specifically for adding OC compatibility to NTM machines. The {@link li.cil.oc.api.network.SimpleComponent} interface must also be implemented in the TE. *
@@ -54,11 +207,10 @@ public class CompatHandler { @Optional.InterfaceList({ @Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers"), @Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers"), - @Optional.Interface(iface = "li.cil.oc.api.network.Analyzable", modid = "OpenComputers"), @Optional.Interface(iface = "li.cil.oc.api.network.ManagedPeripheral", modid = "OpenComputers"), }) @SimpleComponent.SkipInjection // make sure OC doesn't inject this shit into the interface and crash - public interface OCComponent extends SimpleComponent, SidedComponent, Analyzable, ManagedPeripheral { + public interface OCComponent extends SimpleComponent, SidedComponent, ManagedPeripheral { /** * Must be overridden in the implemented TE, or it will default to "ntm_null". @@ -69,7 +221,7 @@ public class CompatHandler { @Override @Optional.Method(modid = "OpenComputers") default String getComponentName() { - return "ntm_null"; + return nullComponent; } /** @@ -83,31 +235,6 @@ public class CompatHandler { return true; } - /** - * Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array. - * @return Additional text to add in the form of lang entries (ex: "analyze.basic2"). - */ - @Optional.Method(modid = "OpenComputers") - default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};} - - @Override - @Optional.Method(modid = "OpenComputers") - default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); - player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic3").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); - player.addChatComponentMessage(new ChatComponentTranslation("analyze.name", this.getComponentName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); - String[] extraInfo = getExtraInfo(); - for (String info : extraInfo) { - if(!info.equals("")) - player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - } - TileEntity te = (TileEntity) this; - if((Array.getLength(this.methods()) == 0 && te instanceof TileEntityProxyCombo) || this.getComponentName().equals("ntm_null")) - player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - return null; - } - /** * Standard methods array from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}. * @return Array of methods to expose to the computer. diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index 8818a3d9d..2bf1e9e6e 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -161,7 +161,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICom transferRectsGui = new LinkedList(); guiGui = new LinkedList>(); - transferRects.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery")); + transferRects.add(new RecipeTransferRect(new Rectangle(138 - 1 - 36 - 27, 23, 36, 18), "refinery")); transferRectsGui.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery")); guiGui.add(GUIMachineRefinery.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); diff --git a/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java b/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java index f8da90d3d..d63fcad3b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java +++ b/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java @@ -19,20 +19,21 @@ import net.minecraft.util.IIcon; public class ContainerArmorTable extends Container { - public InventoryBasic upgrades = new InventoryBasic("Upgrades", false, 8); + public InventoryBasic upgrades = new InventoryBasic("Upgrades", false, ArmorModHandler.MOD_SLOTS); public IInventory armor = new InventoryCraftResult(); public ContainerArmorTable(InventoryPlayer inventory) { EntityPlayer player = inventory.player; this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.helmet_only, 26 + 22, 27)); // helmet only - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.plate_only, 62 + 22, 27)); // chestplate only + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.plate_only, 62 + 22, 27)); // chestplate only this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.legs_only, 98 + 22, 27)); // leggins only this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.boots_only, 134 + 22, 45)); // boots only this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.servos, 134 + 22, 81)); //servos/frame this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.cladding, 98 + 22, 99)); //radiation cladding - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.kevlar, 62 + 22, 99)); //kevlar/sapi/(ERA? :) ) + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.kevlar, 62 + 22, 99)); //kevlar/sapi/(ERA? :) ) this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.extra, 26 + 22, 99)); //special parts + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.battery, 8 + 22, 63)); //special parts this.addSlotToContainer(new Slot(armor, 0, 44 + 22, 63) { @@ -48,7 +49,7 @@ public class ContainerArmorTable extends Container { if(stack != null) { ItemStack[] mods = ArmorModHandler.pryMods(stack); - for(int i = 0; i < 8; i++) { + for(int i = 0; i < ArmorModHandler.MOD_SLOTS; i++) { if(mods != null) upgrades.setInventorySlotContents(i, mods[i]); @@ -65,7 +66,7 @@ public class ContainerArmorTable extends Container { //if the armor piece is taken, absorb all armor pieces - for(int i = 0; i < 8; i++) { + for(int i = 0; i < ArmorModHandler.MOD_SLOTS; i++) { ItemStack mod = upgrades.getStackInSlot(i); @@ -126,19 +127,19 @@ public class ContainerArmorTable extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= 8) { - if(par2 != 8 || !InventoryUtil.mergeItemStack(this.inventorySlots, var5, 9, 13, false)) - if(!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) + if(par2 <= ArmorModHandler.MOD_SLOTS) { + if(par2 != ArmorModHandler.MOD_SLOTS || !InventoryUtil.mergeItemStack(this.inventorySlots, var5, ArmorModHandler.MOD_SLOTS + 1, ArmorModHandler.MOD_SLOTS + 5, false)) + if(!this.mergeItemStack(var5, ArmorModHandler.MOD_SLOTS + 5, this.inventorySlots.size(), true)) return null; var4.onPickupFromSlot(p_82846_1_, var5); } else { if(var5.getItem() instanceof ItemArmor) { - if(!this.mergeItemStack(var5, 8, 9, false)) + if(!this.mergeItemStack(var5, ArmorModHandler.MOD_SLOTS, ArmorModHandler.MOD_SLOTS + 1, false)) return null; - } else if(this.inventorySlots.get(8) != null && var5.getItem() instanceof ItemArmorMod) { + } else if(this.inventorySlots.get(ArmorModHandler.MOD_SLOTS) != null && var5.getItem() instanceof ItemArmorMod) { ItemArmorMod mod = (ItemArmorMod)var5.getItem(); int slot = mod.type; diff --git a/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java b/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java index e255586cf..250b9711f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java +++ b/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java @@ -46,15 +46,16 @@ public class GUIArmorTable extends GuiInfoContainer { "armorMod.type.cladding", "armorMod.type.insert", "armorMod.type.special", + "armorMod.type.battery", "armorMod.insertHere" }; - for(int i = 0; i < 9; ++i) { + for(int i = 0; i < ArmorModHandler.MOD_SLOTS + 1; ++i) { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && !slot.getHasStack()) { - this.drawCreativeTabHoveringText((i < 8 ? EnumChatFormatting.LIGHT_PURPLE : EnumChatFormatting.YELLOW) + I18nUtil.resolveKey(unloc[i]), x, y); + this.drawCreativeTabHoveringText((i < ArmorModHandler.MOD_SLOTS ? EnumChatFormatting.LIGHT_PURPLE : EnumChatFormatting.YELLOW) + I18nUtil.resolveKey(unloc[i]), x, y); } } } @@ -75,7 +76,7 @@ public class GUIArmorTable extends GuiInfoContainer { this.drawTexturedModalRect(guiLeft + 22, guiTop, 0, 0, this.xSize - 22, this.ySize); this.drawTexturedModalRect(guiLeft, guiTop + 31, 176, 96, 22, 100); - ItemStack armor = this.inventorySlots.getSlot(8).getStack(); + ItemStack armor = this.inventorySlots.getSlot(ArmorModHandler.MOD_SLOTS).getStack(); if(armor != null) { @@ -89,7 +90,7 @@ public class GUIArmorTable extends GuiInfoContainer { this.drawTexturedModalRect(guiLeft + 41 + 22, guiTop + 60, 176, 52, 22, 22); } - for(int i = 0; i < 8; i++) { + for(int i = 0; i < ArmorModHandler.MOD_SLOTS; i++) { Slot slot = this.inventorySlots.getSlot(i); drawIndicator(i, slot.xDisplayPosition - 1, slot.yDisplayPosition - 1); } @@ -98,7 +99,7 @@ public class GUIArmorTable extends GuiInfoContainer { private void drawIndicator(int index, int x, int y) { ItemStack mod = this.inventorySlots.getSlot(index).getStack(); - ItemStack armor = this.inventorySlots.getSlot(8).getStack(); + ItemStack armor = this.inventorySlots.getSlot(ArmorModHandler.MOD_SLOTS).getStack(); if(mod == null) return; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index af04707fa..f30dd2edf 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -28,7 +28,7 @@ public class GUIMachineRefinery extends GuiInfoContainer { super(new ContainerMachineRefinery(invPlayer, tedf)); refinery = tedf; - this.xSize = 209; + this.xSize = 210; this.ySize = 231; } @@ -84,35 +84,39 @@ public class GUIMachineRefinery extends GuiInfoContainer { // pipes Tuple.Quintet recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); - - if(recipe != null) { - - GL11.glEnable(GL11.GL_BLEND); - + + if(recipe == null) { + func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); + func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); + func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); + func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + } else { + // Heavy Oil Products Color color = new Color(recipe.getV().type.getColor()); + + GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); - + // Naphtha Oil Products color = new Color(recipe.getW().type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); - + // Light Oil Products color = new Color(recipe.getX().type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); - + // Gaseous Products color = new Color(recipe.getY().type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); - - GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glColor4f(1F, 1F, 1F, 1F); } - // output tanks refinery.tanks[1].renderTank(guiLeft + 86, guiTop + 95, this.zLevel, 16, 52); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index f3309fb32..b7789ba87 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2174,6 +2174,9 @@ public class ModItems { public static Item card_aos; public static Item card_qos; public static Item australium_iii; + public static Item armor_battery; + public static Item armor_battery_mk2; + public static Item armor_battery_mk3; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -3353,6 +3356,9 @@ public class ModItems { card_aos = new ItemModCard().setUnlocalizedName("card_aos").setTextureName(RefStrings.MODID + ":card_aos"); card_qos = new ItemModCard().setUnlocalizedName("card_qos").setTextureName(RefStrings.MODID + ":card_qos"); australium_iii = new ItemModShield(25F).setUnlocalizedName("australium_iii").setTextureName(RefStrings.MODID + ":australium_iii"); + armor_battery = new ItemModBattery(1.25D).setUnlocalizedName("armor_battery").setTextureName(RefStrings.MODID + ":armor_battery"); + armor_battery_mk2 = new ItemModBattery(1.5D).setUnlocalizedName("armor_battery_mk2").setTextureName(RefStrings.MODID + ":armor_battery_mk2"); + armor_battery_mk3 = new ItemModBattery(2D).setUnlocalizedName("armor_battery_mk3").setTextureName(RefStrings.MODID + ":armor_battery_mk3"); cap_nuka = new Item().setUnlocalizedName("cap_nuka").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_nuka"); cap_quantum = new Item().setUnlocalizedName("cap_quantum").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_quantum"); @@ -7388,6 +7394,9 @@ public class ModItems { GameRegistry.registerItem(card_aos, card_aos.getUnlocalizedName()); GameRegistry.registerItem(card_qos, card_qos.getUnlocalizedName()); GameRegistry.registerItem(australium_iii, australium_iii.getUnlocalizedName()); + GameRegistry.registerItem(armor_battery, armor_battery.getUnlocalizedName()); + GameRegistry.registerItem(armor_battery_mk2, armor_battery_mk2.getUnlocalizedName()); + GameRegistry.registerItem(armor_battery_mk3, armor_battery_mk3.getUnlocalizedName()); //Chaos GameRegistry.registerItem(chocolate_milk, chocolate_milk.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java index 0daddf0fb..d5368b5f3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -2,6 +2,7 @@ package com.hbm.items.armor; import java.util.List; +import com.hbm.handler.ArmorModHandler; import com.hbm.util.BobMathUtil; import api.hbm.energymk2.IBatteryItem; @@ -30,9 +31,7 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); - + list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(getMaxCharge(stack))); super.addInformation(stack, player, list, ext); } @@ -72,7 +71,7 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") - i); } else { stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setLong("charge", this.maxPower - i); + stack.stackTagCompound.setLong("charge", getMaxCharge(stack) - i); } if(stack.stackTagCompound.getLong("charge") < 0) @@ -84,10 +83,10 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { public long getCharge(ItemStack stack) { if(stack.getItem() instanceof ArmorFSBPowered) { if(stack.hasTagCompound()) { - return stack.stackTagCompound.getLong("charge"); + return Math.min(stack.stackTagCompound.getLong("charge"), getMaxCharge(stack)); } else { stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setLong("charge", ((ArmorFSBPowered) stack.getItem()).maxPower); + stack.stackTagCompound.setLong("charge", getMaxCharge(stack)); return stack.stackTagCompound.getLong("charge"); } } @@ -97,18 +96,23 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { @Override public boolean showDurabilityBar(ItemStack stack) { - - return getCharge(stack) < maxPower; + return getCharge(stack) < getMaxCharge(stack); } @Override public double getDurabilityForDisplay(ItemStack stack) { - return 1 - (double) getCharge(stack) / (double) maxPower; + return 1 - (double) getCharge(stack) / (double) getMaxCharge(stack); } @Override - public long getMaxCharge() { + public long getMaxCharge(ItemStack stack) { + if(ArmorModHandler.hasMods(stack)) { + ItemStack mod = ArmorModHandler.pryMod(stack, ArmorModHandler.battery); + if(mod != null && mod.getItem() instanceof ItemModBattery) { + return (long) (maxPower * ((ItemModBattery) mod.getItem()).mod); + } + } return maxPower; } diff --git a/src/main/java/com/hbm/items/armor/ArmorHEV.java b/src/main/java/com/hbm/items/armor/ArmorHEV.java index df2666d68..5aa336fa9 100644 --- a/src/main/java/com/hbm/items/armor/ArmorHEV.java +++ b/src/main/java/com/hbm/items/armor/ArmorHEV.java @@ -108,7 +108,7 @@ public class ArmorHEV extends ArmorFSBPowered { ItemStack armor = player.inventory.armorInventory[i]; ArmorFSBPowered item = ((ArmorFSBPowered) player.inventory.armorInventory[i].getItem()); - c += (double) item.getCharge(armor) / (double) item.getMaxCharge(); + c += (double) item.getCharge(armor) / (double) item.getMaxCharge(armor); } int aX = (int) (70 / scale); diff --git a/src/main/java/com/hbm/items/armor/ItemArmorMod.java b/src/main/java/com/hbm/items/armor/ItemArmorMod.java index 505028648..cc6666e4f 100644 --- a/src/main/java/com/hbm/items/armor/ItemArmorMod.java +++ b/src/main/java/com/hbm/items/armor/ItemArmorMod.java @@ -64,6 +64,7 @@ public class ItemArmorMod extends Item { case ArmorModHandler.cladding: list.add(" " + I18nUtil.resolveKey("armorMod.type.cladding")); break; case ArmorModHandler.kevlar: list.add(" " + I18nUtil.resolveKey("armorMod.type.insert")); break; case ArmorModHandler.extra: list.add(" " + I18nUtil.resolveKey("armorMod.type.special")); break; + case ArmorModHandler.battery: list.add(" " + I18nUtil.resolveKey("armorMod.type.battery")); break; } } diff --git a/src/main/java/com/hbm/items/armor/ItemModBattery.java b/src/main/java/com/hbm/items/armor/ItemModBattery.java new file mode 100644 index 000000000..22193e17b --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModBattery.java @@ -0,0 +1,13 @@ +package com.hbm.items.armor; + +import com.hbm.handler.ArmorModHandler; + +public class ItemModBattery extends ItemArmorMod { + + public double mod; + + public ItemModBattery(double mod) { + super(ArmorModHandler.battery, true, true, true, true); + this.mod = mod; + } +} diff --git a/src/main/java/com/hbm/items/food/ItemPancake.java b/src/main/java/com/hbm/items/food/ItemPancake.java index 784ee8995..2498e393c 100644 --- a/src/main/java/com/hbm/items/food/ItemPancake.java +++ b/src/main/java/com/hbm/items/food/ItemPancake.java @@ -30,7 +30,7 @@ public class ItemPancake extends ItemFood { continue; if(st.getItem() instanceof IBatteryItem) { - ((IBatteryItem)st.getItem()).setCharge(st, ((IBatteryItem)st.getItem()).getMaxCharge()); + ((IBatteryItem)st.getItem()).setCharge(st, ((IBatteryItem)st.getItem()).getMaxCharge(st)); } } } diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index cefa97fce..fe31ec3b9 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -105,14 +105,17 @@ public class ItemBattery extends Item implements IBatteryItem { return 0; } - public long getMaxCharge() { + @Override + public long getMaxCharge(ItemStack stack) { return maxCharge; } + @Override public long getChargeRate() { return chargeRate; } + @Override public long getDischargeRate() { return dischargeRate; } @@ -134,7 +137,7 @@ public class ItemBattery extends Item implements IBatteryItem { if(item instanceof ItemBattery) { ItemStack stack = new ItemStack(item); stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setLong("charge", ((ItemBattery) item).getMaxCharge()); + stack.stackTagCompound.setLong("charge", ((ItemBattery) item).getMaxCharge(stack)); return stack.copy(); } @@ -146,7 +149,7 @@ public class ItemBattery extends Item implements IBatteryItem { } public double getDurabilityForDisplay(ItemStack stack) { - return 1D - (double) getCharge(stack) / (double) getMaxCharge(); + return 1D - (double) getCharge(stack) / (double) getMaxCharge(stack); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemSelfcharger.java b/src/main/java/com/hbm/items/machine/ItemSelfcharger.java index 67c05fb7b..419f5401d 100644 --- a/src/main/java/com/hbm/items/machine/ItemSelfcharger.java +++ b/src/main/java/com/hbm/items/machine/ItemSelfcharger.java @@ -38,7 +38,7 @@ public class ItemSelfcharger extends Item implements IBatteryItem { } @Override - public long getMaxCharge() { + public long getMaxCharge(ItemStack stack) { return charge; } diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index 715eacd17..4145b0fbf 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -241,7 +241,7 @@ public class ItemGlitch extends Item implements IBatteryItem { @Override public void setCharge(ItemStack stack, long i) { } @Override public void dischargeBattery(ItemStack stack, long i) { } @Override public long getCharge(ItemStack stack) { return 200; } - @Override public long getMaxCharge() { return 200; } + @Override public long getMaxCharge(ItemStack stack) { return 200; } @Override public long getChargeRate() { return 0; } @Override public long getDischargeRate() { return 200; } } diff --git a/src/main/java/com/hbm/items/special/ItemPotatos.java b/src/main/java/com/hbm/items/special/ItemPotatos.java index 69aefa465..46c636689 100644 --- a/src/main/java/com/hbm/items/special/ItemPotatos.java +++ b/src/main/java/com/hbm/items/special/ItemPotatos.java @@ -28,7 +28,7 @@ public class ItemPotatos extends ItemBattery { if(p.getHeldItem() == stack) { - float pitch = (float)getCharge(stack) / (float)this.getMaxCharge() * 0.5F + 0.5F; + float pitch = (float)getCharge(stack) / (float)this.getMaxCharge(stack) * 0.5F + 0.5F; world.playSoundAtEntity(p, "hbm:potatos.random", 1.0F, pitch); setTimer(stack, 200 + itemRand.nextInt(100)); diff --git a/src/main/java/com/hbm/items/tool/ItemFusionCore.java b/src/main/java/com/hbm/items/tool/ItemFusionCore.java index 473f6f62b..b72ee8d4f 100644 --- a/src/main/java/com/hbm/items/tool/ItemFusionCore.java +++ b/src/main/java/com/hbm/items/tool/ItemFusionCore.java @@ -33,7 +33,7 @@ public class ItemFusionCore extends Item { if(st.getItem() instanceof IBatteryItem) { - long maxcharge = ((IBatteryItem) st.getItem()).getMaxCharge(); + long maxcharge = ((IBatteryItem) st.getItem()).getMaxCharge(st); long charge = ((IBatteryItem) st.getItem()).getCharge(st); long newcharge = Math.min(charge + this.charge, maxcharge); diff --git a/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java b/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java index 674fb7572..943dfd7ab 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordAbilityPower.java @@ -106,7 +106,7 @@ public class ItemSwordAbilityPower extends ItemSwordAbility implements IBatteryI } @Override - public long getMaxCharge() { + public long getMaxCharge(ItemStack stack) { return maxPower; } diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java b/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java index 52b8686b4..c0c025d35 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbilityPower.java @@ -102,7 +102,7 @@ public class ItemToolAbilityPower extends ItemToolAbility implements IBatteryIte } @Override - public long getMaxCharge() { + public long getMaxCharge(ItemStack stack) { return maxPower; } diff --git a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java index d93a73f4a..554f5a6ea 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java @@ -181,7 +181,7 @@ public class ItemEnergyGunBase extends ItemGunBase implements IBatteryItem { } public double getDurabilityForDisplay(ItemStack stack) { - return 1D - (double) getCharge(stack) / (double) getMaxCharge(); + return 1D - (double) getCharge(stack) / (double) getMaxCharge(stack); } @Override @@ -236,7 +236,7 @@ public class ItemEnergyGunBase extends ItemGunBase implements IBatteryItem { } @Override - public long getMaxCharge() { + public long getMaxCharge(ItemStack stack) { return mainConfig.maxCharge; } @@ -266,7 +266,7 @@ public class ItemEnergyGunBase extends ItemGunBase implements IBatteryItem { ItemStack stack = new ItemStack(item); stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setLong("charge", ((ItemEnergyGunBase) item).getMaxCharge()); + stack.stackTagCompound.setLong("charge", ((ItemEnergyGunBase) item).getMaxCharge(stack)); list.add(stack); } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 6da55124b..828433470 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -243,7 +243,7 @@ public class Library { IBatteryItem battery = (IBatteryItem) slots[index].getItem(); - long batMax = battery.getMaxCharge(); + long batMax = battery.getMaxCharge(slots[index]); long batCharge = battery.getCharge(slots[index]); long batRate = battery.getChargeRate(); long toCharge = Math.min(Math.min(power, batRate), batMax - batCharge); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index f3ba05a9c..b279cb7a2 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -408,8 +408,8 @@ public class CraftingManager { String dyeName = "dye" + dyes[15 - i]; addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_smooth, 'D', dyeName }); } - addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored }); - addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored_ext }); + addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored, 1, OreDictionary.WILDCARD_VALUE) }); + addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored_ext, 1, OreDictionary.WILDCARD_VALUE) }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK }); @@ -938,7 +938,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.charger), new Object[] { "G", "S", "C", 'G', Items.glowstone_dust, 'S', STEEL.ingot(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.charger, 16), new Object[] { "G", "S", "C", 'G', Blocks.glowstone, 'S', STEEL.block(), 'C', ModItems.coil_copper_torus }); addRecipeAuto(new ItemStack(ModBlocks.press_preheater), new Object[] { "CCC", "SLS", "TST", 'C', CU.plate(), 'S', Blocks.stone, 'L', Fluids.LAVA.getDict(1000), 'T', W.ingot() }); - addRecipeAuto(new ItemStack(ModItems.fluid_identifier_multi), new Object[] { "D", "C", "P", 'D', "dye", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', ANY_PLASTIC.ingot() }); + addRecipeAuto(new ItemStack(ModItems.fluid_identifier_multi), new Object[] { "D", "C", "P", 'D', "dye", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', IRON.plate() }); addShapelessAuto(ItemBattery.getEmptyBattery(ModItems.anchor_remote), new Object[] { DIAMOND.gem(), ModItems.ducttape, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.teleanchor), new Object[] { "ODO", "EAE", "ODO", 'O', Blocks.obsidian, 'D', DIAMOND.gem(), 'E', ModItems.powder_magic, 'A', ModItems.gem_alexandrite }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 126eea6e4..78f5f6034 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -877,7 +877,10 @@ public class MainRegistry { proxy.registerMissileItems(); BlockMotherOfAllOres.init(); - + + // Load compatibility for OC. + CompatHandler.init(); + //expand for the largest entity we have (currently Quackos who is 17.5m in diameter, that's one fat duck) World.MAX_ENTITY_RADIUS = Math.max(World.MAX_ENTITY_RADIUS, 8.75); diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 0f5a8e29b..ae43788db 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -1,6 +1,7 @@ package com.hbm.tileentity; import api.hbm.block.ICrucibleAcceptor; +import com.hbm.handler.CompatHandler; import com.hbm.handler.CompatHandler.OCComponent; import com.hbm.inventory.fluid.FluidType; @@ -8,6 +9,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidConnector; import api.hbm.tile.IHeatSource; import com.hbm.inventory.material.Mats; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Optional; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Context; @@ -32,7 +34,11 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy boolean fluid; boolean heat; public boolean moltenMetal; - + + // due to some issues with OC deciding that it's gonna call the component name function before the worldObj is loaded + // the component name must be cached to prevent it from shitting itself + String componentName = CompatHandler.nullComponent; + public TileEntityProxyCombo() { } public TileEntityProxyCombo(boolean inventory, boolean power, boolean fluid) { @@ -344,6 +350,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy this.fluid = nbt.getBoolean("fluid"); this.moltenMetal = nbt.getBoolean("metal"); this.heat = nbt.getBoolean("heat"); + if(Loader.isModLoaded("OpenComputers")) + this.componentName = nbt.getString("ocname"); + } @Override @@ -355,6 +364,8 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy nbt.setBoolean("fluid", fluid); nbt.setBoolean("metal", moltenMetal); nbt.setBoolean("heat", heat); + if(Loader.isModLoaded("OpenComputers")) + nbt.setString("ocname", componentName); } @Override @@ -452,27 +463,27 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy @Override // please work @Optional.Method(modid = "OpenComputers") public String getComponentName() { - if(this.getTile() instanceof OCComponent) - return ((OCComponent) this.getTile()).getComponentName(); + if(this.worldObj == null) // OC is going too fast, grab from NBT! + return componentName; + if(this.getTile() instanceof OCComponent) { + if (componentName == null || componentName.equals(OCComponent.super.getComponentName())) { + componentName = ((OCComponent) this.getTile()).getComponentName(); + } + return componentName; + } return OCComponent.super.getComponentName(); } @Override @Optional.Method(modid = "OpenComputers") - public boolean canConnectNode(ForgeDirection side) { //thank you vaer + public boolean canConnectNode(ForgeDirection side) { if(this.getTile() instanceof OCComponent) - return (this.getTile().getBlockMetadata() & 6) == 6 && ((OCComponent) this.getTile()).canConnectNode(side); + return (this.getBlockMetadata() >= 6 && this.getBlockMetadata() <= 11) + && (power || fluid) && + ((OCComponent) this.getTile()).canConnectNode(side); return OCComponent.super.canConnectNode(null); } - @Override - @Optional.Method(modid = "OpenComputers") - public String[] getExtraInfo() { - if(this.getTile() instanceof OCComponent) - return new String[] {"analyze.dummy"}; - return OCComponent.super.getExtraInfo(); - } - @Override @Optional.Method(modid = "OpenComputers") public String[] methods() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java index 51bef052f..db18d4bfb 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -103,12 +103,12 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU public int getBattery() { if(slots[1] != null && slots[1].getItem() == ModItems.battery_spark && - ((IBatteryItem)ModItems.battery_spark).getCharge(slots[1]) == ((IBatteryItem)ModItems.battery_spark).getMaxCharge()) { + ((IBatteryItem)ModItems.battery_spark).getCharge(slots[1]) == ((IBatteryItem)ModItems.battery_spark).getMaxCharge(slots[1])) { return 1; } if(slots[1] != null && slots[1].getItem() == ModItems.battery_trixite && - ((IBatteryItem)ModItems.battery_trixite).getCharge(slots[1]) == ((IBatteryItem)ModItems.battery_trixite).getMaxCharge()) { + ((IBatteryItem)ModItems.battery_trixite).getCharge(slots[1]) == ((IBatteryItem)ModItems.battery_trixite).getMaxCharge(slots[1])) { return 2; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java index 183c48ad6..acefaf0f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -1,10 +1,15 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.container.ContainerAshpit; import com.hbm.inventory.gui.GUIAshpit; import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ModItems; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -19,7 +24,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { private int playersUsing = 0; public float doorAngle = 0; @@ -32,10 +37,40 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi public int ashLevelFly; public int ashLevelSoot; + //Configurable values + public static int thresholdWood = 2000; + public static int thresholdCoal = 2000; + public static int thresholdMisc = 2000; + public static int thresholdFly = 2000; + public static int thresholdSoot = 8000; + public TileEntityAshpit() { super(5); } + @Override + public String getConfigName() { + return "ashpit"; + } + + @Override + public void readIfPresent(JsonObject obj) { + thresholdWood = IConfigurableMachine.grab(obj, "I:thresholdWood", thresholdWood); + thresholdCoal = IConfigurableMachine.grab(obj, "I:thresholdCoal", thresholdCoal); + thresholdMisc = IConfigurableMachine.grab(obj, "I:thresholdMisc", thresholdMisc); + thresholdFly = IConfigurableMachine.grab(obj, "I:thresholdFly", thresholdFly); + thresholdSoot = IConfigurableMachine.grab(obj, "I:thresholdSoot", thresholdSoot); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:thresholdWood").value(thresholdWood); + writer.name("I:thresholdCoal").value(thresholdCoal); + writer.name("I:thresholdMisc").value(thresholdMisc); + writer.name("I:thresholdFly").value(thresholdFly); + writer.name("I:thresholdSoot").value(thresholdSoot); + } + @Override public void openInventory() { if(!worldObj.isRemote) this.playersUsing++; @@ -56,13 +91,12 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi if(!worldObj.isRemote) { - int threshold = 2000; - if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold; - if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold; - if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; - if(processAsh(ashLevelFly, EnumAshType.FLY, threshold)) ashLevelFly -= threshold; - if(processAsh(ashLevelSoot, EnumAshType.SOOT, threshold * 4)) ashLevelSoot -= threshold * 4; + if(processAsh(ashLevelWood, EnumAshType.WOOD, thresholdWood)) ashLevelWood -= thresholdWood; + if(processAsh(ashLevelCoal, EnumAshType.COAL, thresholdCoal)) ashLevelCoal -= thresholdCoal; + if(processAsh(ashLevelMisc, EnumAshType.MISC, thresholdMisc)) ashLevelMisc -= thresholdMisc; + if(processAsh(ashLevelFly, EnumAshType.FLY, thresholdFly)) ashLevelFly -= thresholdFly; + if(processAsh(ashLevelSoot, EnumAshType.SOOT, thresholdSoot)) ashLevelSoot -= thresholdSoot; isFull = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index e747c3a5d..6df1f8bf9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -47,7 +47,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); - charge += Math.min(battery.getMaxCharge() - battery.getCharge(stack), battery.getChargeRate()); + charge += Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate()); } } } @@ -127,7 +127,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); - long toCharge = Math.min(battery.getMaxCharge() - battery.getCharge(stack), battery.getChargeRate()); + long toCharge = Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate()); toCharge = Math.min(toCharge, power / 5); battery.chargeBattery(stack, toCharge); power -= toCharge; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 0d1d9d6a8..0ab6d68b2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -1,7 +1,10 @@ package com.hbm.tileentity.machine; import java.util.Random; +import java.io.IOException; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; import com.hbm.handler.CompatHandler; import com.hbm.inventory.fluid.FluidType; @@ -13,6 +16,7 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -36,10 +40,9 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { public long power; - public static final long maxPower = 100000000000L; private int turnTimer; public float rotor; public float lastRotor; @@ -50,16 +53,46 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr private AudioWrapper audio; private float audioDesync; + + //Configurable values + public static long maxPower = 100000000000L; + public static int inputTankSize = 1_000_000_000; + public static int outputTankSize = 1_000_000_000; + public static double efficiency = 0.85D; public TileEntityChungus() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 1_000_000_000); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 1_000_000_000); + tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize); Random rand = new Random(); audioDesync = rand.nextFloat() * 0.05F; } + @Override + public String getConfigName() { + return "steamturbineLeviathan"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("INFO").value("leviathan steam turbine consumes all availible steam per tick"); + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + writer.name("D:efficiency").value(efficiency); + } + + + @Override public void updateEntity() { @@ -72,7 +105,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { FT_Coolable trait = in.getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE) * 0.85D; //85% efficiency + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; //85% efficiency by default if(eff > 0) { tanks[1].setTankType(trait.coolsTo); int inputOps = tanks[0].getFill() / trait.amountReq; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 2a13a059a..8d2730f8b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -1,8 +1,13 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.saveddata.TomSaveData; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -12,7 +17,7 @@ import api.hbm.tile.IInfoProviderEC; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.EnumSkyBlock; -public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC { +public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC, IConfigurableMachine { public int age = 0; public FluidTank[] tanks; @@ -20,11 +25,34 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidS public int waterTimer = 0; protected int throughput; + //Configurable values + public static int inputTankSize = 100; + public static int outputTankSize = 100; + public TileEntityCondenser() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 100); - tanks[1] = new FluidTank(Fluids.WATER, 100); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSize); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSize); } + + @Override + public String getConfigName() { + return "condenser"; + } + + @Override + public void readIfPresent(JsonObject obj) { + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + } + + @Override public void updateEntity() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java index 65fa15e19..9aabea820 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java @@ -1,8 +1,13 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -16,16 +21,41 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityCondenserPowered extends TileEntityCondenser implements IEnergyReceiverMK2 { public long power; - public static final long maxPower = 10_000_000; public float spin; public float lastSpin; + //Configurable values + public static long maxPower = 10_000_000; + public static int inputTankSizeP = 1_000_000; + public static int outputTankSizeP = 1_000_000; + public static int powerConsumption = 10; + public TileEntityCondenserPowered() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 1_000_000); - tanks[1] = new FluidTank(Fluids.WATER, 1_000_000); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSizeP); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSizeP); } + @Override + public String getConfigName() { + return "condenserPowered"; + } + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSizeP = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSizeP); + outputTankSizeP = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSizeP); + powerConsumption = IConfigurableMachine.grab(obj, "I:powerConsumption", powerConsumption); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("I:inputTankSize").value(inputTankSizeP); + writer.name("I:outputTankSize").value(outputTankSizeP); + writer.name("I:powerConsumption").value(powerConsumption); + } + @Override public void updateEntity() { super.updateEntity(); @@ -63,7 +93,7 @@ public class TileEntityCondenserPowered extends TileEntityCondenser implements I @Override public void postConvert(int convert) { - this.power -= convert * 10; + this.power -= convert * powerConsumption; if(this.power < 0) this.power = 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index 85ebe4747..d36cb4336 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -111,7 +111,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen } } if(i == 2) { - if(stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge()) { + if(stack.getItem() instanceof IBatteryItem && ((IBatteryItem) stack.getItem()).getCharge(stack) == ((IBatteryItem) stack.getItem()).getMaxCharge(stack)) { return true; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 147432fe9..ba32528da 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -1,7 +1,10 @@ package com.hbm.tileentity.machine; import java.util.Random; +import java.io.IOException; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineLargeTurbine; @@ -14,6 +17,7 @@ import com.hbm.inventory.gui.GUIMachineLargeTurbine; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; @@ -39,10 +43,9 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { public long power; - public static final long maxPower = 100000000; public FluidTank[] tanks; protected double[] info = new double[3]; @@ -54,17 +57,46 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme private AudioWrapper audio; private float audioDesync; + //Configurable Values + public static long maxPower = 100000000; + public static int inputTankSize = 512_000; + public static int outputTankSize = 10_240_000; + public static double efficiency = 1.0; + + public TileEntityMachineLargeTurbine() { super(7); tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 512000); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 10240000); + tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize); Random rand = new Random(); audioDesync = rand.nextFloat() * 0.05F; } + @Override + public String getConfigName() { + return "steamturbineIndustrial"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("INFO").value("industrial steam turbine consumes 20% of availible steam per tick"); + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + writer.name("D:efficiency").value(efficiency); + } + @Override public String getName() { return "container.machineLargeTurbine"; @@ -92,7 +124,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { FT_Coolable trait = in.getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE); //100% efficiency + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; //100% efficiency by default if(eff > 0) { tanks[1].setTankType(trait.coolsTo); int inputOps = (int) Math.floor(tanks[0].getFill() / trait.amountReq); //amount of cycles possible with the entire input buffer diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index f6c84baae..f2ee81f2c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -1,5 +1,9 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineTurbine; import com.hbm.inventory.fluid.FluidType; @@ -9,6 +13,7 @@ import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.gui.GUIMachineTurbine; import com.hbm.lib.Library; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; @@ -37,12 +42,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine{ private ItemStack slots[]; public long power; - public static final long maxPower = 1000000; public int age = 0; public FluidTank[] tanks; @@ -53,11 +57,40 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS private String customName; protected double[] info = new double[3]; + //Configurable values + public static long maxPower = 1_000_000; + public static int inputTankSize = 64_000; + public static int outputTankSize = 128_000; + public static int maxSteamPerTick = 6_000; + public static double efficiency = 0.85D; + public TileEntityMachineTurbine() { slots = new ItemStack[7]; tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 64_000); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 128_000); + tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize); + } + @Override + public String getConfigName() { + return "steamturbine"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + maxSteamPerTick = IConfigurableMachine.grab(obj, "I:maxSteamPerTick", maxSteamPerTick); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + writer.name("I:maxSteamPerTick").value(maxSteamPerTick); + writer.name("D:efficiency").value(efficiency); } @Override @@ -247,12 +280,12 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { FT_Coolable trait = in.getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE) * 0.85D; //small turbine is only 85% efficient + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; //small turbine is only 85% efficient by default if(eff > 0) { tanks[1].setTankType(trait.coolsTo); int inputOps = tanks[0].getFill() / trait.amountReq; int outputOps = (tanks[1].getMaxFill() - tanks[1].getFill()) / trait.amountProduced; - int cap = 6_000 / trait.amountReq; + int cap = maxSteamPerTick / trait.amountReq; int ops = Math.min(inputOps, Math.min(outputOps, cap)); tanks[0].setFill(tanks[0].getFill() - ops * trait.amountReq); tanks[1].setFill(tanks[1].getFill() + ops * trait.amountProduced); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 741988067..4e092d01c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -1,10 +1,15 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,12 +20,33 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityTowerLarge extends TileEntityCondenser { + //Configurable values + public static int inputTankSizeTL = 10_000; + public static int outputTankSizeTL = 10_000; + public TileEntityTowerLarge() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 10000); - tanks[1] = new FluidTank(Fluids.WATER, 10000); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSizeTL); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSizeTL); } + @Override + public String getConfigName() { + return "condenserTowerLarge"; + } + + @Override + public void readIfPresent(JsonObject obj) { + inputTankSizeTL = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSizeTL); + outputTankSizeTL = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSizeTL); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:inputTankSize").value(inputTankSizeTL); + writer.name("I:outputTankSize").value(outputTankSizeTL); + } + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java index d11366f33..6414c1e4e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java @@ -1,11 +1,16 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,12 +20,33 @@ import net.minecraft.util.AxisAlignedBB; public class TileEntityTowerSmall extends TileEntityCondenser { + //Configurable values + public static int inputTankSizeTS = 1_000; + public static int outputTankSizeTS = 1_000; + public TileEntityTowerSmall() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 1000); - tanks[1] = new FluidTank(Fluids.WATER, 1000); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSizeTS); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSizeTS); } + @Override + public String getConfigName() { + return "condenserTowerSmall"; + } + + @Override + public void readIfPresent(JsonObject obj) { + inputTankSizeTS = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSizeTS); + outputTankSizeTS = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSizeTS); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:inputTankSize").value(inputTankSizeTS); + writer.name("I:outputTankSize").value(outputTankSizeTS); + } + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java index dd804d1ca..7d836a45f 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java @@ -112,12 +112,10 @@ public class TileEntityMachinePumpjack extends TileEntityOilDrillBase { } @Override - public void sendUpdate() { - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("indicator", this.indicator); - data.setFloat("speed", this.indicator == 0 ? (5F + (2F * this.speedLevel)) + (this.overLevel - 1F) * 10: 0F); - this.networkPack(data, 25); + public void networkPack(NBTTagCompound nbt, int range) { + nbt.setFloat("speed", this.indicator == 0 ? (5F + (2F * this.speedLevel)) + (this.overLevel - 1F) * 10: 0F); + + super.networkPack(nbt, range); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index f67843023..70750e00a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -33,6 +33,9 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { @@ -464,25 +467,21 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - Object OC_enrich_buf; - Object OC_poison_buf; - Object OC_hull_buf; - Object OC_core_buf; - String OC_type; + List returnValues = new ArrayList<>(); if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); - OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); - OC_hull_buf = ItemRBMKRod.getHullHeat(slots[0]); - OC_core_buf = ItemRBMKRod.getCoreHeat(slots[0]); - OC_type = slots[0].getItem().getUnlocalizedName(); - } else { - OC_enrich_buf = "N/A"; - OC_poison_buf = "N/A"; - OC_hull_buf = "N/A"; - OC_core_buf = "N/A"; - OC_type = "N/A"; - } - return new Object[] {heat, OC_hull_buf, OC_core_buf, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_type, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + returnValues.add(ItemRBMKRod.getHullHeat(slots[0])); + returnValues.add(ItemRBMKRod.getCoreHeat(slots[0])); + returnValues.add(ItemRBMKRod.getEnrichment(slots[0])); + returnValues.add(ItemRBMKRod.getPoison(slots[0])); + returnValues.add(slots[0].getItem().getUnlocalizedName()); + } else + for (int i = 0; i < 5; i++) + returnValues.add("N/A"); + + return new Object[] { + heat, returnValues.get(0), returnValues.get(1), + fluxSlow, fluxFast, returnValues.get(2), returnValues.get(3), returnValues.get(4), + ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 99575c496..f61193726 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -21,10 +21,10 @@ import com.hbm.util.CompatEnergyControl; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -35,7 +35,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long[] log = new long[20]; public long delta = 0; @@ -141,7 +141,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(i == 0 && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == 0) { return true; } - if(i == 1 && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == ((IBatteryItem)itemStack.getItem()).getMaxCharge()) { + if(i == 1 && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == ((IBatteryItem)itemStack.getItem()).getMaxCharge(itemStack)) { return true; } } @@ -214,13 +214,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I prevPowerState = power; - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setLong("power", avg); - nbt.setLong("delta", delta); - nbt.setShort("redLow", redLow); - nbt.setShort("redHigh", redHigh); - nbt.setByte("priority", (byte) this.priority.ordinal()); - this.networkPack(nbt, 20); + this.networkPackNT(20); } } @@ -250,14 +244,25 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); - this.power = nbt.getLong("power"); - this.delta = nbt.getLong("delta"); - this.redLow = nbt.getShort("redLow"); - this.redHigh = nbt.getShort("redHigh"); - this.priority = ConnectionPriority.values()[nbt.getByte("priority")]; + buf.writeLong(power); + buf.writeLong(delta); + buf.writeShort(redLow); + buf.writeShort(redHigh); + buf.writeByte(priority.ordinal()); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + power = buf.readLong(); + delta = buf.readLong(); + redLow = buf.readShort(); + redHigh = buf.readShort(); + priority = ConnectionPriority.values()[buf.readByte()]; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java index bef292604..6065baa58 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -8,7 +8,6 @@ import api.hbm.energymk2.Nodespace; import api.hbm.energymk2.Nodespace.PowerNode; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @@ -79,13 +78,7 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { this.log[19] = avg; - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setLong("power", avg); - nbt.setLong("delta", delta); - nbt.setShort("redLow", redLow); - nbt.setShort("redHigh", redHigh); - nbt.setByte("priority", (byte) this.priority.ordinal()); - this.networkPack(nbt, 20); + this.networkPackNT(20); } if(worldObj.isRemote) { diff --git a/src/main/java/com/hbm/util/BobMathUtil.java b/src/main/java/com/hbm/util/BobMathUtil.java index dde5fe762..3330cda22 100644 --- a/src/main/java/com/hbm/util/BobMathUtil.java +++ b/src/main/java/com/hbm/util/BobMathUtil.java @@ -206,4 +206,15 @@ public class BobMathUtil { double delta = (beta - alpha + 180) % 360 - 180; return delta < -180 ? delta + 360 : delta; } + + /** Soft peak sine */ + public static double sps(double x) { + return Math.sin(Math.PI / 2D * Math.cos(x)); + } + + /** Square wave sine, make sure squarination is [0;1] */ + public static double sws(double x, double squarination) { + double s = Math.sin(x); + return Math.pow(Math.abs(s), 2 - squarination) / s; + } } diff --git a/src/main/resources/assets/hbm/disks/README.md b/src/main/resources/assets/hbm/disks/README.md new file mode 100644 index 000000000..973c2bfa1 --- /dev/null +++ b/src/main/resources/assets/hbm/disks/README.md @@ -0,0 +1,13 @@ +# OpenComputers Floppy Disks + +This directory is where the contents of floppy disks registered by `com.hbm.handler.CompatHandler` reside. + +New floppy disks can be added by: +1. Adding a line inside the `init()` function in the `CompatHandler` class to add the floppy disk to the list of disks to register + (actually registering the disks is done automatically by the handler.) +2. Adding the Lua (Preferably 5.3) files to the directory path based on the name you chose for your floppy disk. +
Note: the names of drives are "sanitized", meaning the directory path will be the name you selected but all lowercase and stripped of any non-word character. + (A-Z, a-z, 0-9, _) +3. Add a recipe to the disk at the end of the `init()` function in the `CompatHandler` class, though this step is not required. + +After those steps are complete, a new floppy disk should be registered into OC with a recipe (if added). \ No newline at end of file diff --git a/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua b/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua new file mode 100644 index 000000000..0b86935da --- /dev/null +++ b/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua @@ -0,0 +1,274 @@ +local component = require "component" +local event = require "event" +local gpu = component.gpu +local call = component.invoke + +colorGradient = {0x00FF00, 0x6BEE00, 0x95DB00, 0xB0C800, 0xC5B400, 0xD79F00, 0xE68700, 0xF46900, 0xFC4700, 0xFF0000} +coreHeatESTOP = true +coolantLossESTOP = true + +runSig = true + +coldCoolantLevel = 0 +coldCoolantOutflow = 0 +prevCoolantFlow = 0 + +hotCoolantLevel = 0 +hotCoolantOutflow = 0 +prevHotCoolantFlow = 0 + +gpu.fill(1,1,160,160," ") + +-- Button Bullshit +function newButton(x, y, width, height, colorUp, colorDown, func) + local button = {xpos = 0, ypos = 0, width = 0, height = 0, colorUp = 0, colorDown = 0, func = nil} + button.xpos = x + button.ypos = y + button.width = width + button.height = height + button.colorUp = colorUp + button.colorDown = colorDown + button.func = func + return button +end + +function drawButton(button, color) + component.gpu.setBackground(color) + component.gpu.fill(button.xpos, button.ypos, button.width, button.height, " ") + component.gpu.setBackground(0x000000) +end + +pressedButton = nil +function buttonPress(_, _, x, y, _, _) + for _, b in pairs(buttons) do + if((x>=b.xpos) and (x<(b.xpos+b.width)) and (y>=b.ypos) and (y<(b.ypos+b.height)) ) then + drawButton(b, b.colorDown) + pressedButton = b + end + end +end + +function buttonRelease(_, _, x, y, _, _) + drawButton(pressedButton, pressedButton.colorUp) + pressedButton.func() + pressedButton = nil +end +--Button bullshit ends + +buttons = {} + +buttons[1] = newButton(61, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+1) end) +buttons[2] = newButton(68, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+5) end) +buttons[3] = newButton(75, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+10) end) + +buttons[4] = newButton(61, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-1) end) +buttons[5] = newButton(68, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-5) end) +buttons[6] = newButton(75, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-10) end) + +buttons[7] = newButton(82, 6, 11, 5, 0xFF0000, 0xAA0000, function() component.proxy(pwrController).setLevel(100) end) +buttons[8] = newButton(94, 6, 12, 2, 0x00FF00, 0x00AA00, function() coreHeatESTOP = not coreHeatESTOP if coreHeatESTOP == true then buttons[8].colorUp = 0x00FF00 buttons[8].colorDown = 0x00AA00 else buttons[8].colorUp = 0xFF0000 buttons[8].colorDown = 0xAA0000 end end) +buttons[9] = newButton(94, 9, 12, 2, 0x00FF00, 0x00AA00, function() coolantLossESTOP = not coolantLossESTOP if coolantLossESTOP == true then buttons[9].colorUp = 0x00FF00 buttons[9].colorDown = 0x00AA00 else buttons[9].colorUp = 0xFF0000 buttons[9].colorDown = 0xAA0000 end end) + +buttons[10] = newButton(107, 8, 5, 3, 0xFF0000, 0xAA0000, function() runSig = false end) + +for address, _ in component.list("ntm_pwr_control") do + pwrController = address +end + +gpu.setForeground(0xAAAAAA) + +--Control rods +gpu.fill(60,4,54,8,"█") + +--Outlet +gpu.fill(91,13,16,8,"█") + +--Inlet +gpu.fill(91,30,16,8,"█") + +gpu.set(61,13," █████████████████████") +gpu.set(61,14," █ █ █ █ █ █ █ █ █ █") +gpu.set(61,15," █ █ █▄█▄█▄█▄█▄█ █ █") +gpu.set(61,16," ▄█████▀█▀█▀█▀█▀█████▄") +gpu.set(61,17," ▄███▀█ █ █ █ █ █ █ █▀███▄") +gpu.set(61,18," ▄██ █ █ █ █ █ █ █ █ █ █ ██▄") +gpu.set(61,19," ██ ██") +gpu.set(61,20,"██▀ █████████████████████ ▀██") +gpu.set(61,21,"██ █████████████████████ ██▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄") +gpu.set(61,22,"██ █ █ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀") +gpu.set(61,23,"██ █████████████████████ → → → → → → → → → →") +gpu.set(61,24,"██ █ █ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄") +gpu.set(61,25,"██ █████████████████████ ██▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀") +gpu.set(61,26,"██ █ █ ██") +gpu.set(61,27,"██ █████████████████████ ██") +gpu.set(61,28,"██ █ █ ██") +gpu.set(61,29,"██ █████████████████████ ██") +gpu.set(61,30,"██ █ █ ██") +gpu.set(61,31,"██ █████████████████████ ██") +gpu.set(61,32,"██ ██") +gpu.set(61,33,"██ ██") +gpu.set(61,34,"██ ██") +gpu.set(61,35,"██ ██") +gpu.set(61,36,"██ ██") +gpu.set(61,37,"██ ██") +gpu.set(61,38,"██ ██▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄") +gpu.set(61,39,"██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀") +gpu.set(61,40,"██ ← ← ← ← ← ← ← ← ← ←") +gpu.set(61,41,"██ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄") +gpu.set(61,42,"██ ██▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀") +gpu.set(61,43,"██▄ ▄██") +gpu.set(61,44," ██ ██") +gpu.set(61,45," ▀██ ██▀") +gpu.set(61,46," ▀██▄▄ ▄▄██▀") +gpu.set(61,47," ▀▀███▄▄▄▄▄▄▄▄▄▄▄███▀▀") +gpu.set(61,48," ▀▀▀▀▀▀▀▀▀▀▀▀") + +gpu.setBackground(0xAAAAAA) +gpu.setForeground(0x000000) + +gpu.set(70,4,"CONTROL RODS") +gpu.set(61,5,"INS+1 INS+5 INS+10") +gpu.set(61,8,"RET+1 RET+5 RET+10") + +gpu.set(85,5,"ESTOP") +gpu.set(107,5,"LEVEL") +gpu.set(107,7,"QUIT") + +gpu.set(94,5,"OVHEAT ESTOP") +gpu.set(94,8,"NOCOOL ESTOP") + +gpu.set(95,13,"OUTFLOW") +gpu.set(92,14,"BUFFER") +gpu.set(99,14,"HOTΔ") + +gpu.set(95,30,"INFLOW") +gpu.set(92,31,"BUFFER") +gpu.set(99,31,"COOLΔ") + +gpu.set(69,20,"REACTOR CORE") +gpu.set(71,21,"CORE HEAT:") +gpu.set(71,23,"HULL HEAT:") +gpu.set(71,25,"CORE FLUX:") +gpu.set(68,27,"COLD HEATEX LVL:") +gpu.set(69,29,"HOT HEATEX LVL:") +gpu.setBackground(0x000000) + +gpu.setForeground(0xFFFFFF) +gpu.fill(107,6,5,1,"█") + +--Outflow Buffer +gpu.fill(92,15,6,5,"█") + +--CoolDelta +gpu.fill(99,15,7,1,"█") + +--HotDelta + +gpu.set(66,19,"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃") +gpu.fill(66,22,19,1,"█") +gpu.fill(66,24,19,1,"█") +gpu.fill(66,26,19,1,"█") +gpu.fill(66,28,19,1,"█") +gpu.fill(66,30,19,1,"█") +gpu.set(66,32,"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃") +gpu.setForeground(0xAAAAAA) + +gpu.setForeground(0x000000) +gpu.setBackground(0xFFFFFF) +gpu.set(83,22,"TU") +gpu.set(83,24,"TU") +gpu.setForeground(0xFFFFFF) +gpu.setBackground(0x000000) + + +event.listen("touch", buttonPress) +event.listen("drop", buttonRelease) + +while (runSig == true) do + rodLevel = call(pwrController, "getLevel") + + coreHeat, _ = call(pwrController, "getHeat") + coreHeat = coreHeat//1000000 + + for _, b in pairs(buttons) do + drawButton(b, b.colorUp) + end + + for j=rodLevel//10,10 do + gpu.fill(64+(j*2), 33, 1, 10, " ") + end + + for j=1,rodLevel//10 do + gpu.fill(64+(j*2), 33, 1, 10, "┃") + end + + gpu.fill(64+(math.ceil(rodLevel/10)*2), 33, 1, math.fmod(rodLevel,10), "┃") + + for j=0,20,2 do + gpu.setForeground(colorGradient[coreHeat+1]) + gpu.fill(65+j, 33, 1, 9, "█") + gpu.setForeground(0xAAAAAA) + end + + gpu.setBackground(0xFFFFFF) + + gpu.setForeground(0xFFFFFF) + gpu.fill(66,22,19,1,"█") + gpu.fill(66,24,19,1,"█") + gpu.fill(66,26,19,1,"█") + gpu.fill(66,28,19,1,"█") + gpu.fill(66,30,19,1,"█") + + gpu.fill(92,15,6,5,"█") + gpu.fill(92,32,6,5,"█") + + gpu.fill(99,15,7,1,"█") + gpu.fill(99,32,7,1,"█") + + prevCoolantFlow = coldCoolantLevel + prevHotCoolantFlow = hotCoolantLevel + + fullCoreHeat, fullHullHeat = call(pwrController, "getHeat") + coldCoolantLevel, _, hotCoolantLevel, _ = call(pwrController, "getCoolantInfo") + + coldCoolantOutflow = coldCoolantLevel - prevCoolantFlow + hotCoolantOutflow = hotCoolantLevel - prevHotCoolantFlow + + gpu.setForeground(0xFF0099) + gpu.fill(92,15+(5-hotCoolantLevel//25600),6,hotCoolantLevel//25600, "█") + gpu.setForeground(0x000000) + + gpu.setForeground(0x00FFFF) + gpu.fill(92,32+(5-coldCoolantLevel//25600),6,coldCoolantLevel//25600, "█") + gpu.setForeground(0x000000) + + gpu.set(66,22,tostring(fullCoreHeat)) + gpu.set(66,24,tostring(fullHullHeat)) + gpu.set(66,26,tostring(call(pwrController, "getFlux"))) + gpu.set(66,28,tostring(coldCoolantLevel)) + gpu.set(66,30,tostring(hotCoolantLevel)) + + gpu.set(99,15,tostring(hotCoolantOutflow)) + gpu.set(99,32,tostring(coldCoolantOutflow)) + + gpu.set(107,6," ") + gpu.set(107,6,tostring(call(pwrController, "getLevel"))) + + gpu.setBackground(0x000000) + gpu.setForeground(0xFFFFFF) + + if (coreHeatESTOP == true) and (fullCoreHeat) > 9000000 then + component.proxy(pwrController).setLevel(100) + end + + if (coolantLossESTOP == true) and (coldCoolantLevel) < 10000 then + component.proxy(pwrController).setLevel(100) + end + + os.sleep(0.25) +end + +event.ignore("touch", buttonPress) +event.ignore("drop", buttonRelease) + +gpu.fill(1,1,160,160," ") \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index f14a5d786..026f86d95 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -119,6 +119,7 @@ armorMod.chestplates=Brustplatten armorMod.helmets=Helme armorMod.leggings=Beinschienen armorMod.insertHere=Rüstung zum Modifizieren einlegen... +armorMod.type.battery=Batterie armorMod.type.boots=Stiefel armorMod.type.chestplate=Brustplatte armorMod.type.cladding=Beschläge @@ -1188,6 +1189,9 @@ item.arc_electrode_burnt.graphite.name=Geschmolzene Graphitelektrode item.arc_electrode_burnt.lanthanium.name=Geschmolzene Lanthanelektrode item.arc_electrode_burnt.saturnite.name=Geschmolzene Saturnitelektrode item.arc_electrode_desh.name=Desh-Elektrode +item.armor_battery.name=Powerrüstung-Akkusatz +item.armor_battery_mk2.name=Powerrüstung-Akkusatz Mk2 +item.armor_battery_mk3.name=Powerrüstung-Akkusatz Mk3 item.armor_polish.name=ShiningArmor™ Rüstungspolitur item.asbestos_boots.name=Hitzeschutzstiefel item.asbestos_cloth.name=Hitzeschutzanzugsstoff diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c9f28f764..53e2aff13 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -174,6 +174,7 @@ armorMod.chestplates=Chestplates armorMod.helmets=Helmets armorMod.insertHere=Insert armor to modify... armorMod.leggings=Leggings +armorMod.type.battery=Battery armorMod.type.boots=Boots armorMod.type.chestplate=Chestplate armorMod.type.cladding=Cladding @@ -1900,6 +1901,9 @@ item.arc_electrode_burnt.graphite.name=Molten Graphite Electrode item.arc_electrode_burnt.lanthanium.name=Molten Lanthanium Electrode item.arc_electrode_burnt.saturnite.name=Molten Saturnite Electrode item.arc_electrode_desh.name=Desh Electrode +item.armor_battery.name=Power Armor Battery Pack +item.armor_battery_mk2.name=Power Armor Battery Pack Mk2 +item.armor_battery_mk3.name=Power Armor Battery Pack Mk3 item.armor_polish.name=ShiningArmor™ Armor Polish item.asbestos_boots.name=Fire Proximity Boots item.asbestos_cloth.name=Fire Proximity Cloth diff --git a/src/main/resources/assets/hbm/models/machines/derrick.obj b/src/main/resources/assets/hbm/models/machines/derrick.obj index e3b02a297..8b2b01979 100644 --- a/src/main/resources/assets/hbm/models/machines/derrick.obj +++ b/src/main/resources/assets/hbm/models/machines/derrick.obj @@ -767,7 +767,7 @@ vt 0.306452 0.431818 vt 0.258065 0.045455 vt 0.306452 0.113636 vt 0.580645 0.045455 -vt 0.540323 0.125000 +vt 0.532258 0.113636 vt 0.580645 0.500000 vt 0.532258 0.431818 vt 0.258065 0.500000 diff --git a/src/main/resources/assets/hbm/models/weapons/carbine.obj b/src/main/resources/assets/hbm/models/weapons/carbine.obj new file mode 100644 index 000000000..5a5caf913 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/carbine.obj @@ -0,0 +1,4149 @@ +# Blender v2.79 (sub 0) OBJ File: 'carbine.blend' +# www.blender.org +o Cylinder +v 0.000000 1.187500 4.375000 +v 0.000000 1.187500 8.000000 +v 0.093750 1.162380 4.375000 +v 0.093750 1.162380 8.000000 +v 0.162380 1.093750 4.375000 +v 0.162380 1.093750 8.000000 +v 0.187500 1.000000 4.375000 +v 0.187500 1.000000 8.000000 +v 0.162380 0.906250 4.375000 +v 0.162380 0.906250 8.000000 +v 0.093750 0.837620 4.375000 +v 0.093750 0.837620 8.000000 +v 0.000000 0.812500 4.375000 +v 0.000000 0.812500 8.000000 +v -0.093750 0.837620 4.375000 +v -0.093750 0.837620 8.000000 +v -0.162380 0.906250 4.375000 +v -0.162380 0.906250 8.000000 +v -0.187500 1.000000 4.375000 +v -0.187500 1.000000 8.000000 +v -0.162380 1.093750 4.375000 +v -0.162380 1.093750 8.000000 +v -0.093750 1.162380 4.375000 +v -0.093750 1.162380 8.000000 +v 0.000000 1.125000 8.000000 +v -0.062500 1.108253 8.000000 +v -0.108253 1.062500 8.000000 +v -0.125000 1.000000 8.000000 +v -0.108253 0.937500 8.000000 +v -0.062500 0.891747 8.000000 +v 0.000000 0.875000 8.000000 +v 0.062500 0.891747 8.000000 +v 0.108253 0.937500 8.000000 +v 0.125000 1.000000 8.000000 +v 0.108253 1.062500 8.000000 +v 0.062500 1.108253 8.000000 +v -0.062500 1.108253 7.000000 +v 0.000000 1.125000 7.000000 +v -0.108253 1.062500 7.000000 +v -0.125000 1.000000 7.000000 +v -0.108253 0.937500 7.000000 +v -0.062500 0.891747 7.000000 +v 0.000000 0.875000 7.000000 +v 0.062500 0.891747 7.000000 +v 0.108253 0.937500 7.000000 +v 0.125000 1.000000 7.000000 +v 0.108253 1.062500 7.000000 +v 0.062500 1.108253 7.000000 +v -0.125000 0.250000 3.375000 +v -0.125000 0.250000 3.625000 +v 0.125000 0.250000 3.375000 +v 0.125000 0.250000 3.625000 +v 0.125000 0.375000 3.625000 +v 0.125000 0.312500 3.375000 +v -0.125000 0.375000 3.625000 +v -0.125000 0.312500 3.375000 +v -0.312500 1.125000 3.375000 +v -0.312500 0.437500 3.375000 +v -0.312500 1.125000 3.625000 +v -0.312500 0.437500 3.625000 +v -0.062500 1.375000 3.375000 +v 0.062500 1.375000 3.375000 +v -0.125000 1.437500 3.375000 +v 0.125000 1.437500 3.375000 +v -0.062500 1.375000 3.625000 +v 0.062500 1.375000 3.625000 +v -0.125000 1.437500 3.625000 +v 0.125000 1.437500 3.625000 +v 0.312500 1.125000 3.375000 +v 0.312500 0.437500 3.375000 +v 0.312500 1.125000 3.625000 +v 0.312500 0.437500 3.625000 +v -0.062500 1.312500 3.375000 +v 0.062500 1.312500 3.375000 +v -0.125000 1.375000 3.375000 +v -0.250000 1.125000 3.375000 +v -0.250000 0.437500 3.375000 +v 0.250000 1.125000 3.375000 +v 0.125000 1.375000 3.375000 +v -0.062500 1.312500 3.625000 +v 0.250000 0.437500 3.375000 +v 0.062500 1.312500 3.625000 +v -0.125000 1.375000 3.625000 +v -0.250000 1.125000 3.625000 +v 0.250000 0.437500 2.375000 +v 0.125000 1.375000 2.375000 +v 0.250000 1.125000 2.375000 +v -0.250000 0.437500 2.375000 +v -0.250000 1.125000 2.375000 +v -0.125000 1.375000 2.375000 +v 0.062500 1.312500 2.375000 +v 0.250000 0.437500 1.875000 +v -0.062500 1.312500 2.375000 +v 0.125000 1.375000 1.875000 +v 0.250000 1.125000 1.875000 +v -0.250000 0.437500 1.875000 +v -0.250000 1.125000 1.875000 +v -0.125000 1.375000 1.875000 +v 0.062500 1.312500 1.875000 +v -0.062500 1.312500 1.875000 +v 0.312500 0.437500 2.375000 +v 0.312500 1.125000 2.375000 +v 0.312500 0.437500 1.875000 +v 0.312500 1.125000 1.875000 +v 0.125000 1.437500 2.375000 +v -0.125000 1.437500 2.375000 +v 0.062500 1.375000 2.375000 +v -0.062500 1.375000 2.375000 +v 0.125000 1.437500 1.875000 +v -0.125000 1.437500 1.875000 +v 0.062500 1.375000 1.875000 +v -0.062500 1.375000 1.875000 +v -0.312500 0.437500 2.375000 +v -0.312500 1.125000 2.375000 +v -0.312500 0.437500 1.875000 +v -0.312500 1.125000 1.875000 +v -0.250000 0.437500 -0.500000 +v -0.125000 0.312500 -0.500000 +v 0.125000 0.312500 -0.500000 +v 0.250000 0.437500 -0.500000 +v -0.125000 1.062500 -1.000000 +v -0.250000 0.937500 -1.000000 +v 0.250000 0.937500 -1.000000 +v 0.125000 1.062500 -1.000000 +v -0.125000 0.312500 -1.750000 +v -0.250000 0.437500 -1.750000 +v 0.250000 0.437500 -1.750000 +v 0.125000 0.312500 -1.750000 +v -0.250000 0.937500 -1.750000 +v -0.125000 1.062500 -1.750000 +v 0.125000 1.062500 -1.750000 +v 0.250000 0.937500 -1.750000 +v 0.000000 1.125000 1.437500 +v -0.062500 1.108253 1.437500 +v -0.108253 1.062500 1.437500 +v -0.125000 1.000000 1.437500 +v -0.108253 0.937500 1.437500 +v -0.062500 0.891747 1.437500 +v 0.000000 0.875000 1.437500 +v 0.062500 0.891747 1.437500 +v 0.108253 0.937500 1.437500 +v 0.125000 1.000000 1.437500 +v 0.108253 1.062500 1.437500 +v 0.062500 1.108253 1.437500 +v -0.093750 1.162380 1.437500 +v -0.162380 1.093750 1.437500 +v -0.187500 1.000000 1.437500 +v -0.162380 0.906250 1.437500 +v -0.093750 0.837620 1.437500 +v 0.000000 0.812500 1.437500 +v 0.093750 0.837620 1.437500 +v 0.162380 0.906250 1.437500 +v 0.187500 1.000000 1.437500 +v 0.162380 1.093750 1.437500 +v 0.093750 1.162380 1.437500 +v 0.000000 1.187500 1.437500 +v 0.000000 1.125000 1.937500 +v -0.062500 1.108253 1.937500 +v -0.108253 1.062500 1.937500 +v -0.125000 1.000000 1.937500 +v -0.108253 0.937500 1.937500 +v -0.062500 0.891747 1.937500 +v 0.000000 0.875000 1.937500 +v 0.062500 0.891747 1.937500 +v 0.108253 0.937500 1.937500 +v 0.125000 1.000000 1.937500 +v 0.108253 1.062500 1.937500 +v 0.062500 1.108253 1.937500 +v -0.093750 1.162380 1.562500 +v -0.162380 1.093750 1.562500 +v -0.187500 1.000000 1.562500 +v -0.162380 0.906250 1.562500 +v -0.093750 0.837620 1.562500 +v 0.000000 0.812500 1.562500 +v 0.093750 0.837620 1.562500 +v 0.162380 0.906250 1.562500 +v 0.187500 1.000000 1.562500 +v 0.162380 1.093750 1.562500 +v 0.093750 1.162380 1.562500 +v 0.000000 1.187500 1.562500 +v -0.250000 0.500000 3.625000 +v 0.250000 1.125000 3.625000 +v 0.125000 1.375000 3.625000 +v 0.250000 0.500000 3.625000 +v 0.312500 1.000000 1.625000 +v 0.312500 1.000000 -1.000000 +v 0.312500 0.875000 1.625000 +v 0.312500 0.625000 1.375000 +v 0.312500 0.375000 1.375000 +v 0.187500 0.250000 1.375000 +v -0.187500 0.250000 1.375000 +v -0.312500 0.375000 1.375000 +v -0.312500 0.625000 1.375000 +v -0.312500 0.875000 1.625000 +v -0.312500 1.000000 1.625000 +v -0.312500 1.000000 -1.000000 +v 0.312500 0.625000 -0.750000 +v 0.312500 0.375000 -0.750000 +v 0.187500 0.250000 -0.750000 +v -0.187500 0.250000 -0.750000 +v -0.312500 0.375000 -0.750000 +v -0.312500 0.625000 -0.750000 +v 0.250000 1.000000 1.625000 +v 0.250000 0.875000 1.625000 +v 0.250000 0.625000 1.375000 +v 0.250000 0.437500 1.375000 +v -0.250000 0.437500 1.375000 +v -0.250000 0.625000 1.375000 +v -0.250000 0.875000 1.625000 +v -0.250000 1.000000 1.625000 +v 0.125000 0.312500 1.375000 +v -0.125000 0.312500 1.375000 +v -0.093750 1.162380 1.125000 +v -0.162380 1.093750 1.125000 +v -0.187500 1.000000 1.125000 +v 0.187500 1.000000 1.125000 +v 0.162380 1.093750 1.125000 +v 0.093750 1.162380 1.125000 +v 0.000000 1.187500 1.125000 +v -0.093750 1.162380 0.125000 +v -0.162380 1.093750 0.125000 +v -0.187500 1.000000 0.125000 +v 0.187500 1.000000 0.125000 +v 0.162380 1.093750 0.125000 +v 0.093750 1.162380 0.125000 +v 0.000000 1.187500 0.125000 +v 0.187500 1.000000 1.625000 +v -0.187500 1.000000 1.625000 +v 0.187500 1.000000 0.125000 +v -0.187500 1.000000 0.125000 +v 0.000000 1.250000 0.125000 +v -0.125000 1.216506 0.125000 +v -0.216506 1.125000 0.125000 +v -0.250000 1.000000 0.125000 +v -0.216506 0.875000 0.125000 +v -0.125000 0.783494 0.125000 +v 0.000000 0.750000 0.125000 +v 0.125000 0.783494 0.125000 +v 0.216506 0.875000 0.125000 +v 0.250000 1.000000 0.125000 +v 0.216506 1.125000 0.125000 +v 0.125000 1.216506 0.125000 +v -0.125000 1.216506 -0.125000 +v 0.000000 1.250000 -0.125000 +v -0.216506 1.125000 -0.125000 +v -0.250000 1.000000 -0.125000 +v 0.093750 0.837620 1.375000 +v 0.000000 0.812500 1.375000 +v -0.093750 0.837620 1.375000 +v -0.162380 0.906250 1.375000 +v -0.187500 1.000000 1.375000 +v 0.250000 1.000000 -0.125000 +v 0.216506 1.125000 -0.125000 +v 0.125000 1.216506 -0.125000 +v 0.162380 0.906250 1.375000 +v 0.187500 1.000000 1.375000 +v 0.000000 1.312500 1.375000 +v -0.156250 1.270633 1.375000 +v -0.270633 1.156250 1.375000 +v -0.312500 1.000000 1.375000 +v -0.093750 0.837620 1.125000 +v 0.000000 0.812500 1.125000 +v 0.093750 0.837620 1.125000 +v 0.162380 0.906250 1.125000 +v 0.187500 1.000000 1.125000 +v 0.312500 1.000000 1.375000 +v 0.270633 1.156250 1.375000 +v 0.156250 1.270633 1.375000 +v -0.162380 0.906250 1.125000 +v -0.187500 1.000000 1.125000 +v -0.156250 1.270633 1.125000 +v 0.000000 1.312500 1.125000 +v -0.270633 1.156250 1.125000 +v -0.312500 1.000000 1.125000 +v 0.312500 1.000000 1.125000 +v 0.270633 1.156250 1.125000 +v 0.156250 1.270633 1.125000 +v -0.093750 1.162380 1.437500 +v -0.162380 1.093750 1.437500 +v -0.187500 1.000000 1.437500 +v -0.162380 0.906250 1.437500 +v -0.093750 0.837620 1.437500 +v 0.000000 0.812500 1.437500 +v 0.093750 0.837620 1.437500 +v 0.162380 0.906250 1.437500 +v 0.187500 1.000000 1.437500 +v 0.162380 1.093750 1.437500 +v 0.093750 1.162380 1.437500 +v 0.000000 1.187500 1.437500 +v -0.093750 1.162380 1.375000 +v -0.162380 1.093750 1.375000 +v -0.187500 1.000000 1.375000 +v -0.162380 0.906250 1.375000 +v -0.093750 0.837620 1.375000 +v 0.000000 0.812500 1.375000 +v 0.093750 0.837620 1.375000 +v 0.162380 0.906250 1.375000 +v 0.187500 1.000000 1.375000 +v 0.162380 1.093750 1.375000 +v 0.093750 1.162380 1.375000 +v 0.000000 1.187500 1.375000 +v -0.187500 1.000000 1.437500 +v -0.162380 0.906250 1.437500 +v -0.093750 0.837620 1.437500 +v 0.000000 0.812500 1.437500 +v 0.093750 0.837620 1.437500 +v 0.162380 0.906250 1.437500 +v 0.187500 1.000000 1.437500 +v -0.187500 1.000000 0.125000 +v -0.162380 0.906250 0.125000 +v -0.093750 0.837620 0.125000 +v 0.000000 0.812500 0.125000 +v 0.093750 0.837620 0.125000 +v 0.162380 0.906250 0.125000 +v 0.187500 1.000000 0.125000 +v -0.250000 1.000000 7.875000 +v -0.216506 0.875000 7.875000 +v -0.125000 0.783494 7.875000 +v 0.000000 0.750000 7.875000 +v 0.125000 0.783494 7.875000 +v 0.216506 0.875000 7.875000 +v 0.250000 1.000000 7.875000 +v 0.000000 1.250000 6.125000 +v -0.125000 1.216506 6.125000 +v -0.216506 1.125000 6.125000 +v -0.250000 1.000000 6.125000 +v -0.216506 0.875000 6.125000 +v -0.125000 0.783494 6.125000 +v 0.000000 0.750000 6.125000 +v 0.125000 0.783494 6.125000 +v 0.216506 0.875000 6.125000 +v 0.250000 1.000000 6.125000 +v 0.216506 1.125000 6.125000 +v 0.125000 1.216506 6.125000 +v -0.250000 1.000000 7.500000 +v -0.216506 0.875000 7.500000 +v -0.125000 0.783494 7.500000 +v 0.000000 0.750000 7.500000 +v 0.125000 0.783494 7.500000 +v 0.216506 0.875000 7.500000 +v 0.250000 1.000000 7.500000 +v 0.216506 1.125000 5.250000 +v 0.250000 1.000000 5.375000 +v 0.216506 0.875000 5.500000 +v -0.125000 1.375000 7.500000 +v 0.125000 1.375000 7.500000 +v 0.125000 1.375000 7.875000 +v -0.125000 1.375000 7.875000 +v 0.187500 1.375000 7.875000 +v 0.187500 1.375000 7.500000 +v -0.187500 1.375000 7.875000 +v -0.187500 1.375000 7.500000 +v 0.187500 1.000000 7.875000 +v 0.162380 0.906250 7.875000 +v 0.093750 0.837620 7.875000 +v 0.000000 0.812500 7.875000 +v -0.093750 0.837620 7.875000 +v -0.162380 0.906250 7.875000 +v -0.187500 1.000000 7.875000 +v 0.187500 1.000000 7.500000 +v 0.162380 0.906250 7.500000 +v 0.093750 0.837620 7.500000 +v 0.000000 0.812500 7.500000 +v -0.093750 0.837620 7.500000 +v -0.162380 0.906250 7.500000 +v -0.187500 1.000000 7.500000 +v 0.125000 0.783494 5.500000 +v 0.000000 0.750000 5.500000 +v -0.125000 0.783494 5.500000 +v -0.216506 0.875000 5.500000 +v -0.250000 1.000000 5.375000 +v -0.216506 1.125000 5.250000 +v -0.312500 1.691561 7.881433 +v -0.312500 1.691561 7.506433 +v 0.250000 1.687500 7.875000 +v 0.312500 1.687500 7.875000 +v 0.312500 1.687500 7.500000 +v 0.250000 1.687500 7.500000 +v -0.250000 1.691561 7.506433 +v -0.250000 1.691561 7.881433 +v 0.062500 1.125000 7.500000 +v 0.062500 1.125000 7.875000 +v 0.062500 1.375000 7.875000 +v 0.062500 1.375000 7.500000 +v -0.062500 1.375000 7.875000 +v -0.062500 1.125000 7.875000 +v -0.062500 1.125000 7.500000 +v -0.062500 1.375000 7.500000 +v 0.062500 1.250000 7.875000 +v 0.062500 1.250000 7.500000 +v -0.062500 1.250000 7.875000 +v -0.062500 1.250000 7.500000 +v 0.062500 1.250000 7.812500 +v 0.062500 1.250000 7.562500 +v -0.062500 1.250000 7.812500 +v -0.062500 1.250000 7.562500 +v 0.062500 1.437500 7.562500 +v -0.062500 1.437500 7.562500 +v -0.062500 1.437500 7.812500 +v 0.062500 1.437500 7.812500 +v 0.031250 1.562500 7.625000 +v -0.031250 1.562500 7.625000 +v -0.031250 1.562500 7.750000 +v 0.031250 1.562500 7.750000 +v 0.162380 1.093750 5.250000 +v 0.187500 1.000000 5.375000 +v 0.162380 0.906250 5.500000 +v 0.093750 0.837620 5.500000 +v 0.000000 0.812500 5.500000 +v -0.093750 0.837620 5.500000 +v -0.162380 0.906250 5.500000 +v -0.187500 1.000000 5.375000 +v -0.162380 1.093750 5.250000 +v 0.000000 1.187500 6.125000 +v 0.093750 1.162380 6.125000 +v 0.162380 1.093750 6.125000 +v 0.187500 1.000000 6.125000 +v 0.162380 0.906250 6.125000 +v 0.093750 0.837620 6.125000 +v 0.000000 0.812500 6.125000 +v -0.093750 0.837620 6.125000 +v -0.162380 0.906250 6.125000 +v -0.187500 1.000000 6.125000 +v -0.162380 1.093750 6.125000 +v -0.093750 1.162380 6.125000 +v 0.000000 1.250000 4.875000 +v 0.125000 1.216506 4.875000 +v 0.216506 1.125000 4.875000 +v -0.216506 1.125000 4.875000 +v -0.125000 1.216506 4.875000 +v 0.093750 1.162380 4.875000 +v 0.000000 1.187500 4.875000 +v 0.162380 1.093750 4.875000 +v -0.093750 1.162380 4.875000 +v -0.162380 1.093750 4.875000 +v 0.000000 1.250000 4.437500 +v -0.125000 1.216506 4.437500 +v -0.216506 1.125000 4.437500 +v -0.250000 1.000000 4.437500 +v 0.250000 1.000000 4.437500 +v 0.216506 1.125000 4.437500 +v 0.125000 1.216506 4.437500 +v 0.000000 1.187500 4.437500 +v 0.093750 1.162380 4.437500 +v 0.162380 1.093750 4.437500 +v 0.187500 1.000000 4.437500 +v -0.187500 1.000000 4.437500 +v -0.162380 1.093750 4.437500 +v -0.093750 1.162380 4.437500 +v -0.125000 1.216506 4.812500 +v 0.000000 1.250000 4.812500 +v -0.216506 1.125000 4.812500 +v -0.250000 1.000000 4.812500 +v 0.250000 1.000000 4.812500 +v 0.216506 1.125000 4.812500 +v 0.125000 1.216506 4.812500 +v 0.093750 1.162380 4.812500 +v 0.000000 1.187500 4.812500 +v 0.162380 1.093750 4.812500 +v 0.187500 1.000000 4.812500 +v -0.187500 1.000000 4.812500 +v -0.162380 1.093750 4.812500 +v -0.093750 1.162380 4.812500 +v 0.187500 0.500100 4.750000 +v 0.187500 0.500100 4.500000 +v 0.125000 0.437600 4.750000 +v 0.125000 0.437600 4.500000 +v 0.187500 0.187600 4.750000 +v 0.187500 0.187600 4.500000 +v 0.125000 0.187600 4.750000 +v 0.125000 0.187600 4.500000 +v 0.187500 0.062600 4.687500 +v 0.187500 0.062600 4.562500 +v 0.125000 0.062600 4.687500 +v 0.125000 0.062600 4.562500 +v -0.125000 0.437600 4.750000 +v -0.125000 0.437600 4.500000 +v -0.187500 0.500100 4.750000 +v -0.187500 0.500100 4.500000 +v -0.125000 0.187600 4.750000 +v -0.125000 0.187600 4.500000 +v -0.187500 0.187600 4.750000 +v -0.187500 0.187600 4.500000 +v -0.125000 0.062600 4.687500 +v -0.125000 0.062600 4.562500 +v -0.187500 0.062600 4.687500 +v -0.187500 0.062600 4.562500 +v -0.250000 0.156350 4.656250 +v -0.250000 0.218850 4.656250 +v -0.250000 0.156350 4.593750 +v -0.250000 0.218850 4.593750 +v 0.250000 0.156350 4.656250 +v 0.250000 0.218850 4.656250 +v 0.250000 0.156350 4.593750 +v 0.250000 0.218850 4.593750 +v 0.125000 1.000000 1.125000 +v 0.500000 1.000000 1.125000 +v 0.125000 1.000000 1.000000 +v 0.500000 1.000000 1.000000 +v 0.125000 1.062500 1.125000 +v 0.500000 1.062500 1.125000 +v 0.125000 1.062500 1.000000 +v 0.500000 1.062500 1.000000 +v 0.312500 1.000000 1.250000 +v 0.312500 0.875000 1.250000 +v 0.312500 1.000000 -0.875000 +v 0.312500 0.875000 -0.875000 +v 0.437500 0.875000 1.250000 +v 0.437500 1.000000 1.250000 +v 0.437500 0.875000 0.000000 +v 0.437500 1.000000 0.000000 +v 0.500000 0.906250 1.125000 +v 0.500000 1.156250 1.125000 +v 0.500000 0.906250 1.000000 +v 0.500000 1.156250 1.000000 +v 0.750000 0.968750 1.125000 +v 0.750000 1.093750 1.125000 +v 0.750000 0.968750 1.000000 +v 0.750000 1.093750 1.000000 +v 0.625000 0.906250 1.000000 +v 0.625000 1.156250 1.000000 +v 0.625000 0.906250 1.125000 +v 0.625000 1.156250 1.125000 +v 0.687500 0.875000 0.000000 +v 0.687500 1.000000 0.000000 +v 0.562500 0.875000 -0.500000 +v 0.562500 1.000000 -0.500000 +v 0.687500 1.000000 0.000000 +v 0.562500 1.000000 0.000000 +v 0.687500 1.062500 0.000000 +v 0.562500 1.062500 0.000000 +v 0.625000 1.000000 -0.062500 +v 0.562500 1.000000 -0.062500 +v 0.625000 1.062500 -0.062500 +v 0.562500 1.062500 -0.062500 +v -0.687500 1.000000 0.000000 +v -0.562500 1.000000 0.000000 +v -0.687500 1.062500 0.000000 +v -0.562500 1.062500 0.000000 +v -0.625000 1.000000 -0.062500 +v -0.562500 1.000000 -0.062500 +v -0.625000 1.062500 -0.062500 +v -0.562500 1.062500 -0.062500 +v 0.125000 0.187500 -2.000000 +v 0.250000 0.312500 -2.000000 +v 0.250000 0.812500 -2.000000 +v 0.125000 0.937500 -2.000000 +v -0.250000 0.312500 -2.000000 +v -0.125000 0.187500 -2.000000 +v -0.125000 0.937500 -2.000000 +v -0.250000 0.812500 -2.000000 +v 0.125000 -0.062500 -2.500000 +v 0.250000 0.062500 -2.500000 +v 0.250000 0.562500 -2.750000 +v 0.125000 0.687500 -2.750000 +v -0.250000 0.062500 -2.500000 +v -0.125000 -0.062500 -2.500000 +v -0.125000 0.687500 -2.750000 +v -0.250000 0.562500 -2.750000 +v 0.250000 0.687500 -3.000000 +v 0.125000 0.812500 -3.000000 +v -0.125000 0.812500 -3.000000 +v -0.250000 0.687500 -3.000000 +v 0.250000 0.812500 -3.500000 +v 0.125000 0.937500 -3.500000 +v -0.125000 0.937500 -3.500000 +v -0.250000 0.812500 -3.500000 +v 0.250000 0.812500 -7.750000 +v 0.125000 0.937500 -7.750000 +v -0.125000 0.937500 -7.750000 +v -0.250000 0.812500 -7.750000 +v 0.125000 -0.937500 -3.125000 +v 0.250000 -0.812500 -3.125000 +v -0.250000 -0.812500 -3.125000 +v -0.125000 -0.937500 -3.125000 +v 0.125000 -0.687500 -4.000000 +v 0.250000 -0.562500 -4.000000 +v -0.250000 -0.562500 -4.000000 +v -0.125000 -0.687500 -4.000000 +v 0.125000 -0.812500 -5.000000 +v 0.250000 -0.687500 -5.000000 +v -0.250000 -0.687500 -5.000000 +v -0.125000 -0.812500 -5.000000 +v 0.125000 -1.687500 -7.375000 +v 0.250000 -1.562500 -7.375000 +v -0.250000 -1.562500 -7.375000 +v -0.125000 -1.687500 -7.375000 +v 0.125000 -1.687500 -7.875000 +v 0.250000 -1.562500 -7.875000 +v -0.250000 -1.562500 -7.875000 +v -0.125000 -1.687500 -7.875000 +v 0.125000 -1.437500 -8.125000 +v 0.250000 -1.437500 -8.000000 +v -0.250000 -1.437500 -8.000000 +v -0.125000 -1.437500 -8.125000 +v 0.125000 0.562500 -8.125000 +v 0.250000 0.562500 -8.000000 +v -0.250000 0.562500 -8.000000 +v -0.125000 0.562500 -8.125000 +v 0.312500 0.875000 -1.000000 +v -0.312500 0.875000 -1.000000 +v 0.250000 1.000000 3.500000 +v -0.250000 1.000000 3.500000 +v 0.250000 1.125000 3.500000 +v -0.250000 1.125000 3.500000 +v -0.187500 1.125000 3.500000 +v -0.187500 1.000000 3.500000 +v 0.187500 1.125000 3.500000 +v 0.187500 1.000000 3.500000 +v 0.250000 1.000000 1.375000 +v 0.250000 1.125000 1.375000 +v -0.250000 1.125000 1.375000 +v -0.250000 1.000000 1.375000 +v -0.187500 1.125000 1.375000 +v -0.187500 1.000000 1.375000 +v 0.187500 1.000000 1.375000 +v 0.187500 1.125000 1.375000 +v 0.312500 1.000000 -1.000000 +v -0.312500 1.000000 -1.000000 +v 0.312500 1.000000 -0.125000 +v -0.312500 1.000000 -0.125000 +v 0.312500 1.125000 -1.000000 +v -0.312500 1.125000 -1.000000 +v 0.312500 1.125000 -0.125000 +v -0.312500 1.125000 -0.125000 +v 0.187500 1.250000 -0.875000 +v -0.187500 1.250000 -0.875000 +v 0.187500 1.250000 -0.125000 +v -0.187500 1.250000 -0.125000 +v 0.187500 1.375000 -0.125000 +v -0.187500 1.375000 -0.125000 +v 0.187500 1.375000 -0.625000 +v -0.187500 1.375000 -0.625000 +v 0.187500 1.437500 -0.125000 +v -0.187500 1.437500 -0.125000 +v -0.125000 1.437500 -0.125000 +v -0.125000 1.437500 -0.625000 +v 0.125000 1.437500 -0.125000 +v 0.125000 1.437500 -0.625000 +v 0.187500 1.562500 -0.625000 +v -0.187500 1.562500 -0.625000 +v -0.125000 1.562500 -0.625000 +v 0.125000 1.562500 -0.625000 +v 0.000000 1.687500 -0.250000 +v -0.088388 1.650888 -0.250000 +v -0.125000 1.562500 -0.250000 +v 0.000000 1.437500 -0.312500 +v 0.000000 1.437500 -0.250000 +v 0.125000 1.562500 -0.250000 +v 0.088388 1.650888 -0.250000 +v 0.000000 1.656250 -0.250000 +v -0.066291 1.628791 -0.250000 +v -0.093750 1.562500 -0.250000 +v -0.066291 1.496209 -0.250000 +v 0.000000 1.468750 -0.250000 +v 0.066291 1.496209 -0.250000 +v 0.093750 1.562500 -0.250000 +v 0.066291 1.628791 -0.250000 +v -0.125000 1.437500 -0.250000 +v 0.125000 1.437500 -0.250000 +v 0.000000 1.687500 -0.312500 +v -0.088388 1.650888 -0.312500 +v -0.125000 1.562500 -0.312500 +v 0.125000 1.562500 -0.312500 +v 0.088388 1.650888 -0.312500 +v 0.000000 1.656250 -0.312500 +v -0.066291 1.628791 -0.312500 +v -0.093750 1.562500 -0.312500 +v -0.066291 1.496209 -0.312500 +v 0.000000 1.468750 -0.312500 +v 0.066291 1.496209 -0.312500 +v 0.093750 1.562500 -0.312500 +v 0.066291 1.628791 -0.312500 +v -0.125000 1.437500 -0.312500 +v 0.125000 1.437500 -0.312500 +v 0.187500 1.250000 -0.125000 +v -0.187500 1.250000 -0.125000 +v 0.187500 1.250000 -0.750000 +v -0.187500 1.250000 -0.750000 +v 0.125000 1.375000 -0.187500 +v -0.125000 1.375000 -0.187500 +v 0.125000 1.375000 -0.562500 +v -0.125000 1.375000 -0.562500 +v 0.187500 1.525888 -0.411612 +v 0.187500 1.562500 -0.500000 +v 0.187500 1.525888 -0.588388 +v 0.187500 1.437500 -0.625000 +v 0.187500 1.437500 -0.375000 +v 0.187500 1.349112 -0.411612 +v 0.187500 1.312500 -0.500000 +v 0.187500 1.349112 -0.588388 +v 0.250000 1.437500 -0.625000 +v 0.250000 1.349112 -0.588388 +v 0.250000 1.312500 -0.500000 +v 0.250000 1.349112 -0.411612 +v 0.250000 1.437500 -0.375000 +v 0.250000 1.562500 -0.500000 +v 0.250000 1.525888 -0.588388 +v 0.250000 1.525888 -0.411612 +v -0.187500 1.525888 -0.411612 +v -0.187500 1.525888 -0.588388 +v -0.187500 1.562500 -0.500000 +v -0.187500 1.437500 -0.375000 +v -0.187500 1.349112 -0.411612 +v -0.187500 1.312500 -0.500000 +v -0.187500 1.349112 -0.588388 +v -0.187500 1.437500 -0.625000 +v -0.250000 1.349112 -0.588388 +v -0.250000 1.312500 -0.500000 +v -0.250000 1.349112 -0.411612 +v -0.250000 1.437500 -0.375000 +v -0.250000 1.437500 -0.625000 +v -0.250000 1.525888 -0.588388 +v -0.250000 1.562500 -0.500000 +v -0.250000 1.525888 -0.411612 +v 0.187500 0.875000 1.125000 +v -0.187500 0.875000 1.125000 +v 0.187500 0.875000 0.125000 +v -0.187500 0.875000 0.125000 +v -0.187500 -1.375000 1.125000 +v 0.187500 -1.375000 1.125000 +v -0.187500 -1.375000 0.125000 +v 0.187500 -1.375000 0.125000 +v 0.000000 1.000000 0.187500 +v -0.062500 0.983253 0.187500 +v -0.108253 0.937500 0.187500 +v -0.125000 0.875000 0.187500 +v -0.108253 0.812500 0.187500 +v -0.062500 0.766747 0.187500 +v 0.000000 0.750000 0.187500 +v 0.062500 0.766747 0.187500 +v 0.108253 0.812500 0.187500 +v 0.125000 0.875000 0.187500 +v 0.108253 0.937500 0.187500 +v 0.062500 0.983253 0.187500 +v 0.000000 1.000000 0.812500 +v -0.062500 0.983253 0.812500 +v -0.108253 0.937500 0.812500 +v -0.125000 0.875000 0.812500 +v -0.108253 0.812500 0.812500 +v -0.062500 0.766747 0.812500 +v 0.000000 0.750000 0.812500 +v 0.062500 0.766747 0.812500 +v 0.108253 0.812500 0.812500 +v 0.125000 0.875000 0.812500 +v 0.108253 0.937500 0.812500 +v 0.062500 0.983253 0.812500 +v 0.000000 0.968750 1.000000 +v -0.046875 0.956190 1.000000 +v -0.081190 0.921875 1.000000 +v -0.093750 0.875000 1.000000 +v -0.081190 0.828125 1.000000 +v -0.046875 0.793810 1.000000 +v 0.000000 0.781250 1.000000 +v 0.046875 0.793810 1.000000 +v 0.081190 0.828125 1.000000 +v 0.093750 0.875000 1.000000 +v 0.081190 0.921875 1.000000 +v 0.046875 0.956190 1.000000 +v 0.000000 0.906250 1.062500 +v -0.015625 0.902063 1.062500 +v -0.027063 0.890625 1.062500 +v -0.031250 0.875000 1.062500 +v -0.027063 0.859375 1.062500 +v -0.015625 0.847937 1.062500 +v 0.000000 0.843750 1.062500 +v 0.015625 0.847937 1.062500 +v 0.027063 0.859375 1.062500 +v 0.031250 0.875000 1.062500 +v 0.027063 0.890625 1.062500 +v 0.015625 0.902063 1.062500 +v -0.125000 0.875000 1.125000 +v -0.062500 0.750000 1.125000 +v 0.062500 0.750000 1.125000 +v 0.125000 0.875000 1.125000 +v -0.125000 0.875000 0.125000 +v -0.062500 0.750000 0.125000 +v 0.062500 0.750000 0.125000 +v 0.125000 0.875000 0.125000 +v -0.125000 0.250000 0.000000 +v 0.125000 0.250000 0.000000 +v -0.125000 0.250000 -0.750000 +v 0.125000 0.250000 -0.750000 +v -0.125000 0.000000 -0.750000 +v -0.125000 0.000000 0.000000 +v 0.125000 0.000000 0.000000 +v 0.125000 0.000000 -0.750000 +v -0.062500 0.312500 -1.750000 +v 0.062500 0.312500 -1.750000 +v -0.062500 -0.062500 -1.750000 +v 0.062500 -0.062500 -1.750000 +v -0.062500 -0.312500 -1.500000 +v 0.062500 -0.312500 -1.500000 +v -0.062500 -0.312500 -0.875000 +v 0.062500 -0.312500 -0.875000 +v -0.062500 -0.125000 -0.687500 +v 0.062500 -0.125000 -0.687500 +v -0.062500 0.000000 -0.625000 +v 0.062500 0.000000 -0.625000 +v -0.062500 0.312500 -1.687500 +v 0.062500 0.312500 -1.687500 +v -0.062500 -0.062500 -1.687500 +v 0.062500 -0.062500 -1.687500 +v -0.062500 -0.250000 -1.500000 +v 0.062500 -0.250000 -1.500000 +v -0.062500 -0.250000 -0.875000 +v 0.062500 -0.250000 -0.875000 +v -0.062500 -0.125000 -0.750000 +v 0.062500 -0.125000 -0.750000 +v -0.062500 0.000000 -0.687500 +v 0.062500 0.000000 -0.687500 +v -0.062500 0.312500 -1.562500 +v 0.062500 0.312500 -1.562500 +v -0.062500 0.312500 -1.312500 +v 0.062500 0.312500 -1.312500 +v -0.062500 0.187500 -1.500000 +v 0.062500 0.187500 -1.500000 +v -0.062500 0.187500 -1.375000 +v 0.062500 0.187500 -1.375000 +v -0.062500 0.000000 -1.500000 +v 0.062500 0.000000 -1.500000 +v -0.062500 0.000000 -1.375000 +v 0.062500 0.000000 -1.375000 +v -0.062500 -0.187500 -1.312500 +v 0.062500 -0.187500 -1.312500 +v -0.250000 1.000000 4.375000 +v 0.250000 1.000000 4.375000 +v -0.125000 1.375000 4.375000 +v 0.125000 1.375000 4.375000 +v -0.250000 1.000000 5.000000 +v 0.250000 1.000000 5.000000 +v -0.250000 0.750000 5.250000 +v 0.250000 0.750000 5.250000 +v -0.125000 0.500000 5.000000 +v 0.125000 0.500000 5.000000 +v -0.125000 0.500000 4.125000 +v 0.125000 0.500000 4.125000 +v -0.125000 0.312500 3.500000 +v 0.125000 0.312500 3.500000 +v 0.250000 1.000000 3.500000 +v -0.250000 1.000000 3.500000 +v -0.125000 0.312500 1.375000 +v 0.125000 0.312500 1.375000 +v -0.250000 1.125000 4.375000 +v 0.250000 1.125000 4.375000 +v -0.125000 1.375000 1.500000 +v 0.125000 1.375000 1.500000 +v -0.250000 1.125000 1.500000 +v 0.250000 1.125000 1.500000 +v 0.250000 1.125000 3.500000 +v -0.250000 1.125000 3.500000 +v 0.250000 1.000000 1.500000 +v -0.250000 1.000000 1.500000 +v -0.250000 0.625000 5.125000 +v 0.250000 0.625000 5.125000 +v 0.062500 1.312500 4.375000 +v -0.187500 1.125000 3.500000 +v -0.062500 1.312500 4.375000 +v 0.062500 1.312500 1.500000 +v -0.187500 1.125000 1.500000 +v -0.062500 1.312500 1.500000 +v -0.187500 1.000000 3.500000 +v -0.187500 1.000000 1.500000 +v 0.187500 1.125000 3.500000 +v 0.187500 1.125000 1.500000 +v 0.187500 1.000000 3.500000 +v 0.187500 1.000000 1.500000 +v 0.125000 1.000000 1.500000 +v 0.125000 1.125000 1.500000 +v -0.125000 1.125000 1.500000 +v -0.125000 1.000000 1.500000 +v -0.250000 0.625000 4.125000 +v 0.250000 0.625000 4.125000 +v -0.250000 0.437500 3.500000 +v 0.250000 0.437500 3.500000 +v -0.250000 0.437500 1.375000 +v 0.250000 0.437500 1.375000 +v -0.250000 0.625000 1.375000 +v 0.250000 0.625000 1.375000 +v -0.125000 0.312500 1.875000 +v -0.125000 0.312500 2.375000 +v 0.125000 0.312500 1.875000 +v 0.125000 0.312500 2.375000 +v 0.125000 0.250000 2.375000 +v 0.125000 0.250000 1.875000 +v -0.125000 0.250000 2.375000 +v -0.125000 0.250000 1.875000 +v -0.250000 1.000000 4.750000 +v 0.250000 1.000000 4.750000 +v -0.250000 1.000000 4.500000 +v 0.250000 1.000000 4.500000 +v -0.312500 1.000000 4.750000 +v -0.312500 1.000000 4.500000 +v 0.312500 1.000000 4.750000 +v 0.312500 1.000000 4.500000 +v -0.312500 0.625000 4.750000 +v -0.312500 0.625000 4.500000 +v 0.312500 0.625000 4.750000 +v 0.312500 0.625000 4.500000 +v -0.125000 0.437500 4.750000 +v -0.125000 0.437500 4.500000 +v 0.125000 0.437500 4.750000 +v 0.125000 0.437500 4.500000 +v -0.125000 0.500000 4.750000 +v -0.125000 0.500000 4.500000 +v 0.125000 0.500000 4.750000 +v 0.125000 0.500000 4.500000 +v -0.250000 0.625000 4.750000 +v 0.250000 0.625000 4.750000 +v -0.250000 0.625000 4.500000 +v 0.250000 0.625000 4.500000 +v -0.312500 1.000000 1.250000 +v -0.312500 0.875000 1.250000 +v -0.312500 1.000000 -0.875000 +v -0.312500 0.875000 -0.875000 +v -0.437500 0.875000 1.250000 +v -0.437500 1.000000 1.250000 +v -0.437500 0.875000 0.000000 +v -0.437500 1.000000 0.000000 +v -0.687500 0.875000 0.000000 +v -0.687500 1.000000 0.000000 +v -0.562500 0.875000 -0.500000 +v -0.562500 1.000000 -0.500000 +v -0.125000 1.000000 1.125000 +v -0.500000 1.000000 1.125000 +v -0.125000 1.000000 1.000000 +v -0.500000 1.000000 1.000000 +v -0.125000 1.062500 1.125000 +v -0.500000 1.062500 1.125000 +v -0.125000 1.062500 1.000000 +v -0.500000 1.062500 1.000000 +v -0.500000 0.906250 1.125000 +v -0.500000 1.156250 1.125000 +v -0.500000 0.906250 1.000000 +v -0.500000 1.156250 1.000000 +v -0.750000 0.968750 1.125000 +v -0.750000 1.093750 1.125000 +v -0.750000 0.968750 1.000000 +v -0.750000 1.093750 1.000000 +v -0.625000 0.906250 1.000000 +v -0.625000 1.156250 1.000000 +v -0.625000 0.906250 1.125000 +v -0.625000 1.156250 1.125000 +vt 0.062271 0.065217 +vt 0.058608 0.043478 +vt 0.062271 0.043478 +vt 0.058608 0.076087 +vt 0.058608 0.065217 +vt 0.062271 0.108696 +vt 0.058608 0.086957 +vt 0.062271 0.086957 +vt 0.058608 0.119565 +vt 0.058608 0.108696 +vt 0.062271 0.152174 +vt 0.058608 0.130435 +vt 0.062271 0.130435 +vt 0.058608 0.163043 +vt 0.058608 0.152174 +vt 0.062271 0.173913 +vt 0.058608 0.184783 +vt 0.058608 0.173913 +vt 0.062271 0.195652 +vt 0.058608 0.206522 +vt 0.058608 0.195652 +vt 0.062271 0.217391 +vt 0.058608 0.228261 +vt 0.058608 0.217391 +vt 0.062271 0.260870 +vt 0.058608 0.239130 +vt 0.062271 0.239130 +vt 0.062271 -0.000000 +vt 0.058608 0.010870 +vt 0.058608 -0.000000 +vt 0.058608 0.021739 +vt 0.062271 0.021739 +vt 0.007326 0.260986 +vt 0.013637 0.271797 +vt 0.007326 0.304232 +vt 0.315018 0.923913 +vt 0.307692 0.956522 +vt 0.307692 0.934783 +vt 0.307692 0.478261 +vt 0.315018 0.510870 +vt 0.307692 0.500000 +vt 0.315018 0.467391 +vt 0.307692 0.423913 +vt 0.315018 0.423913 +vt 0.333333 0.684783 +vt 0.329670 0.630435 +vt 0.333333 0.630435 +vt 0.329670 0.467391 +vt 0.333333 0.500000 +vt 0.329670 0.510870 +vt 0.333333 0.956522 +vt 0.329670 0.923913 +vt 0.333333 0.934783 +vt 0.366300 0.630435 +vt 0.369963 0.510870 +vt 0.369963 0.630435 +vt 0.329670 0.423913 +vt 0.333333 0.467391 +vt 0.311355 0.684783 +vt 0.315018 0.630435 +vt 0.315018 0.695652 +vt 0.311355 0.739130 +vt 0.315018 0.728261 +vt 0.315018 0.739130 +vt 0.329670 0.728261 +vt 0.333333 0.706522 +vt 0.333333 0.728261 +vt 0.311355 0.695652 +vt 0.315018 0.706522 +vt 0.311355 0.706522 +vt 0.333333 0.804348 +vt 0.333333 0.913043 +vt 0.329670 0.804348 +vt 0.333333 0.750000 +vt 0.311355 0.521739 +vt 0.311355 0.630435 +vt 0.311355 0.750000 +vt 0.315018 0.804348 +vt 0.311355 0.804348 +vt 0.329670 0.706522 +vt 0.333333 0.695652 +vt 0.311355 0.913043 +vt 0.333333 0.510870 +vt 0.336996 0.630435 +vt 0.333333 0.630435 +vt 0.333333 0.706522 +vt 0.336996 0.728261 +vt 0.333333 0.728261 +vt 0.333333 0.695652 +vt 0.336996 0.706522 +vt 0.366300 0.728261 +vt 0.369963 0.706522 +vt 0.369963 0.728261 +vt 0.369963 0.739130 +vt 0.333333 0.739130 +vt 0.336996 0.739130 +vt 0.366300 0.706522 +vt 0.369963 0.695652 +vt 0.366300 0.923913 +vt 0.369963 0.804348 +vt 0.369963 0.923913 +vt 0.333333 0.804348 +vt 0.336996 0.923913 +vt 0.333333 0.923913 +vt 0.366300 0.804348 +vt 0.369963 0.750000 +vt 0.333333 0.750000 +vt 0.336996 0.804348 +vt 0.369963 0.684783 +vt 0.333333 0.684783 +vt 0.336996 0.695652 +vt 0.336996 0.467391 +vt 0.333333 0.423913 +vt 0.336996 0.423913 +vt 0.622711 0.826087 +vt 0.619048 0.847826 +vt 0.619048 0.826087 +vt 0.622711 0.858696 +vt 0.622711 0.847826 +vt 0.622711 0.869565 +vt 0.619048 0.891304 +vt 0.619048 0.869565 +vt 0.622711 0.902174 +vt 0.622711 0.891304 +vt 0.622711 0.923913 +vt 0.619048 0.913043 +vt 0.622711 0.913043 +vt 0.622711 0.945652 +vt 0.619048 0.934783 +vt 0.622711 0.934783 +vt 0.622711 0.967391 +vt 0.619048 0.956522 +vt 0.622711 0.956522 +vt 0.622711 0.978261 +vt 0.619048 1.000000 +vt 0.619048 0.978261 +vt 0.622711 0.750000 +vt 0.619048 0.739130 +vt 0.622711 0.739130 +vt 0.622711 0.760870 +vt 0.619048 0.782609 +vt 0.619048 0.760870 +vt 0.622711 0.782609 +vt 0.619048 0.804348 +vt 0.622711 0.815217 +vt 0.622711 0.804348 +vt 0.333333 0.521739 +vt 0.311355 0.728261 +vt 0.333333 0.739130 +vt 0.653009 0.771718 +vt 0.659341 0.739173 +vt 0.665673 0.771718 +vt 0.058608 0.630435 +vt 0.183150 0.673913 +vt 0.058608 0.673913 +vt 0.058608 0.260870 +vt 0.183150 0.326087 +vt 0.058608 0.326087 +vt 0.058608 0.347826 +vt 0.183150 0.391304 +vt 0.058608 0.391304 +vt 0.183150 0.695652 +vt 0.058608 0.695652 +vt 0.183150 0.347826 +vt 0.219780 0.565217 +vt 0.219780 0.456522 +vt 0.241758 0.478261 +vt 0.205128 0.565217 +vt 0.205128 0.456522 +vt 0.197802 0.565217 +vt 0.197802 0.456522 +vt 0.021978 0.456522 +vt 0.010989 0.467391 +vt 0.007326 0.456522 +vt 0.036630 0.456522 +vt 0.021978 0.467391 +vt 0.043956 0.456522 +vt 0.036630 0.467391 +vt 0.036630 0.565217 +vt 0.043956 0.554348 +vt 0.043956 0.565217 +vt 0.021978 0.565217 +vt 0.036630 0.554348 +vt 0.010989 0.554348 +vt 0.021978 0.554348 +vt 0.000000 0.478261 +vt 0.003663 0.532609 +vt 0.000000 0.543478 +vt 0.007326 0.565217 +vt 0.003663 0.489130 +vt 0.131868 0.478261 +vt 0.131868 0.543478 +vt 0.723636 0.674017 +vt 0.748892 0.674017 +vt 0.736264 0.738921 +vt 0.022092 0.858808 +vt 0.043842 0.858808 +vt 0.032967 0.912594 +vt 0.043736 0.945870 +vt 0.032967 0.999130 +vt 0.022198 0.945870 +vt 0.690786 0.755520 +vt 0.690786 0.787959 +vt 0.681319 0.804179 +vt 0.886447 0.858696 +vt 0.879121 0.869565 +vt 0.879121 0.858696 +vt 0.893773 0.858696 +vt 0.886447 0.869565 +vt 0.901099 0.858696 +vt 0.893773 0.869565 +vt 0.908425 0.869565 +vt 0.901099 0.869565 +vt 0.908425 0.858696 +vt 0.915751 0.869565 +vt 0.915751 0.858696 +vt 0.923077 0.869565 +vt 0.915751 0.793478 +vt 0.923077 0.782609 +vt 0.923077 0.793478 +vt 0.908425 0.793478 +vt 0.915751 0.782609 +vt 0.901099 0.793478 +vt 0.908425 0.782609 +vt 0.893773 0.782609 +vt 0.893773 0.793478 +vt 0.886447 0.782609 +vt 0.886447 0.793478 +vt 0.879121 0.782609 +vt 0.879121 0.793478 +vt 0.857143 0.793478 +vt 0.857143 0.782609 +vt 0.816850 0.793478 +vt 0.835165 0.858696 +vt 0.816850 0.858696 +vt 0.857143 0.858696 +vt 0.857143 0.869565 +vt 0.945055 0.793478 +vt 0.963370 0.858696 +vt 0.945055 0.858696 +vt 0.945055 0.869565 +vt 0.945055 0.782609 +vt 0.267399 0.913043 +vt 0.260073 0.934783 +vt 0.260073 0.913043 +vt 0.838828 0.858696 +vt 0.835165 0.793478 +vt 0.838828 0.793478 +vt 0.967033 0.858696 +vt 0.963370 0.793478 +vt 0.967033 0.793478 +vt 0.838828 0.869565 +vt 0.985348 0.793478 +vt 0.963370 0.782609 +vt 0.963370 0.869565 +vt 0.838828 0.782609 +vt 0.805861 0.793478 +vt 0.813187 0.858696 +vt 0.805861 0.858696 +vt 0.267399 0.847826 +vt 0.260073 0.847826 +vt 0.864469 0.771739 +vt 0.871795 0.771739 +vt 0.864469 0.880435 +vt 0.857143 0.880435 +vt 0.267399 0.826087 +vt 0.260073 0.826087 +vt 0.937729 0.771739 +vt 0.945055 0.771739 +vt 0.996337 0.793478 +vt 0.989011 0.858696 +vt 0.989011 0.793478 +vt 0.937729 0.880435 +vt 0.930403 0.880435 +vt 0.985348 0.858696 +vt 0.289377 0.880435 +vt 0.278388 0.902174 +vt 0.274725 0.880435 +vt 0.311355 0.847826 +vt 0.296703 0.880435 +vt 0.296703 0.847826 +vt 0.289377 0.847826 +vt 0.274725 0.847826 +vt 0.267399 0.880435 +vt 0.267399 0.847826 +vt 0.285714 0.913043 +vt 0.285714 0.902174 +vt 0.293040 0.902174 +vt 0.271062 0.902174 +vt 0.311355 0.880435 +vt 0.300366 0.902174 +vt 0.608059 0.847826 +vt 0.611722 0.826087 +vt 0.611722 0.847826 +vt 0.608059 0.869565 +vt 0.611722 0.869565 +vt 0.608059 0.608696 +vt 0.611722 0.630435 +vt 0.608059 0.630435 +vt 0.611722 0.652174 +vt 0.608059 0.652174 +vt 0.534799 0.695652 +vt 0.531136 0.673913 +vt 0.534799 0.673913 +vt 0.531136 0.717391 +vt 0.534799 0.717391 +vt 0.531136 0.739130 +vt 0.534799 0.739130 +vt 0.534799 0.760870 +vt 0.534799 0.782609 +vt 0.531136 0.760870 +vt 0.534799 0.804348 +vt 0.531136 0.782609 +vt 0.534799 0.826087 +vt 0.531136 0.804348 +vt 0.534799 0.847826 +vt 0.531136 0.826087 +vt 0.534799 0.869565 +vt 0.531136 0.847826 +vt 0.531136 0.630435 +vt 0.534799 0.608696 +vt 0.534799 0.630435 +vt 0.531136 0.652174 +vt 0.534799 0.652174 +vt 0.608059 0.695652 +vt 0.611722 0.717391 +vt 0.608059 0.717391 +vt 0.611722 0.739130 +vt 0.608059 0.739130 +vt 0.608059 0.760870 +vt 0.611722 0.760870 +vt 0.608059 0.782609 +vt 0.611722 0.782609 +vt 0.586081 0.782609 +vt 0.608059 0.793478 +vt 0.586081 0.793478 +vt 0.586081 0.684783 +vt 0.586081 0.695652 +vt 0.223443 0.586957 +vt 0.227106 0.565217 +vt 0.227106 0.586957 +vt 0.227106 0.608696 +vt 0.223443 0.608696 +vt 0.227106 0.630435 +vt 0.223443 0.630435 +vt 0.223443 0.652174 +vt 0.227106 0.652174 +vt 0.223443 0.673913 +vt 0.227106 0.673913 +vt 0.223443 0.695652 +vt 0.227106 0.695652 +vt 0.201465 0.586957 +vt 0.197802 0.565217 +vt 0.201465 0.565217 +vt 0.197802 0.608696 +vt 0.201465 0.608696 +vt 0.197802 0.630435 +vt 0.201465 0.630435 +vt 0.201465 0.652174 +vt 0.201465 0.673913 +vt 0.197802 0.652174 +vt 0.201465 0.695652 +vt 0.197802 0.673913 +vt 0.278388 0.750000 +vt 0.274725 0.728261 +vt 0.274725 0.750000 +vt 0.274725 0.750000 +vt 0.278388 0.728261 +vt 0.278388 0.750000 +vt 0.296703 0.793478 +vt 0.293040 0.750000 +vt 0.296703 0.750000 +vt 0.278388 0.804348 +vt 0.293040 0.804348 +vt 0.274725 0.793478 +vt 0.311355 0.750000 +vt 0.311355 0.793478 +vt 0.282051 0.728261 +vt 0.289377 0.717391 +vt 0.289377 0.728261 +vt 0.307692 0.728261 +vt 0.296703 0.728261 +vt 0.296703 0.793478 +vt 0.293040 0.750000 +vt 0.293040 0.804348 +vt 0.311355 0.793478 +vt 0.296703 0.750000 +vt 0.274725 0.793478 +vt 0.278388 0.804348 +vt 0.282051 0.717391 +vt 0.289377 0.728261 +vt 0.289377 0.717391 +vt 0.282051 0.728261 +vt 0.293040 0.728261 +vt 0.311355 0.750000 +vt 0.300366 0.728261 +vt 0.278388 0.815217 +vt 0.274725 0.804348 +vt 0.278388 0.804348 +vt 0.278388 0.826087 +vt 0.307692 0.836957 +vt 0.278388 0.836957 +vt 0.311355 0.815217 +vt 0.307692 0.804348 +vt 0.311355 0.804348 +vt 0.307692 0.815217 +vt 0.278388 0.847826 +vt 0.307692 0.826087 +vt 0.197802 0.434783 +vt 0.886447 0.673913 +vt 0.864469 0.695652 +vt 0.864469 0.673913 +vt 0.864469 0.706522 +vt 0.886447 0.728261 +vt 0.864469 0.728261 +vt 0.886447 0.706522 +vt 0.930403 0.750000 +vt 0.923077 0.706522 +vt 0.930403 0.706522 +vt 0.864469 0.739130 +vt 0.886447 0.739130 +vt 0.842491 0.630435 +vt 0.915751 0.652174 +vt 0.842491 0.652174 +vt 0.842491 0.673913 +vt 0.967033 0.673913 +vt 0.835165 0.673913 +vt 0.842491 0.673913 +vt 0.915751 0.652174 +vt 0.842491 0.652174 +vt 0.901099 0.586957 +vt 0.915751 0.608696 +vt 0.901099 0.608696 +vt 0.908425 0.739130 +vt 0.908425 0.717391 +vt 0.915751 0.706522 +vt 0.886447 0.750000 +vt 0.886447 0.706522 +vt 0.893773 0.706522 +vt 0.945055 0.630435 +vt 0.967033 0.673913 +vt 0.945055 0.630435 +vt 0.842491 0.706522 +vt 0.849817 0.695652 +vt 0.849817 0.706522 +vt 0.849817 0.684783 +vt 0.846154 0.673913 +vt 0.849817 0.673913 +vt 0.853480 0.684783 +vt 0.853480 0.695652 +vt 0.842491 0.673913 +vt 0.846154 0.684783 +vt 0.842491 0.684783 +vt 0.857143 0.695652 +vt 0.864469 0.706522 +vt 0.857143 0.706522 +vt 0.860806 0.673913 +vt 0.857143 0.684783 +vt 0.857143 0.673913 +vt 0.853480 0.684783 +vt 0.853480 0.695652 +vt 0.860806 0.684783 +vt 0.864469 0.673913 +vt 0.864469 0.684783 +vt 0.864469 0.695652 +vt 0.183150 0.630435 +vt 0.000000 0.815217 +vt 0.003663 0.793478 +vt 0.003663 0.815217 +vt 0.000000 0.728261 +vt 0.003663 0.706522 +vt 0.003663 0.728261 +vt 0.128205 0.728261 +vt 0.003663 0.695652 +vt 0.128205 0.706522 +vt 0.003663 0.739130 +vt 0.128205 0.760870 +vt 0.003663 0.760870 +vt 0.128205 0.826087 +vt 0.003663 0.826087 +vt 0.128205 0.815217 +vt 0.128205 0.739130 +vt 0.003663 0.782609 +vt 0.128205 0.793478 +vt 0.003663 0.760870 +vt 0.128205 0.782609 +vt 0.216117 0.282609 +vt 0.260073 0.304348 +vt 0.216117 0.304348 +vt 0.267399 0.260870 +vt 0.216117 0.260870 +vt 0.805861 0.771739 +vt 0.783883 0.684783 +vt 0.805861 0.684783 +vt 0.216117 0.413043 +vt 0.267399 0.391304 +vt 0.267399 0.413043 +vt 0.274725 0.391304 +vt 0.267399 0.282609 +vt 0.274725 0.282609 +vt 0.216117 0.369565 +vt 0.260073 0.369565 +vt 0.216117 0.391304 +vt 0.201465 0.391304 +vt 0.201465 0.282609 +vt 0.802198 0.673913 +vt 0.787546 0.586957 +vt 0.802198 0.586957 +vt 0.783883 0.771739 +vt 0.780220 0.684783 +vt 0.787546 0.782609 +vt 0.783883 0.804348 +vt 0.805861 0.673913 +vt 0.802198 0.782609 +vt 0.809524 0.684783 +vt 0.802198 0.891304 +vt 0.805861 0.804348 +vt 0.805861 0.891304 +vt 0.809524 0.586957 +vt 0.783883 0.891304 +vt 0.787546 0.804348 +vt 0.787546 0.891304 +vt 0.787546 0.673913 +vt 0.780220 0.586957 +vt 0.871795 0.608696 +vt 0.868132 0.619565 +vt 0.868132 0.608696 +vt 0.857143 0.630435 +vt 0.860806 0.619565 +vt 0.860806 0.630435 +vt 0.871795 0.630435 +vt 0.871795 0.619565 +vt 0.871795 0.586957 +vt 0.868132 0.597826 +vt 0.864469 0.586957 +vt 0.857143 0.586957 +vt 0.860806 0.597826 +vt 0.857143 0.608696 +vt 0.857143 0.619565 +vt 0.842491 0.597826 +vt 0.838828 0.608696 +vt 0.838828 0.586957 +vt 0.853480 0.608696 +vt 0.849817 0.608696 +vt 0.849817 0.597826 +vt 0.842491 0.619565 +vt 0.842491 0.608696 +vt 0.838828 0.630435 +vt 0.838828 0.619565 +vt 0.853480 0.630435 +vt 0.849817 0.619565 +vt 0.853480 0.619565 +vt 0.832911 0.637123 +vt 0.832911 0.667225 +vt 0.822767 0.667225 +vt 0.822767 0.623747 +vt 0.822767 0.593645 +vt 0.832911 0.593645 +vt 0.289377 0.434783 +vt 0.263736 0.413043 +vt 0.267399 0.434783 +vt 0.289377 0.434783 +vt 0.263736 0.413043 +vt 0.300366 0.413043 +vt 0.245421 0.434783 +vt 0.263736 0.413043 +vt 0.260073 0.434783 +vt 0.260073 0.434783 +vt 0.241758 0.413043 +vt 0.245421 0.434783 +vt 0.822767 0.623747 +vt 0.822767 0.593645 +vt 0.832911 0.593645 +vt 0.832911 0.637123 +vt 0.832911 0.667225 +vt 0.822767 0.667225 +vt 0.450549 0.989130 +vt 0.391941 1.000000 +vt 0.391941 0.989130 +vt 0.391941 0.456522 +vt 0.450549 0.521739 +vt 0.391941 0.521739 +vt 0.391941 0.913043 +vt 0.450549 0.913043 +vt 0.369963 0.913043 +vt 0.369963 0.913043 +vt 0.472527 0.913043 +vt 0.531136 0.521739 +vt 0.531136 0.913043 +vt 0.472527 0.521739 +vt 0.450549 0.913043 +vt 0.450549 0.913043 +vt 0.107288 0.837093 +vt 0.113553 0.826359 +vt 0.119818 0.858560 +vt 0.391941 0.923913 +vt 0.450549 0.923913 +vt 0.391941 0.945652 +vt 0.450549 0.967391 +vt 0.391941 0.967391 +vt 0.450549 0.945652 +vt 0.670330 0.652174 +vt 0.626374 0.695652 +vt 0.626374 0.652174 +vt 0.626374 0.739130 +vt 0.670330 0.695652 +vt 0.670330 0.739130 +vt 0.670330 0.608696 +vt 0.626374 0.608696 +vt 0.684982 0.695652 +vt 0.684982 0.652174 +vt 0.611722 0.652174 +vt 0.611722 0.695652 +vt 0.750916 0.586957 +vt 0.772894 0.597826 +vt 0.750916 0.597826 +vt 0.772894 0.630435 +vt 0.750916 0.619565 +vt 0.772894 0.619565 +vt 0.692308 0.586957 +vt 0.728938 0.597826 +vt 0.692308 0.597826 +vt 0.728938 0.630435 +vt 0.692308 0.619565 +vt 0.728938 0.619565 +vt 0.732601 0.586957 +vt 0.732601 0.630435 +vt 0.670330 0.586957 +vt 0.677656 0.597826 +vt 0.670330 0.597826 +vt 0.677656 0.619565 +vt 0.670330 0.630435 +vt 0.670330 0.619565 +vt 0.677656 0.586957 +vt 0.677656 0.630435 +vt 0.688645 0.717391 +vt 0.699634 0.739130 +vt 0.684982 0.739130 +vt 0.688645 0.717391 +vt 0.699634 0.739130 +vt 0.684982 0.739130 +vt 0.688645 0.684783 +vt 0.695971 0.717391 +vt 0.688645 0.684783 +vt 0.695971 0.717391 +vt 0.695971 0.684783 +vt 0.692308 0.652174 +vt 0.695971 0.684783 +vt 0.692308 0.652174 +vt 0.304029 0.195652 +vt 0.274725 0.217391 +vt 0.274725 0.195652 +vt 0.304029 0.217391 +vt 0.285714 0.250000 +vt 0.278388 0.282609 +vt 0.282051 0.326087 +vt 0.274725 0.282609 +vt 0.534799 0.260870 +vt 0.652015 0.250000 +vt 0.652015 0.260870 +vt 0.534799 0.228261 +vt 0.652015 0.228261 +vt 0.531136 0.228261 +vt 0.534799 0.250000 +vt 0.531136 0.250000 +vt 0.652015 0.217391 +vt 0.534799 0.217391 +vt 0.534799 0.206522 +vt 0.652015 0.184783 +vt 0.652015 0.206522 +vt 0.534799 0.217391 +vt 0.652015 0.217391 +vt 0.652015 0.173913 +vt 0.534799 0.184783 +vt 0.534799 0.173913 +vt 0.531136 0.184783 +vt 0.531136 0.206522 +vt 0.300366 0.282609 +vt 0.296703 0.326087 +vt 0.293040 0.315217 +vt 0.282051 0.260870 +vt 0.282051 0.282609 +vt 0.296703 0.260870 +vt 0.300366 0.260870 +vt 0.296703 0.282609 +vt 0.285714 0.315217 +vt 0.366300 0.423913 +vt 0.369963 0.467391 +vt 0.366300 0.467391 +vt 0.333333 0.478261 +vt 0.336996 0.510870 +vt 0.333333 0.500000 +vt 0.369963 0.500000 +vt 0.366300 0.510870 +vt 0.336996 0.967391 +vt 0.333333 0.934783 +vt 0.369963 0.956522 +vt 0.369963 0.934783 +vt 0.304029 0.445652 +vt 0.289377 0.434783 +vt 0.304029 0.434783 +vt 0.289377 0.706522 +vt 0.304029 0.717391 +vt 0.289377 0.717391 +vt 0.285714 0.597826 +vt 0.289377 0.554348 +vt 0.289377 0.597826 +vt 0.307692 0.554348 +vt 0.304029 0.597826 +vt 0.304029 0.554348 +vt 0.307692 0.510870 +vt 0.307692 0.445652 +vt 0.289377 0.445652 +vt 0.285714 0.510870 +vt 0.285714 0.445652 +vt 0.304029 0.706522 +vt 0.307692 0.641304 +vt 0.307692 0.706522 +vt 0.285714 0.641304 +vt 0.285714 0.706522 +vt 0.307692 0.630435 +vt 0.304029 0.641304 +vt 0.285714 0.630435 +vt 0.289377 0.641304 +vt 0.307692 0.521739 +vt 0.304029 0.510870 +vt 0.285714 0.521739 +vt 0.289377 0.510870 +vt 0.915751 0.652174 +vt 0.842491 0.630435 +vt 0.842491 0.652174 +vt 0.842491 0.673913 +vt 0.967033 0.673913 +vt 0.835165 0.673913 +vt 0.842491 0.673913 +vt 0.915751 0.652174 +vt 0.967033 0.673913 +vt 0.915751 0.608696 +vt 0.901099 0.586957 +vt 0.901099 0.608696 +vt 0.945055 0.630435 +vt 0.945055 0.630435 +vt 0.864469 0.695652 +vt 0.886447 0.673913 +vt 0.864469 0.673913 +vt 0.886447 0.728261 +vt 0.864469 0.706522 +vt 0.864469 0.728261 +vt 0.886447 0.706522 +vt 0.886447 0.695652 +vt 0.923077 0.706522 +vt 0.930403 0.750000 +vt 0.930403 0.706522 +vt 0.864469 0.739130 +vt 0.886447 0.739130 +vt 0.915751 0.750000 +vt 0.923077 0.750000 +vt 0.915751 0.706522 +vt 0.893773 0.750000 +vt 0.901099 0.739130 +vt 0.893773 0.706522 +vt 0.058608 0.054348 +vt 0.058608 0.097826 +vt 0.058608 0.141304 +vt 0.058608 0.250000 +vt 0.058608 0.032609 +vt 0.003683 0.301335 +vt 0.001015 0.271797 +vt 0.001015 0.293420 +vt 0.000039 0.282609 +vt 0.003683 0.263883 +vt 0.010969 0.263883 +vt 0.014613 0.282609 +vt 0.013637 0.293420 +vt 0.010969 0.301335 +vt 0.315018 0.967391 +vt 0.307692 0.467391 +vt 0.329670 0.695652 +vt 0.333333 0.478261 +vt 0.329670 0.967391 +vt 0.333333 0.423913 +vt 0.329670 0.739130 +vt 0.366300 0.739130 +vt 0.366300 0.695652 +vt 0.333333 0.467391 +vt 0.622711 0.836957 +vt 0.622711 0.880435 +vt 0.622711 0.989130 +vt 0.622711 0.771739 +vt 0.622711 0.793478 +vt 0.662997 0.779660 +vt 0.659341 0.782566 +vt 0.655685 0.779660 +vt 0.652029 0.760870 +vt 0.653009 0.750021 +vt 0.655685 0.742080 +vt 0.662997 0.742080 +vt 0.665673 0.750021 +vt 0.666652 0.760870 +vt 0.183150 0.260870 +vt 0.234432 0.456522 +vt 0.241758 0.543478 +vt 0.234432 0.565217 +vt 0.043956 0.467391 +vt 0.043956 0.478261 +vt 0.728973 0.733124 +vt 0.723636 0.717287 +vt 0.721682 0.695652 +vt 0.728973 0.658180 +vt 0.736264 0.652383 +vt 0.743554 0.658180 +vt 0.750845 0.695652 +vt 0.748892 0.717287 +vt 0.743554 0.733124 +vt 0.038405 0.830860 +vt 0.042385 0.842672 +vt 0.051093 0.858808 +vt 0.048664 0.885701 +vt 0.042030 0.905388 +vt 0.023904 0.905388 +vt 0.017270 0.885701 +vt 0.014841 0.858808 +vt 0.023549 0.842672 +vt 0.027529 0.830860 +vt 0.032967 0.826536 +vt 0.023641 0.929891 +vt 0.027582 0.918194 +vt 0.032967 0.913913 +vt 0.038352 0.918194 +vt 0.042293 0.929891 +vt 0.050916 0.945870 +vt 0.048511 0.972500 +vt 0.041941 0.991995 +vt 0.023993 0.991995 +vt 0.017423 0.972500 +vt 0.015018 0.945870 +vt 0.675853 0.799833 +vt 0.671852 0.787959 +vt 0.670387 0.771739 +vt 0.671852 0.755520 +vt 0.675853 0.743646 +vt 0.681319 0.739300 +vt 0.686785 0.743646 +vt 0.692251 0.771739 +vt 0.686785 0.799833 +vt 0.923077 0.858696 +vt 0.901099 0.782609 +vt 0.267399 0.934783 +vt 0.813187 0.793478 +vt 0.857143 0.771739 +vt 0.871795 0.880435 +vt 0.930403 0.771739 +vt 0.996337 0.858696 +vt 0.945055 0.880435 +vt 0.278388 0.913043 +vt 0.296703 0.902174 +vt 0.274725 0.902174 +vt 0.307692 0.902174 +vt 0.608059 0.826087 +vt 0.611722 0.608696 +vt 0.531136 0.695652 +vt 0.531136 0.869565 +vt 0.531136 0.608696 +vt 0.611722 0.695652 +vt 0.608059 0.684783 +vt 0.223443 0.565217 +vt 0.197802 0.586957 +vt 0.197802 0.695652 +vt 0.278388 0.728261 +vt 0.274725 0.728261 +vt 0.282051 0.717391 +vt 0.300366 0.728261 +vt 0.293040 0.728261 +vt 0.296703 0.728261 +vt 0.307692 0.728261 +vt 0.274725 0.815217 +vt 0.307692 0.847826 +vt 0.043956 0.434783 +vt 0.886447 0.695652 +vt 0.923077 0.750000 +vt 0.915751 0.630435 +vt 0.835165 0.652174 +vt 0.915751 0.586957 +vt 0.915751 0.750000 +vt 0.901099 0.717391 +vt 0.901099 0.739130 +vt 0.893773 0.750000 +vt 0.915751 0.608696 +vt 0.842491 0.695652 +vt 0.043956 0.586957 +vt 0.197802 0.586957 +vt 0.043956 0.543478 +vt -0.000000 0.793478 +vt 0.000000 0.706522 +vt 0.128205 0.695652 +vt 0.128205 0.760870 +vt 0.208791 0.282609 +vt 0.208791 0.391304 +vt 0.772894 0.771739 +vt 0.783883 0.673913 +vt 0.816850 0.771739 +vt 0.802198 0.804348 +vt 0.868132 0.630435 +vt 0.864469 0.597826 +vt 0.860806 0.608696 +vt 0.846154 0.586957 +vt 0.846154 0.597826 +vt 0.853480 0.586957 +vt 0.842491 0.630435 +vt 0.849817 0.630435 +vt 0.820666 0.652174 +vt 0.822767 0.637123 +vt 0.827839 0.630889 +vt 0.835012 0.652174 +vt 0.827839 0.673459 +vt 0.835012 0.608696 +vt 0.832911 0.623747 +vt 0.827839 0.629981 +vt 0.820666 0.608696 +vt 0.827839 0.587410 +vt 0.300366 0.413043 +vt 0.267399 0.434783 +vt 0.241758 0.413043 +vt 0.835012 0.608696 +vt 0.832911 0.623747 +vt 0.827839 0.629981 +vt 0.820666 0.608696 +vt 0.827839 0.587410 +vt 0.820666 0.652174 +vt 0.822767 0.637123 +vt 0.827839 0.630889 +vt 0.835012 0.652174 +vt 0.827839 0.673459 +vt 0.450549 1.000000 +vt 0.450549 0.456522 +vt 0.369963 0.913043 +vt 0.369963 0.913043 +vt 0.369963 0.521739 +vt 0.369963 0.913043 +vt 0.450549 0.913043 +vt 0.450549 0.913043 +vt 0.117170 0.866417 +vt 0.107288 0.858560 +vt 0.113553 0.869293 +vt 0.109936 0.866417 +vt 0.106319 0.847826 +vt 0.109936 0.829235 +vt 0.117170 0.829235 +vt 0.119818 0.837092 +vt 0.120788 0.847826 +vt 0.772894 0.586957 +vt 0.750916 0.630435 +vt 0.728938 0.586957 +vt 0.692308 0.630435 +vt 0.747253 0.586957 +vt 0.747253 0.630435 +vt 0.688645 0.586957 +vt 0.688645 0.630435 +vt 0.296703 0.260870 +vt 0.293040 0.250000 +vt 0.282051 0.260870 +vt 0.304029 0.282609 +vt 0.278388 0.260870 +vt 0.369963 0.423913 +vt 0.369963 0.478261 +vt 0.333333 0.956522 +vt 0.366300 0.967391 +vt 0.285714 0.554348 +vt 0.307692 0.597826 +vt 0.307692 0.608696 +vt 0.285714 0.608696 +vt 0.307692 0.543478 +vt 0.285714 0.543478 +vt 0.915751 0.630435 +vt 0.835165 0.652174 +vt 0.842491 0.652174 +vt 0.915751 0.586957 +vt 0.915751 0.608696 +vt 0.908425 0.717391 +vt 0.908425 0.739130 +vt 0.901099 0.717391 +vt 0.886447 0.706522 +vt 0.886447 0.750000 +vt 0.274725 0.108696 +vt 0.274725 0.130435 +vt 0.274725 0.086957 +vt 0.274725 0.043478 +vt 0.274725 0.065217 +vt 0.274725 0.021739 +vt 0.274725 0.000000 +vt 0.274725 0.239130 +vt 0.274725 0.260870 +vt 0.274725 0.217391 +vt 0.274725 0.195652 +vt 0.274725 0.173913 +vt 0.274725 0.152174 +vt -0.000000 0.195652 +vt 0.000000 0.086957 +vt -0.000000 0.130435 +vt 0.000000 0.021739 +vt 0.000000 0.217391 +vt -0.000000 0.108696 +vt 0.000000 0.152174 +vt -0.000000 0.043478 +vt -0.000000 0.239130 +vt 0.000000 0.173913 +vt 0.000000 0.065217 +vt -0.000000 -0.000000 +vt 0.274725 0.021739 +vt 0.296703 0.000000 +vt 0.304029 0.021739 +vt 0.560440 0.521739 +vt 0.604396 0.434783 +vt 0.531136 0.434783 +vt 0.560440 0.543478 +vt 0.604396 0.586957 +vt 0.560440 0.586957 +vt 0.560440 0.521739 +vt 0.604396 0.434783 +vt 0.604396 0.521739 +vt 0.619048 0.500000 +vt 0.622711 0.413043 +vt 0.604396 0.152174 +vt 0.531136 0.173913 +vt 0.531136 0.152174 +vt 0.604396 0.543478 +vt 0.604396 0.086957 +vt 0.531136 0.108696 +vt 0.531136 0.086957 +vt 0.560440 0.608696 +vt 0.652015 0.858696 +vt 0.652015 0.902174 +vt 0.652015 0.793478 +vt 0.652015 0.989130 +vt 0.652015 0.923913 +vt 0.652015 0.815217 +vt 0.652015 0.750000 +vt 0.652015 0.945652 +vt 0.652015 0.836957 +vt 0.652015 0.880435 +vt 0.652015 0.771739 +vt 0.652015 0.967391 +vt 0.611722 0.739130 +vt 0.611722 0.934783 +vt 0.611722 0.826087 +vt 0.611722 0.869565 +vt 0.611722 0.760870 +vt 0.611722 0.956522 +vt 0.611722 0.847826 +vt 0.611722 0.891304 +vt 0.611722 0.782609 +vt 0.611722 0.978261 +vt 0.611722 0.913043 +vt 0.611722 0.804348 +vt 0.263736 0.804348 +vt 0.205128 0.826087 +vt 0.205128 0.804348 +vt 0.263736 0.695652 +vt 0.205128 0.717391 +vt 0.205128 0.695652 +vt 0.263736 0.717391 +vt 0.205128 0.739130 +vt 0.263736 0.760870 +vt 0.205128 0.782609 +vt 0.205128 0.760870 +vt 0.263736 0.739130 +vt 0.263736 0.782609 +vt 0.706960 0.760870 +vt 0.721612 0.782609 +vt 0.706960 0.782609 +vt 0.706960 0.673913 +vt 0.721612 0.652174 +vt 0.721612 0.673913 +vt 0.706960 0.695652 +vt 0.721612 0.695652 +vt 0.706960 0.717391 +vt 0.721612 0.739130 +vt 0.706960 0.739130 +vt 0.721612 0.717391 +vt 0.721612 0.760870 +vt -0.000000 0.913043 +vt 0.014652 0.934783 +vt -0.000000 0.934783 +vt -0.000000 0.826087 +vt 0.014652 0.847826 +vt -0.000000 0.847826 +vt 0.014652 0.956522 +vt -0.000000 0.956522 +vt 0.014652 0.869565 +vt -0.000000 0.869565 +vt 0.014652 0.891304 +vt -0.000000 0.891304 +vt 0.014652 0.913043 +vt 0.670330 0.934783 +vt 0.666667 0.956522 +vt 0.666667 0.934783 +vt 0.670330 0.826087 +vt 0.666667 0.847826 +vt 0.666667 0.826087 +vt 0.670330 0.869565 +vt 0.666667 0.891304 +vt 0.666667 0.869565 +vt 0.670330 0.760870 +vt 0.666667 0.782609 +vt 0.666667 0.760870 +vt 0.670330 0.956522 +vt 0.666667 0.978261 +vt 0.670330 0.847826 +vt 0.670330 0.891304 +vt 0.666667 0.913043 +vt 0.670330 0.782609 +vt 0.666667 0.804348 +vt 0.670330 0.978261 +vt 0.666667 1.000000 +vt 0.670330 0.913043 +vt 0.670330 0.804348 +vt 0.670330 0.739130 +vt 0.666667 0.739130 +vt 0.128205 0.739130 +vt 0.205128 0.760870 +vt 0.128205 0.760870 +vt 0.128205 0.782609 +vt 0.205128 0.804348 +vt 0.128205 0.804348 +vt 0.128205 0.717391 +vt 0.205128 0.739130 +vt 0.205128 0.782609 +vt 0.205128 0.826087 +vt 0.128205 0.826087 +vt 0.128205 0.695652 +vt 0.205128 0.717391 +vt 0.571429 0.869565 +vt 0.571429 0.847826 +vt 0.578755 0.804348 +vt 0.578755 0.673913 +vt 0.571429 0.630435 +vt 0.571429 0.608696 +vt 0.571429 0.826087 +vt 0.571429 0.652174 +vt 0.608059 0.673913 +vt 0.611722 0.695652 +vt 0.608059 0.695652 +vt 0.608059 0.804348 +vt 0.611722 0.782609 +vt 0.611722 0.804348 +vt 0.611722 0.673913 +vt 0.901099 0.695652 +vt 0.908425 0.695652 +vt 0.908425 0.782609 +vt 0.901099 0.760870 +vt 0.908425 0.760870 +vt 0.901099 0.673913 +vt 0.908425 0.673913 +vt 0.945055 0.608696 +vt 0.945055 0.586957 +vt 0.967033 0.608696 +vt 0.619048 0.608696 +vt 0.663004 0.586957 +vt 0.663004 0.608696 +vt 0.604396 0.108696 +vt 0.619048 0.086957 +vt 0.619048 0.108696 +vt 0.619048 0.152174 +vt 0.619048 0.543478 +vt 0.619048 0.173913 +vt 0.604396 0.173913 +vt 0.619048 0.500000 +vt 0.604396 0.608696 +vt 0.619048 0.586957 +vt 0.663004 0.521739 +vt 0.677656 0.565217 +vt 0.663004 0.565217 +vt 0.619048 0.521739 +vt 0.663004 0.543478 +vt 0.619048 0.413043 +vt 0.663004 0.456522 +vt 0.648352 0.152174 +vt 0.648352 0.086957 +vt 0.648352 0.108696 +vt 0.648352 0.173913 +vt 0.663004 0.456522 +vt 0.648352 0.369565 +vt 0.677656 0.586957 +vt 0.663004 0.586957 +vt 0.677656 0.500000 +vt 0.677656 0.521739 +vt 0.706960 0.565217 +vt 0.706960 0.586957 +vt 0.706960 0.500000 +vt 0.706960 0.521739 +vt 0.956044 0.565217 +vt 0.956044 0.586957 +vt 0.956044 0.521739 +vt 0.699634 0.152174 +vt 0.699634 0.086957 +vt 0.699634 0.108696 +vt 0.699634 0.173913 +vt 0.684982 0.021739 +vt 0.736264 0.065217 +vt 0.684982 0.065217 +vt 0.684982 -0.000000 +vt 0.736264 0.021739 +vt 0.684982 0.086957 +vt 0.736264 0.086957 +vt 0.794872 0.065217 +vt 0.794872 0.000000 +vt 0.794872 0.021739 +vt 0.794872 0.086957 +vt 0.934066 0.065217 +vt 0.934066 -0.000000 +vt 0.934066 0.021739 +vt 0.934066 0.086957 +vt 0.963370 0.065217 +vt 0.963370 0.021739 +vt 0.963370 0.086957 +vt 0.992674 0.065217 +vt 0.978022 0.108696 +vt 0.978022 0.065217 +vt 1.000000 0.097826 +vt 0.992674 0.108696 +vt 0.970696 0.097826 +vt 0.970696 0.076087 +vt 0.978022 0.456522 +vt 1.000000 0.108696 +vt 0.992674 0.456522 +vt 0.970696 0.456522 +vt 0.970696 0.108696 +vt 0.677656 0.478261 +vt 0.736264 0.260870 +vt 0.684982 0.217391 +vt 0.648352 0.369565 +vt 0.970696 0.467391 +vt 0.978022 0.521739 +vt 0.970696 0.510870 +vt 0.992674 0.521739 +vt 1.000000 0.467391 +vt 1.000000 0.510870 +vt 0.956044 0.500000 +vt 0.736264 0.260870 +vt 0.677656 0.478261 +vt 0.794872 0.239130 +vt 0.970696 0.108696 +vt 0.956044 0.500000 +vt 0.970696 0.456522 +vt 0.706960 0.500000 +vt 0.794872 0.239130 +vt 0.934066 0.086957 +vt 0.684982 0.217391 +vt 0.820513 0.739130 +vt 0.824176 0.750000 +vt 0.820513 0.750000 +vt 0.820513 0.728261 +vt 0.824176 0.739130 +vt 0.835165 0.586957 +vt 0.835165 0.608696 +vt 0.820513 0.717391 +vt 0.824176 0.728261 +vt 0.820513 0.706522 +vt 0.824176 0.717391 +vt 0.820513 0.695652 +vt 0.824176 0.706522 +vt 0.835165 0.619565 +vt 0.820513 0.684783 +vt 0.824176 0.695652 +vt 0.835165 0.630435 +vt 0.820513 0.673913 +vt 0.824176 0.684783 +vt 0.824176 0.760870 +vt 0.820513 0.760870 +vt 0.820513 0.739130 +vt 0.816850 0.717391 +vt 0.820513 0.717391 +vt 0.820513 0.760870 +vt 0.816850 0.739130 +vt 0.820513 0.673913 +vt 0.816850 0.652174 +vt 0.820513 0.652174 +vt 0.816850 0.630435 +vt 0.820513 0.630435 +vt 0.820513 0.608696 +vt 0.816850 0.586957 +vt 0.820513 0.586957 +vt 0.816850 0.608696 +vt 0.820513 0.695652 +vt 0.816850 0.673913 +vt 0.816850 0.695652 +vt 0.820513 0.717391 +vt 0.816850 0.695652 +vt 0.820513 0.695652 +vt 0.816850 0.673913 +vt 0.820513 0.673913 +vt 0.820513 0.630435 +vt 0.816850 0.608696 +vt 0.820513 0.608696 +vt 0.816850 0.586957 +vt 0.820513 0.586957 +vt 0.820513 0.652174 +vt 0.816850 0.630435 +vt 0.816850 0.652174 +vt 0.820513 0.760870 +vt 0.816850 0.739130 +vt 0.820513 0.739130 +vt 0.816850 0.717391 +vt 0.106227 0.836957 +vt 0.069597 0.826087 +vt 0.106227 0.826087 +vt 0.106227 0.934783 +vt 0.069597 0.923913 +vt 0.106227 0.923913 +vt 0.106227 0.880435 +vt 0.069597 0.869565 +vt 0.106227 0.869565 +vt 0.106227 0.902174 +vt 0.069597 0.891304 +vt 0.106227 0.891304 +vt 0.106227 0.847826 +vt 0.069597 0.836957 +vt 0.106227 0.945652 +vt 0.069597 0.934783 +vt 0.069597 0.880435 +vt 0.106227 0.913043 +vt 0.069597 0.902174 +vt 0.106227 0.858696 +vt 0.069597 0.847826 +vt 0.106227 0.956522 +vt 0.069597 0.945652 +vt 0.069597 0.913043 +vt 0.069597 0.858696 +vt 0.058608 0.945652 +vt 0.058608 0.934783 +vt 0.058608 0.891304 +vt 0.058608 0.880435 +vt 0.058608 0.913043 +vt 0.058608 0.902174 +vt 0.058608 0.858696 +vt 0.058608 0.847826 +vt 0.069597 0.956522 +vt 0.058608 0.923913 +vt 0.058608 0.836957 +vt 0.058608 0.826087 +vt 0.058608 0.869565 +vt 0.054945 0.945652 +vt 0.054945 0.934783 +vt 0.054945 0.891304 +vt 0.054945 0.880435 +vt 0.054945 0.913043 +vt 0.054945 0.902174 +vt 0.054945 0.847826 +vt 0.058608 0.956522 +vt 0.054945 0.869565 +vt 0.054945 0.858696 +vt 0.054945 0.836957 +vt 0.054945 0.826087 +vt 0.054945 0.923913 +vt 0.053164 0.826561 +vt 0.054593 0.829009 +vt 0.053164 0.836354 +vt 0.750916 0.652174 +vt 0.692308 0.652174 +vt 0.688645 0.652174 +vt 0.670330 0.652174 +vt 0.732601 0.652174 +vt 0.747253 0.652174 +vt 0.699634 0.717391 +vt 0.706960 0.739130 +vt 0.706960 0.717391 +vt 0.706960 0.739130 +vt 0.699634 0.717391 +vt 0.706960 0.684783 +vt 0.699634 0.684783 +vt 0.706960 0.717391 +vt 0.706960 0.652174 +vt 0.699634 0.652174 +vt 0.699634 0.652174 +vt 0.699634 0.684783 +vt 0.304029 0.086957 +vt 0.274725 0.086957 +vt 0.304029 0.043478 +vt 0.531136 0.065217 +vt 0.406593 0.086957 +vt 0.406593 0.065217 +vt 0.318681 0.021739 +vt 0.369963 0.065217 +vt 0.318681 0.065217 +vt 0.369963 0.021739 +vt 0.355311 0.250000 +vt 0.523810 0.260870 +vt 0.355311 0.260870 +vt 0.406593 0.021739 +vt 0.406593 0.206522 +vt 0.523810 0.206522 +vt 0.523810 0.250000 +vt 0.523810 0.293478 +vt 0.523810 0.336957 +vt 0.406593 0.336957 +vt 0.355311 0.184783 +vt 0.406593 0.184783 +vt 0.355311 0.336957 +vt 0.406593 0.358696 +vt 0.355311 0.358696 +vt 0.369963 0.000000 +vt 0.369963 0.086957 +vt 0.355311 0.282609 +vt 0.355311 0.293478 +vt 0.523810 0.282609 +vt 0.531136 -0.000000 +vt 0.531136 0.021739 +vt 0.406593 -0.000000 +vt 0.311355 0.086957 +vt 0.523810 0.184783 +vt 0.406593 0.456522 +vt 0.369963 0.423913 +vt 0.318681 0.184783 +vt 0.304029 0.141304 +vt 0.274725 0.043478 +vt 0.311355 0.423913 +vt 0.311355 0.119565 +vt 0.369963 0.119565 +vt 0.304029 0.402174 +vt 0.318681 0.358696 +vt 0.945055 0.608696 +vt 0.967033 0.608696 +vt 0.945055 0.586957 +vt 0.901099 0.695652 +vt 0.908425 0.695652 +vt 0.901099 0.760870 +vt 0.908425 0.782609 +vt 0.908425 0.760870 +vt 0.901099 0.673913 +vt 0.908425 0.673913 +vt -0.000000 0.206522 +vt 0.000000 0.097826 +vt -0.000000 0.141304 +vt 0.000000 0.032609 +vt 0.000000 0.228261 +vt -0.000000 0.119565 +vt 0.000000 0.163043 +vt -0.000000 0.054348 +vt -0.000000 0.250000 +vt 0.000000 0.184783 +vt 0.000000 0.076087 +vt -0.000000 0.010870 +vt 0.282051 0.000000 +vt 0.604396 0.521739 +vt 0.531136 0.434783 +vt 0.652015 0.847826 +vt 0.652015 0.891304 +vt 0.652015 0.782609 +vt 0.652015 0.978261 +vt 0.652015 0.913043 +vt 0.652015 0.804348 +vt 0.652015 0.739130 +vt 0.652015 0.934783 +vt 0.652015 0.826087 +vt 0.652015 0.869565 +vt 0.652015 0.760870 +vt 0.652015 0.956522 +vt 0.611722 1.000000 +vt 0.263736 0.826087 +vt 0.706960 0.652174 +vt 0.014652 0.826087 +vt 0.670330 1.000000 +vt 0.205128 0.695652 +vt 0.608059 0.782609 +vt 0.901099 0.782609 +vt 0.967033 0.586957 +vt 0.663004 0.521739 +vt 0.663004 0.500000 +vt 0.736264 -0.000000 +vt 0.963370 -0.000000 +vt 1.000000 0.076087 +vt 1.000000 0.456522 +vt 0.963370 0.086957 +vt 0.824176 0.673913 +vt 0.816850 0.760870 +vt 0.816850 0.760870 +vt 0.054945 0.956522 +vt 0.052339 0.835698 +vt 0.051735 0.829009 +vt 0.051735 0.833906 +vt 0.051514 0.831457 +vt 0.052339 0.827217 +vt 0.053989 0.827217 +vt 0.054814 0.831457 +vt 0.054593 0.833906 +vt 0.053989 0.835698 +vt 0.772894 0.652174 +vt 0.728938 0.652174 +vt 0.677656 0.652174 +vt 0.706960 0.684783 +vt 0.706960 0.652174 +vt 0.531136 0.086957 +vt 0.355311 0.206522 +vt 0.311355 -0.000000 +vt 0.531136 0.119565 +vt 0.523810 0.358696 +vt 0.531136 0.423913 +vt 0.531136 0.456522 +vt 0.967033 0.586957 +vt 0.901099 0.782609 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 1.0000 0.0000 +vn -0.9285 0.3714 0.0000 +vn -0.9301 -0.3673 0.0000 +vn 0.9301 0.3673 0.0000 +vn 0.9285 -0.3714 0.0000 +vn 0.0000 -0.0203 0.9998 +vn 0.0000 0.0203 -0.9998 +vn 0.9701 0.2425 0.0000 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.4472 0.8944 +vn -0.9701 0.2425 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 -0.4472 -0.8944 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9701 0.2425 +vn -0.8944 0.4472 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 0.8321 -0.5547 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.8660 -0.5000 -0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.9637 0.2669 0.0000 +vn -0.8575 0.5145 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9637 0.2669 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.8575 0.5145 0.0000 +vn -0.9523 0.3051 0.0000 +vn -0.9414 -0.3297 0.0706 +vn -0.8629 -0.5054 0.0000 +vn -0.3595 0.9099 -0.2070 +vn 0.9523 0.3051 0.0000 +vn 0.9414 -0.3297 0.0706 +vn 0.8994 0.4225 -0.1123 +vn -0.9232 0.3569 -0.1429 +vn -0.9129 -0.3651 0.1826 +vn 0.3954 -0.8912 0.2222 +vn 0.8629 -0.5054 0.0000 +vn 0.3595 0.9099 -0.2070 +vn -0.9659 0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.9988 -0.0483 0.0000 +vn -0.9988 -0.0483 0.0000 +vn 0.9864 0.1644 0.0000 +vn -0.9915 0.1299 0.0000 +vn -0.7768 0.6297 0.0000 +vn 0.9915 0.1299 0.0000 +vn -0.8911 -0.4538 0.0000 +vn 0.8911 -0.4538 0.0000 +vn -0.9864 0.1644 0.0000 +vn 0.0447 -0.7380 -0.6733 +vn 0.2869 -0.6590 -0.6953 +vn 0.3536 -0.6124 -0.7071 +vn -0.0000 -0.7689 -0.6394 +vn -0.2869 -0.6590 -0.6953 +vn -0.0000 -0.8000 -0.6000 +vn 0.3535 -0.6124 -0.7071 +vn -0.3057 -0.7078 -0.6369 +vn -0.0407 -0.7592 -0.6496 +vn 0.7768 0.6297 0.0000 +vn 0.8507 0.5257 0.0000 +vn 0.8507 -0.5257 0.0000 +vn 0.2298 -0.9732 0.0000 +vn 0.2298 0.9732 0.0000 +vn 0.9701 0.0000 -0.2425 +vn 0.9145 0.0000 -0.4046 +vn 0.8321 0.0000 -0.5547 +vn -0.3952 0.8715 -0.2905 +vn -0.9552 0.2954 0.0181 +vn -0.3954 -0.8912 0.2222 +vn -0.3568 -0.8355 0.4178 +vn 0.3568 -0.8355 0.4178 +vn 0.3688 0.8568 -0.3605 +vn 0.9129 -0.3651 0.1826 +vn 0.9232 0.3569 -0.1429 +vn -0.8994 0.4225 -0.1123 +vn -0.3688 0.8568 -0.3605 +vn 0.3897 0.8237 0.4119 +vn -0.3607 0.8769 0.3178 +vn -0.3897 0.8237 0.4119 +vn 0.3952 0.8715 -0.2905 +vn 0.9552 0.2954 0.0181 +vn 0.3163 -0.6961 0.6445 +vn -0.9268 -0.3007 0.2251 +vn -0.3163 -0.6961 0.6445 +vn 0.9268 -0.3007 0.2251 +vn -0.9066 0.3929 0.1537 +vn 0.9066 0.3929 0.1537 +vn 0.3607 0.8769 0.3178 +vn -0.3711 0.9219 0.1112 +vn -0.9123 0.4062 0.0530 +vn 0.9123 0.4062 0.0530 +vn 0.3711 0.9219 0.1112 +vn -0.3416 0.8756 -0.3416 +vn -0.8727 0.4330 -0.2257 +vn 0.3416 0.8756 -0.3416 +vn 0.1967 -0.5699 0.7978 +vn -0.8515 -0.4669 0.2386 +vn -0.1967 -0.5699 0.7978 +vn 0.8515 -0.4669 0.2386 +vn -0.3487 -0.9012 -0.2575 +vn 0.4002 -0.9135 -0.0737 +vn 0.3487 -0.9012 -0.2575 +vn -0.4002 -0.9135 -0.0737 +vn 0.9405 -0.3390 -0.0241 +vn 0.3851 -0.8955 0.2233 +vn -0.9313 -0.3548 0.0821 +vn -0.3851 -0.8955 0.2233 +vn 0.9313 -0.3548 0.0821 +vn 0.3654 -0.9172 0.1589 +vn -0.9063 -0.4149 0.0807 +vn -0.3654 -0.9172 0.1589 +vn 0.9063 -0.4149 0.0807 +vn 0.3416 -0.8756 -0.3416 +vn -0.3416 -0.8756 -0.3416 +vn 0.8727 -0.4330 -0.2257 +vn 0.3416 -0.3416 -0.8756 +vn -0.8727 -0.2257 -0.4330 +vn -0.3416 -0.3416 -0.8756 +vn 0.8727 -0.2257 -0.4330 +vn 0.3416 0.3416 -0.8756 +vn -0.3416 0.3416 -0.8756 +vn 0.8727 0.2257 -0.4330 +vn -0.9405 -0.3390 -0.0241 +vn 0.8727 0.4330 -0.2257 +vn -0.8727 0.2257 -0.4330 +vn -0.9808 0.1951 0.0000 +vn 0.9808 0.1951 0.0000 +vn 0.0000 0.7071 0.7071 +vn -0.0000 -0.9967 0.0814 +vn -0.9967 0.0000 0.0814 +vn 0.8632 0.4983 0.0814 +vn 0.0000 0.9967 0.0814 +vn 0.4983 -0.8632 0.0814 +vn -0.8632 -0.4983 0.0814 +vn 0.4983 0.8632 0.0814 +vn -0.4983 0.8632 0.0814 +vn 0.8632 -0.4983 0.0814 +vn -0.4983 -0.8632 0.0814 +vn -0.8632 0.4983 0.0814 +vn 0.9967 -0.0000 0.0814 +vn -0.4494 -0.7784 0.4382 +vn -0.7784 -0.4494 0.4382 +vn 0.0000 0.8989 0.4382 +vn 0.4494 0.7784 0.4382 +vn -0.7784 0.4494 0.4382 +vn -0.4494 0.7784 0.4382 +vn 0.8989 -0.0000 0.4382 +vn 0.7784 -0.4494 0.4382 +vn -0.8989 0.0000 0.4382 +vn 0.4494 -0.7784 0.4382 +vn 0.0000 -0.8989 0.4382 +vn 0.7784 0.4494 0.4382 +vn -0.2172 -0.3762 0.9007 +vn -0.3762 -0.2172 0.9007 +vn 0.0000 0.4344 0.9007 +vn 0.2172 0.3762 0.9007 +vn -0.3762 0.2172 0.9007 +vn -0.2172 0.3762 0.9007 +vn 0.3762 -0.2172 0.9007 +vn 0.3762 0.2172 0.9007 +vn 0.4344 0.0000 0.9007 +vn 0.2172 -0.3762 0.9007 +vn 0.0000 -0.4344 0.9007 +vn -0.4344 0.0000 0.9007 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.5847 0.8112 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.5847 -0.8112 +vn 0.0000 -0.2298 0.9732 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 0.1602 0.9871 +vn 0.0000 -0.8507 0.5257 +vn 0.9098 -0.4101 0.0646 +vn 0.3687 -0.9202 0.1318 +vn -0.4444 -0.8959 0.0000 +vn 0.3928 -0.9093 0.1377 +vn 0.4444 -0.8959 0.0000 +vn -0.3928 -0.9093 0.1377 +vn -0.3687 -0.9202 0.1318 +vn 0.9522 0.3054 0.0000 +vn -0.9522 0.3054 0.0000 +vn -0.9732 0.2298 0.0000 +vn -0.9354 -0.3503 0.0483 +vn 0.9354 -0.3503 0.0483 +vn -0.9098 -0.4101 0.0646 +vn 0.9761 -0.2175 0.0000 +vn -0.9761 -0.2175 0.0000 +vn -0.9145 0.0000 -0.4046 +vn -0.9701 0.0000 -0.2425 +vn -0.8321 0.0000 -0.5547 +vn -0.8507 -0.5257 0.0000 +vn -0.8507 0.5257 0.0000 +vn -0.2298 -0.9732 0.0000 +vn -0.2298 0.9732 0.0000 +vn -0.3536 -0.6124 -0.7071 +vn -0.4000 -0.6928 -0.6000 +vn -0.8727 -0.4330 -0.2257 +vn 0.9732 0.2298 0.0000 +s off +f 8/1/1 33/2/1 10/3/1 +f 8/1/1 35/4/1 34/5/1 +f 4/6/1 35/7/1 6/8/1 +f 4/6/1 25/9/1 36/10/1 +f 24/11/1 25/12/1 2/13/1 +f 24/11/1 27/14/1 26/15/1 +f 22/16/1 28/17/1 27/18/1 +f 20/19/1 29/20/1 28/21/1 +f 18/22/1 30/23/1 29/24/1 +f 14/25/1 30/26/1 16/27/1 +f 14/28/1 32/29/1 31/30/1 +f 10/3/1 32/31/1 12/32/1 +f 43/33/1 45/34/1 38/35/1 +f 60/36/1 55/37/1 181/38/1 +f 53/39/1 72/40/1 184/41/1 +f 52/42/1 55/43/1 50/44/1 +f 79/45/2 69/46/2 78/47/2 +f 51/48/2 81/49/2 70/50/2 +f 56/51/2 58/52/2 77/53/2 +f 104/54/2 92/55/2 95/56/2 +f 49/57/2 54/58/2 51/48/2 +f 183/59/1 71/60/1 68/61/1 +f 83/62/1 65/63/1 67/64/1 +f 61/65/2 74/66/2 73/67/2 +f 183/68/1 66/69/1 82/70/1 +f 58/52/2 76/71/2 77/72/2 +f 57/73/2 75/74/2 76/71/2 +f 184/75/1 71/60/1 182/76/1 +f 83/77/1 59/78/1 84/79/1 +f 62/80/2 79/81/2 74/66/2 +f 181/82/1 59/78/1 60/36/1 +f 85/83/1 102/84/1 87/85/1 +f 91/86/1 108/87/1 93/88/1 +f 86/89/1 107/90/1 91/86/1 +f 112/91/2 99/92/2 100/93/2 +f 98/94/2 112/91/2 100/93/2 +f 90/95/1 108/87/1 106/96/1 +f 111/97/2 94/98/2 99/92/2 +f 115/99/2 97/100/2 96/101/2 +f 89/102/1 113/103/1 88/104/1 +f 116/105/2 98/106/2 97/100/2 +f 90/107/1 114/108/1 89/102/1 +f 94/109/2 104/54/2 95/56/2 +f 86/110/1 102/84/1 105/111/1 +f 884/112/1 881/113/1 886/114/1 +f 143/115/2 155/116/2 154/117/2 +f 133/118/2 155/116/2 144/119/2 +f 133/120/2 145/121/2 156/122/2 +f 135/123/2 145/121/2 134/124/2 +f 136/125/2 146/126/2 135/127/2 +f 137/128/2 147/129/2 136/130/2 +f 138/131/2 148/132/2 137/133/2 +f 138/134/2 150/135/2 149/136/2 +f 140/137/2 150/138/2 139/139/2 +f 140/140/2 152/141/2 151/142/2 +f 141/143/2 153/144/2 152/141/2 +f 143/145/2 153/144/2 142/146/2 +f 69/46/2 81/147/2 78/47/2 +f 82/70/1 65/63/1 80/148/1 +f 75/149/2 61/65/2 73/67/2 +f 167/150/2 163/151/2 159/152/2 +f 193/153/3 201/154/3 192/155/3 +f 191/156/4 199/157/4 190/158/4 +f 189/159/5 197/160/5 188/161/5 +f 192/155/6 200/162/6 191/163/6 +f 190/158/7 198/164/7 189/159/7 +f 202/165/2 197/166/2 199/167/2 +f 197/166/8 601/168/8 600/169/8 +f 600/169/2 196/170/2 186/171/2 +f 188/172/1 206/173/1 189/174/1 +f 187/175/9 205/176/9 188/172/9 +f 185/177/1 204/178/1 187/175/1 +f 194/179/1 210/180/1 195/181/1 +f 193/182/9 209/183/9 194/179/9 +f 193/182/1 207/184/1 208/185/1 +f 190/186/1 212/187/1 191/188/1 +f 212/187/1 192/189/1 191/188/1 +f 189/174/1 211/190/1 190/186/1 +f 185/177/10 186/171/10 229/191/10 +f 186/171/10 230/192/10 229/191/10 +f 235/193/1 239/194/1 231/195/1 +f 251/196/1 256/197/1 257/198/1 +f 270/199/2 272/200/2 265/201/2 +f 285/202/1 287/203/1 289/204/1 +f 340/205/2 360/206/2 341/207/2 +f 339/208/2 361/209/2 340/205/2 +f 338/210/2 362/211/2 339/208/2 +f 338/210/2 364/212/2 363/213/2 +f 337/214/2 365/215/2 364/212/2 +f 336/216/2 366/217/2 365/215/2 +f 317/218/1 359/219/1 316/220/1 +f 318/221/1 358/222/1 317/218/1 +f 319/223/1 357/224/1 318/221/1 +f 355/225/1 319/223/1 320/226/1 +f 354/227/1 320/226/1 321/228/1 +f 353/229/1 321/228/1 322/230/1 +f 353/229/1 349/231/1 347/232/1 +f 347/233/11 378/234/11 346/235/11 +f 350/236/2 360/206/2 346/237/2 +f 351/238/12 374/239/12 352/240/12 +f 366/217/2 352/240/2 345/241/2 +f 351/238/1 359/219/1 348/242/1 +f 391/243/1 382/244/1 389/245/1 +f 377/246/10 375/247/10 376/248/10 +f 379/249/10 373/250/10 380/251/10 +f 350/236/2 378/252/2 377/246/2 +f 348/253/13 379/249/13 380/251/13 +f 350/236/14 376/248/14 349/231/14 +f 351/238/15 380/254/15 373/250/15 +f 352/240/16 379/255/16 345/241/16 +f 349/231/1 375/256/1 347/232/1 +f 389/257/3 384/258/3 390/259/3 +f 392/260/10 389/245/10 390/261/10 +f 389/262/1 382/263/1 353/229/1 +f 384/258/10 347/233/10 346/235/10 +f 390/264/2 384/265/2 346/237/2 +f 387/266/2 390/261/2 381/267/2 +f 391/268/1 385/269/1 348/242/1 +f 391/270/5 388/271/5 385/272/5 +f 392/273/2 387/274/2 366/217/2 +f 385/272/10 345/275/10 348/253/10 +f 397/276/17 404/277/17 400/278/17 +f 395/279/3 398/280/3 396/281/3 +f 394/282/5 400/278/5 393/283/5 +f 396/281/2 397/276/2 394/282/2 +f 393/283/1 399/284/1 395/285/1 +f 402/286/10 404/277/10 401/287/10 +f 398/280/18 401/288/18 397/276/18 +f 400/278/19 403/289/19 399/284/19 +f 399/290/20 402/291/20 398/280/20 +f 369/292/2 411/293/2 410/294/2 +f 368/295/2 410/294/2 409/296/2 +f 368/297/2 408/298/2 367/299/2 +f 367/299/2 407/300/2 344/301/2 +f 333/302/1 417/303/1 332/304/1 +f 415/305/1 333/302/1 334/306/1 +f 414/307/1 334/306/1 323/308/1 +f 324/309/1 414/307/1 323/308/1 +f 325/310/1 425/311/1 324/309/1 +f 326/312/1 424/313/1 325/310/1 +f 327/314/1 423/315/1 326/312/1 +f 328/316/1 422/317/1 327/314/1 +f 329/318/1 421/319/1 328/316/1 +f 419/320/1 329/321/1 330/322/1 +f 418/323/1 330/322/1 331/324/1 +f 417/303/1 331/324/1 332/304/1 +f 428/325/2 431/326/2 427/327/2 +f 427/327/2 432/328/2 426/329/2 +f 430/330/2 432/328/2 434/331/2 +f 429/332/2 434/331/2 435/333/2 +f 372/334/21 435/335/21 413/336/21 +f 405/337/22 428/325/22 342/338/22 +f 441/339/2 446/340/2 445/341/2 +f 441/339/2 444/342/2 442/343/2 +f 442/343/2 443/344/2 436/345/2 +f 437/346/2 443/344/2 449/347/2 +f 438/348/2 449/347/2 448/349/2 +f 439/350/2 448/349/2 447/351/2 +f 455/352/1 460/353/1 454/354/1 +f 457/355/1 455/352/1 456/356/1 +f 458/357/1 456/356/1 451/358/1 +f 450/359/1 458/357/1 451/358/1 +f 452/360/1 463/361/1 450/359/1 +f 453/362/1 462/363/1 452/360/1 +f 482/364/23 484/365/23 480/366/23 +f 470/367/23 472/368/23 468/369/23 +f 467/370/2 469/371/2 471/372/2 +f 464/373/5 469/371/5 465/374/5 +f 466/375/1 468/369/1 464/373/1 +f 467/370/3 470/376/3 466/377/3 +f 472/378/4 475/379/4 473/380/4 +f 471/372/3 474/381/3 470/376/3 +f 469/371/24 475/382/24 471/372/24 +f 468/369/5 473/380/5 469/371/5 +f 477/383/2 483/384/2 479/385/2 +f 476/386/5 481/387/5 477/383/5 +f 476/388/1 482/364/1 480/366/1 +f 479/385/3 482/364/3 478/389/3 +f 484/390/4 487/391/4 485/392/4 +f 483/384/3 486/393/3 482/364/3 +f 481/387/24 487/394/24 483/384/24 +f 480/395/5 485/396/5 481/387/5 +f 489/397/3 490/398/3 488/399/3 +f 491/400/2 494/401/2 490/402/2 +f 495/403/5 492/404/5 494/405/5 +f 493/406/1 488/399/1 492/404/1 +f 494/401/4 488/407/4 490/402/4 +f 491/400/10 493/406/10 495/408/10 +f 197/160/5 600/409/5 186/171/5 +f 496/410/4 499/411/4 497/412/4 +f 503/413/10 500/414/10 501/415/10 +f 499/411/2 502/416/2 503/413/2 +f 513/417/3 514/418/3 512/419/3 +f 497/420/1 500/414/1 496/421/1 +f 508/422/5 511/423/5 509/424/5 +f 504/425/10 511/423/10 506/426/10 +f 505/427/1 509/424/1 504/425/1 +f 505/428/4 510/429/4 508/430/4 +f 510/431/1 525/432/1 511/433/1 +f 519/434/2 518/435/2 520/436/2 +f 513/437/1 512/438/1 522/439/1 +f 526/440/4 510/429/4 507/441/4 +f 511/423/10 527/442/10 506/426/10 +f 528/443/1 531/444/1 529/445/1 +f 535/446/2 532/447/2 533/448/2 +f 531/444/3 533/449/3 529/450/3 +f 528/451/25 534/452/25 530/453/25 +f 531/444/10 534/452/10 535/446/10 +f 539/454/1 536/455/1 537/456/1 +f 540/457/2 543/458/2 541/459/2 +f 541/460/5 539/454/5 537/461/5 +f 542/462/26 536/463/26 538/464/26 +f 539/454/10 542/462/10 538/465/10 +f 193/153/3 196/170/3 202/466/3 +f 210/180/10 230/192/10 195/181/10 +f 607/467/1 605/468/1 603/469/1 +f 608/470/1 602/471/1 604/472/1 +f 602/471/5 611/473/5 604/472/5 +f 609/474/4 610/475/4 602/471/4 +f 608/476/3 616/477/3 609/478/3 +f 603/469/4 615/479/4 607/480/4 +f 605/468/3 613/481/3 603/469/3 +f 604/472/10 617/482/10 608/476/10 +f 606/483/10 612/484/10 605/468/10 +f 607/485/5 614/486/5 606/483/5 +f 624/487/27 626/488/27 628/489/27 +f 618/490/5 624/487/5 620/491/5 +f 633/492/4 630/493/4 631/494/4 +f 621/495/3 623/496/3 619/497/3 +f 619/498/2 622/499/2 618/500/2 +f 629/501/10 626/488/10 627/502/10 +f 625/503/28 627/502/28 623/496/28 +f 623/496/29 626/488/29 622/499/29 +f 621/504/1 620/505/1 628/489/1 +f 636/506/10 639/507/10 637/508/10 +f 632/509/5 634/510/5 630/493/5 +f 639/511/2 640/512/2 632/509/2 +f 636/506/1 635/513/1 631/494/1 +f 632/509/2 637/514/2 639/511/2 +f 635/515/3 633/492/3 631/494/3 +f 636/516/30 641/517/30 635/518/30 +f 637/508/5 642/519/5 636/506/5 +f 634/520/30 643/521/30 638/522/30 +f 639/507/3 638/523/3 643/524/3 +f 641/517/2 637/514/2 633/492/2 +f 649/525/1 658/526/1 657/527/1 +f 644/528/1 652/529/1 651/530/1 +f 644/531/1 658/526/1 650/532/1 +f 660/533/1 656/534/1 648/535/1 +f 659/536/1 654/537/1 646/538/1 +f 646/538/1 652/529/1 645/539/1 +f 671/540/2 664/541/2 675/542/2 +f 663/543/2 668/544/2 669/545/2 +f 673/546/2 664/541/2 672/547/2 +f 673/546/2 661/548/2 665/549/2 +f 661/550/2 667/551/2 662/552/2 +f 667/551/2 663/543/2 662/552/2 +f 689/553/3 684/554/3 686/555/3 +f 699/556/5 695/557/5 693/558/5 +f 683/559/31 677/560/31 681/561/31 +f 682/562/32 676/563/32 678/564/32 +f 682/565/33 679/566/33 683/567/33 +f 681/568/19 676/569/19 680/570/19 +f 700/571/5 704/572/5 706/573/5 +f 710/574/3 715/575/3 713/576/3 +f 776/577/10 717/578/10 772/579/10 +f 720/580/4 723/581/4 721/582/4 +f 716/583/5 723/581/5 718/584/5 +f 721/582/1 774/585/1 773/586/1 +f 719/587/3 720/588/3 717/589/3 +f 722/590/2 777/591/2 778/592/2 +f 732/593/2 730/594/2 726/595/2 +f 718/584/10 775/596/10 716/583/10 +f 779/597/31 774/598/31 775/596/31 +f 777/599/32 772/579/32 773/600/32 +f 778/601/10 773/600/10 774/598/10 +f 784/602/4 786/603/4 785/604/4 +f 781/605/5 787/606/5 783/607/5 +f 782/608/3 785/604/3 780/609/3 +f 783/610/2 784/602/2 782/611/2 +f 780/612/1 786/603/1 781/613/1 +f 802/614/3 788/615/3 790/616/3 +f 801/617/5 791/618/5 789/619/5 +f 806/620/3 792/621/3 794/622/3 +f 805/623/5 795/624/5 793/625/5 +f 804/626/3 790/616/3 792/621/3 +f 791/618/5 805/627/5 793/625/5 +f 810/628/3 796/629/3 798/630/3 +f 797/631/5 811/632/5 799/633/5 +f 808/634/3 794/622/3 796/629/3 +f 795/624/5 809/635/5 797/631/5 +f 819/636/5 813/637/5 815/638/5 +f 816/639/3 814/640/3 812/641/3 +f 820/642/3 818/643/3 816/639/3 +f 823/644/5 817/645/5 819/636/5 +f 821/646/5 823/644/5 825/647/5 +f 822/648/3 820/642/3 824/649/3 +f 827/650/1 844/651/1 826/652/1 +f 844/651/1 845/653/1 858/654/1 +f 865/655/2 847/656/2 849/657/2 +f 841/658/10 863/659/10 853/660/10 +f 863/659/3 857/661/3 860/662/3 +f 851/663/2 862/664/2 841/665/2 +f 848/666/4 857/661/4 851/667/4 +f 864/668/5 867/669/5 865/670/5 +f 850/671/4 865/670/4 849/672/4 +f 852/673/10 866/674/10 840/675/10 +f 840/676/2 864/668/2 850/677/2 +f 860/678/2 846/679/2 861/680/2 +f 865/655/2 868/681/2 869/682/2 +f 860/678/2 871/683/2 863/684/2 +f 870/685/2 861/680/2 859/686/2 +f 887/687/2 882/688/2 885/689/2 +f 883/690/1 101/691/1 85/692/1 +f 885/689/2 92/693/2 103/694/2 +f 886/695/1 88/696/1 113/103/1 +f 880/697/2 115/99/2 96/698/2 +f 893/699/10 888/700/10 890/701/10 +f 894/702/10 891/703/10 889/704/10 +f 906/705/1 900/706/1 902/707/1 +f 905/708/2 903/709/2 901/710/2 +f 910/711/2 893/699/2 890/712/2 +f 892/713/1 908/714/1 888/715/1 +f 895/716/2 911/717/2 891/718/2 +f 909/719/1 894/702/1 889/720/1 +f 903/709/2 911/721/2 899/722/2 +f 909/723/1 902/707/1 898/724/1 +f 910/725/2 901/710/2 897/726/2 +f 900/706/1 908/727/1 896/728/1 +f 919/729/3 916/730/3 917/731/3 +f 919/729/10 912/732/10 914/733/10 +f 917/731/1 913/734/1 912/732/1 +f 913/735/4 918/736/4 915/737/4 +f 921/738/1 918/739/1 919/740/1 +f 918/736/4 922/741/4 915/737/4 +f 919/729/10 923/742/10 921/738/10 +f 927/743/4 924/744/4 925/745/4 +f 928/746/10 931/747/10 929/748/10 +f 927/743/2 930/749/2 926/750/2 +f 934/751/5 933/752/5 932/753/5 +f 928/746/1 925/754/1 924/755/1 +f 941/756/2 935/757/2 940/758/2 +f 943/759/1 937/760/1 942/761/1 +f 8/1/1 34/762/1 33/2/1 +f 8/1/1 6/8/1 35/4/1 +f 4/6/1 36/763/1 35/7/1 +f 4/6/1 2/13/1 25/9/1 +f 24/11/1 26/764/1 25/12/1 +f 24/11/1 22/16/1 27/14/1 +f 22/16/1 20/19/1 28/17/1 +f 20/19/1 18/22/1 29/20/1 +f 18/22/1 16/27/1 30/23/1 +f 14/25/1 31/765/1 30/26/1 +f 14/28/1 12/32/1 32/29/1 +f 10/3/1 33/766/1 32/31/1 +f 38/35/1 37/767/1 41/768/1 +f 37/767/1 39/769/1 41/768/1 +f 39/769/1 40/770/1 41/768/1 +f 41/768/1 42/771/1 43/33/1 +f 43/33/1 44/772/1 45/34/1 +f 45/34/1 46/773/1 47/774/1 +f 47/774/1 48/775/1 45/34/1 +f 48/775/1 38/35/1 45/34/1 +f 41/768/1 43/33/1 38/35/1 +f 60/36/1 50/776/1 55/37/1 +f 53/39/1 52/42/1 72/40/1 +f 52/42/1 53/777/1 55/43/1 +f 79/45/2 64/778/2 69/46/2 +f 51/48/2 54/779/2 81/49/2 +f 56/51/2 49/780/2 58/52/2 +f 104/54/2 103/694/2 92/55/2 +f 49/57/2 56/781/2 54/58/2 +f 183/59/1 182/76/1 71/60/1 +f 83/62/1 80/148/1 65/63/1 +f 61/65/2 62/80/2 74/66/2 +f 183/68/1 68/61/1 66/69/1 +f 58/52/2 57/73/2 76/71/2 +f 57/73/2 63/782/2 75/74/2 +f 184/75/1 72/40/1 71/60/1 +f 83/77/1 67/64/1 59/78/1 +f 62/80/2 64/778/2 79/81/2 +f 181/82/1 84/79/1 59/78/1 +f 85/83/1 101/691/1 102/84/1 +f 91/86/1 107/90/1 108/87/1 +f 86/89/1 105/111/1 107/90/1 +f 112/91/2 111/97/2 99/92/2 +f 98/94/2 110/783/2 112/91/2 +f 90/95/1 93/88/1 108/87/1 +f 111/97/2 109/784/2 94/98/2 +f 115/99/2 116/105/2 97/100/2 +f 89/102/1 114/108/1 113/103/1 +f 116/105/2 110/783/2 98/106/2 +f 90/107/1 106/96/1 114/108/1 +f 94/109/2 109/784/2 104/54/2 +f 86/110/1 87/85/1 102/84/1 +f 884/112/1 883/785/1 881/113/1 +f 143/115/2 144/786/2 155/116/2 +f 133/118/2 156/122/2 155/116/2 +f 133/120/2 134/787/2 145/121/2 +f 135/123/2 146/126/2 145/121/2 +f 136/125/2 147/129/2 146/126/2 +f 137/128/2 148/132/2 147/129/2 +f 138/131/2 149/136/2 148/132/2 +f 138/134/2 139/788/2 150/135/2 +f 140/137/2 151/142/2 150/138/2 +f 140/140/2 141/789/2 152/141/2 +f 141/143/2 142/790/2 153/144/2 +f 143/145/2 154/117/2 153/144/2 +f 69/46/2 70/50/2 81/147/2 +f 82/70/1 66/69/1 65/63/1 +f 75/149/2 63/782/2 61/65/2 +f 159/152/2 158/791/2 157/792/2 +f 157/792/2 168/793/2 159/152/2 +f 168/793/2 167/150/2 159/152/2 +f 167/150/2 166/794/2 163/151/2 +f 166/794/2 165/795/2 163/151/2 +f 165/795/2 164/796/2 163/151/2 +f 163/151/2 162/797/2 161/798/2 +f 161/798/2 160/799/2 163/151/2 +f 160/799/2 159/152/2 163/151/2 +f 193/153/3 202/466/3 201/154/3 +f 191/156/4 200/800/4 199/157/4 +f 189/159/5 198/164/5 197/160/5 +f 192/155/6 201/154/6 200/162/6 +f 190/158/7 199/157/7 198/164/7 +f 197/166/2 198/801/2 199/167/2 +f 199/167/2 200/802/2 202/165/2 +f 200/802/2 201/803/2 202/165/2 +f 197/166/8 202/165/8 601/168/8 +f 600/169/2 601/168/2 196/170/2 +f 188/172/1 205/176/1 206/173/1 +f 187/175/9 204/178/9 205/176/9 +f 185/177/1 203/804/1 204/178/1 +f 194/179/1 209/183/1 210/180/1 +f 193/182/9 208/185/9 209/183/9 +f 193/182/1 192/189/1 207/184/1 +f 190/186/1 211/190/1 212/187/1 +f 212/187/1 207/184/1 192/189/1 +f 189/174/1 206/173/1 211/190/1 +f 227/805/10 203/804/10 229/191/10 +f 203/804/10 185/177/10 229/191/10 +f 186/171/10 196/170/10 230/192/10 +f 231/195/1 232/806/1 235/193/1 +f 232/806/1 233/807/1 235/193/1 +f 233/807/1 234/808/1 235/193/1 +f 235/193/1 236/809/1 237/810/1 +f 237/810/1 238/811/1 239/194/1 +f 239/194/1 240/812/1 241/813/1 +f 241/813/1 242/814/1 239/194/1 +f 242/814/1 231/195/1 239/194/1 +f 235/193/1 237/810/1 239/194/1 +f 247/815/1 255/816/1 256/197/1 +f 256/197/1 266/817/1 267/818/1 +f 267/818/1 268/819/1 256/197/1 +f 268/819/1 257/198/1 256/197/1 +f 257/198/1 258/820/1 251/196/1 +f 258/820/1 259/821/1 251/196/1 +f 259/821/1 260/822/1 251/196/1 +f 251/196/1 250/823/1 249/824/1 +f 249/824/1 248/825/1 247/815/1 +f 247/815/1 256/197/1 249/824/1 +f 249/824/1 256/197/1 251/196/1 +f 265/201/2 264/826/2 263/827/2 +f 263/827/2 262/828/2 265/201/2 +f 262/828/2 261/829/2 265/201/2 +f 261/829/2 269/830/2 270/199/2 +f 270/199/2 274/831/2 273/832/2 +f 273/832/2 271/833/2 270/199/2 +f 271/833/2 272/200/2 270/199/2 +f 272/200/2 277/834/2 265/201/2 +f 277/834/2 276/835/2 265/201/2 +f 276/835/2 275/836/2 265/201/2 +f 261/829/2 270/199/2 265/201/2 +f 289/204/1 278/837/1 279/838/1 +f 279/838/1 280/839/1 281/840/1 +f 281/840/1 282/841/1 283/842/1 +f 283/842/1 284/843/1 281/840/1 +f 284/843/1 285/202/1 281/840/1 +f 285/202/1 286/844/1 287/203/1 +f 287/203/1 288/845/1 289/204/1 +f 289/204/1 279/838/1 285/202/1 +f 279/838/1 281/840/1 285/202/1 +f 340/205/2 361/209/2 360/206/2 +f 339/208/2 362/211/2 361/209/2 +f 338/210/2 363/213/2 362/211/2 +f 338/210/2 337/214/2 364/212/2 +f 337/214/2 336/216/2 365/215/2 +f 336/216/2 335/846/2 366/217/2 +f 317/218/1 358/222/1 359/219/1 +f 318/221/1 357/224/1 358/222/1 +f 319/223/1 356/847/1 357/224/1 +f 355/225/1 356/847/1 319/223/1 +f 354/227/1 355/225/1 320/226/1 +f 353/229/1 354/227/1 321/228/1 +f 353/229/1 322/230/1 349/231/1 +f 347/233/11 375/247/11 378/234/11 +f 350/236/2 341/207/2 360/206/2 +f 351/238/12 373/250/12 374/239/12 +f 366/217/2 335/846/2 352/240/2 +f 351/238/1 316/220/1 359/219/1 +f 391/243/1 386/848/1 382/244/1 +f 377/246/10 378/234/10 375/247/10 +f 379/249/10 374/239/10 373/250/10 +f 350/236/2 346/237/2 378/252/2 +f 348/253/13 345/275/13 379/249/13 +f 350/236/14 377/246/14 376/248/14 +f 351/238/15 348/242/15 380/254/15 +f 352/240/16 374/239/16 379/255/16 +f 349/231/1 376/248/1 375/256/1 +f 389/257/3 383/849/3 384/258/3 +f 392/260/10 391/243/10 389/245/10 +f 353/229/1 347/232/1 389/262/1 +f 347/232/1 383/850/1 389/262/1 +f 384/258/10 383/849/10 347/233/10 +f 346/237/2 360/206/2 390/264/2 +f 360/206/2 381/851/2 390/264/2 +f 387/266/2 392/260/2 390/261/2 +f 348/242/1 359/219/1 391/268/1 +f 359/219/1 386/852/1 391/268/1 +f 391/270/5 392/853/5 388/271/5 +f 366/217/2 345/241/2 392/273/2 +f 345/241/2 388/854/2 392/273/2 +f 385/272/10 388/271/10 345/275/10 +f 397/276/17 401/287/17 404/277/17 +f 395/279/3 399/290/3 398/280/3 +f 394/282/5 397/276/5 400/278/5 +f 396/281/2 398/280/2 397/276/2 +f 393/283/1 400/278/1 399/284/1 +f 402/286/10 403/855/10 404/277/10 +f 398/280/18 402/856/18 401/288/18 +f 400/278/19 404/857/19 403/289/19 +f 399/290/20 403/858/20 402/291/20 +f 369/292/2 370/859/2 411/293/2 +f 368/295/2 369/292/2 410/294/2 +f 368/297/2 409/860/2 408/298/2 +f 367/299/2 408/298/2 407/300/2 +f 333/302/1 416/861/1 417/303/1 +f 415/305/1 416/861/1 333/302/1 +f 414/307/1 415/305/1 334/306/1 +f 324/309/1 425/311/1 414/307/1 +f 325/310/1 424/313/1 425/311/1 +f 326/312/1 423/315/1 424/313/1 +f 327/314/1 422/317/1 423/315/1 +f 328/316/1 421/319/1 422/317/1 +f 329/318/1 420/862/1 421/319/1 +f 419/320/1 420/863/1 329/321/1 +f 418/323/1 419/320/1 330/322/1 +f 417/303/1 418/323/1 331/324/1 +f 428/325/2 433/864/2 431/326/2 +f 427/327/2 431/326/2 432/328/2 +f 430/330/2 426/329/2 432/328/2 +f 429/332/2 430/330/2 434/331/2 +f 372/334/21 429/332/21 435/335/21 +f 405/337/22 433/865/22 428/325/22 +f 441/339/2 440/866/2 446/340/2 +f 441/339/2 445/341/2 444/342/2 +f 442/343/2 444/342/2 443/344/2 +f 437/346/2 436/345/2 443/344/2 +f 438/348/2 437/346/2 449/347/2 +f 439/350/2 438/348/2 448/349/2 +f 455/352/1 459/867/1 460/353/1 +f 457/355/1 459/867/1 455/352/1 +f 458/357/1 457/355/1 456/356/1 +f 450/359/1 463/361/1 458/357/1 +f 452/360/1 462/363/1 463/361/1 +f 453/362/1 461/868/1 462/363/1 +f 482/364/23 486/869/23 484/365/23 +f 470/367/23 474/870/23 472/368/23 +f 467/370/2 465/374/2 469/371/2 +f 464/373/5 468/369/5 469/371/5 +f 466/375/1 470/367/1 468/369/1 +f 467/370/3 471/372/3 470/376/3 +f 472/378/4 474/871/4 475/379/4 +f 471/372/3 475/872/3 474/381/3 +f 469/371/24 473/873/24 475/382/24 +f 468/369/5 472/378/5 473/380/5 +f 477/383/2 481/387/2 483/384/2 +f 476/386/5 480/395/5 481/387/5 +f 476/388/1 478/389/1 482/364/1 +f 479/385/3 483/384/3 482/364/3 +f 484/390/4 486/393/4 487/391/4 +f 483/384/3 487/391/3 486/393/3 +f 481/387/24 485/874/24 487/394/24 +f 480/395/5 484/875/5 485/396/5 +f 489/397/3 491/876/3 490/398/3 +f 491/400/2 495/408/2 494/401/2 +f 495/403/5 493/406/5 492/404/5 +f 493/406/1 489/397/1 488/399/1 +f 494/401/4 492/877/4 488/407/4 +f 491/400/10 489/397/10 493/406/10 +f 186/171/5 185/177/5 197/160/5 +f 185/177/5 187/878/5 188/161/5 +f 197/160/5 185/177/5 188/161/5 +f 496/410/4 498/879/4 499/411/4 +f 503/413/10 502/416/10 500/414/10 +f 499/411/2 498/879/2 502/416/2 +f 513/417/3 515/880/3 514/418/3 +f 497/420/1 501/415/1 500/414/1 +f 508/422/5 510/881/5 511/423/5 +f 504/425/10 509/424/10 511/423/10 +f 505/427/1 508/882/1 509/424/1 +f 505/428/4 507/441/4 510/429/4 +f 510/431/1 524/883/1 525/432/1 +f 520/436/2 514/418/2 515/880/2 +f 515/880/2 521/884/2 520/436/2 +f 521/884/2 519/434/2 520/436/2 +f 522/439/1 516/885/1 517/886/1 +f 517/886/1 523/887/1 522/439/1 +f 523/887/1 513/437/1 522/439/1 +f 526/440/4 524/888/4 510/429/4 +f 511/423/10 525/432/10 527/442/10 +f 528/443/1 530/889/1 531/444/1 +f 535/446/2 534/452/2 532/447/2 +f 531/444/3 535/446/3 533/449/3 +f 528/451/25 532/447/25 534/452/25 +f 531/444/10 530/889/10 534/452/10 +f 539/454/1 538/465/1 536/455/1 +f 540/457/2 542/462/2 543/458/2 +f 541/460/5 543/458/5 539/454/5 +f 542/462/26 540/457/26 536/463/26 +f 539/454/10 543/458/10 542/462/10 +f 193/153/3 194/890/3 195/181/3 +f 195/181/3 196/170/3 193/153/3 +f 196/170/3 601/891/3 202/466/3 +f 228/892/10 230/192/10 210/180/10 +f 230/192/10 196/170/10 195/181/10 +f 607/467/1 606/893/1 605/468/1 +f 608/470/1 609/894/1 602/471/1 +f 602/471/5 610/475/5 611/473/5 +f 609/474/4 616/895/4 610/475/4 +f 608/476/3 617/482/3 616/477/3 +f 603/469/4 613/481/4 615/479/4 +f 605/468/3 612/484/3 613/481/3 +f 604/472/10 611/473/10 617/482/10 +f 606/483/10 614/486/10 612/484/10 +f 607/485/5 615/896/5 614/486/5 +f 624/487/27 622/499/27 626/488/27 +f 618/490/5 622/499/5 624/487/5 +f 633/492/4 632/509/4 630/493/4 +f 621/495/3 625/503/3 623/496/3 +f 619/498/2 623/496/2 622/499/2 +f 629/501/10 628/489/10 626/488/10 +f 625/503/28 629/501/28 627/502/28 +f 623/496/29 627/502/29 626/488/29 +f 620/505/1 624/897/1 628/489/1 +f 628/489/1 629/501/1 621/504/1 +f 629/501/1 625/898/1 621/504/1 +f 636/506/10 638/523/10 639/507/10 +f 632/509/5 640/899/5 634/510/5 +f 639/511/2 643/521/2 640/512/2 +f 631/494/1 630/493/1 638/523/1 +f 630/493/1 634/900/1 638/523/1 +f 638/523/1 636/506/1 631/494/1 +f 632/509/2 633/492/2 637/514/2 +f 635/515/3 641/901/3 633/492/3 +f 636/516/30 642/902/30 641/517/30 +f 634/520/30 640/512/30 643/521/30 +f 641/517/2 642/902/2 637/514/2 +f 649/525/1 650/532/1 658/526/1 +f 644/528/1 645/539/1 652/529/1 +f 644/531/1 651/903/1 658/526/1 +f 660/533/1 649/525/1 656/534/1 +f 649/525/1 657/527/1 656/534/1 +f 656/534/1 655/904/1 648/535/1 +f 659/536/1 648/535/1 654/537/1 +f 648/535/1 655/904/1 654/537/1 +f 654/537/1 653/905/1 646/538/1 +f 646/538/1 653/905/1 652/529/1 +f 647/906/2 670/907/2 671/540/2 +f 671/540/2 672/547/2 664/541/2 +f 675/542/2 647/906/2 671/540/2 +f 670/907/2 647/906/2 669/545/2 +f 647/906/2 674/908/2 669/545/2 +f 674/908/2 663/543/2 669/545/2 +f 673/546/2 665/549/2 664/541/2 +f 673/546/2 666/909/2 661/548/2 +f 661/550/2 666/910/2 667/551/2 +f 667/551/2 668/544/2 663/543/2 +f 686/555/3 687/911/3 691/912/3 +f 691/912/3 690/913/3 689/553/3 +f 689/553/3 688/914/3 684/554/3 +f 684/554/3 685/915/3 686/555/3 +f 686/555/3 691/912/3 689/553/3 +f 693/558/5 692/916/5 698/917/5 +f 698/917/5 697/918/5 699/556/5 +f 699/556/5 696/919/5 695/557/5 +f 695/557/5 694/920/5 693/558/5 +f 693/558/5 698/917/5 699/556/5 +f 683/559/31 679/921/31 677/560/31 +f 682/562/32 680/922/32 676/563/32 +f 682/565/33 678/923/33 679/566/33 +f 681/568/19 677/560/19 676/569/19 +f 706/573/5 707/924/5 701/925/5 +f 701/925/5 702/926/5 700/571/5 +f 700/571/5 703/927/5 704/572/5 +f 704/572/5 705/928/5 706/573/5 +f 706/573/5 701/925/5 700/571/5 +f 713/576/3 712/929/3 708/930/3 +f 708/930/3 709/931/3 710/574/3 +f 710/574/3 711/932/3 715/575/3 +f 715/575/3 714/933/3 713/576/3 +f 713/576/3 708/930/3 710/574/3 +f 776/577/10 719/934/10 717/578/10 +f 720/580/4 722/935/4 723/581/4 +f 716/583/5 721/582/5 723/581/5 +f 721/582/1 716/583/1 774/585/1 +f 716/583/1 775/936/1 774/585/1 +f 717/937/1 720/938/1 773/586/1 +f 720/938/1 721/582/1 773/586/1 +f 773/586/1 772/939/1 717/937/1 +f 719/587/3 722/590/3 720/588/3 +f 722/590/2 719/587/2 777/591/2 +f 719/587/2 776/940/2 777/591/2 +f 718/584/2 723/581/2 778/592/2 +f 723/581/2 722/590/2 778/592/2 +f 778/592/2 779/941/2 718/584/2 +f 726/595/2 725/942/2 734/943/2 +f 725/942/2 724/944/2 734/943/2 +f 724/944/2 735/945/2 734/943/2 +f 734/943/2 733/946/2 732/593/2 +f 732/593/2 731/947/2 730/594/2 +f 730/594/2 729/948/2 728/949/2 +f 728/949/2 727/950/2 730/594/2 +f 727/950/2 726/595/2 730/594/2 +f 734/943/2 732/593/2 726/595/2 +f 718/584/10 779/597/10 775/596/10 +f 779/597/31 778/601/31 774/598/31 +f 777/599/32 776/577/32 772/579/32 +f 778/601/10 777/599/10 773/600/10 +f 784/602/4 787/606/4 786/603/4 +f 781/605/5 786/603/5 787/606/5 +f 782/608/3 784/602/3 785/604/3 +f 783/610/2 787/606/2 784/602/2 +f 780/612/1 785/604/1 786/603/1 +f 802/614/3 800/951/3 788/615/3 +f 801/617/5 803/952/5 791/618/5 +f 806/620/3 804/953/3 792/621/3 +f 805/623/5 807/954/5 795/624/5 +f 804/626/3 802/955/3 790/616/3 +f 791/618/5 803/956/5 805/627/5 +f 810/628/3 808/634/3 796/629/3 +f 797/631/5 809/635/5 811/632/5 +f 808/634/3 806/957/3 794/622/3 +f 795/624/5 807/958/5 809/635/5 +f 819/636/5 817/645/5 813/637/5 +f 816/639/3 818/643/3 814/640/3 +f 820/642/3 822/648/3 818/643/3 +f 823/644/5 821/646/5 817/645/5 +f 827/650/1 845/653/1 844/651/1 +f 845/653/1 829/959/1 856/960/1 +f 858/654/1 828/961/1 844/651/1 +f 845/653/1 856/960/1 858/654/1 +f 865/655/2 859/686/2 847/656/2 +f 841/658/10 862/664/10 863/659/10 +f 863/659/3 862/664/3 857/661/3 +f 851/663/2 857/661/2 862/664/2 +f 848/666/4 860/662/4 857/661/4 +f 864/668/5 866/674/5 867/669/5 +f 850/671/4 864/668/4 865/670/4 +f 852/673/10 867/669/10 866/674/10 +f 840/676/2 866/674/2 864/668/2 +f 860/678/2 848/962/2 846/679/2 +f 865/655/2 867/963/2 868/681/2 +f 860/678/2 870/685/2 871/683/2 +f 859/686/2 865/655/2 869/682/2 +f 870/685/2 860/678/2 861/680/2 +f 859/686/2 869/682/2 870/685/2 +f 887/687/2 880/964/2 882/688/2 +f 883/690/1 884/112/1 101/691/1 +f 885/689/2 882/965/2 92/693/2 +f 886/695/1 881/966/1 88/696/1 +f 880/697/2 887/967/2 115/99/2 +f 893/699/10 892/713/10 888/700/10 +f 894/702/10 895/716/10 891/703/10 +f 906/705/1 904/968/1 900/706/1 +f 905/708/2 907/969/2 903/709/2 +f 910/711/2 897/726/2 893/699/2 +f 892/713/1 896/728/1 908/714/1 +f 895/716/2 899/722/2 911/717/2 +f 909/719/1 898/724/1 894/702/1 +f 903/709/2 907/970/2 911/721/2 +f 909/723/1 906/971/1 902/707/1 +f 910/725/2 905/972/2 901/710/2 +f 900/706/1 904/973/1 908/727/1 +f 919/729/3 918/974/3 916/730/3 +f 919/729/10 917/731/10 912/732/10 +f 917/731/1 916/975/1 913/734/1 +f 913/735/4 916/976/4 918/736/4 +f 921/738/1 920/977/1 918/739/1 +f 918/736/4 920/978/4 922/741/4 +f 919/729/10 914/733/10 923/742/10 +f 927/743/4 926/750/4 924/744/4 +f 928/746/10 930/749/10 931/747/10 +f 927/743/2 931/747/2 930/749/2 +f 934/751/5 935/757/5 933/752/5 +f 928/746/1 929/748/1 925/754/1 +f 935/757/2 934/751/2 940/758/2 +f 940/758/2 938/979/2 939/980/2 +f 939/980/2 941/756/2 940/758/2 +f 937/760/1 936/981/1 942/761/1 +f 942/761/1 932/982/1 933/983/1 +f 933/983/1 943/759/1 942/761/1 +s 1 +f 2/13/10 3/984/34 1/985/10 +f 4/6/34 5/986/35 3/984/34 +f 8/1/5 9/987/36 7/988/5 +f 10/3/36 11/989/22 9/987/36 +f 12/32/22 13/990/4 11/989/22 +f 14/25/4 15/991/21 13/992/4 +f 16/27/21 17/993/37 15/991/21 +f 18/22/37 19/994/3 17/993/37 +f 20/19/3 21/995/38 19/994/3 +f 22/16/38 23/996/39 21/995/38 +f 24/11/39 1/985/10 23/996/39 +f 29/20/35 40/997/5 28/21/5 +f 36/763/21 47/998/37 35/7/37 +f 26/764/22 38/999/4 25/12/4 +f 33/766/38 44/1000/39 32/31/39 +f 30/23/34 41/1001/35 29/24/35 +f 25/9/4 48/1002/21 36/10/21 +f 27/14/36 37/1003/22 26/15/22 +f 34/762/3 45/1004/38 33/2/38 +f 31/765/10 42/1005/34 30/26/34 +f 28/17/5 39/1006/36 27/18/36 +f 35/4/37 46/1007/3 34/5/3 +f 32/29/39 43/1008/10 31/30/10 +f 49/780/40 60/36/41 58/52/41 +f 59/78/42 58/52/41 60/36/41 +f 59/78/42 63/782/43 57/73/42 +f 65/63/44 63/782/27 67/64/27 +f 68/61/28 62/80/45 66/69/45 +f 72/40/46 69/46/47 71/60/47 +f 66/69/45 61/65/44 65/63/44 +f 52/42/48 49/57/40 51/48/48 +f 72/40/46 51/48/48 70/50/46 +f 854/1009/9 835/1010/9 855/1011/9 +f 101/691/46 104/54/47 102/84/47 +f 105/111/49 104/54/47 109/784/49 +f 105/111/28 111/97/45 107/90/45 +f 107/90/45 112/91/44 108/87/44 +f 108/87/44 110/783/27 106/96/27 +f 114/108/42 110/783/43 116/105/42 +f 114/108/42 115/99/41 113/103/41 +f 884/112/48 887/687/40 885/689/48 +f 122/1012/50 126/1013/51 117/1014/52 +f 124/1015/44 130/1016/53 121/1017/45 +f 123/1018/54 127/1019/55 132/1020/56 +f 126/1013/51 551/1021/57 548/1022/58 +f 128/1023/59 120/1024/60 119/1025/48 +f 124/1015/44 132/1020/56 131/1026/61 +f 126/1027/51 118/1028/40 117/1029/52 +f 130/1016/53 122/1030/50 121/1017/45 +f 118/1028/40 128/1023/59 119/1025/48 +f 68/61/49 69/46/47 64/778/49 +f 144/119/21 157/1031/4 133/118/4 +f 134/124/22 159/1032/36 135/123/36 +f 141/143/38 166/1033/3 142/790/3 +f 138/134/34 163/1034/10 139/788/10 +f 135/127/36 160/1035/5 136/125/5 +f 142/146/3 167/1036/37 143/145/37 +f 139/139/10 164/1037/39 140/137/39 +f 136/130/5 161/1038/35 137/128/35 +f 143/115/37 168/1039/21 144/786/21 +f 133/120/4 158/1040/22 134/787/22 +f 140/140/39 165/1041/38 141/789/38 +f 137/133/35 162/1042/34 138/131/34 +f 151/142/22 174/1043/4 150/138/4 +f 148/132/37 171/1044/3 147/129/3 +f 155/116/34 178/1045/35 154/117/35 +f 145/121/39 180/1046/10 156/122/10 +f 152/141/36 175/1047/22 151/142/22 +f 149/136/21 172/1048/37 148/132/37 +f 156/122/10 179/1049/34 155/116/34 +f 146/126/38 169/1050/39 145/121/39 +f 153/144/5 176/1051/36 152/141/36 +f 150/135/4 173/1052/21 149/136/21 +f 147/129/3 170/1053/38 146/126/38 +f 154/117/35 177/1054/5 153/144/5 +f 221/1055/38 215/1056/62 214/1057/38 +f 223/1058/63 217/1059/35 216/1060/63 +f 224/1061/35 218/1062/34 217/1059/35 +f 226/1063/10 213/1064/39 219/1065/10 +f 225/1066/34 219/1065/10 218/1062/34 +f 220/1067/39 214/1057/38 213/1064/39 +f 233/1068/38 246/1069/62 234/1070/62 +f 241/1071/35 252/1072/63 253/1073/35 +f 242/1074/34 253/1073/35 254/1075/34 +f 231/1076/10 243/1077/39 232/1078/39 +f 242/1074/34 244/1079/10 231/1076/10 +f 232/1078/39 245/1080/38 233/1068/38 +f 258/1081/39 273/1082/38 259/1083/38 +f 266/1084/63 276/1085/35 267/1086/35 +f 259/1083/38 274/1087/62 260/1088/62 +f 267/1086/35 277/1089/34 268/1090/34 +f 268/1090/34 272/1091/10 257/1092/10 +f 257/1092/10 271/1093/39 258/1081/39 +f 292/1094/3 281/1095/37 280/1096/3 +f 299/1097/35 288/1098/34 287/1099/35 +f 301/1100/10 278/1101/39 289/1102/10 +f 296/1103/22 285/1104/36 284/1105/22 +f 293/1106/37 282/1107/21 281/1095/37 +f 300/1108/34 289/1102/10 288/1098/34 +f 290/1109/39 279/1110/38 278/1101/39 +f 297/1111/36 286/1112/5 285/1104/36 +f 294/1113/21 283/1114/4 282/1107/21 +f 291/1115/38 280/1096/3 279/1110/38 +f 298/1116/5 287/1099/35 286/1112/5 +f 295/1117/4 284/1105/22 283/1118/4 +f 306/1119/39 312/1120/10 305/1121/10 +f 304/1122/34 310/1123/35 303/1124/35 +f 307/1125/38 313/1126/39 306/1119/39 +f 305/1121/10 311/1127/34 304/1122/34 +f 303/1124/35 309/1128/63 302/1129/63 +f 308/1130/62 314/1131/38 307/1125/38 +f 338/210/4 320/226/22 319/223/4 +f 339/208/22 321/228/36 320/226/22 +f 340/205/36 322/230/64 321/228/36 +f 335/846/65 317/218/37 316/220/65 +f 336/216/37 318/221/21 317/218/37 +f 337/214/21 319/223/4 318/221/21 +f 341/207/64 349/231/66 322/230/64 +f 368/1132/4 328/316/21 369/1133/21 +f 371/1134/67 325/310/38 372/334/68 +f 343/1135/69 333/302/35 332/304/5 +f 367/1136/22 329/321/4 368/1137/4 +f 370/1138/70 326/312/3 371/1134/67 +f 344/1139/71 330/322/22 367/1136/22 +f 369/1133/21 327/314/37 370/1138/70 +f 372/334/68 325/310/38 324/309/39 +f 426/329/10 324/309/39 323/308/10 +f 344/1139/71 332/304/5 331/324/36 +f 335/846/65 351/238/72 352/240/72 +f 343/1140/73 405/1141/74 342/1142/75 +f 371/1143/76 413/1144/77 412/1145/78 +f 371/1143/76 411/293/74 370/859/79 +f 344/301/80 406/1146/81 343/1140/73 +f 427/327/34 323/308/10 334/306/34 +f 437/346/39 451/358/10 436/345/10 +f 438/348/38 450/359/39 437/346/39 +f 441/339/35 454/354/63 440/866/63 +f 439/350/62 452/360/38 438/348/38 +f 442/343/34 455/352/35 441/339/35 +f 436/345/10 456/356/34 442/343/34 +f 334/306/34 333/302/35 342/338/82 +f 519/434/83 516/885/84 518/435/84 +f 518/435/84 522/1147/85 520/1148/85 +f 515/1149/10 523/1150/86 521/1151/86 +f 521/1151/86 517/886/83 519/434/83 +f 520/1148/85 512/1152/4 514/1153/4 +f 524/883/87 527/1154/88 525/432/87 +f 526/1155/88 506/1156/89 527/1154/88 +f 551/1157/57 558/1158/90 559/1159/91 +f 125/1160/92 548/1161/58 549/1162/93 +f 125/1160/92 544/1163/94 128/1023/59 +f 132/1020/56 547/1164/95 131/1026/61 +f 128/1023/59 545/1165/96 127/1166/55 +f 127/1019/55 546/1167/97 132/1020/56 +f 129/1168/98 550/1169/99 551/1157/57 +f 131/1026/61 550/1169/99 130/1016/53 +f 555/1170/100 562/1171/101 558/1172/102 +f 546/1173/97 555/1174/103 547/1164/95 +f 545/1175/96 554/1176/104 546/1167/97 +f 549/1162/93 552/1177/105 544/1163/94 +f 549/1162/93 556/1178/106 557/1179/107 +f 544/1163/94 553/1180/108 545/1165/96 +f 547/1164/95 558/1158/90 550/1169/99 +f 548/1022/58 559/1181/91 556/1182/106 +f 558/1172/102 563/1183/109 559/1184/91 +f 555/1170/100 560/1185/110 561/1186/111 +f 561/1186/111 566/1187/112 562/1171/101 +f 562/1171/101 567/1188/113 563/1183/109 +f 561/1186/111 564/1189/114 565/1190/115 +f 565/1190/115 570/1191/116 566/1187/112 +f 566/1187/112 571/1192/117 567/1188/113 +f 564/1189/114 569/1193/118 565/1190/115 +f 557/1179/107 572/1194/119 552/1177/105 +f 557/1179/107 574/1195/120 575/1196/121 +f 552/1177/105 573/1197/122 553/1180/108 +f 575/1198/123 576/1199/124 572/1200/125 +f 574/1201/120 579/1202/126 575/1198/123 +f 573/1203/122 576/1199/124 577/1204/127 +f 579/1202/126 580/1205/128 576/1199/124 +f 579/1202/126 582/1206/129 583/1207/130 +f 576/1199/124 581/1208/131 577/1204/127 +f 583/1207/130 584/1209/132 580/1205/128 +f 583/1207/130 586/1210/133 587/1211/134 +f 580/1205/128 585/1212/135 581/1208/131 +f 587/1211/134 588/1213/136 584/1209/132 +f 586/1210/133 591/1214/137 587/1211/134 +f 584/1209/132 589/1215/138 585/1212/135 +f 591/1216/137 592/1217/139 588/1218/136 +f 591/1216/137 594/1219/140 595/1220/141 +f 588/1218/136 593/1221/142 589/1222/138 +f 595/1220/141 596/1223/143 592/1217/139 +f 594/1224/140 599/1225/144 595/1220/141 +f 592/1217/139 597/1226/145 593/1227/142 +f 563/1228/109 578/1229/146 559/1181/91 +f 573/1230/122 554/1176/104 553/1231/108 +f 597/1232/145 569/1233/118 568/1234/147 +f 570/1235/116 598/1236/148 571/1237/117 +f 596/1223/143 570/1235/116 569/1233/118 +f 564/1189/114 593/1227/142 568/1238/147 +f 577/1239/127 560/1240/110 554/1176/104 +f 581/1241/131 585/1212/135 593/1227/142 +f 568/1238/147 593/1227/142 597/1226/145 +f 594/1242/140 571/1243/117 598/1244/148 +f 594/1242/140 567/1245/113 571/1243/117 +f 582/1246/129 594/1242/140 586/1247/133 +f 574/1248/120 559/1181/91 578/1229/146 +f 645/539/28 663/543/149 646/538/149 +f 653/1249/5 667/1250/7 652/1251/7 +f 646/538/149 674/908/3 659/536/3 +f 654/1252/27 668/1253/5 653/1249/5 +f 660/1254/5 664/541/150 649/1255/150 +f 655/1256/10 669/1257/27 654/1252/27 +f 656/1258/28 670/1259/10 655/1256/10 +f 657/1260/3 671/1261/28 656/1258/28 +f 649/1255/150 665/549/27 650/1262/27 +f 658/1263/6 672/1264/3 657/1260/3 +f 650/1262/27 661/548/10 644/1265/10 +f 644/528/10 662/552/28 645/539/28 +f 651/1266/4 673/1267/6 658/1263/6 +f 652/1251/7 666/1268/4 651/1269/4 +f 689/1270/9 696/1271/1 688/1272/1 +f 690/1273/4 695/1274/9 689/1270/9 +f 685/1275/10 698/1276/29 686/1277/29 +f 686/1277/29 692/1278/2 687/1279/2 +f 691/1280/8 694/1281/4 690/1282/4 +f 687/1279/2 693/1283/8 691/1280/8 +f 684/1284/151 697/1285/10 685/1275/10 +f 688/1272/1 699/1286/151 684/1284/151 +f 711/1287/1 700/1288/151 715/1289/151 +f 715/1289/151 702/1290/10 714/1291/10 +f 712/1292/2 706/1293/8 708/1294/8 +f 708/1294/8 705/1295/4 709/1296/4 +f 713/1297/29 707/1298/2 712/1292/2 +f 714/1291/10 701/1299/29 713/1297/29 +f 709/1300/4 704/1301/9 710/1302/9 +f 710/1302/9 703/1303/1 711/1287/1 +f 731/1304/22 742/1305/152 730/1306/4 +f 728/1307/37 739/1308/153 727/1309/3 +f 735/1310/34 746/1311/154 734/1312/35 +f 725/1313/39 736/1314/155 724/1315/10 +f 732/1316/36 743/1317/156 731/1304/22 +f 729/1318/21 740/1319/157 728/1307/37 +f 724/1315/10 747/1320/158 735/1310/34 +f 726/1321/38 737/1322/159 725/1313/39 +f 733/1323/5 744/1324/160 732/1316/36 +f 730/1325/4 741/1326/161 729/1318/21 +f 727/1309/3 738/1327/162 726/1321/38 +f 734/1312/35 745/1328/163 733/1323/5 +f 740/1319/157 753/1329/164 752/1330/165 +f 747/1320/158 748/1331/166 759/1332/167 +f 737/1322/159 750/1333/168 749/1334/169 +f 744/1324/160 757/1335/170 756/1336/171 +f 742/1337/152 753/1329/164 741/1326/161 +f 738/1327/162 751/1338/172 750/1333/168 +f 746/1311/154 757/1335/170 745/1328/163 +f 742/1305/152 755/1339/173 754/1340/174 +f 740/1319/157 751/1338/172 739/1308/153 +f 747/1320/158 758/1341/175 746/1311/154 +f 737/1322/159 748/1331/166 736/1314/155 +f 744/1324/160 755/1339/173 743/1317/156 +f 752/1330/165 765/1342/176 764/1343/177 +f 759/1332/167 760/1344/178 771/1345/179 +f 749/1334/169 762/1346/180 761/1347/181 +f 757/1335/170 768/1348/182 756/1336/171 +f 754/1349/174 765/1342/176 753/1329/164 +f 751/1338/172 762/1346/180 750/1333/168 +f 757/1335/170 770/1350/183 769/1351/184 +f 754/1340/174 767/1352/185 766/1353/186 +f 751/1338/172 764/1343/177 763/1354/187 +f 759/1332/167 770/1350/183 758/1341/175 +f 749/1334/169 760/1344/178 748/1331/166 +f 756/1336/171 767/1352/185 755/1339/173 +f 766/1355/186 768/1356/182 760/1357/178 +f 791/618/188 788/615/2 789/619/2 +f 793/625/189 790/616/188 791/618/188 +f 795/624/190 792/621/189 793/625/189 +f 797/631/191 794/622/190 795/624/190 +f 799/633/23 796/629/191 797/631/191 +f 801/617/1 802/1358/192 803/952/192 +f 805/623/193 806/1359/194 807/954/194 +f 806/1360/194 809/635/195 807/958/194 +f 809/635/195 810/1361/18 811/632/18 +f 804/1362/193 803/956/192 802/1363/192 +f 818/1364/196 815/1365/23 814/640/23 +f 813/637/24 816/1366/197 812/1367/24 +f 817/1368/197 820/1369/188 816/1366/197 +f 822/1370/198 819/1371/196 818/1364/196 +f 825/1372/199 822/1370/198 824/1373/199 +f 825/1374/199 820/1369/188 821/1375/188 +f 826/652/10 831/1376/193 827/650/10 +f 830/1377/193 833/1378/1 831/1376/193 +f 843/1379/48 875/1380/200 839/1381/201 +f 834/1382/202 837/1383/203 835/1384/204 +f 836/1385/205 839/1381/201 837/1383/203 +f 829/1386/28 859/1387/45 856/1388/45 +f 838/1389/206 843/1379/48 839/1381/201 +f 850/1390/207 849/1391/32 847/1392/32 +f 846/1393/31 848/1394/31 851/1395/208 +f 850/1390/207 827/1396/5 840/1397/5 +f 844/1398/209 841/1399/3 826/1400/3 +f 834/1382/202 872/1401/210 836/1385/205 +f 837/1383/203 875/1380/200 873/1402/211 +f 858/1403/44 846/1393/27 828/1404/27 +f 856/1388/45 861/1405/44 858/1403/44 +f 838/1389/206 876/1406/41 842/1407/40 +f 836/1385/205 874/1408/212 838/1389/206 +f 835/1384/204 873/1402/211 855/1409/213 +f 852/1410/5 840/1397/5 875/1380/200 +f 874/1411/212 872/1412/210 841/1399/3 +f 831/1413/5 833/1414/5 827/1396/5 +f 832/1415/1 855/1011/9 833/1378/1 +f 854/1416/214 826/1400/3 872/1412/210 +f 101/691/46 885/689/48 103/694/46 +f 887/967/40 113/103/41 115/99/41 +f 827/1396/5 855/1417/213 873/1418/211 +f 826/1400/3 832/1419/3 830/1420/3 +f 902/707/48 899/722/46 898/724/46 +f 898/724/46 895/716/5 894/702/5 +f 897/726/41 892/713/3 893/699/3 +f 901/710/40 896/728/41 897/726/41 +f 902/707/48 901/710/40 903/709/48 +f 6/8/35 7/988/5 5/986/35 +f 923/1421/215 920/977/216 921/738/216 +f 914/1422/217 922/1423/215 923/1421/215 +f 936/981/218 939/980/219 938/979/218 +f 942/1424/220 938/979/218 940/1425/220 +f 943/1426/221 935/1427/10 941/1428/221 +f 937/760/219 941/1428/221 939/980/219 +f 932/1429/4 940/1425/220 934/1430/4 +f 2/13/10 4/6/34 3/984/34 +f 4/6/34 6/8/35 5/986/35 +f 8/1/5 10/3/36 9/987/36 +f 10/3/36 12/32/22 11/989/22 +f 12/32/22 14/28/4 13/990/4 +f 14/25/4 16/27/21 15/991/21 +f 16/27/21 18/22/37 17/993/37 +f 18/22/37 20/19/3 19/994/3 +f 20/19/3 22/16/38 21/995/38 +f 22/16/38 24/11/39 23/996/39 +f 24/11/39 2/13/10 1/985/10 +f 29/20/35 41/1431/35 40/997/5 +f 36/763/21 48/1432/21 47/998/37 +f 26/764/22 37/1433/22 38/999/4 +f 33/766/38 45/1434/38 44/1000/39 +f 30/23/34 42/1435/34 41/1001/35 +f 25/9/4 38/1436/4 48/1002/21 +f 27/14/36 39/1437/36 37/1003/22 +f 34/762/3 46/1438/3 45/1004/38 +f 31/765/10 43/1439/10 42/1005/34 +f 28/17/5 40/1440/5 39/1006/36 +f 35/4/37 47/1441/37 46/1007/3 +f 32/29/39 44/1442/39 43/1008/10 +f 49/780/40 50/776/40 60/36/41 +f 59/78/42 57/73/42 58/52/41 +f 59/78/42 67/64/43 63/782/43 +f 65/63/44 61/65/44 63/782/27 +f 68/61/28 64/778/28 62/80/45 +f 72/40/46 70/50/46 69/46/47 +f 66/69/45 62/80/45 61/65/44 +f 52/42/48 50/44/40 49/57/40 +f 72/40/46 52/42/48 51/48/48 +f 854/1009/9 834/1443/9 835/1010/9 +f 101/691/46 103/694/46 104/54/47 +f 105/111/49 102/84/47 104/54/47 +f 105/111/28 109/784/28 111/97/45 +f 107/90/45 111/97/45 112/91/44 +f 108/87/44 112/91/44 110/783/27 +f 114/108/42 106/96/43 110/783/43 +f 114/108/42 116/105/42 115/99/41 +f 884/112/48 886/114/40 887/687/40 +f 122/1012/50 129/1444/98 126/1013/51 +f 124/1015/44 131/1026/61 130/1016/53 +f 123/1018/54 120/1445/60 127/1019/55 +f 126/1013/51 129/1444/98 551/1021/57 +f 128/1023/59 127/1166/55 120/1024/60 +f 124/1015/44 123/1018/54 132/1020/56 +f 126/1027/51 125/1160/92 118/1028/40 +f 130/1016/53 129/1168/98 122/1030/50 +f 118/1028/40 125/1160/92 128/1023/59 +f 68/61/49 71/60/47 69/46/47 +f 144/119/21 168/1446/21 157/1031/4 +f 134/124/22 158/1447/22 159/1032/36 +f 141/143/38 165/1448/38 166/1033/3 +f 138/134/34 162/1449/34 163/1034/10 +f 135/127/36 159/1450/36 160/1035/5 +f 142/146/3 166/1451/3 167/1036/37 +f 139/139/10 163/1452/10 164/1037/39 +f 136/130/5 160/1453/5 161/1038/35 +f 143/115/37 167/1454/37 168/1039/21 +f 133/120/4 157/1455/4 158/1040/22 +f 140/140/39 164/1456/39 165/1041/38 +f 137/133/35 161/1457/35 162/1042/34 +f 151/142/22 175/1047/22 174/1043/4 +f 148/132/37 172/1048/37 171/1044/3 +f 155/116/34 179/1049/34 178/1045/35 +f 145/121/39 169/1050/39 180/1046/10 +f 152/141/36 176/1051/36 175/1047/22 +f 149/136/21 173/1052/21 172/1048/37 +f 156/122/10 180/1046/10 179/1049/34 +f 146/126/38 170/1053/38 169/1050/39 +f 153/144/5 177/1054/5 176/1051/36 +f 150/135/4 174/1458/4 173/1052/21 +f 147/129/3 171/1044/3 170/1053/38 +f 154/117/35 178/1045/35 177/1054/5 +f 221/1055/38 222/1459/62 215/1056/62 +f 223/1058/63 224/1061/35 217/1059/35 +f 224/1061/35 225/1066/34 218/1062/34 +f 226/1063/10 220/1067/39 213/1064/39 +f 225/1066/34 226/1063/10 219/1065/10 +f 220/1067/39 221/1055/38 214/1057/38 +f 233/1068/38 245/1080/38 246/1069/62 +f 241/1071/35 240/1460/63 252/1072/63 +f 242/1074/34 241/1071/35 253/1073/35 +f 231/1076/10 244/1079/10 243/1077/39 +f 242/1074/34 254/1075/34 244/1079/10 +f 232/1078/39 243/1077/39 245/1080/38 +f 258/1081/39 271/1093/39 273/1082/38 +f 266/1084/63 275/1461/63 276/1085/35 +f 259/1083/38 273/1082/38 274/1087/62 +f 267/1086/35 276/1085/35 277/1089/34 +f 268/1090/34 277/1089/34 272/1091/10 +f 257/1092/10 272/1091/10 271/1093/39 +f 292/1094/3 293/1106/37 281/1095/37 +f 299/1097/35 300/1108/34 288/1098/34 +f 301/1100/10 290/1109/39 278/1101/39 +f 296/1103/22 297/1111/36 285/1104/36 +f 293/1106/37 294/1113/21 282/1107/21 +f 300/1108/34 301/1100/10 289/1102/10 +f 290/1109/39 291/1115/38 279/1110/38 +f 297/1111/36 298/1116/5 286/1112/5 +f 294/1113/21 295/1462/4 283/1114/4 +f 291/1115/38 292/1094/3 280/1096/3 +f 298/1116/5 299/1097/35 287/1099/35 +f 295/1117/4 296/1103/22 284/1105/22 +f 306/1119/39 313/1126/39 312/1120/10 +f 304/1122/34 311/1127/34 310/1123/35 +f 307/1125/38 314/1131/38 313/1126/39 +f 305/1121/10 312/1120/10 311/1127/34 +f 303/1124/35 310/1123/35 309/1128/63 +f 308/1130/62 315/1463/62 314/1131/38 +f 338/210/4 339/208/22 320/226/22 +f 339/208/22 340/205/36 321/228/36 +f 340/205/36 341/207/64 322/230/64 +f 335/846/65 336/216/37 317/218/37 +f 336/216/37 337/214/21 318/221/21 +f 337/214/21 338/210/4 319/223/4 +f 341/207/64 350/236/66 349/231/66 +f 368/1132/4 329/318/4 328/316/21 +f 371/1134/67 326/312/3 325/310/38 +f 343/1135/69 342/338/82 333/302/35 +f 367/1136/22 330/322/22 329/321/4 +f 370/1138/70 327/314/37 326/312/3 +f 344/1139/71 331/324/36 330/322/22 +f 369/1133/21 328/316/21 327/314/37 +f 324/309/39 430/330/39 372/334/68 +f 430/330/39 429/332/28 372/334/68 +f 426/329/10 430/330/39 324/309/39 +f 344/1139/71 343/1135/69 332/304/5 +f 335/846/65 316/220/65 351/238/72 +f 343/1140/73 406/1146/81 405/1141/74 +f 371/1143/76 372/1464/222 413/1144/77 +f 371/1143/76 412/1145/78 411/293/74 +f 344/301/80 407/300/223 406/1146/81 +f 427/327/34 426/329/10 323/308/10 +f 437/346/39 450/359/39 451/358/10 +f 438/348/38 452/360/38 450/359/39 +f 441/339/35 455/352/35 454/354/63 +f 439/350/62 453/362/62 452/360/38 +f 442/343/34 456/356/34 455/352/35 +f 436/345/10 451/358/10 456/356/34 +f 428/325/27 427/327/34 342/338/82 +f 427/327/34 334/306/34 342/338/82 +f 519/434/83 517/886/83 516/885/84 +f 518/435/84 516/885/84 522/1147/85 +f 515/1149/10 513/1465/10 523/1150/86 +f 521/1151/86 523/1150/86 517/886/83 +f 520/1148/85 522/1147/85 512/1152/4 +f 524/883/87 526/1155/88 527/1154/88 +f 526/1155/88 507/1466/89 506/1156/89 +f 551/1157/57 550/1169/99 558/1158/90 +f 125/1160/92 126/1027/51 548/1161/58 +f 125/1160/92 549/1162/93 544/1163/94 +f 132/1020/56 546/1173/97 547/1164/95 +f 128/1023/59 544/1163/94 545/1165/96 +f 127/1019/55 545/1175/96 546/1167/97 +f 129/1168/98 130/1016/53 550/1169/99 +f 131/1026/61 547/1164/95 550/1169/99 +f 555/1170/100 561/1186/111 562/1171/101 +f 546/1173/97 554/1467/104 555/1174/103 +f 545/1175/96 553/1231/108 554/1176/104 +f 549/1162/93 557/1179/107 552/1177/105 +f 549/1162/93 548/1161/58 556/1178/106 +f 544/1163/94 552/1177/105 553/1180/108 +f 547/1164/95 555/1174/103 558/1158/90 +f 548/1022/58 551/1021/57 559/1181/91 +f 558/1172/102 562/1171/101 563/1183/109 +f 555/1170/100 554/1468/104 560/1185/110 +f 561/1186/111 565/1190/115 566/1187/112 +f 562/1171/101 566/1187/112 567/1188/113 +f 561/1186/111 560/1185/110 564/1189/114 +f 565/1190/115 569/1193/118 570/1191/116 +f 566/1187/112 570/1191/116 571/1192/117 +f 564/1189/114 568/1238/147 569/1193/118 +f 557/1179/107 575/1196/121 572/1194/119 +f 557/1179/107 556/1178/106 574/1195/120 +f 552/1177/105 572/1194/119 573/1197/122 +f 575/1198/123 579/1202/126 576/1199/124 +f 574/1201/120 578/1469/146 579/1202/126 +f 573/1203/122 572/1200/125 576/1199/124 +f 579/1202/126 583/1207/130 580/1205/128 +f 579/1202/126 578/1469/146 582/1206/129 +f 576/1199/124 580/1205/128 581/1208/131 +f 583/1207/130 587/1211/134 584/1209/132 +f 583/1207/130 582/1206/129 586/1210/133 +f 580/1205/128 584/1209/132 585/1212/135 +f 587/1211/134 591/1214/137 588/1213/136 +f 586/1210/133 590/1470/224 591/1214/137 +f 584/1209/132 588/1213/136 589/1215/138 +f 591/1216/137 595/1220/141 592/1217/139 +f 591/1216/137 590/1471/224 594/1219/140 +f 588/1218/136 592/1217/139 593/1221/142 +f 595/1220/141 599/1225/144 596/1223/143 +f 594/1224/140 598/1472/148 599/1225/144 +f 592/1217/139 596/1223/143 597/1226/145 +f 563/1228/109 567/1245/113 578/1229/146 +f 573/1230/122 577/1239/127 554/1176/104 +f 597/1232/145 596/1223/143 569/1233/118 +f 570/1235/116 599/1225/144 598/1236/148 +f 596/1223/143 599/1225/144 570/1235/116 +f 577/1239/127 564/1189/114 560/1240/110 +f 589/1215/138 593/1227/142 585/1212/135 +f 593/1227/142 564/1189/114 581/1241/131 +f 564/1189/114 577/1239/127 581/1241/131 +f 582/1246/129 578/1229/146 567/1245/113 +f 567/1245/113 594/1242/140 582/1246/129 +f 594/1242/140 590/1473/224 586/1247/133 +f 574/1248/120 556/1182/106 559/1181/91 +f 645/539/28 662/552/28 663/543/149 +f 653/1249/5 668/1253/5 667/1250/7 +f 646/538/149 663/543/149 674/908/3 +f 654/1252/27 669/1257/27 668/1253/5 +f 660/1254/5 675/542/5 664/541/150 +f 655/1256/10 670/1259/10 669/1257/27 +f 656/1258/28 671/1261/28 670/1259/10 +f 657/1260/3 672/1264/3 671/1261/28 +f 649/1255/150 664/541/150 665/549/27 +f 658/1263/6 673/1267/6 672/1264/3 +f 650/1262/27 665/549/27 661/548/10 +f 644/528/10 661/550/10 662/552/28 +f 651/1266/4 666/1474/4 673/1267/6 +f 652/1251/7 667/1250/7 666/1268/4 +f 689/1270/9 695/1274/9 696/1271/1 +f 690/1273/4 694/1475/4 695/1274/9 +f 685/1275/10 697/1285/10 698/1276/29 +f 686/1277/29 698/1276/29 692/1278/2 +f 691/1280/8 693/1283/8 694/1281/4 +f 687/1279/2 692/1278/2 693/1283/8 +f 684/1284/151 699/1286/151 697/1285/10 +f 688/1272/1 696/1271/1 699/1286/151 +f 711/1287/1 703/1303/1 700/1288/151 +f 715/1289/151 700/1288/151 702/1290/10 +f 712/1292/2 707/1298/2 706/1293/8 +f 708/1294/8 706/1293/8 705/1295/4 +f 713/1297/29 701/1299/29 707/1298/2 +f 714/1291/10 702/1290/10 701/1299/29 +f 709/1300/4 705/1476/4 704/1301/9 +f 710/1302/9 704/1301/9 703/1303/1 +f 731/1304/22 743/1317/156 742/1305/152 +f 728/1307/37 740/1319/157 739/1308/153 +f 735/1310/34 747/1320/158 746/1311/154 +f 725/1313/39 737/1322/159 736/1314/155 +f 732/1316/36 744/1324/160 743/1317/156 +f 729/1318/21 741/1326/161 740/1319/157 +f 724/1315/10 736/1314/155 747/1320/158 +f 726/1321/38 738/1327/162 737/1322/159 +f 733/1323/5 745/1328/163 744/1324/160 +f 730/1325/4 742/1337/152 741/1326/161 +f 727/1309/3 739/1308/153 738/1327/162 +f 734/1312/35 746/1311/154 745/1328/163 +f 740/1319/157 741/1326/161 753/1329/164 +f 747/1320/158 736/1314/155 748/1331/166 +f 737/1322/159 738/1327/162 750/1333/168 +f 744/1324/160 745/1328/163 757/1335/170 +f 742/1337/152 754/1349/174 753/1329/164 +f 738/1327/162 739/1308/153 751/1338/172 +f 746/1311/154 758/1341/175 757/1335/170 +f 742/1305/152 743/1317/156 755/1339/173 +f 740/1319/157 752/1330/165 751/1338/172 +f 747/1320/158 759/1332/167 758/1341/175 +f 737/1322/159 749/1334/169 748/1331/166 +f 744/1324/160 756/1336/171 755/1339/173 +f 752/1330/165 753/1329/164 765/1342/176 +f 759/1332/167 748/1331/166 760/1344/178 +f 749/1334/169 750/1333/168 762/1346/180 +f 757/1335/170 769/1351/184 768/1348/182 +f 754/1349/174 766/1477/186 765/1342/176 +f 751/1338/172 763/1354/187 762/1346/180 +f 757/1335/170 758/1341/175 770/1350/183 +f 754/1340/174 755/1339/173 767/1352/185 +f 751/1338/172 752/1330/165 764/1343/177 +f 759/1332/167 771/1345/179 770/1350/183 +f 749/1334/169 761/1347/181 760/1344/178 +f 756/1336/171 768/1348/182 767/1352/185 +f 760/1357/178 761/1478/181 764/1479/177 +f 761/1478/181 762/1480/180 764/1479/177 +f 762/1480/180 763/1481/187 764/1479/177 +f 764/1479/177 765/1482/176 766/1355/186 +f 766/1355/186 767/1483/185 768/1356/182 +f 768/1356/182 769/1484/184 770/1485/183 +f 770/1485/183 771/1486/179 768/1356/182 +f 771/1486/179 760/1357/178 768/1356/182 +f 764/1479/177 766/1355/186 760/1357/178 +f 791/618/188 790/616/188 788/615/2 +f 793/625/189 792/621/189 790/616/188 +f 795/624/190 794/622/190 792/621/189 +f 797/631/191 796/629/191 794/622/190 +f 799/633/23 798/630/23 796/629/191 +f 801/617/1 800/1487/1 802/1358/192 +f 805/623/193 804/1488/193 806/1359/194 +f 806/1360/194 808/1489/195 809/635/195 +f 809/635/195 808/1489/195 810/1361/18 +f 804/1362/193 805/627/193 803/956/192 +f 818/1364/196 819/1371/196 815/1365/23 +f 813/637/24 817/1368/197 816/1366/197 +f 817/1368/197 821/1375/188 820/1369/188 +f 822/1370/198 823/1490/198 819/1371/196 +f 825/1372/199 823/1490/198 822/1370/198 +f 825/1374/199 824/1491/199 820/1369/188 +f 826/652/10 830/1377/193 831/1376/193 +f 830/1377/193 832/1415/1 833/1378/1 +f 843/1379/48 877/1492/46 875/1380/200 +f 834/1382/202 836/1385/205 837/1383/203 +f 836/1385/205 838/1389/206 839/1381/201 +f 829/1386/28 847/1392/28 859/1387/45 +f 838/1389/206 842/1407/40 843/1379/48 +f 847/1392/32 829/1386/32 850/1390/207 +f 829/1386/32 845/1493/225 850/1390/207 +f 851/1395/208 844/1398/209 828/1404/31 +f 828/1404/31 846/1393/31 851/1395/208 +f 850/1390/207 845/1493/225 827/1396/5 +f 844/1398/209 851/1395/208 841/1399/3 +f 834/1382/202 854/1494/214 872/1401/210 +f 837/1383/203 839/1381/201 875/1380/200 +f 858/1403/44 861/1405/44 846/1393/27 +f 856/1388/45 859/1387/45 861/1405/44 +f 838/1389/206 874/1408/212 876/1406/41 +f 836/1385/205 872/1401/210 874/1408/212 +f 835/1384/204 837/1383/203 873/1402/211 +f 840/1397/5 827/1396/5 873/1418/211 +f 873/1418/211 875/1380/200 840/1397/5 +f 875/1380/200 877/1492/46 852/1410/5 +f 877/1492/46 879/1495/5 852/1410/5 +f 872/1412/210 826/1400/3 841/1399/3 +f 841/1399/3 853/1496/3 874/1411/212 +f 853/1496/3 878/1497/3 876/1498/41 +f 874/1411/212 853/1496/3 876/1498/41 +f 832/1415/1 854/1009/9 855/1011/9 +f 854/1416/214 832/1419/3 826/1400/3 +f 101/691/46 884/112/48 885/689/48 +f 887/967/40 886/695/40 113/103/41 +f 827/1396/5 833/1414/5 855/1417/213 +f 902/707/48 903/709/48 899/722/46 +f 898/724/46 899/722/46 895/716/5 +f 897/726/41 896/728/41 892/713/3 +f 901/710/40 900/706/40 896/728/41 +f 902/707/48 900/706/40 901/710/40 +f 6/8/35 8/1/5 7/988/5 +f 923/1421/215 922/1423/215 920/977/216 +f 914/1422/217 915/1499/217 922/1423/215 +f 936/981/218 937/760/219 939/980/219 +f 942/1424/220 936/981/218 938/979/218 +f 943/1426/221 933/1500/10 935/1427/10 +f 937/760/219 943/1426/221 941/1428/221 +f 932/1429/4 942/1424/220 940/1425/220 diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_armor_modifier.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_armor_modifier.png index 2834d3569..b1c313de4 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_armor_modifier.png and b/src/main/resources/assets/hbm/textures/gui/machine/gui_armor_modifier.png differ diff --git a/src/main/resources/assets/hbm/textures/items/arc_electrode_burnt.png b/src/main/resources/assets/hbm/textures/items/arc_electrode_burnt.png deleted file mode 100644 index 5d278eded..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/arc_electrode_burnt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/arc_electrode_desh.png b/src/main/resources/assets/hbm/textures/items/arc_electrode_desh.png deleted file mode 100644 index 007f2a98e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/arc_electrode_desh.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery.png b/src/main/resources/assets/hbm/textures/items/armor_battery.png index ad4e8b8af..86a0cb9a1 100644 Binary files a/src/main/resources/assets/hbm/textures/items/armor_battery.png and b/src/main/resources/assets/hbm/textures/items/armor_battery.png differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery_base.png b/src/main/resources/assets/hbm/textures/items/armor_battery_base.png new file mode 100644 index 000000000..ad4e8b8af Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/armor_battery_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png b/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png new file mode 100644 index 000000000..699a5b4e2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png b/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png new file mode 100644 index 000000000..96cc82109 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_beskar_double.png b/src/main/resources/assets/hbm/textures/items/ingot_beskar_double.png new file mode 100644 index 000000000..e2072d2c1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_beskar_double.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_beskar_single.png b/src/main/resources/assets/hbm/textures/items/ingot_beskar_single.png new file mode 100644 index 000000000..94127d22b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_beskar_single.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png b/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png new file mode 100644 index 000000000..e29aabfbc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png differ